From 73ffa6979a941cf0dfa48eeca4a1aa47b873d186 Mon Sep 17 00:00:00 2001 From: LecygneNoir Date: Sat, 13 Mar 2021 12:36:49 +0100 Subject: [PATCH] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20pelican=20vers=20la?= =?UTF-8?q?=204.5.4=20ainsi=20que=20des=20plugins=20et=20du=20th=C3=A8me.?= =?UTF-8?q?=20Les=20customisations=20du=20th=C3=A8mes=20sont=20=C3=A0=20r?= =?UTF-8?q?=C3=A9appliquer,=20le=20plugin=20de=20commentaire=20n'est=20plu?= =?UTF-8?q?s=20fonctionnel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pelicanconf.py | 17 +- publishconf.py | 15 +- tasks.py | 118 + theme/CHANGELOG.md | 381 + theme/CONTRIBUTING.md | 46 +- theme/LICENSE | 21 + theme/README.md | 51 +- theme/THANKS.md | 251 +- theme/code_of_conduct.md | 128 + theme/elegant-logo/elegant_logo.png | Bin 0 -> 17218 bytes theme/elegant-logo/elegant_logo.svg | 15 + theme/gulpfile.babel.js | 158 + theme/netlify.toml | 4 + theme/package.json | 38 + .../applause-button/applause-button.css | 212 + .../static/applause-button/applause-button.js | 1194 ++ theme/static/bootstrap/accordion.less | 34 + theme/static/bootstrap/alerts.less | 79 + theme/static/bootstrap/bootstrap.less | 63 + theme/static/bootstrap/breadcrumbs.less | 24 + theme/static/bootstrap/button-groups.less | 229 + theme/static/bootstrap/buttons.less | 228 + theme/static/bootstrap/carousel.less | 158 + theme/static/bootstrap/close.less | 32 + theme/static/bootstrap/code.less | 56 + .../bootstrap/component-animations.less | 22 + theme/static/bootstrap/dropdowns.less | 248 + theme/static/bootstrap/forms.less | 690 ++ theme/static/bootstrap/grid.less | 21 + theme/static/bootstrap/hero-unit.less | 25 + theme/static/bootstrap/labels-badges.less | 84 + theme/static/bootstrap/layouts.less | 16 + theme/static/bootstrap/media.less | 55 + theme/static/bootstrap/mixins.less | 702 ++ theme/static/bootstrap/modals.less | 95 + theme/static/bootstrap/navbar.less | 494 + theme/static/bootstrap/navs.less | 409 + theme/static/bootstrap/pager.less | 43 + theme/static/bootstrap/pagination.less | 123 + theme/static/bootstrap/popovers.less | 133 + theme/static/bootstrap/progress-bars.less | 122 + theme/static/bootstrap/reset.less | 216 + .../bootstrap/responsive-1200px-min.less | 28 + .../bootstrap/responsive-767px-max.less | 193 + .../bootstrap/responsive-768px-979px.less | 19 + theme/static/bootstrap/responsive-navbar.less | 189 + .../bootstrap/responsive-utilities.less | 59 + theme/static/bootstrap/responsive.less | 48 + theme/static/bootstrap/scaffolding.less | 51 + theme/static/bootstrap/sprites.less | 197 + theme/static/bootstrap/tables.less | 244 + theme/static/bootstrap/thumbnails.less | 53 + theme/static/bootstrap/tooltip.less | 70 + theme/static/bootstrap/type.less | 152 + theme/static/bootstrap/utilities.less | 30 + theme/static/bootstrap/variables.less | 301 + theme/static/bootstrap/wells.less | 29 + theme/static/clipboard/clipboard.js | 1170 ++ theme/static/css/admonition.css | 153 + theme/static/css/applause-button.css | 15 + theme/static/css/blockquote.css | 38 + theme/static/css/bootstrap.css | 6399 +++++++++++ theme/static/css/bootstrap_responsive.css | 1112 ++ theme/static/css/code-copy.css | 34 + theme/static/css/code.css | 102 + theme/static/css/custom.css | 15 - theme/static/css/default-skin.png | Bin 0 -> 547 bytes theme/static/css/default-skin.svg | 1 + theme/static/css/elegant.css | 808 +- theme/static/css/elegant.prod.9e9d5ce754.css | 36 + theme/static/css/gallery.css | 29 + theme/static/css/links.css | 76 + theme/static/css/permalink.css | 20 + theme/static/css/preloader.gif | Bin 0 -> 866 bytes theme/static/css/pygments.css | 380 +- theme/static/css/search.css | 18 + theme/static/css/sidebar-social.css | 17 + theme/static/css/sidebar.css | 4 + theme/static/css/typography.css | 191 + theme/static/js/copy-to-clipboard.js | 52 + theme/static/js/elegant.prod.9e9d5ce754.js | 78 + theme/static/js/lunr-search-result.js | 89 + theme/static/lunr/lunr.js | 3569 ++++++ theme/static/magnific/magnific-popup.css | 420 + theme/static/magnific/magnific-popup.js | 1874 ++++ .../photoswipe/default-skin/default-skin.css | 571 + .../photoswipe/default-skin/default-skin.png | Bin 0 -> 547 bytes .../photoswipe/default-skin/default-skin.svg | 1 + .../photoswipe/default-skin/preloader.gif | Bin 0 -> 866 bytes .../photoswipe/photoswipe-array-from-dom.js | 203 + .../photoswipe/photoswipe-ui-default.js | 875 ++ theme/static/photoswipe/photoswipe.css | 202 + theme/static/photoswipe/photoswipe.js | 3847 +++++++ theme/templates/404.html | 22 +- theme/templates/_includes/_defaults.html | 137 +- theme/templates/_includes/analytics.html | 26 +- .../templates/_includes/applause_button.html | 16 + theme/templates/_includes/article_author.html | 24 + theme/templates/_includes/bestazon.html | 8 + theme/templates/_includes/claim_bing.html | 1 + theme/templates/_includes/claim_google.html | 1 + theme/templates/_includes/claim_yandex.html | 1 + .../_includes/commentbox_scripts.html | 14 + theme/templates/_includes/comments.html | 120 +- theme/templates/_includes/disqus_scripts.html | 69 +- theme/templates/_includes/favicon_links.html | 6 +- theme/templates/_includes/feeds.html | 1 - .../templates/_includes/feeds_categories.html | 5 +- theme/templates/_includes/feeds_tags.html | 4 +- theme/templates/_includes/footer.html | 48 +- theme/templates/_includes/freelists.html | 24 + theme/templates/_includes/last_updated.html | 5 +- theme/templates/_includes/mailchimp.html | 11 + theme/templates/_includes/minify_css.html | 5 +- theme/templates/_includes/photos_footer.html | 27 + theme/templates/_includes/photos_header.html | 5 + theme/templates/_includes/photoswipe.html | 66 + theme/templates/_includes/post_stats.html | 5 + theme/templates/_includes/related_posts.html | 3 +- theme/templates/_includes/series.html | 20 + theme/templates/_includes/share_links.html | 18 +- theme/templates/_includes/smo_metadata.html | 19 +- theme/templates/_includes/social_links.html | 137 +- theme/templates/_includes/stat_counter.html | 6 +- .../_includes/utterances_scripts.html | 10 + theme/templates/archives.html | 66 +- theme/templates/article.html | 81 +- theme/templates/base.html | 129 +- theme/templates/categories.html | 41 +- theme/templates/index.html | 92 +- theme/templates/page.html | 17 +- theme/templates/search.html | 108 +- theme/templates/tags.html | 30 +- theme/utterances.json | 3 + theme/yarn.lock | 9701 +++++++++++++++++ 135 files changed, 41057 insertions(+), 1187 deletions(-) create mode 100644 tasks.py create mode 100644 theme/CHANGELOG.md create mode 100644 theme/LICENSE create mode 100644 theme/code_of_conduct.md create mode 100644 theme/elegant-logo/elegant_logo.png create mode 100644 theme/elegant-logo/elegant_logo.svg create mode 100644 theme/gulpfile.babel.js create mode 100644 theme/netlify.toml create mode 100644 theme/package.json create mode 100644 theme/static/applause-button/applause-button.css create mode 100644 theme/static/applause-button/applause-button.js create mode 100644 theme/static/bootstrap/accordion.less create mode 100644 theme/static/bootstrap/alerts.less create mode 100644 theme/static/bootstrap/bootstrap.less create mode 100644 theme/static/bootstrap/breadcrumbs.less create mode 100644 theme/static/bootstrap/button-groups.less create mode 100644 theme/static/bootstrap/buttons.less create mode 100644 theme/static/bootstrap/carousel.less create mode 100644 theme/static/bootstrap/close.less create mode 100644 theme/static/bootstrap/code.less create mode 100644 theme/static/bootstrap/component-animations.less create mode 100644 theme/static/bootstrap/dropdowns.less create mode 100644 theme/static/bootstrap/forms.less create mode 100644 theme/static/bootstrap/grid.less create mode 100644 theme/static/bootstrap/hero-unit.less create mode 100644 theme/static/bootstrap/labels-badges.less create mode 100644 theme/static/bootstrap/layouts.less create mode 100644 theme/static/bootstrap/media.less create mode 100644 theme/static/bootstrap/mixins.less create mode 100644 theme/static/bootstrap/modals.less create mode 100644 theme/static/bootstrap/navbar.less create mode 100644 theme/static/bootstrap/navs.less create mode 100644 theme/static/bootstrap/pager.less create mode 100644 theme/static/bootstrap/pagination.less create mode 100644 theme/static/bootstrap/popovers.less create mode 100644 theme/static/bootstrap/progress-bars.less create mode 100644 theme/static/bootstrap/reset.less create mode 100644 theme/static/bootstrap/responsive-1200px-min.less create mode 100644 theme/static/bootstrap/responsive-767px-max.less create mode 100644 theme/static/bootstrap/responsive-768px-979px.less create mode 100644 theme/static/bootstrap/responsive-navbar.less create mode 100644 theme/static/bootstrap/responsive-utilities.less create mode 100644 theme/static/bootstrap/responsive.less create mode 100644 theme/static/bootstrap/scaffolding.less create mode 100644 theme/static/bootstrap/sprites.less create mode 100644 theme/static/bootstrap/tables.less create mode 100644 theme/static/bootstrap/thumbnails.less create mode 100644 theme/static/bootstrap/tooltip.less create mode 100644 theme/static/bootstrap/type.less create mode 100644 theme/static/bootstrap/utilities.less create mode 100644 theme/static/bootstrap/variables.less create mode 100644 theme/static/bootstrap/wells.less create mode 100644 theme/static/clipboard/clipboard.js create mode 100644 theme/static/css/admonition.css create mode 100644 theme/static/css/applause-button.css create mode 100644 theme/static/css/blockquote.css create mode 100644 theme/static/css/bootstrap.css create mode 100644 theme/static/css/bootstrap_responsive.css create mode 100644 theme/static/css/code-copy.css create mode 100644 theme/static/css/code.css create mode 100644 theme/static/css/default-skin.png create mode 100644 theme/static/css/default-skin.svg create mode 100644 theme/static/css/elegant.prod.9e9d5ce754.css create mode 100644 theme/static/css/gallery.css create mode 100644 theme/static/css/links.css create mode 100644 theme/static/css/permalink.css create mode 100644 theme/static/css/preloader.gif create mode 100644 theme/static/css/search.css create mode 100644 theme/static/css/sidebar-social.css create mode 100644 theme/static/css/sidebar.css create mode 100644 theme/static/css/typography.css create mode 100644 theme/static/js/copy-to-clipboard.js create mode 100644 theme/static/js/elegant.prod.9e9d5ce754.js create mode 100644 theme/static/js/lunr-search-result.js create mode 100644 theme/static/lunr/lunr.js create mode 100644 theme/static/magnific/magnific-popup.css create mode 100644 theme/static/magnific/magnific-popup.js create mode 100644 theme/static/photoswipe/default-skin/default-skin.css create mode 100644 theme/static/photoswipe/default-skin/default-skin.png create mode 100644 theme/static/photoswipe/default-skin/default-skin.svg create mode 100644 theme/static/photoswipe/default-skin/preloader.gif create mode 100644 theme/static/photoswipe/photoswipe-array-from-dom.js create mode 100644 theme/static/photoswipe/photoswipe-ui-default.js create mode 100644 theme/static/photoswipe/photoswipe.css create mode 100644 theme/static/photoswipe/photoswipe.js create mode 100644 theme/templates/_includes/applause_button.html create mode 100644 theme/templates/_includes/article_author.html create mode 100644 theme/templates/_includes/bestazon.html create mode 100644 theme/templates/_includes/claim_bing.html create mode 100644 theme/templates/_includes/claim_google.html create mode 100644 theme/templates/_includes/claim_yandex.html create mode 100644 theme/templates/_includes/commentbox_scripts.html create mode 100644 theme/templates/_includes/freelists.html create mode 100644 theme/templates/_includes/photos_footer.html create mode 100644 theme/templates/_includes/photos_header.html create mode 100644 theme/templates/_includes/photoswipe.html create mode 100644 theme/templates/_includes/post_stats.html create mode 100644 theme/templates/_includes/series.html create mode 100644 theme/templates/_includes/utterances_scripts.html create mode 100644 theme/utterances.json create mode 100644 theme/yarn.lock diff --git a/pelicanconf.py b/pelicanconf.py index 5f4089f..aec81d6 100644 --- a/pelicanconf.py +++ b/pelicanconf.py @@ -1,19 +1,20 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- # -from __future__ import unicode_literals -AUTHOR = u'Victor' -SITENAME = u'Blog de Victor Hery' +AUTHOR = 'Victor' +# SITENAME is on top of page +SITENAME = 'Blog de Victor Héry' +# SITESUBTITLE add a "SITENAME - SITESUBTITLE" line in footer +SITESUBTITLE = '' SITEURL = '' DEFAULT_CATEGORY = 'Système' USE_FOLDER_AS_CATEGORY = False -THEME='./theme' +THEME = './theme' DIRECT_TEMPLATES = (('index', 'tags', 'categories','archives', 'search', '404')) SITE_LICENSE='Ce blog est disponible sous licence Creative Commons attribution, partage dans les mêmes conditions, merci :-)' -LANDING_PAGE_ABOUT ={'title' : 'Je blog réseaux, système et jardins.'} - +LANDING_PAGE_TITLE = "Je blog réseaux, système et jardins." PATH = 'content' STATIC_PATHS = ['theme/images', 'images'] @@ -24,7 +25,7 @@ DEFAULT_PAGINATION = 4 ### Plugins ### PLUGIN_PATHS = ['../pelican-plugins'] -PLUGINS = ['pelican_comment_system', 'extract_toc', 'sitemap'] +PLUGINS = ['extract_toc', 'sitemap', 'tipue_search'] #sitemap SITEMAP = { @@ -66,7 +67,7 @@ MARKDOWN = { TIMEZONE = 'Europe/Paris' -DEFAULT_LANG = u'fr' +DEFAULT_LANG = 'fr' # Feed generation is usually not desired when developing FEED_ALL_ATOM = 'feeds/all.atom.xml' diff --git a/publishconf.py b/publishconf.py index ca50231..5fdc7d2 100644 --- a/publishconf.py +++ b/publishconf.py @@ -1,6 +1,5 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- # -from __future__ import unicode_literals # This file is only used if you use `make publish` or # explicitly specify it as your config file. @@ -10,20 +9,16 @@ import sys sys.path.append(os.curdir) from pelicanconf import * -SITEURL = 'https://blog.victor-hery.com' -RELATIVE_URLS = True +# If your site is available via HTTPS, make sure SITEURL begins with https:// +SITEURL = '' +RELATIVE_URLS = False FEED_ALL_ATOM = 'feeds/all.atom.xml' -CATEGORY_FEED_ATOM = 'feeds/%s.atom.xml' +CATEGORY_FEED_ATOM = 'feeds/{slug}.atom.xml' DELETE_OUTPUT_DIRECTORY = True -#Tracking -PIWIK_URL = 'analyse.victor-hery.com' -PIWIK_SITE_ID = 1 - - # Following items are often useful when publishing #DISQUS_SITENAME = "" -#GOOGLE_ANALYTICS = "" +#GOOGLE_ANALYTICS = "" \ No newline at end of file diff --git a/tasks.py b/tasks.py new file mode 100644 index 0000000..f517267 --- /dev/null +++ b/tasks.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- + +import os +import shlex +import shutil +import sys +import datetime + +from invoke import task +from invoke.main import program +from invoke.util import cd +from pelican import main as pelican_main +from pelican.server import ComplexHTTPRequestHandler, RootedHTTPServer +from pelican.settings import DEFAULT_CONFIG, get_settings_from_file + +SETTINGS_FILE_BASE = 'pelicanconf.py' +SETTINGS = {} +SETTINGS.update(DEFAULT_CONFIG) +LOCAL_SETTINGS = get_settings_from_file(SETTINGS_FILE_BASE) +SETTINGS.update(LOCAL_SETTINGS) + +CONFIG = { + 'settings_base': SETTINGS_FILE_BASE, + 'settings_publish': 'publishconf.py', + # Output path. Can be absolute or relative to tasks.py. Default: 'output' + 'deploy_path': SETTINGS['OUTPUT_PATH'], + # Host and port for `serve` + 'host': 'localhost', + 'port': 8000, +} + +@task +def clean(c): + """Remove generated files""" + if os.path.isdir(CONFIG['deploy_path']): + shutil.rmtree(CONFIG['deploy_path']) + os.makedirs(CONFIG['deploy_path']) + +@task +def build(c): + """Build local version of site""" + pelican_run('-s {settings_base}'.format(**CONFIG)) + +@task +def rebuild(c): + """`build` with the delete switch""" + pelican_run('-d -s {settings_base}'.format(**CONFIG)) + +@task +def regenerate(c): + """Automatically regenerate site upon file modification""" + pelican_run('-r -s {settings_base}'.format(**CONFIG)) + +@task +def serve(c): + """Serve site at http://$HOST:$PORT/ (default is localhost:8000)""" + + class AddressReuseTCPServer(RootedHTTPServer): + allow_reuse_address = True + + server = AddressReuseTCPServer( + CONFIG['deploy_path'], + (CONFIG['host'], CONFIG['port']), + ComplexHTTPRequestHandler) + + sys.stderr.write('Serving at {host}:{port} ...\n'.format(**CONFIG)) + server.serve_forever() + +@task +def reserve(c): + """`build`, then `serve`""" + build(c) + serve(c) + +@task +def preview(c): + """Build production version of site""" + pelican_run('-s {settings_publish}'.format(**CONFIG)) + +@task +def livereload(c): + """Automatically reload browser tab upon file modification.""" + from livereload import Server + build(c) + server = Server() + # Watch the base settings file + server.watch(CONFIG['settings_base'], lambda: build(c)) + # Watch content source files + content_file_extensions = ['.md', '.rst'] + for extension in content_file_extensions: + content_blob = '{0}/**/*{1}'.format(SETTINGS['PATH'], extension) + server.watch(content_blob, lambda: build(c)) + # Watch the theme's templates and static assets + theme_path = SETTINGS['THEME'] + server.watch('{}/templates/*.html'.format(theme_path), lambda: build(c)) + static_file_extensions = ['.css', '.js'] + for extension in static_file_extensions: + static_file = '{0}/static/**/*{1}'.format(theme_path, extension) + server.watch(static_file, lambda: build(c)) + # Serve output path on configured host and port + server.serve(host=CONFIG['host'], port=CONFIG['port'], root=CONFIG['deploy_path']) + + +@task +def publish(c): + """Publish to production via rsync""" + pelican_run('-s {settings_publish}'.format(**CONFIG)) + c.run( + 'rsync --delete --exclude ".DS_Store" -pthrvz -c ' + '-e "ssh -p {ssh_port}" ' + '{} {ssh_user}@{ssh_host}:{ssh_path}'.format( + CONFIG['deploy_path'].rstrip('/') + '/', + **CONFIG)) + + +def pelican_run(cmd): + cmd += ' ' + program.core.remainder # allows to pass-through args to pelican + pelican_main(shlex.split(cmd)) \ No newline at end of file diff --git a/theme/CHANGELOG.md b/theme/CHANGELOG.md new file mode 100644 index 0000000..bf882fb --- /dev/null +++ b/theme/CHANGELOG.md @@ -0,0 +1,381 @@ +# [5.3.0](https://github.com/Pelican-Elegant/elegant/compare/V5.2.1...V5.3.0) (2020-02-05) + +### Bug Fixes + +- **gallery:** change gallery grid to fit on smaller screens ([d4c1c50](https://github.com/Pelican-Elegant/elegant/commit/d4c1c506d24c61e18089d303ea88bb69db077135)) +- **gallery:** replace photoswipe-gallery with elegant-gallery ([17a05da](https://github.com/Pelican-Elegant/elegant/commit/17a05daec5d3aa077b96175e97ae5feda6884d9e)) + +### Features + +- **comments:** add support for CommentBox ([c56e61e](https://github.com/Pelican-Elegant/elegant/commit/c56e61eb60a84d4d65ca2e55e068b6f0f3a87ee1)) + +## [5.2.1](https://github.com/Pelican-Elegant/elegant/compare/V5.2.0...V5.2.1) (2020-02-04) + +### Bug Fixes + +- **blockquote:** regression introduced in last version ([2aace21](https://github.com/Pelican-Elegant/elegant/commit/2aace21d633e11527a224c7201abad5fef811ce3)) + +# [5.2.0](https://github.com/Pelican-Elegant/elegant/compare/V5.1.0...V5.2.0) (2020-02-03) + +### Bug Fixes + +- regression introduced due to cache busting ([b953a38](https://github.com/Pelican-Elegant/elegant/commit/b953a382d77e99884b82800d7392ceb8eae8d77d)) +- **archives:** at smaller screen layout does not make the best use of available space ([a289e9d](https://github.com/Pelican-Elegant/elegant/commit/a289e9db411b6abeb79a6028a3b0778070f6f553)) +- **syntax:** code blocks with line numbers do not have the correct border radius ([3a34a3e](https://github.com/Pelican-Elegant/elegant/commit/3a34a3e6b9741e44bc34d723627b0da162fdfa82)) +- **syntax:** improve the font size and height of download button ([07595b3](https://github.com/Pelican-Elegant/elegant/commit/07595b3dbd31feef16aee3e907d3c4fc34574e0d)) +- **typography:** fix font size and style of TOC ([2d597ab](https://github.com/Pelican-Elegant/elegant/commit/2d597abd095de8ce8ac72d8ae77b4914d9daeeed)), closes [#509](https://github.com/Pelican-Elegant/elegant/issues/509) +- Categories and Tags pages do not have space below the header ([d78f4e5](https://github.com/Pelican-Elegant/elegant/commit/d78f4e5add9ca7778967d4c5da02053187c3cbd4)) +- remove invalid CSS rule ([368cb2c](https://github.com/Pelican-Elegant/elegant/commit/368cb2cad4b00b40446e7ad1d5357228e48ec34c)) +- use consistent color for border ([c85b7b8](https://github.com/Pelican-Elegant/elegant/commit/c85b7b84d6ac64a73941ad73ba031fd2f4ddac0f)) +- use darker color for the site name ([19f37ca](https://github.com/Pelican-Elegant/elegant/commit/19f37caf937bd864aaf6b1532078936ad79edf1d)) +- **article:** use loclate_date attribute instead of hardcoding the date format ([1da552c](https://github.com/Pelican-Elegant/elegant/commit/1da552c94775766657f4ee9a0c05e7bcd7f1adf9)), closes [#552](https://github.com/Pelican-Elegant/elegant/issues/552) +- **bootstrap:** WIP. add Bootstrapv2.3.2 sources file to the project ([43ee8eb](https://github.com/Pelican-Elegant/elegant/commit/43ee8eb2ad6ba22bac6660bdb514857dadf9bcab)), closes [#429](https://github.com/Pelican-Elegant/elegant/issues/429) +- **seo:** regression introduced in PR [#556](https://github.com/Pelican-Elegant/elegant/issues/556) ([28bcb85](https://github.com/Pelican-Elegant/elegant/commit/28bcb8592cf595761d96904b004df3f425259849)), closes [#505](https://github.com/Pelican-Elegant/elegant/issues/505) +- **typography:** about me and my projects heading is not on one line ([6a7989c](https://github.com/Pelican-Elegant/elegant/commit/6a7989cc17f46a4ee1075dfe66b03d858956e7c7)) +- **typography:** font size of superscript number in categories and tags page ([d0a7162](https://github.com/Pelican-Elegant/elegant/commit/d0a71622bfe23e86478b7727e590dbf8e3a7b87f)) +- **typography:** override Bootstrap base font ([f6a83a6](https://github.com/Pelican-Elegant/elegant/commit/f6a83a6f31e24754e5001260336b89e9107e1053)), closes [#429](https://github.com/Pelican-Elegant/elegant/issues/429) +- **typography:** top menu bar does not have correct height ([d30ce82](https://github.com/Pelican-Elegant/elegant/commit/d30ce82aa8ba366555cbeee55ffb08e70110df0a)) +- **typography:** use consistent font and color for project list ([477a467](https://github.com/Pelican-Elegant/elegant/commit/477a467bd4bf69a86d71bceb3ac2385b43c57a8c)) +- **typography:** use consistent font in the footer ([eeb0e30](https://github.com/Pelican-Elegant/elegant/commit/eeb0e30be3664c86e7b37a151cf1992daa7fd46e)) + +### Features + +- add support cache busting ([cde0dc5](https://github.com/Pelican-Elegant/elegant/commit/cde0dc54c68412d8db43ea371e98e6d14e99b9d2)) +- **categories:** change background color of uncollapsed Category ([6cc11b8](https://github.com/Pelican-Elegant/elegant/commit/6cc11b8efe8a3c97ccfeddc244a5b84465fff1fb)) +- **gallery:** add support for PhotoSwipe image gallery using raw HTML ([ad1bcea](https://github.com/Pelican-Elegant/elegant/commit/ad1bcea67f5515c8c448e1c7009f3ba01965d574)), closes [#567](https://github.com/Pelican-Elegant/elegant/issues/567) +- **js:** combine and minify all JS files into one to improve load speed ([f5047d4](https://github.com/Pelican-Elegant/elegant/commit/f5047d4cbce02a187f1b04f11f026817ed1757d9)) +- **search:** improve search results page look ([73fa743](https://github.com/Pelican-Elegant/elegant/commit/73fa743723ebbf35b6cd0e0f51c9497634b1474c)), closes [#573](https://github.com/Pelican-Elegant/elegant/issues/573) [#275](https://github.com/Pelican-Elegant/elegant/issues/275) +- **search:** replace tipue_search with lunr.js ([9d60af1](https://github.com/Pelican-Elegant/elegant/commit/9d60af14c4065cee90289e48705714865dbbcb9e)), closes [#275](https://github.com/Pelican-Elegant/elegant/issues/275) +- **SEO:** Add header and documentation for Claiming Website on Yandex ([2bb691d](https://github.com/Pelican-Elegant/elegant/commit/2bb691d3bd02f9d586206814992306383640a84c)) +- **SEO:** add SEO and SMO meta keywords in site's home page ([c5be0eb](https://github.com/Pelican-Elegant/elegant/commit/c5be0eb7f9e98c9938ae96ca8eb9c48c7482993e)) +- **sharing:** Enable customizing the sharing links ([f3e262f](https://github.com/Pelican-Elegant/elegant/commit/f3e262f3dc6a2b1a4356014e524018603d899fb2)) +- **syntax:** add copy to clipboard button for every code snippet ([6f73317](https://github.com/Pelican-Elegant/elegant/commit/6f733179b80d8225af71bc5945be1fddd98b40ae)), closes [#574](https://github.com/Pelican-Elegant/elegant/issues/574) [#525](https://github.com/Pelican-Elegant/elegant/issues/525) +- **syntax:** add support for highlighting lines in code snippets ([ba2de8c](https://github.com/Pelican-Elegant/elegant/commit/ba2de8ccf971b1e77abe24960532f664e00ef9d9)), closes [#520](https://github.com/Pelican-Elegant/elegant/issues/520) +- **syntax:** add support for liquid_tags.include_code plugin ([0550a3a](https://github.com/Pelican-Elegant/elegant/commit/0550a3ab2fa5526a6db7e233f755cdfa36f9db38)), closes [#518](https://github.com/Pelican-Elegant/elegant/issues/518) +- **syntax:** use Gruvbox syntax highlighting theme ([0b50ab1](https://github.com/Pelican-Elegant/elegant/commit/0b50ab1565dd1fa700cea9e4c6cb963bd9591b9f)) +- **typography:** use consistent fonts ([8b7a8bd](https://github.com/Pelican-Elegant/elegant/commit/8b7a8bd3c828baf1dd3434b75a5bd050a4279495)), closes [#429](https://github.com/Pelican-Elegant/elegant/issues/429) +- **typography:** use consistent style for timestamps in tags, categories and archives pages ([a421dcd](https://github.com/Pelican-Elegant/elegant/commit/a421dcdbc42d87bcff2bfdeb3f3f19e5e6e8c3c2)) +- **typography:** use dns-prefetch and preconnect to improve font load time ([e4bd582](https://github.com/Pelican-Elegant/elegant/commit/e4bd582858df6925bbc5c0dff59e62b1cd8c5390)) +- **typography:** use responsive fonts ([39acdbf](https://github.com/Pelican-Elegant/elegant/commit/39acdbf4503ee9cdd7163672cba28c24b47d6647)) + +# [5.1.0](https://github.com/Pelican-Elegant/elegant/compare/V5.0.1...V5.1.0) (2019-12-05) + +### Bug Fixes + +- **applause:** applause_button tag does not auto close ([d37e691](https://github.com/Pelican-Elegant/elegant/commit/d37e691e0592bded8dd42531ceacfa61147ad078)) +- **typography:** make headings align to the left instead of justify ([101285e](https://github.com/Pelican-Elegant/elegant/commit/101285e0884ea365e9e3272e6f914fe373fa27fb)) + +### Features + +- **applause:** add option to set applause_button_id ([8eda9a4](https://github.com/Pelican-Elegant/elegant/commit/8eda9a4cc7c588ff09a520e9f7fa183d1fb11031)) +- **applause:** add support for applause button ([e4872fd](https://github.com/Pelican-Elegant/elegant/commit/e4872fd558964c3007c516fc616314c88de49eef)), closes [#532](https://github.com/Pelican-Elegant/elegant/issues/532) +- **applause:** simplify filter option ([9f8b60f](https://github.com/Pelican-Elegant/elegant/commit/9f8b60fc3cbc08e7e21cef08f7e44658131677dd)) + +## [5.0.1](https://github.com/Pelican-Elegant/elegant/compare/V5.0.0...V5.0.1) (2019-12-04) + +### Bug Fixes + +- **blockquote:** close quote is not aligned properly ([80a85c7](https://github.com/Pelican-Elegant/elegant/commit/80a85c714a16cd01c53831347ac1f18b397dda1a)) +- **typography:** remove unit from line height ([10286a1](https://github.com/Pelican-Elegant/elegant/commit/10286a13fade3248cc752a3ac5416257920d07bf)) + +# [5.0.0](https://github.com/Pelican-Elegant/elegant/compare/V4.0.0...V5.0.0) (2019-12-02) + +### Bug Fixes + +- **css:** linter warning ([a5f5c81](https://github.com/Pelican-Elegant/elegant/commit/a5f5c8170a61683edf5737918b7fe3cae1b67c00)) +- **page:** social profiles appear in the sidebar ([c17077c](https://github.com/Pelican-Elegant/elegant/commit/c17077cbd24811bb91e48610ac13d76328e5398d)), closes [#534](https://github.com/Pelican-Elegant/elegant/issues/534) +- **social:** reduce icon size in the sidebar ([4e0dc41](https://github.com/Pelican-Elegant/elegant/commit/4e0dc415c114bb07304605c9b1c153e372f1fa4b)), closes [#490](https://github.com/Pelican-Elegant/elegant/issues/490) +- **typography:** adjust heading sizes and set small font-style to italic ([d3bbf04](https://github.com/Pelican-Elegant/elegant/commit/d3bbf04eabcd89bdb2f039b11fac7a6150729e90)) +- **typography:** remove border from headings in archive page ([817bea8](https://github.com/Pelican-Elegant/elegant/commit/817bea8d091e99b6d6e5fc3dcc63ba6f627c5b66)) + +### Features + +- **blockquote:** improve blockquote look ([068d50a](https://github.com/Pelican-Elegant/elegant/commit/068d50a455d57e4706525908b174bbc4606c6fb6)) +- **border:** change border radius of tags and code blocks to match rest of the theme ([5d0285f](https://github.com/Pelican-Elegant/elegant/commit/5d0285f156a5da734b438868674c632b897625ef)), closes [#521](https://github.com/Pelican-Elegant/elegant/issues/521) +- **border:** have consistent border radius ([7307467](https://github.com/Pelican-Elegant/elegant/commit/7307467579d4ab1931987e48b83224eb666e9e5e)), closes [#521](https://github.com/Pelican-Elegant/elegant/issues/521) +- **code-block:** minor refine code-block style ([2ba2232](https://github.com/Pelican-Elegant/elegant/commit/2ba22321b35961ebc18dbb2c25f1db535fad64ed)) +- **css:** use PostCSS for processing CSS files ([2b88865](https://github.com/Pelican-Elegant/elegant/commit/2b88865a36780257ac42173b949b5d7b4df516e9)), closes [#354](https://github.com/Pelican-Elegant/elegant/issues/354) +- **links:** add new style and improve existing style for hyperlinks ([87fd3d3](https://github.com/Pelican-Elegant/elegant/commit/87fd3d3f88cebac83ca04460ef41e7356df0ccd2)), closes [#533](https://github.com/Pelican-Elegant/elegant/issues/533) [#519](https://github.com/Pelican-Elegant/elegant/issues/519) +- **permalink:** improve permalink look ([8059ca8](https://github.com/Pelican-Elegant/elegant/commit/8059ca84b77ab82bffd1ed80f010235f9ca57ed6)) +- **security:** use rel="noopener noreferrer" with all target="\_blank" ([4c843e9](https://github.com/Pelican-Elegant/elegant/commit/4c843e9a0c66bb2656ef5df4411d4c891c493a11)) +- **typography:** code inside heading is consistently 80% of the size ([7180b49](https://github.com/Pelican-Elegant/elegant/commit/7180b49ebb659d00a82f10769269e6236057e42c)), closes [#508](https://github.com/Pelican-Elegant/elegant/issues/508) +- **typography:** headings sizes and other properties are consistent ([afa99ab](https://github.com/Pelican-Elegant/elegant/commit/afa99ab89baf715a68627552152b7163ea0534b9)), closes [#508](https://github.com/Pelican-Elegant/elegant/issues/508) [#521](https://github.com/Pelican-Elegant/elegant/issues/521) +- **typography:** use darker color for article heading and increase border size ([1922075](https://github.com/Pelican-Elegant/elegant/commit/19220758aabf431ae3566b950436fe04a3ee21a8)) + +### BREAKING CHANGES + +- **links:** Style of muted links have been changed slightly. It is + still muted but has modern animation. + +# [4.0.0](https://github.com/Pelican-Elegant/elegant/compare/V3.2.0...V4.0.0) (2019-08-22) + +### Bug Fixes + +- **admonition:** an artifact in border behind the title ([88113c3](https://github.com/Pelican-Elegant/elegant/commit/88113c3)) +- **admonition:** reduce border radius to match radii of other components ([de08d20](https://github.com/Pelican-Elegant/elegant/commit/de08d20)), closes [#490](https://github.com/Pelican-Elegant/elegant/issues/490) +- **admonition:** remove box shadow ([d059db8](https://github.com/Pelican-Elegant/elegant/commit/d059db8)), closes [#490](https://github.com/Pelican-Elegant/elegant/issues/490) +- **admonition:** remove text-shadow from heading ([1c889da](https://github.com/Pelican-Elegant/elegant/commit/1c889da)), closes [#490](https://github.com/Pelican-Elegant/elegant/issues/490) +- **clean URL:** default URL of categories, tags and archives fails on some servers ([3c7df6a](https://github.com/Pelican-Elegant/elegant/commit/3c7df6a)), closes [#280](https://github.com/Pelican-Elegant/elegant/issues/280) [#276](https://github.com/Pelican-Elegant/elegant/issues/276) +- **comments:** W3C validation errors ([76a1f26](https://github.com/Pelican-Elegant/elegant/commit/76a1f26)) +- **disqus:** remove SITEURL condition to show Disqus comments section ([753d5a5](https://github.com/Pelican-Elegant/elegant/commit/753d5a5)) +- **lang:** do not override default value of DEFAULT_LANG set by Pelican ([d6c60c2](https://github.com/Pelican-Elegant/elegant/commit/d6c60c2)) +- **social:** reduce icon sizes in the sidebar ([c769ba3](https://github.com/Pelican-Elegant/elegant/commit/c769ba3)) +- **social:** use nofollow for social links in the sidebar ([50cff87](https://github.com/Pelican-Elegant/elegant/commit/50cff87)) +- **social:** W3C validation error ([ec4521e](https://github.com/Pelican-Elegant/elegant/commit/ec4521e)) +- **table:** reduce border radius to match radii of other components ([7eaaa96](https://github.com/Pelican-Elegant/elegant/commit/7eaaa96)) +- **w3c validation:** remove incorrect usage of article tag ([e8231e0](https://github.com/Pelican-Elegant/elegant/commit/e8231e0)), closes [#251](https://github.com/Pelican-Elegant/elegant/issues/251) +- **w3c validation:** remove obsolete charset attribute ([8deb285](https://github.com/Pelican-Elegant/elegant/commit/8deb285)), closes [#251](https://github.com/Pelican-Elegant/elegant/issues/251) +- **w3c validation:** remove redundant article tag ([d07c27e](https://github.com/Pelican-Elegant/elegant/commit/d07c27e)), closes [#251](https://github.com/Pelican-Elegant/elegant/issues/251) +- **w3c validation:** remove redundant sections without heading ([df9221f](https://github.com/Pelican-Elegant/elegant/commit/df9221f)), closes [#251](https://github.com/Pelican-Elegant/elegant/issues/251) +- **w3c validation:** remove type and language attributes ([b700224](https://github.com/Pelican-Elegant/elegant/commit/b700224)), closes [#251](https://github.com/Pelican-Elegant/elegant/issues/251) +- **w3c validation:** update CSS rules ([0b78d46](https://github.com/Pelican-Elegant/elegant/commit/0b78d46)), closes [#251](https://github.com/Pelican-Elegant/elegant/issues/251) + +### Features + +- **404:** auto fill search box with URL fragment that was not found ([c0a7f47](https://github.com/Pelican-Elegant/elegant/commit/c0a7f47)) +- **admonition:** add box shadow ([246f826](https://github.com/Pelican-Elegant/elegant/commit/246f826)) +- **admonition:** border color should match the title color ([1adadbe](https://github.com/Pelican-Elegant/elegant/commit/1adadbe)) +- **admonition:** increase contrast of title ([7fb82cc](https://github.com/Pelican-Elegant/elegant/commit/7fb82cc)) +- **admonition:** use svg image instead of font-awesome icon ([e7c4029](https://github.com/Pelican-Elegant/elegant/commit/e7c4029)), closes [#487](https://github.com/Pelican-Elegant/elegant/issues/487) +- **clean url:** support clean URL for search page ([088791e](https://github.com/Pelican-Elegant/elegant/commit/088791e)) +- **comments:** add support for utterances comment system ([a2151cc](https://github.com/Pelican-Elegant/elegant/commit/a2151cc)), closes [#288](https://github.com/Pelican-Elegant/elegant/issues/288) +- **quotes:** improve style and remove font-awesome for quote icon ([9ef3ac8](https://github.com/Pelican-Elegant/elegant/commit/9ef3ac8)), closes [#487](https://github.com/Pelican-Elegant/elegant/issues/487) +- **social:** add icons for 7 more websites ([8dcf8fa](https://github.com/Pelican-Elegant/elegant/commit/8dcf8fa)), closes [#494](https://github.com/Pelican-Elegant/elegant/issues/494) +- **social:** use svg icons instead of font-awesome ([19f458b](https://github.com/Pelican-Elegant/elegant/commit/19f458b)) +- **table:** add style rule to make tables pop out ([6a8500b](https://github.com/Pelican-Elegant/elegant/commit/6a8500b)), closes [#440](https://github.com/Pelican-Elegant/elegant/issues/440) + +### Performance Improvements + +- **admonition:** add attributes to svg images ([a740a60](https://github.com/Pelican-Elegant/elegant/commit/a740a60)) +- **requests:** remove font awesome ([7c20145](https://github.com/Pelican-Elegant/elegant/commit/7c20145)), closes [#487](https://github.com/Pelican-Elegant/elegant/issues/487) + +### BREAKING CHANGES + +- **requests:** We have removed font awesome. Now we use svg images for all icons. This will result in one less web request, which in turn will improve your websites performance. +- **social:** Style customization and configuration of social icons + in the sidebar has changed. + +New icons have better colors and bigger sizes. + +- **clean URL:** To enable clean URLs for tags, categories and archives, + first configure your server to support clean URLs. Then set `TAGS_URL`, + `CATEGORIES_URL` and `ARCHIVES_URL` to `"tags"`, `"categories"` and + `"archives"` respectively. + +# [3.2.0](https://github.com/Pelican-Elegant/elegant/compare/V3.1.0...V3.2.0) (2019-07-30) + +### Bug Fixes + +- **freelists:** open FreeLists subscription form in a new tab ([f81657c](https://github.com/Pelican-Elegant/elegant/commit/f81657c)) +- **freelists:** replace deprecated subscription form with button ([9bfe3c1](https://github.com/Pelican-Elegant/elegant/commit/9bfe3c1)), closes [#412](https://github.com/Pelican-Elegant/elegant/issues/412) +- **freelists:** remove unused include ([27f0831](https://github.com/Pelican-Elegant/elegant/commit/27f0831)) + +### Features + +- **comments:** reduce transition duration from 500 to 200 ([b86e13d](https://github.com/Pelican-Elegant/elegant/commit/b86e13d)) +- **favicon:** add 180x180 dimension shortcut icon support ([dd2ed24](https://github.com/Pelican-Elegant/elegant/commit/dd2ed24)) +- **filter:** add black list, white list feature for Disqus ([4887aec](https://github.com/Pelican-Elegant/elegant/commit/4887aec)) +- **filter:** add black list, white list feature for FreeLists ([2407cc8](https://github.com/Pelican-Elegant/elegant/commit/2407cc8)) +- **filter:** add black list, white list feature for Mailchimp ([b96122d](https://github.com/Pelican-Elegant/elegant/commit/b96122d)) + +# [3.1.0](https://github.com/Pelican-Elegant/elegant/compare/V3.0.0...V3.1.0) (2019-07-14) + +### Bug Fixes + +- **article:** fix regression introduced in 7ca7331c0 ([2c23961](https://github.com/Pelican-Elegant/elegant/commit/2c23961)) +- **authors:** title attribute was not closed in quotes ([de1d05b](https://github.com/Pelican-Elegant/elegant/commit/de1d05b)) +- **gist:** embedded Github gist are not laid out correctly ([0416433](https://github.com/Pelican-Elegant/elegant/commit/0416433)), closes [#123](https://github.com/Pelican-Elegant/elegant/issues/123) +- **reST:** indents in line blocks is not preserved ([e1429c5](https://github.com/Pelican-Elegant/elegant/commit/e1429c5)), closes [#144](https://github.com/Pelican-Elegant/elegant/issues/144) + +### Features + +- **article:** make article subtitle italic ([7ca7331](https://github.com/Pelican-Elegant/elegant/commit/7ca7331)), closes [#284](https://github.com/Pelican-Elegant/elegant/issues/284) +- **authors:** add line above authors section ([35a35b0](https://github.com/Pelican-Elegant/elegant/commit/35a35b0)) +- **authors:** add support for avatar ([cc92230](https://github.com/Pelican-Elegant/elegant/commit/cc92230)), closes [#362](https://github.com/Pelican-Elegant/elegant/issues/362) +- **authors:** make authors URL nofollow ([07bf415](https://github.com/Pelican-Elegant/elegant/commit/07bf415)) +- **authors:** move authors below share links section ([b81555a](https://github.com/Pelican-Elegant/elegant/commit/b81555a)) +- **authors:** open author url in a new window ([f97b47a](https://github.com/Pelican-Elegant/elegant/commit/f97b47a)) +- **Chinese:** add better font support for Chinese language ([2711aa0](https://github.com/Pelican-Elegant/elegant/commit/2711aa0)), closes [#134](https://github.com/Pelican-Elegant/elegant/issues/134) +- **modified:** show Last Updated only if the difference between created and modified is more than a day ([b0eac79](https://github.com/Pelican-Elegant/elegant/commit/b0eac79)) +- **monetization:** add BestAzon support ([6d8a23c](https://github.com/Pelican-Elegant/elegant/commit/6d8a23c)) + +# [3.0.0](https://github.com/Pelican-Elegant/elegant/compare/V2.5.0...V3.0.0) (2019-07-03) + +### Bug Fixes + +- **admonition:** links should inherit the admonition color ([60c9184](https://github.com/Pelican-Elegant/elegant/commit/60c9184)) +- **freelists:** use SUBSCRIBE_BUTTON_TITLE instead of generic GO ([c346d1f](https://github.com/Pelican-Elegant/elegant/commit/c346d1f)) +- **home:** remove redundant title ([808cd1d](https://github.com/Pelican-Elegant/elegant/commit/808cd1d)) + +### Features + +- **home:** write about me in markdown, reST or AsciiDoc ([9b5b2ec](https://github.com/Pelican-Elegant/elegant/commit/9b5b2ec)), closes [#85](https://github.com/Pelican-Elegant/elegant/issues/85) +- **menu:** set home URL to root if SITEURL is not ([23e0b94](https://github.com/Pelican-Elegant/elegant/commit/23e0b94)) + +### BREAKING CHANGES + +- **home:** Previously LANDING_PAGE_ABOUT was a dictionary that contained html tags. We used it + to create landing page. But users have demanded from the very beginning to be able to write the + landing page in markdown. This patch adds this feature. But in order to use it, you have to update + your configuration. + +# [2.5.0](https://github.com/Pelican-Elegant/elegant/compare/V2.4.0...V2.5.0) (2019-06-30) + +### Features + +- **comments:** replace disqus_identifier with comment_id ([3aa4e24](https://github.com/Pelican-Elegant/elegant/commit/3aa4e24)) + +# [2.4.0](https://github.com/Pelican-Elegant/elegant/compare/V2.3.0...V2.4.0) (2019-06-30) + +### Features + +- **footer:** make external links Nofollow ([137a02a](https://github.com/Pelican-Elegant/elegant/commit/137a02a)) +- **footer:** move site subtitle to the center ([b5baa11](https://github.com/Pelican-Elegant/elegant/commit/b5baa11)) +- **footer:** open exit links in new tab ([8fd9f28](https://github.com/Pelican-Elegant/elegant/commit/8fd9f28)) +- **footer:** optionally show the host information ([9de2dab](https://github.com/Pelican-Elegant/elegant/commit/9de2dab)) +- **footer:** powered by message is always aligned to the right ([5e47b7c](https://github.com/Pelican-Elegant/elegant/commit/5e47b7c)) +- **footer:** remove fixed height by using flexbox for sticky footer ([d9d84e1](https://github.com/Pelican-Elegant/elegant/commit/d9d84e1)) +- **footer:** use flexbox instead of list for items in the footer ([bef7db9](https://github.com/Pelican-Elegant/elegant/commit/bef7db9)) +- **onelink:** add Amazon Affiliate Disclosure ([cbfa6ac](https://github.com/Pelican-Elegant/elegant/commit/cbfa6ac)) + +# Version 2.3.0 + +## Project Management + +- Documentation is hosted at https://elegant.oncrashreboot.com/ +- Host and build documentation using Netlify +- `elegant.oncrashreboot.com` domain is the final home of documentation. It shall never change +- Delete github pages and related repositories + +## Features + +- New: FontAwesome updated to version 4.7.0 +- New: `Photos` plugin support for photo gallery creation +- New: Lightbox support for `Photos` plugin +- Fixed: Amazon One Link div is in the header +- Fixed: Separated claims for Google and Bing into individual includes + +## Documentation + +- New: Help article on claim Google and Bing + +## CI + +- New: Enable deploy previews for every pull request +- New: Add spell check for every pull request, and `master` and `next` branches +- New: Add git hooks to format the code +- New: Add commit Zen support +- New: Add html5validator, which along with w3c_validator, makes for two html validation tools in the CI +- New: Improve CI build times +- Remove: peru for downloading plugins and themes +- New: Add pull request template + +# Version 2.2 + +- New: TipueSearch updated to 7.1 +- New: Use `PROJECTS_TITLE` to customize project list title. (default My Projects) +- Changed: Reading Time is displayed only if it is greater than `READING_TIME_LOWER_LIMIT` variable (default 4 min) +- Changed: Project documentation has been moved inside the Elegant repository +- Removed: Google Plus author + +# Version 2.0 + +- Link to your social profiles +- Upgraded to Twitter Bootstrap 2.3.2 +- Upgraded to Tipue Search 3.1 +- Support for `custom.css` +- [Stat Counter Analytics ](http://statcounter.com/) support +- Google Universal Analytics support +- Support for custom icons for social profiles +- Support for Pelican (>3.3) new metadata `modified` +- Support for Social Media Tags +- Support for Google Authorship +- Translations support +- `article.comments_intro` that overrides `COMMENTS_INTRO`. Now you can define + article specific comments introduction +- Add Disqus comments to Pages +- All customizable variables consolidated in a single `_defaults.html`, making + it easier for you to customize or even _localize_ the theme +- Adds author blurbs at the end of the article + +## Performance + +- Performance improvement- 4x faster output +- Reduce number of HTTP requests using `assets` plugin +- Shortcut icons, like favicon, are disabled by default. Set + `USE_SHORTCUT_ICONS` to true to enable it + +## Visual Style + +- Email newsletter subscriber form style matches rest of the theme +- Article images have a visible border +- Block quotes have a quote icon instead of a thick line on left +- Article's paragraph font size is bigger, for better readability +- Remove unnecessary padding in sidebar's tag list +- Archives page and recent posts on home page have better presentation +- Time stamps in categories and tags pages are justified +- Line number in code block is hidden on tablets and phones to save space for + content +- More sizes of image for Apple Touch icons +- Fixed: Nested lists have different font sizes +- Fixed: CSS style rules for literal block in reST is missing +- Fixed: Long lines in code block will wrap to next line +- Fixed: Code block will not play nice with line numbers +- Fixed: Subscribe button changes its size on smaller screens +- Fixed: Articles under tag heading on tags page are not sorted +- Fixed: URL scheme for blogs which are not published to the root folder +- Fixed: Footer is always under the fold even on smaller length web pages +- Fixed: Site Name and top navigation menu move to left on wide displays +- Fixed: Page link is not active in the navbar if `SAVE_PAGE_AS` is not set to + default + +## Plugins + +- Use `neighbor` plugin to show next and previous articles +- Use `assets` plugin to minify CSS and JS files +- Support for `share_post` plugin +- Support for `related_posts` plugin +- Support for `multi_part` plugin +- Support for `post_stats` plugin + +## Behaviour + +- Search results link open in the same window, which is consistent with + internet search engines +- Comments section message changes when user toggles it +- Fixed: Clicking Search button in 404.html does not trigger search + +# Version 1.3 + +- Next and previous article navigation is placed below comments section so that article's content and comments appear together +- Article title and site name in `` tag is separated by `·` which is cleaner and more subtle than `-` +- Subtitle of articles and pages is added in `<title>` tag along with main title +- Description metadata tag on Home Page uses `SITE_DESCRIPTION` +- Bug fix: Expand comments section if URL points to a comment +- Bug fix: CSS style of links in an unordered list inside article content is different from article links + +# Version 1.2 + +- RSS and Atom feed links +- CSS style for permanent links added. It is visible only user hovers over the heading +- Block quote is indented towards left +- Bug fix: Hyperlink dashed underline is not visible on Chrome +- Bug fix: Text in list goes beyond list marker when text is long and overflows to next line +- Bug fix: Disqus comment count is always 0 + +# Version 1.1 + +- Add template for pages. Pages do not have tags, category and Disqus comments +- Keep style of a hyperlink in `modified` metadata consisted with the theme +- Add `keywords` metadata tag that uses keywords, tags and category attribute of articles and pages +- Validate search form for empty strings +- If `RECENT_ARTICLES_COUNT` is undefined, set it to 10. So that Pelican does not throw critical error +- Bug fix: Path of search.html in search form action should always be absolute +- Bug fix: Copyright metadata tag should be set to the author, instead of the license +- Bug fix: Close metadata tags +- Bug fix: ID of search form in 404 page should be different from the ID of search form in main navigation +- Bug fix: Links in ordered list in an article do not conform to the link style in rest of the article + +# Version 1.0 + +- Initial release diff --git a/theme/CONTRIBUTING.md b/theme/CONTRIBUTING.md index 8bdc908..105c6ea 100644 --- a/theme/CONTRIBUTING.md +++ b/theme/CONTRIBUTING.md @@ -1,45 +1,7 @@ -Where do I start? -================= +# Contributions -See issues tagged with [Pull Request -Welcomed](https://github.com/talha131/pelican-elegant/issues?labels=Pull+Request+Welcomed). -I, @talha131, do not plan to work on these issues. You are more than welcome to -pick them up. +We welcome contributions to the Elegant project! -New Features and Styles -======================= +If you are considering contributing, [please read this](https://elegant.oncrashreboot.com/invitation-to-participate.html). -If you plan to add new features to the theme, please make sure - -1. You set sensible defaults so that theme works out of the box, without - forcing user to set any variable -2. Your feature should not effect readability and reading experience -3. It should not be distracting for the reader - -Follow the code style of the existing codebase -============================================== - -1. Use single ('') rather than double ("") quotation marks for Jinja strings -1. In Jinja print statements, surround the variable with spaces inside curly - braces, for example `{{ foo.bar }}` -1. Use double ("") quotation marks around HTML attributes -1. End files with a newline - -CSS Formatting Rules --------------------- - -1. Font name's first letter should be capital -2. Add a space after comma -3. Declarations should be sorted alphabetically -4. Use a single space between the last selector and the opening brace that - begins the declaration block -5. Group together related classes and identities -6. Add a space after colon -7. Remove leading 0s -8. Remove unit specification after 0 values -9. Use three digit Hex notation for colors whereever possible -10. User hyphen `-` instead of underscore `_` in class and identity names - -Refer to [Google's HTML/CSS Style -Guide](http://google-styleguide.googlecode.com/svn/trunk/htmlcssguide.xml) for -all other formatting rules. +If you have a patch ready for pull request, [please read this before contributing](https://elegant.oncrashreboot.com/how-to-contribute.html). diff --git a/theme/LICENSE b/theme/LICENSE new file mode 100644 index 0000000..3df888e --- /dev/null +++ b/theme/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2012 Contributors to Pelican-Elegant Project + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/theme/README.md b/theme/README.md index cdce9bc..a492c20 100644 --- a/theme/README.md +++ b/theme/README.md @@ -1,19 +1,50 @@ -Please visit [Elegant - a theme for Pelican](http://oncrashreboot.com/pelican-elegant) at my blog for detailed features and documentation. +# Elegant – an elegant theme for Pelican -Elegant offers several unique features including search, live filter, collapsible comments, Mailchimp, custom 404 page, etc. It is a minimal, and stylish theme that looks amazing across all screen resolutions and devices. +[![Netlify Status](https://api.netlify.com/api/v1/badges/b4e4bf12-cd08-49ee-99b1-7fb343ecc2c4/deploy-status)](https://app.netlify.com/sites/pelicanelegant/deploys) [![Build Status](https://travis-ci.org/Pelican-Elegant/elegant.svg?branch=master)](https://travis-ci.org/Pelican-Elegant/elegant) [![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier) [![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) -Here is an example search result +[Elegant][demo] is a theme for the static site generator [Pelican][]. -![Search result screenshot](https://raw.github.com/talha131/pelican-elegant/master/search-result-screenshot.png) +It offers several unique features like search, live filter, collapsible +comments, Mailchimp, custom 404 page, and many more. -Here is how the home page looks like +It is a minimal, and stylish theme that looks amazing across all screen +resolutions and devices. -![Home page screenshot](https://raw.github.com/talha131/pelican-elegant/master/home-page-screenshot.png) +## Live Demo -This is how a generated article looks like +Visit [elegant.oncrashreboot.com][demo] to see theme in action, which is also +home to the documentation. -![Article screenshot](https://raw.github.com/talha131/pelican-elegant/master/article-screenshot.png) +## Documentation -[![githalytics.com alpha](https://cruel-carlota.pagodabox.com/c71132a529c1c5d7eb8dc5ea4825a851 "githalytics.com")](http://githalytics.com/talha131/pelican-elegant) +[![License: CC BY 4.0](https://licensebuttons.net/l/by/4.0/80x15.png)](https://creativecommons.org/licenses/by/4.0/) -[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/talha131/pelican-elegant/trend.png)](https://bitdeli.com/free "Bitdeli Badge") +Elegant is the only Pelican theme that offers comprehensive documentation. + +The documentation can be viewed at [elegant.oncrashreboot.com][demo]. Its source code is in [documentation folder of this repository][doc_repo]. + +## How to contribute + +Developing Elegant is a community effort. You are invited to help develop it further. + +Feel free to fork the [repository][], and submit pull requests. + +If you find any issues, or have a suggestion, then please open an [issue][]. + +## License + +Elegant is released under the [MIT License][]. See [`THANKS.md`][thanks] file for a list of contributors. + +Elegant's documentation is released under the [Creative Commons Attribution 4.0 International][cc-by-4.0] license. + +All code contributions are made directly under the [MIT License][] as well. This is commonly referred to as the "Inbound=Outbound licensing model", as the license everyone contributes their code under (i.e. inbound license) is exactly the same as the license that the code is then being released under to the general public. + +[pelican]: https://getpelican.com/ +[repository]: https://github.com/Pelican-Elegant/elegant +[doc_repo]: ./documentation +[issue]: https://github.com/Pelican-Elegant/elegant/issues/ +[contributing]: ./CONTRIBUTING.md +[thanks]: ./THANKS.md +[mit license]: https://spdx.org/licenses/MIT.html +[cc-by-4.0]: https://spdx.org/licenses/CC-BY-4.0.html +[demo]: https://elegant.oncrashreboot.com/ diff --git a/theme/THANKS.md b/theme/THANKS.md index d20daba..4f7ad19 100644 --- a/theme/THANKS.md +++ b/theme/THANKS.md @@ -1,127 +1,162 @@ -Thanks to -========= +<!-- yaspeller ignore:start --> + +## Contributors + +Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): + +<!-- prettier-ignore-start --> +<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> +<!-- prettier-ignore-start --> +<!-- markdownlint-disable --> +<table> + <tr> + <td align="center"><a href="http://azzamsa.com/"><img src="https://avatars2.githubusercontent.com/u/17734314?v=4" width="100px;" alt=""/><br /><sub><b>azzamsa</b></sub></a><br /><a href="https://github.com/Pelican-Elegant/elegant/commits?author=azzamsa" title="Code">💻</a> <a href="https://github.com/Pelican-Elegant/elegant/commits?author=azzamsa" title="Documentation">📖</a></td> + <td align="center"><a href="http://iranzo.github.io"><img src="https://avatars0.githubusercontent.com/u/312463?v=4" width="100px;" alt=""/><br /><sub><b>Pablo Iranzo Gómez</b></sub></a><br /><a href="#infra-iranzo" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="https://github.com/Pelican-Elegant/elegant/commits?author=iranzo" title="Tests">⚠️</a> <a href="https://github.com/Pelican-Elegant/elegant/commits?author=iranzo" title="Code">💻</a> <a href="https://github.com/Pelican-Elegant/elegant/commits?author=iranzo" title="Documentation">📖</a> <a href="#question-iranzo" title="Answering Questions">💬</a> <a href="https://github.com/Pelican-Elegant/elegant/issues?q=author%3Airanzo" title="Bug reports">🐛</a> <a href="#blog-iranzo" title="Blogposts">📝</a> <a href="#content-iranzo" title="Content">🖋</a> <a href="#ideas-iranzo" title="Ideas, Planning, & Feedback">🤔</a> <a href="#maintenance-iranzo" title="Maintenance">🚧</a> <a href="#projectManagement-iranzo" title="Project Management">📆</a> <a href="https://github.com/Pelican-Elegant/elegant/pulls?q=is%3Apr+reviewed-by%3Airanzo" title="Reviewed Pull Requests">👀</a> <a href="#tutorial-iranzo" title="Tutorials">✅</a> <a href="#tool-iranzo" title="Tools">🔧</a></td> + <td align="center"><a href="https://github.com/cszhe"><img src="https://avatars1.githubusercontent.com/u/3096714?v=4" width="100px;" alt=""/><br /><sub><b>Jason He</b></sub></a><br /><a href="https://github.com/Pelican-Elegant/elegant/issues?q=author%3Acszhe" title="Bug reports">🐛</a></td> + <td align="center"><a href="https://ashwinvis.github.io"><img src="https://avatars2.githubusercontent.com/u/9155111?v=4" width="100px;" alt=""/><br /><sub><b>Ashwin Vishnu</b></sub></a><br /><a href="https://github.com/Pelican-Elegant/elegant/commits?author=ashwinvis" title="Code">💻</a> <a href="https://github.com/Pelican-Elegant/elegant/commits?author=ashwinvis" title="Tests">⚠️</a></td> + <td align="center"><a href="https://github.com/codecachet"><img src="https://avatars1.githubusercontent.com/u/45950182?v=4" width="100px;" alt=""/><br /><sub><b>codecachet</b></sub></a><br /><a href="#ideas-codecachet" title="Ideas, Planning, & Feedback">🤔</a></td> + <td align="center"><a href="https://github.com/jackdewinter"><img src="https://avatars1.githubusercontent.com/u/25124582?v=4" width="100px;" alt=""/><br /><sub><b>jackdewinter</b></sub></a><br /><a href="https://github.com/Pelican-Elegant/elegant/commits?author=jackdewinter" title="Documentation">📖</a> <a href="https://github.com/Pelican-Elegant/elegant/issues?q=author%3Ajackdewinter" title="Bug reports">🐛</a> <a href="#content-jackdewinter" title="Content">🖋</a></td> + <td align="center"><a href="https://seisman.info"><img src="https://avatars2.githubusercontent.com/u/3974108?v=4" width="100px;" alt=""/><br /><sub><b>Dongdong Tian</b></sub></a><br /><a href="https://github.com/Pelican-Elegant/elegant/issues?q=author%3Aseisman" title="Bug reports">🐛</a></td> + </tr> + <tr> + <td align="center"><a href="https://schnouki.net/"><img src="https://avatars3.githubusercontent.com/u/64833?v=4" width="100px;" alt=""/><br /><sub><b>Thomas Jost</b></sub></a><br /><a href="https://github.com/Pelican-Elegant/elegant/commits?author=Schnouki" title="Code">💻</a></td> + <td align="center"><a href="http://www.fladd.de/code"><img src="https://avatars3.githubusercontent.com/u/2971539?v=4" width="100px;" alt=""/><br /><sub><b>Florian Krause</b></sub></a><br /><a href="https://github.com/Pelican-Elegant/elegant/issues?q=author%3Afladd" title="Bug reports">🐛</a></td> + <td align="center"><a href="https://github.com/alxpettit"><img src="https://avatars3.githubusercontent.com/u/28266167?v=4" width="100px;" alt=""/><br /><sub><b>Alexandria</b></sub></a><br /><a href="https://github.com/Pelican-Elegant/elegant/commits?author=alxpettit" title="Code">💻</a> <a href="https://github.com/Pelican-Elegant/elegant/issues?q=author%3Aalxpettit" title="Bug reports">🐛</a></td> + <td align="center"><a href="https://github.com/andrewdstrain"><img src="https://avatars1.githubusercontent.com/u/29258172?v=4" width="100px;" alt=""/><br /><sub><b>Andy Strain</b></sub></a><br /><a href="https://github.com/Pelican-Elegant/elegant/commits?author=andrewdstrain" title="Code">💻</a> <a href="#userTesting-andrewdstrain" title="User Testing">📓</a></td> + <td align="center"><a href="https://github.com/josephzjw"><img src="https://avatars2.githubusercontent.com/u/12767040?v=4" width="100px;" alt=""/><br /><sub><b>josephzjw</b></sub></a><br /><a href="https://github.com/Pelican-Elegant/elegant/issues?q=author%3Ajosephzjw" title="Bug reports">🐛</a></td> + <td align="center"><a href="https://github.com/jean"><img src="https://avatars3.githubusercontent.com/u/84800?v=4" width="100px;" alt=""/><br /><sub><b>Jean Jordaan</b></sub></a><br /><a href="https://github.com/Pelican-Elegant/elegant/commits?author=jean" title="Code">💻</a></td> + <td align="center"><a href="https://github.com/calfzhou"><img src="https://avatars3.githubusercontent.com/u/3761553?v=4" width="100px;" alt=""/><br /><sub><b>calfzhou</b></sub></a><br /><a href="https://github.com/Pelican-Elegant/elegant/commits?author=calfzhou" title="Code">💻</a> <a href="https://github.com/Pelican-Elegant/elegant/issues?q=author%3Acalfzhou" title="Bug reports">🐛</a></td> + </tr> + <tr> + <td align="center"><a href="http://blairconrad.com"><img src="https://avatars0.githubusercontent.com/u/3275797?v=4" width="100px;" alt=""/><br /><sub><b>Blair Conrad</b></sub></a><br /><a href="https://github.com/Pelican-Elegant/elegant/issues?q=author%3Ablairconrad" title="Bug reports">🐛</a></td> + <td align="center"><a href="https://github.com/neirbowj"><img src="https://avatars0.githubusercontent.com/u/1879063?v=4" width="100px;" alt=""/><br /><sub><b>John W. O'Brien</b></sub></a><br /><a href="https://github.com/Pelican-Elegant/elegant/commits?author=neirbowj" title="Documentation">📖</a></td> + <td align="center"><a href="https://github.com/knz"><img src="https://avatars3.githubusercontent.com/u/642886?v=4" width="100px;" alt=""/><br /><sub><b>kena</b></sub></a><br /><a href="https://github.com/Pelican-Elegant/elegant/commits?author=knz" title="Code">💻</a></td> + <td align="center"><a href="http://0x8badfood.github.io"><img src="https://avatars1.githubusercontent.com/u/3933496?v=4" width="100px;" alt=""/><br /><sub><b>Mobile Developer</b></sub></a><br /><a href="https://github.com/Pelican-Elegant/elegant/commits?author=0x8BADFOOD" title="Code">💻</a></td> + <td align="center"><a href="http://ialloc.org"><img src="https://avatars1.githubusercontent.com/u/2430317?v=4" width="100px;" alt=""/><br /><sub><b>Hungpo DU</b></sub></a><br /><a href="https://github.com/Pelican-Elegant/elegant/issues?q=author%3Aduhoobo" title="Bug reports">🐛</a></td> + <td align="center"><a href="http://shaunagordon.com"><img src="https://avatars1.githubusercontent.com/u/579361?v=4" width="100px;" alt=""/><br /><sub><b>Shauna Gordon</b></sub></a><br /><a href="https://github.com/Pelican-Elegant/elegant/issues?q=author%3AShaunaGordon" title="Bug reports">🐛</a></td> + <td align="center"><a href="https://github.com/AWegnerGitHub"><img src="https://avatars1.githubusercontent.com/u/6462439?v=4" width="100px;" alt=""/><br /><sub><b>A Wegner</b></sub></a><br /><a href="https://github.com/Pelican-Elegant/elegant/commits?author=AWegnerGitHub" title="Code">💻</a> <a href="https://github.com/Pelican-Elegant/elegant/commits?author=AWegnerGitHub" title="Documentation">📖</a> <a href="https://github.com/Pelican-Elegant/elegant/issues?q=author%3AAWegnerGitHub" title="Bug reports">🐛</a> <a href="#maintenance-AWegnerGitHub" title="Maintenance">🚧</a></td> + </tr> + <tr> + <td align="center"><a href="http://www.7rack.info"><img src="https://avatars2.githubusercontent.com/u/4596875?v=4" width="100px;" alt=""/><br /><sub><b>vimxiang</b></sub></a><br /><a href="https://github.com/Pelican-Elegant/elegant/issues?q=author%3A7rack" title="Bug reports">🐛</a></td> + <td align="center"><a href="https://github.com/maneesha"><img src="https://avatars0.githubusercontent.com/u/829690?v=4" width="100px;" alt=""/><br /><sub><b>maneesha sane</b></sub></a><br /><a href="https://github.com/Pelican-Elegant/elegant/commits?author=maneesha" title="Documentation">📖</a></td> + <td align="center"><a href="https://blog.g3rt.nl/"><img src="https://avatars0.githubusercontent.com/u/1550527?v=4" width="100px;" alt=""/><br /><sub><b>Gert van Dijk</b></sub></a><br /><a href="https://github.com/Pelican-Elegant/elegant/issues?q=author%3Agertvdijk" title="Bug reports">🐛</a></td> + <td align="center"><a href="http://PySpoken.com"><img src="https://avatars1.githubusercontent.com/u/7290495?v=4" width="100px;" alt=""/><br /><sub><b>Philip Semanchuk</b></sub></a><br /><a href="https://github.com/Pelican-Elegant/elegant/issues?q=author%3Aosvenskan" title="Bug reports">🐛</a> <a href="https://github.com/Pelican-Elegant/elegant/commits?author=osvenskan" title="Code">💻</a></td> + </tr> +</table> + +<!-- markdownlint-enable --> +<!-- prettier-ignore-end --> +<!-- ALL-CONTRIBUTORS-LIST:END --> +<!-- prettier-ignore-end --> + +This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! + +# Thanks to + +Following section is the list of contributors that we used to maintain manually. As it became tedious, we switched to automated contributors list, which you can view above. + +**Extra Special Thanks** to [talha131](https://github.com/talha131) for creating this theme and for being the sole maintainer and main developer of Elegant for so many years, and later opening up the development to a community-led effort, enabling the theme and its community to grow. **Special Thanks** to [calfzhou](https://github.com/calfzhou) and [tshepang](https://github.com/tshepang). They are always the first to report issues, suggest improvements and submit patches. They have played a huge role in making Elegant more elegant. -[7rack](https://github.com/7rack) ---------------------------------- +## [Alexis Métaireau](https://github.com/ametaireau) -1. He reported an - [issue](https://github.com/talha131/pelican-elegant/issues/118) with meta - tags which happens when article summary is auto-generated by Pelican - -[Alexis Métaireau](https://github.com/ametaireau) -------------------------------------------------- - -1. He [helped](https://github.com/talha131/pelican-elegant/issues/81) in +1. He [helped](https://github.com/Pelican-Elegant/elegant/issues/81) in resolving a performance issue -[andreburgaud](https://github.com/andreburgaud) ------------------------------------------------ +## [andreburgaud](https://github.com/andreburgaud) 1. He reported, investigated and submitted a - [patch](https://github.com/talha131/pelican-elegant/issues/110) for an issue + [patch](https://github.com/Pelican-Elegant/elegant/issues/110) for an issue in the navbar +1. He [reported and submitted a patch](https://github.com/Pelican-Elegant/elegant/issues/108) to fix a bug in 404.html -[Andre](https://github.com/andreburgaud) ----------------------------------------- - -1. He [reported and submitted a - patch](https://github.com/talha131/pelican-elegant/issues/108) to fix a bug - in 404.html - -[brechtm](https://github.com/brechtm) -------------------------------------- +## [brechtm](https://github.com/brechtm) -1. He [suggested](https://github.com/talha131/pelican-elegant/pull/40) the idea +1. He [suggested](https://github.com/Pelican-Elegant/elegant/pull/40) the idea of `custom.css` -[Brian Blais](http://web.bryant.edu/~bblais/) ---------------------------------------------- +## [Brian Blais](http://web.bryant.edu/~bblais/) 1. He suggested via email a solution to the - [problem](https://github.com/talha131/pelican-elegant/issues/98) of social + [problem](https://github.com/Pelican-Elegant/elegant/issues/98) of social profiles whose icons are missing -[Brian Levin](https://github.com/bnice5000) -------------------------------------------- +## [Brian Levin](https://github.com/bnice5000) -1. He [reported](https://github.com/talha131/pelican-elegant/issues/115) and - [fixed](https://github.com/talha131/pelican-elegant/pull/117) an issue in +1. He [reported](https://github.com/Pelican-Elegant/elegant/issues/115) and + [fixed](https://github.com/Pelican-Elegant/elegant/pull/117) an issue in search code -[calfzhou](https://github.com/calfzhou) ---------------------------------------- +## [calfzhou](https://github.com/calfzhou) -1. He [reported](https://github.com/talha131/pelican-elegant/issues/86) and - [fixed](https://github.com/talha131/pelican-elegant/pull/109) an issue with +1. He [reported](https://github.com/Pelican-Elegant/elegant/issues/86) and + [fixed](https://github.com/Pelican-Elegant/elegant/pull/109) an issue with the footer 1. He - [reported](https://github.com/talha131/pelican-elegant/commit/7b484dd611c2d05bc3b3249a756d1e076bfd0a1b#commitcomment-5149343) + [reported](https://github.com/Pelican-Elegant/elegant/commit/7b484dd611c2d05bc3b3249a756d1e076bfd0a1b#commitcomment-5149343) an issue with code style 1. He - [reported](https://github.com/talha131/pelican-elegant/issues/95#issuecomment-33189738) + [reported](https://github.com/Pelican-Elegant/elegant/issues/95#issuecomment-33189738) an issue with code style -1. He [suggested](https://github.com/talha131/pelican-elegant/issues/95) +1. He [suggested](https://github.com/Pelican-Elegant/elegant/issues/95) integration with `multi_part` plugin 1. He - [suggested](https://github.com/talha131/pelican-elegant/issues/95#issuecomment-33091647) + [suggested](https://github.com/Pelican-Elegant/elegant/issues/95#issuecomment-33091647) setting title attribute in HTML anchor elements of `multi_part` code 1. He - [suggested](https://github.com/talha131/pelican-elegant/issues/95#issuecomment-41050831) + [suggested](https://github.com/Pelican-Elegant/elegant/issues/95#issuecomment-41050831) a solution to set title of `multi_part` widget in the sidebar -1. He [reported](https://github.com/talha131/pelican-elegant/issues/15) a bug +1. He [reported](https://github.com/Pelican-Elegant/elegant/issues/15) a bug in social media optimizer code -1. He [suggested](https://github.com/talha131/pelican-elegant/issues/60) using +1. He [suggested](https://github.com/Pelican-Elegant/elegant/issues/60) using `_includes` folder -1. He [suggested](https://github.com/talha131/pelican-elegant/issues/63) +1. He [suggested](https://github.com/Pelican-Elegant/elegant/issues/63) comments for Page template -1. He [reported](https://github.com/talha131/pelican-elegant/issues/72) an +1. He [reported](https://github.com/Pelican-Elegant/elegant/issues/72) an issue with image margins -1. He [suggested](https://github.com/talha131/pelican-elegant/issues/73) to +1. He [suggested](https://github.com/Pelican-Elegant/elegant/issues/73) to close an issue regarding changing 3rd parties' code 1. He submitted a [pull - request](https://github.com/talha131/pelican-elegant/pull/66) to fix URL + request](https://github.com/Pelican-Elegant/elegant/pull/66) to fix URL scheme of categories and tags 1. He submitted a [pull - request](https://github.com/talha131/pelican-elegant/pull/65) to fix URL + request](https://github.com/Pelican-Elegant/elegant/pull/65) to fix URL scheme 1. He submitted a [pull - request](https://github.com/talha131/pelican-elegant/pull/62) to fix a typo + request](https://github.com/Pelican-Elegant/elegant/pull/62) to fix a typo in CSS 1. He reported an - [issue](https://github.com/talha131/pelican-elegant/issues/64) in alignment + [issue](https://github.com/Pelican-Elegant/elegant/issues/64) in alignment of All Posts -1. He gave [suggestions](https://github.com/talha131/pelican-elegant/issues/59) +1. He gave [suggestions](https://github.com/Pelican-Elegant/elegant/issues/59) on improving Archive, Tags, Categories and Home Page -1. He [reported](https://github.com/talha131/pelican-elegant/issues/58) that +1. He [reported](https://github.com/Pelican-Elegant/elegant/issues/58) that line numbers in code block to do not always get displayed correctly -1. He [reported](https://github.com/talha131/pelican-elegant/issues/58) that +1. He [reported](https://github.com/Pelican-Elegant/elegant/issues/58) that line numbers do not align vertically with code blocks -1. He [suggested](https://github.com/talha131/pelican-elegant/issues/58) fixed +1. He [suggested](https://github.com/Pelican-Elegant/elegant/issues/58) fixed width for line number column -1. He [suggested](https://github.com/talha131/pelican-elegant/issues/87) +1. He [suggested](https://github.com/Pelican-Elegant/elegant/issues/87) article translation feature 1. He submitted a [pull - request](https://github.com/talha131/pelican-elegant/pull/88) to fix a + request](https://github.com/Pelican-Elegant/elegant/pull/88) to fix a rendering issue in Internet Explorer -1. He [fixed](https://github.com/talha131/pelican-elegant/pull/119) and pointed +1. He [fixed](https://github.com/Pelican-Elegant/elegant/pull/119) and pointed out HTML is not properly escaped 1. He - [reported](https://github.com/talha131/pelican-elegant/commit/e479ce72db916e7e21bc6ae63677221c8e290840#commitcomment-6284503) + [reported](https://github.com/Pelican-Elegant/elegant/commit/e479ce72db916e7e21bc6ae63677221c8e290840#commitcomment-6284503) that it is incorrect to rename `SITESUBTITLE` to `SITE_SUBTITLE` -[debiatan](https://github.com/debiatan) ---------------------------------------- +## [debiatan](https://github.com/debiatan) -1. He [submitted patch](https://github.com/talha131/pelican-elegant/pull/105) +1. He [submitted patch](https://github.com/Pelican-Elegant/elegant/pull/105) to upgrade to Bootstrap 2.3.2 -[if1live](https://github.com/if1live) -------------------------------------- +## [if1live](https://github.com/if1live) 1. His [pull request](https://github.com/getpelican/pelican-plugins/pull/68) reminded me that I have forgotten to add template for Pages @@ -129,111 +164,91 @@ in making Elegant more elegant. [commit](https://github.com/if1live/pelican-elegant/commit/3da52903e94051fa771212149a10a271adc78264#commitcomment-3988674) in the fork brought bug in the path of search.html to my notice -[Jed Brown](https://github.com/jedbrown) ----------------------------------------- +## [Jed Brown](https://github.com/jedbrown) 1. He suggested via email integration with Latex -[Jérémie Astori](https://github.com/astorije) ---------------------------------------------- +## [Jérémie Astori](https://github.com/astorije) 1. He reported a [bug](https://botbot.me/freenode/pelican/msg/5577967/) in search form -[John](http://twitter.com/BostonEnginerd) ------------------------------------------ +## [John](http://twitter.com/BostonEnginerd) 1. He suggested [an improvement](https://twitter.com/BostonEnginerd/status/374555593589002241) to the [Elegant project description](http://oncrashreboot.com/pelican-elegant) -[kafran](https://github.com/kafran) ------------------------------------ +## [kafran](https://github.com/kafran) -1. He [reported](https://github.com/talha131/pelican-elegant/issues/76) a +1. He [reported](https://github.com/Pelican-Elegant/elegant/issues/76) a missing `</header>` tag -[Melissa](https://github.com/meli-lewis) ----------------------------------------- +## [Melissa](https://github.com/meli-lewis) 1. She reported a [critical - bug](https://github.com/talha131/pelican-elegant/issues/1) about + bug](https://github.com/Pelican-Elegant/elegant/issues/1) about `RECENT_ARTICLES_COUNT` -[Rod Morehead](https://github.com/rmorehead) --------------------------------------------- +## [Rod Morehead](https://github.com/rmorehead) -1. He submitted a [patch](https://github.com/talha131/pelican-elegant/pull/106) +1. He submitted a [patch](https://github.com/Pelican-Elegant/elegant/pull/106) -[silverhook](https://github.com/silverhook) -------------------------------------------- +## [silverhook](https://github.com/silverhook) -1. He [suggested](https://github.com/talha131/pelican-elegant/issues/98) a +1. He [suggested](https://github.com/Pelican-Elegant/elegant/issues/98) a solution to the problem of social profiles whose icons are missing -1. He [suggested](https://github.com/talha131/pelican-elegant/issues/101) +1. He [suggested](https://github.com/Pelican-Elegant/elegant/issues/101) adding support for related articles plugin -1. He [helped](https://github.com/talha131/pelican-elegant/issues/102) in +1. He [helped](https://github.com/Pelican-Elegant/elegant/issues/102) in fixing justification of timestamps issue -1. He [reported](https://github.com/talha131/pelican-elegant/issues/116) a bug +1. He [reported](https://github.com/Pelican-Elegant/elegant/issues/116) a bug in social profiles widget 1. He - [suggested](https://github.com/talha131/pelican-elegant/issues/95#issuecomment-38347811) + [suggested](https://github.com/Pelican-Elegant/elegant/issues/95#issuecomment-38347811) to make label of multi-part plugin customisable 1. He - [suggested](https://github.com/talha131/pelican-elegant/issues/95#issuecomment-41032225) + [suggested](https://github.com/Pelican-Elegant/elegant/issues/95#issuecomment-41032225) a solution to set title of `multi_part` widget in the sidebar -[tshepang](https://github.com/tshepang) ---------------------------------------- +## [tshepang](https://github.com/tshepang) -1. He [reported](https://github.com/talha131/pelican-elegant/issues/81) an +1. He [reported](https://github.com/Pelican-Elegant/elegant/issues/81) an issue with Elegant's performance -1. He [reported](https://github.com/talha131/pelican-elegant/issues/80) an +1. He [reported](https://github.com/Pelican-Elegant/elegant/issues/80) an issue with fall back fonts -1. He [reported](https://github.com/talha131/pelican-elegant/issues/75) an +1. He [reported](https://github.com/Pelican-Elegant/elegant/issues/75) an issue with page headers 1. He - [reported](https://github.com/talha131/pelican-elegant/issues/34#issuecomment-28151235) + [reported](https://github.com/Pelican-Elegant/elegant/issues/34#issuecomment-28151235) a regression bug introduced in tags list -1. He gave [suggestions](https://github.com/talha131/pelican-elegant/issues/59) +1. He gave [suggestions](https://github.com/Pelican-Elegant/elegant/issues/59) on improving Archive, Tags, Categories and Home Page -1. He [reported](https://github.com/talha131/pelican-elegant/issues/50) an +1. He [reported](https://github.com/Pelican-Elegant/elegant/issues/50) an issue with CSS style of nested lists -1. He [reported](https://github.com/talha131/pelican-elegant/issues/10) an +1. He [reported](https://github.com/Pelican-Elegant/elegant/issues/10) an issue with CSS style of links in an unordered lists -1. He [reported](https://github.com/talha131/pelican-elegant/issues/34) that +1. He [reported](https://github.com/Pelican-Elegant/elegant/issues/34) that articles list in tags page is not sorted at all. He helped a lot to reproduce the issue and stayed persistent to get it fixed -1. He [reported](https://github.com/talha131/pelican-elegant/issues/6) that it +1. He [reported](https://github.com/Pelican-Elegant/elegant/issues/6) that it is not possible to link to a Disqus comment -1. He [reported](https://github.com/talha131/pelican-elegant/issues/8) that +1. He [reported](https://github.com/Pelican-Elegant/elegant/issues/8) that code block auto wraps to next line -1. He [reported](https://github.com/talha131/pelican-elegant/issues/5) +1. He [reported](https://github.com/Pelican-Elegant/elegant/issues/5) hyperlink style compatibility issue on Chrome -1. He [reported](https://github.com/talha131/pelican-elegant/issues/3) an issue +1. He [reported](https://github.com/Pelican-Elegant/elegant/issues/3) an issue with link style -1. He [reported](https://github.com/talha131/pelican-elegant/issues/4) the bug +1. He [reported](https://github.com/Pelican-Elegant/elegant/issues/4) the bug that Disqus comment count is always zero -1. He [suggested](https://github.com/talha131/pelican-elegant/issues/7) that +1. He [suggested](https://github.com/Pelican-Elegant/elegant/issues/7) that comments accordion should have different text depending on its state -1. He [reported](https://github.com/talha131/pelican-elegant/issues/107) an +1. He [reported](https://github.com/Pelican-Elegant/elegant/issues/107) an issue when publishing the site -[yuex 悟道洞穴人](https://github.com/yuex) -------------------------------- +## [yuex 悟道洞穴人](https://github.com/yuex) -1. He submitted a [patch](https://github.com/talha131/pelican-elegant/pull/2) +1. He submitted a [patch](https://github.com/Pelican-Elegant/elegant/pull/2) to the project - -3rd Party Credits -================= - -Elegant is standing on the shoulders of these giants. - -1. [Tipue Search](http://www.tipue.com/search/) -1. [Bootstrap 2.3.2](http://getbootstrap.com/2.3.2/) -1. [Solarized Light theme](http://ethanschoonover.com/solarized) converted to - [Pelican Pygments](https://github.com/yuex/pelican-pygments-solarized-css) - by [yuex 悟道洞穴人](https://github.com/yuex) - + <!-- yaspeller ignore:end --> diff --git a/theme/code_of_conduct.md b/theme/code_of_conduct.md new file mode 100644 index 0000000..6d2f8d9 --- /dev/null +++ b/theme/code_of_conduct.md @@ -0,0 +1,128 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +- Demonstrating empathy and kindness toward other people +- Being respectful of differing opinions, viewpoints, and experiences +- Giving and gracefully accepting constructive feedback +- Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +- Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +- The use of sexualized language or imagery, and sexual attention or + advances of any kind +- Trolling, insulting or derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or email + address, without their explicit permission +- Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +[INSERT CONTACT METHOD]. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. diff --git a/theme/elegant-logo/elegant_logo.png b/theme/elegant-logo/elegant_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a718e99fe7236ab7bc3a2922446c72a223e5c1b0 GIT binary patch literal 17218 zcmb`vXH=726fPLLsDPrVbp7ZcB1jEYQ6QoBUK9}tz1L7I@F`6Kh;)>M76M4`MWiFW zNodj`6zMfEhwrYr_s-0ZS+mys$XYJWc~9AA?|t@uo_+kFrJ+o7ndveF0-=GaJk^0f zNOmuNmngwsx<;lyLLiFNu&0mpd@R-{seD+5zn&AP69rd4->*8Dn!hYA7)%qY<rMtR z?}kYwiO!{a)Cr>7Q=i_=2MPV5r>B1stVMb+M1gm7X!e@J$4LLpx(@w1hs2$p&T%S6 z#@{CEaEp}_-?ZjLw^y$WFA*gl*}jS}S)sLi7t>Qd07HG`qWPqEw<BAV6avwPVNm5N zCQfKN-0mXl08`l;*u$S!IEi6sAyuaA5zs@GOO|^jMjAa3M|pg%;wv_Az&ZI3pJoTx z2|p*1TeX^SqVsHkjF>&ZWl*iD<BVZ~K*sFQ$wB|fCd4V6$H(b%5j6%9hDRWfMr)}7 z3Fp{6dfHuSv>fV{N)mb>%y0{SJi$6Zi@dCyKD#tv1>3Cf|3U@{hM}gM+ZUTfe(iQo zCx~jb0bv#y5AcN%a+5WyUdahGrTNCABT@UXk2w@94b!4=$98iJ(Gk72^IKVjaF(Um z9T7I)2np6go7E2Y*EOLwQN7t;d}@453F?wmc=*=(T$_WD#q{Ehlc>$R<&J8#<_^g| zrV{kuH6AYK#Q5Nw-B?-}J48pbR?d>9D`dMbw|%)4kj35IACR>eWfv(dc=mus-qIeY zO?E>*Ff*udv5&Q-LQGvQAamVuZaSfrAb&QgosusW8BK^+3`*O26=j`t;>2BEpL@7{ zD4gtYd%AF^!_(qB%JKBX+T74}i_ciV8W*2kk0_O?&)@pkN?3pV(O$;U0ZAq{)fZXl zyepNT-65RWpOrpnZ6<LhCGUh)noS=z5qm}Vv6p4r{b8$-?}Sp@>Cf`W)hxA42B$&s z^m-g2?>e^Gb@J80lK4(y629Q5cPK7?tv@iUQib;=F|gsqL}+@|_dO=Bxxm`51h(ze z*>wj+=E8CsN9LrO$ROLf2D->I*;YJT^`=ja(n<W%C$FvYsai)F=gj`MJ2C%y(%ljp zG7y|g(Brf#LbH@j{9sur)wIx+2wO>&AOAt(5*}6aC)7Bb_&4k~#apTxln5sU7X{PD z!moz}LRL#|p?s>HnZ%>X36ViF{NlKn{A8(P$xb9;u|aikPd$+Xr)ia}S0J%nia?%_ z<R=w(7_k@P5y&Ta&NJEd=Lr01K&?~Y@g@B7rS%~*e5T2?o*v57QbI6BY4A@dJxb58 z+_%JcsYlxWmh9<YI~4covaDB_M=FzWSe4kiF>C6=;Q2`dyVRclbd6T4+9$n?&p;(H z#a>(a=LhE&DZVG`mN9zynO103=IMb~a$9|0hLwHOkLoH$hu@zz&6J`1^2#6(g%8Y^ zWsi3vBGh2hBQfjUD5X|*Icug=#Ca8(op32)H~rjZ-3MmKz300Qf!yU^=}2cR8G?Hg z+Ba$ykI&~_nPiiRw^)DIS$v6(@lYRVW`RHsIn4<+>#t!4tL;v9?JiQ#W%;Pt-)mh# zTIO}aUUxC{pv!i29(GjKq+oGD>}6%jVJP&?mZ8NFHX=Vi9bIcn3xNcLfPXSry0(}@ z-}r<|d#i9n%`)VK*Z=)_!w}A|XA1n0xe$?HSr}KU@{9R)ms^{PE#XoYaX0&lP4@?c zG_cyPDP89VWJuKA&kIrU8Uxo;PA4}tJ`Fu{q=rD|)A!%9tMy&~Sv(;%K(qF?S2C0P zOETWl5lsD4#HX*+t_)%Eox?6T>H69L=BZB9I2i=ePP4eMuCqfasqFU>D|C(5u!aNz z>4_<+oKX={iV^0{+XtPZQd;Dc?dTv7NjNwVg$(c~QdY3zcoPL)Cfd;|PfsUwRx9=B z2(*9PB%LNKHOCM^$MR`T(v9PKRez4zXqmY9WX{-YQG-#TXulS`!N~aW!icVAjZ^;6 zrec9<L${-mK|{k^N6hQpIZumqBsZa}{UIW%>{ovA)*iL1`GE?a-L)>BergJbEzwvz zsgOQAJzG@>JX?J8ym=~lcdt-0R#ao1oE)mfVduDBkL=mtQY~Gd^uFT#D|xi08qIkJ zhYf$fbdPH--e(M=^%?yStnJs)f{<a5&2V0PNJ>gSLh){2$Yhy~4fE|Of9Kz`VeE4C zZus(lxUL2tO!u`n1nrkFB-CxSUKSc^<81*lpvv=FAKyKuk$Bx4!N|jJ2U+tuC)P?d zobCPCVGjz(j#$CnguI;%UL7Z%7}omqKjR8op7clEUW|?NfEdVZJuO5%3ojS=4Tf^! zEq!%Xci>dnVB0HfZ|P?jr*pY+AdLM1N)N+H5<>e<b+o{I_i(-gd3Kb#8R5xs9m5v< z>-^L<$hbxyM_KTdY~-_l_8HuwYJdC#LKpG`g9(&iik~|Wc%BhPJEnquxhPmM<o8_8 zY@IB)tbm@vZ&{(T+OKQpwuMpY!g_`KkQ~HFKvVAnMAoCx{|)}QA<Ye5X#Gz&NhN~s z+Ok4UZ2(~|mYZgx&c{`2{c><w`9k)@;|#K|tE;#msiS!|hGdD8;WIFXy_%jN(2WV} z`h~<tJ?+yKFP?=C&^2aAKIEk>8rewM!U)-oPE?r>m48FbT%lYbC*5ngjkVqhY+y+* z3{2e0vWfWci@7c4!!XUDMzcqLUG32-ihkX^_@_20<$k=I`#k@LV4U=PoFVs^VuBef z1y~)<JN+n4tXEdTf)9mnIPbi-lvd+6zmTAOMLBZY)|2pgrMKPXrJ9ybC_0#vqr*-w zfQGAex~Ti-XbYazi`m|LVj4SIv^rTctfR}F<E15U1LjDuMfe{<_w-34%Ct$yk7F|2 zmU?IkE&Lt%e*~QDo@`n^+~~4oTkh>#<*+Lq|2O`hR@b-<i2Ztuaupdl)Pb{jvC6%7 z9Wy^JLab;&`p!x;_<j~%bVo(dQ$6JEG0A)dA%}ibWefB<PvcTm;+6V`tOrWy@3Qd6 zjU5I^z_)XUA$OwXXcRIy%=F7nGcAdTk0|RdPt}BaeNnG9462%+4>HEF+ebpm8Z+E0 z6RThS{H-SLCAz9YPtW0CY0)D2)Ius)la-G2+VZ7@1R-;ebK;F*c$Dz@u?8>a+(FRe zT++Yyy)&Che2T7m1^j(HRp7f5VPe}P_*JX@%1$nv8d9F9Ky}GOsk|`Bd$aEC&}9Su zqgQq-Ch5~b<vN#x-76ovLPDape<lA~teDysaNQ5ztlfF>D)6iYE(jUvl<m%t3|3Iy zdoz6|zO3{Qd}wB;H>iGkDEFM3&qZyzhB-2i1Csx8=+4C!4J)3v=xWj!%)*5N|Gck9 z)w-#<Pek2V4%W5?a}<}^+avZj^uP7gE~O=MU;C18ohn?Ox!>3H-xNM8igfQyucP#1 zo$7s4I4w=gyw@&;&>9J}-4Ua_wmep}-*THu;PG5x!<p>d!GR$jTQ=epu9V6A;+f6| zPVB2Y)@IBfayTFnFK<#^TmE-w$YDpR^1$E?_oRnzE?TWDa=W;=SU*~3yS-K@a4VdO zTRmyWd-mrCMGcv)pGGTgc*hEyap~)Rl#67oo=)t1IST*WZ+WJ_Fp`XQ2Ie|e<M3OY ztDyMgaO)XdcJ#{jvr)?+WUD}7t&W+wIj*@qN!oj(y=JrC^x3m#Viv?g`@*{N8sS&9 zOn3NJy?(Mm@7$#7Q&ipyA(M^E04~prF%~<NXHwxbxxJNUn~oG`Tl_U%;cPkLIchF} z94mS*S4ccTnfc}u3_49bpMrG&t4^CvD<oeySg$b~kb<ZFt@Yh8P}|}qVHS7b?dj<F zz4rciEk8ehkSiYh782s*!5hp59qn_E%Q*eh?5)yi@Nw;TiEYd7${-KclX7uk!N$~H zq9&%@%kx@rJWC4+IdnpcSC@KK9HD2NM>=UzvsW`sbV}decFQ#QsFWF7Qc}V`aoj}Z zoks>S8;!Sjd<s;DmO1h`KI4I6XeFvRj+9x#DL-(#gQrFShOoDHuGx)v#6L^|iR$HP z`w~10TuK4qI4&c9W0J^MZ6mlFZh88TX@`E%)8jW#NTa02Hf2kQ0+q<lj=S!bGS|(^ zjuusJHbGp*Poaja5UYUtc?#$yk4AFR$CzO6Ntt5gi5I5P$Mf1uod1AD7%eI5U#hnk zO?A@N_;N?MxWJwP6^Y;Sh>3CsnEEd!C(H@wDGMh_hhDn2+?x3ktX?uiL4j{(U3>^< zDuHQa^So-MWwxER0LFS47^KD5hf%#<VcVMq7w5p~DU%d@<q_^{%Cu~<YY5i4D=l5) zKV6SJxNlisTZ3xnspDEHfh(xv=BvkXoTUF;KccS>b&9Z#W4YV+Sm<8P&@%A)0ZW+@ zQ$8GtA#58wMDqc2cw^V2ct!yzC4@Uy*2ATf)g>iZXTJMUujo`w4>nGQu5M@C-gEVC zBi{k%8ICf9c6(xr@7bHC8CN>F!<m1$+V;oC$NwO+HHe{5%05NSsV-x16OG(S*J<0D zN*V`I+GapQ{ODYrVLkg;dQ6OKxo{R1dg)>3q)*&Ua8(**WRJ|?of~A&H)=LDc!$F1 z*e%L^cNRS<C@AJ`&PmF7g0x|g&->bPaPN|PoL@`Dl%IWimHSf9+F*7s2`k3Fpz771 z0gP&e-$6<A<|n$(B%^(?duYjrovcM8$3x<jzS+}MK6UF1n+@k@A8R(Mu}jsSgiy!d z#m_+aK!1r`^u^DAS7SAxcKy9UXFC%=e*7RoeT1%Uiu>S`griU(7+B_#L`X+XZ?gLz zuVi-#EX1h1^t7?D;bn@Xj1V5FQDWOJNU-%AjOC*6yrbkcMBaF@+>C^o9HhtAkGgPg z$J!FPE>;;Y<FsHDiJ2mmLk&6SdC6t+;u0Gc9^DJoa2XKnV{Ox>f{?qpFThMP-YQUK zPpBu+%<f>xAjLJFR|Mh}GTu^kq1iSSsfw$;3v~yA6{rU8_odRhCDVPH%v8pqC?njc z{)vHNu2(Q*PiWS_`bl*4zH*W{=!MueU{bX7pM<dK6oaqS?ta3E&Z<Pw54lJDsB6np zfRR2W=&|K#9LD(@t<$BrQB^*L#H|lm{C-E(GMq~U1_4~hn#tEs^l|!nH?>d5LTLZi z&^TD;uNh2)S!AP0f_5SHG_t!tA=0<774)BsjdHA<3NpPYNm=jqkzo7k)i3jsm{ZbD zSf2(qK!w3c_6tLD#;~bQPpSD>q};O6q-8?amVq%im}dM-KV<#m9U00m7YQbY<ohej z#%I)Lr>)wbcPWG6{FZ}je52grGk(m@vT)r1)>tlim)awv_$eOI75`~ss!pJ|+N%s< z3Hp+<8l7kk^FN+!jWFiSErg1JsfCr+uNs}cq2zyj!?`*auA^DT4yKm%$S7Bn-Y?J% zr5ByaFY&`(Oun2!)@7+3Nk8PcHb&M|TPss0aBcbSUB;hOV@H~HMf9R;v*8kOCiFfT zDeKJdoyHKHiEh1a6un-+LOcm93LNVvZD|rY9~BZV-a^X;m8MVk9{)Gn=%rv4oEI)Y zT`?}B2}Bv~heWdBKwvf=y&*?IgMkG8=ekaHWhOdV<KX5DR-?+t7E49HE~VEKMd<l9 zwa569Uh=s1iQMm`X*TG!ZjOl(HB-=Bq-vzF^^hDGW}=+Z2urp(mHmQ?_fslP*wB(S zF7E3-kjG59m{tEH6NWsLB{h>rkCb!?u!V0IEmohTuhH0_NH_FTBi`SrKPRrEl=6^3 zT_hK1Yxk!4BSYtP-}tGe7)=ol=ge6z1Mv<jh0yA)ji4|>xkk8$3-aeX9CHVndU-%} zENx%IrfzB-Oi1W+V&B;?Fz82Bo^H#)9+#2M7(RhO1S|&E>X=2%aSvCLr&Ct0kkeMs zfxE(LURWuY^c}WryG+`n+N6n^9HDvGAAJn#?0*h!2P<940oEMks-I2Ob&8?O*~IMx z_T#rr*AW6>H4?uz2<0P5dV75#Qqgv2X<|%hgLcAn!>d_!2^-Z;eLQIht&0#;t6ZJE z`?yXn(;z8u8tG1IY<y!#25d88jyDk^@hvi_-X!zoFh5d$CsDomLG44rYqp)s7kUG~ z)d-K*w7{yEzpu`V?>X<X6z}|UWB9*sg*#YoQdJh7KgD_%j<}Q!{47K|8k{wTyd5eB z$FbWNa-_LJv=Jisl%eE#vR{nL9*}d<+yWNu;!yM0wK0oMY$yF-S&ysfC|Y*EKwiN9 zTNEv59gQ*ZTZRS8+V2+HI**8QJwDIXy&YY-I}qb2d5xAF+GtE+)eA))E@3^A@>$As zic}Mbw;PTTIP`O<AEeifN=-ncimYbz^+v2A;VGdrXKzj4eKFu>dnZ&^kPK`}{jZ#d zRhv%T`Do$tO#(k(&*?AcsrxKqc}6-4>tF&aM{{NQ1={?Rgel}7dC%&6)Qjb#B_Y|3 z#pD|JYPK~{!^SUHJ<Sw$o8|5L*W{NyxL{7{a#V5$-H$LLi=teVR$44pQQL9SR_6M( zyRwekKTdtPH0L{|+zlw*+~hcb;7tz7#iEnQ-sP2T^>;B?JknK+f11!h+{gM7k0YJe zr;UPjH-d!?eo;a1oR%+dPHVYVDv@yYuXs=Hjgr`=`M$br84eC;W-m9mEHA}30e<Vu z{6_psp0mTY!W0+0BM)qq4@{#Y-pN|q74YlPbYE~WD^nh4@@eX3H*|eTo;_}2sT2g; z*9<tUX7FqBuiGZt#0IM2)zp^6)qgfI0_L2N+B!h}u04$6up-Fd61O;LaN~tB@Q^Ku zsmitdlT8T}H*XcNcSxrfqN}R{i;v=B`g$`lVCNURTHV2v%$#J$Rd=w6;3S>(07B4B zGva5;c77X;dg8u>y!%or85+HJ3XBlK?~R>L^^c#U@O38eV;=Y{CMI$S)i_k5A0x!T z_mCR<DzBb;OIh(>`kKa=xUHjamPxYy2Ai=ONq2KqK9F7VfLt=fy8Z6TOFqBN5bvbR zUKaA>ItSuGx|F-R({w$LYNu8g*b3ySVjli54RK4p@XasxID%3<R$OFuyGtVV<Zm+< z@O3waUjTm`Oya~qn2tASz|;!v#9gN;L-rn)1f9;+x=KuZvWqw>eF*#$q^RIW3{-zu zpI@g;vnNfgbE@7b(e$<o1|P?R^@<s+@!n(DtS$K=JuD|lQ<wm*wrd43@=OLQ1|!uU zzZ<X#n94iKrxiG7hKl#UEt7Eys1q>mU~1X-EOK-h_oN%4VwPB|=(lhTXxQp?QNf4q z)0`MI2hOE;w&H!tn9pmsYz)L#;ZcS)TaJ#31=Yo^o#U<3Ev=uySAV2`Hk2^O+jF>0 z{`;-}wF7hE{$kyDWavWm_oE^`%hmZSqkMM?3^dvW;{Els>NF=2opFo>`U(aV(9o-L zODTJ|<qpiA-Q}?@hSCFbv5wH^*_sXNEYzU(C7vkDpUk}NqD=R9ia~#ca|ClhW}e9< z1rTtA0@HGb+}n$DoO`;*kmavrjg2L}52Q~*sLF3$WgIXcc!;69P=<o$uo~M5_g;9R z@`Jg9X#Had5awT-m&^0%r!Obb&H<U?9P&YGOy+*%prL)^x9$z6TGy30Q)m5$@<Eko zH4N3oFitHk8))Z1_m(f%f{&DL?#fx(pMW|;u1d~D{43#xR6MsE%p;SMYC(}g_b<-= z<*i$Yc}#+n<e!siI^TmhW}a(za;@2crwW!AP?e3Ab~^Z37=#=y0*O{5A@U$$NWV?| zVy4<a;?U0F+(BgZ={D=z9;vpMw-`KQJgTFf16_f%<}CgEfFbLV^PgN63KTYZ=#fLc zxUlz0RHKdi;%fyBjnb}+$N1W?1_#z4;$9h1L$=KRp}b|<byRiEAn+xS)^^D#HAQpz zO$M>FXiW)6yazI%x<fq78LLF7Z7gWmX9b9pNQGv)`O#ad&0gk*88U^M>BZlKtv`xf zxh!I%W}!$YV<`x-c?e6xc_W3UJkd*|(8An?7NuutY@PD9M8qxS?bf{HHj5fAnz;?n z+=3qxD%x{Qi9Wce84%mLqtjfj(JbO$6xrQm-O+krkGnyqF2O=89ipH_v<-J=x5q!U zrem|*tF?>PUt^~Uv$vWpqh-@9?=Nm$XL@t?$#ZLA%NqOjXY<6;LCyBj8xij2JF&5- zrEG8_!TI05jsLlAX?EYPbbtwBk$(AZzBMfbEEfEN?Qu|E2)M@}7qYz2g#Q3Ca47!+ zB)jMZr1;+t<op0|{6D+?@7*ta&_y^I@qN|d|JwC`cK`n{@+tIk<CIO;k7q3{%$&xU z5SM4qJadY5K3vk*w~2F}G)ag_sIW*?5T&O+Iz7vf88Mmr&X%e9uyxrbf2b5k%TZrf z)+%ln^qQGaEyBilL%!(42hBEwvfGO?rr}oC7lf3<(xsVN;qQz=*_%JX=FXs=tGQ9r zg&xl{wX0(OrN3T~e?P#d{nL}Vo!sW|u<SYBtl!rp7F8UR;4c35IF@wHR)MW?NsU^$ zwe8mR1xdGA0#jMn`mkyh@?>P5=8jgP{A(?Ji}SNT-EZDhD>yl|3$$*X>~QX(;;>Pa zz@gK%=NLk-NYKaB4&1wk{pyj>mY$evmGGdmz1Pq{yMJoUX>#NuaOrDY87wLG+im~* zq`m_E0P6Lh3q{xyRQEO}p+#Pf60pgUUthj{NwKJNh=#?EL>~_%e5Of~la;Qq?NytT zL=N!I0H6y3us#uHOQfe!etRqk+R<%WZG}=>{?pi1&mYtpccp6@&}?vat2k*$BcbI) zqV9P0OLniMb!T&PDC+^h2-l`-0*-25OUh{Kqz+sGN2xH}llp3<nJ(JTVQs8KQzK1g zBeQ1HVuj*N#NP4403GPk2#_I>Gf%wZjdMw>#<8FjZwo6z&1T?BbMM&yIw+JDXfRs_ z)%{(`)y<X>wt@HW|1P;*^XD%Uh6ku!@Z^<S^TfT<LGDw>)uA(K0BgR#y+(*jyU@)G z$Y(@1I}N({8{kxyB0*=Aglc^Je{JR6DT!M@=Q|WF4u9O<7ASWz=gBo&p$5upMN}19 z@O!%yT8A7|_iv7m?~1R#812?n(D|nm|2?L<z}AR`5l?Sk*^4CL9X2mzNvJa8@ck8` z?t+Q$)@A4-9cr0lhA)1j=3OT#Zt%32d=rqC*Go86e(kH#lrR;H)7HuePeXcT%0C*^ zX3mp!X-oy6Aq}m*UJj-lCKf+%86zdo@so$n+$r^VwJ$z00r{fNv9?=Qjd`$WOmsZ` zgQmEnWl%uFeA3%NCx<DXs`^l0%jQ~+qdNMyI2-f>1AbARn3!UZ2;=kZE(-j|@GCuM z&Flt|wWn?kt|`yqzzH>0GCSq;+~?&rAU#fZZLNPwDjW27W~^MQ)zvSDrmBB=KV_<J zctD{7H5Hq(FtEkS-8bhMyTZMro`6A|eEwB~`qnC7aM@P%#2rIMp`-s<&zST539M;D z$5NSzyCd66$Iv8?(eiXQM?dHUA9Vp22ZEd7#kM>+_ePTn27DfaS((_VXMD!LXeL(0 z8PT|4v>MD8b<6}~M7^Q$%+i~DX40<=?NiNT<X>1)xiLgrcjPHlKep8LRk6nWbU>Be z$F@bOw7JW&QOpCPv;r~E!J*w?{+y2S#R;l&Q*jzW8qlS{m3M7u!9uumVXQ^P0BzaV zapcJxP2}RE?0Vua=K^nzn0N%^g(e|jHFOqGMk&*zvwV*pGM&F%cKcAfECE(6X5+(? z>Gad~<$kHJ+uKK|d=n6ULhf?frK4$dDh|-P=iI4B{<({eb|Z3jU&j?zsy)fhBwc2- zHr1Wj;dwf<7wTgMvjNN}(jq~_-ze#?w_OK(1u5`MN5-mP<}6K?XT!8Upd3wK#s-Wc zIKI@-Z4o|qelK;qvef!(X<z&|cxt|KTU2WOLZpOTTq&#rq;(K2e!D8snR7HO2<0Ud z_jzoHqUJo&y{GDRha#Qe=hDX=6c?TD*+mYWP}rT44eXZ<_+i?a0mRZzC4YXz1S7-+ z0M~mbM0<OH(ymc=pl=Bs>5mb?H2R<KSuQ=O-K_WItIYy%4@8S^MbYkWIws#6Gpyag z-!XMIQqg06a?sElua`Fu;QPjyd?pevcvA&BMpLE6D{F>r|F%%WsXN!sQt!fNaY;B| z@Zh>aBzi$-lLuW}H6V^fi)gB)1t_(Q;KFsb%f$gu3)#K(262@Eb?%uvZD2<@(%H<P zC(_W$K%FLjGLPVrlZSD5+qnB+$yULofAs8P1)dF&!!gD8?ebBadIq0&Dh4&#-S=vJ z*^f#}vUy!E_SSNbS3e@5M-(A2R^etdnov;rZRUzlU1{r`M^9F$0p0;|_#$k5I8n1P z{=lwb;P!=2%4a{Fi7;nJikb>GOn}HYc=$V+&-S|;S=C}<s_`Qir@5U@oLCaES*OHY zfCGR55qxADWwEzA=+6oAvkSlABjhIa_0{Io0{kM|2V_Lfw;#2>bCKpY>pK5^^qe-| z_w4AN=``{{At~CA3S5;wdr9_D;X^~+hQ}Zw>{F%ctZ?Wc{_T-=Op<p2cLHRl+45`~ zy=q=FB2afRiH!Hz(WHalbn<^^RP6F+MppH+!|0!o3LHrh;_9$Yh138lXP)2g)4heO z@uA-Ovu8&*XPVks%X1SUyPPC2OCv8W9$k;G`-X0&)>+}w3DJI0YdS{BVpQX$G5V(& zFVF|>hM9bdTW|_%Odl^_4td>4-R52;$hGj;1X{q$K%Ssp`RN;dFg^Kk<*h)4vykBl zP>4Q0igH+0IL3ft+h6_&mWF0Mz5|4tRbNVT_x=j9!!q+H&UgR!^WhrrP3?;hAY)uM zy$Sn#j{$sTvfs`j2fOzlAfX_HtdBGN`cp7qCPZ7D#R7K$X+VlhFZaaI@;<&`WxTr+ zODxx^K+cI=R!|ub$yI$%f6#-gxK*|@BMFYD86P5xa!%CCB9Fgs^ibT)yiRld3Xo=> zYPt{wA?}U@egC4wRF2-sMHb%4I>u*%Lp_1_&4#ftaog2^<NlOCPPdHdjrm8LE9>P{ z?S>c??V4^|Ysmx&p;~N}Gh*)PLN)xI-GN$|rcN3(+l|k^22FyH+9Y{2-r!+Zxw(=J zrh|I5+jxFE_ucAnjZ5pZ9Cv+R+6nhueYcG+xk1F&&k6-~?2{rZz#Z!i);1?8(u!UY z^N>WDa;Dl1>5Pfnk33|Kd>}4osZ8T>!G?|Z?3zbH?^#WE#)p7Biv=SA#KJKVLIXhe ztf+8+8VHx)KpJ}*G<G%+aoK1`xFwJftMNN%(M~g+a&=6*97Yx>cUe|Rnitg*28Q~N zj`)2-Y$LCCpW-Ie!RXm0pKjjpllLtxkF6udZv{{8Eb7nGF`*SfG{ij_;2vuD4N>(k zdIMqK+U|oXAuaDoT3`=c!NjB7hMPdpScZ5%6=9&s-nh{cUIQD)Unfho2Ux|`j|9$4 z%8=qnW-66D`b!=Fm$faA^&SX$t*$Oas8+Iz1n3sh1fQ!pN)|J2@*ayNgWCd$40cep zkn~qq8wtr~(0%~KjOIuCmh*dWA4iHu_AEYC{0bU!_DKO+R14XMnWrZhRHLw7^Y9V7 zIJ{Ev;^3nxXqfS6Wu3cA;&Ap_GmFFAG3|!HYQpL^=Jfl(&!;FUGkqI!Qr6wR!4%kZ z+C4ZXg$~_srWwD@wO1e{c$;6yJFcfPl(w-mb`b!bW-!k^E@993_$VkFz{61(|Fl4b zoUr&WNs~3Kz&4lggK5Hc=b5D6Q2)RqwvOJc`ha`S$lkX|Z3(yoC(%`1C<ky*B;?hR zPg%q$m8!_f%F0a5MkBfZ2H)lp5Wv=;*Y<rX)vC!H>`7&r#1L1>p_LJ57p%Z$j56Cw z-Yq6+uY3#S-mrPp+{<i5p2^iQvUhPAr8V7@4Z%0hE6gn{Ha5n-D+&&m*lJQj%IU9Z zzsM)>*SXRFsI83FgUI@?*Qx?fAIV=U#y&+us;3!b{VJS8xlX1f2CTHpU)`xwffDsD z<-|T@vs4O&KDxHN`bE}*vV}yPDKclrg{470HycmVfWC^MtFWeohR{~_zphL@%NX;b z-c`7p`<5ys7E@=9DK0-t?THEHyIx>FOmZFQ#n*C8ePy;-Hrd@pXJ4{ybpAaZi83C_ z7O*fEj+i1S_1p&vKV|Z3%V5KyY&ty8aeF+0oy0MaiI77T=q6p4zbd|%hyWneNuTr! zI$0vgM3_bfnK*qe;pu1}lC?OD_F-qL_C_%NBik{9p_#U<O=lduOe-+3e)`T0J-j<T zvM543?*i=(p|#GZe@R&V0q^6>P8paMfb*Q?=RYNzymYs(iO(DDQ)H+|ec8}JY4`)V zyBj@?M+217#Wp-j`)=Q#(trA}2b+er^zB_G@L&##csPJ+uPp;=#EANG{O4mXV^4a< z_wU818**{hpb2XY5MjXSf1=lOpHT=!{|o()|KkUoE29D(taAyVpVyXML_`qr8Nk06 zbG;vi-Mq?3Z$L_^%KzybDL^_&S@~G1%yH!U4wK{0ba2oQAV4$cx~n^IhwnZx$qL-P z_Z$`2xC}DF$X=XYw#Gjt85s}0BxGwndvAh>h^x}lsgk42kKG@Evzv6}(L{dgVH){P z%1RCuxpJk;q+gMJERj_9OEUA`lgT~ON$o2%P@}vAmEQ<Rehg(R+&?9hmA}Iy1wR59 zg!%oAIz{R{K|$7uMAFGaqO2c__r&<q^UNe(n|T2W$Oe#X6d<ycRiGI^$$#kU$FIs% z(>Bbb*5O*;=b1V6dDThwzXX1kzT|OrZ)rYX|4p9PM!pV@$b5=>9Ix_#9v_co2OyC_ zoORh>GqG5gdc4HJ*eF%SAes$%lIGUQ&6U$IuNK=GcR^E;vLY$f(k(FLj-YxbgA?0h zJ>TIy@%<Ujr8q9=Td5@ss1i6Y=IyFp2HwZga;GkFXx!>kO10z>jMZ`<l&hU*MJBgM zGEvqu_%VnY`aRn}vBCQ`-e0Lv&cg}}eUJ=kth^EU_iYQ}JqzqMtcn9e2EP%^{9*YH zpb;*>_s#EFVjs@f{X1%XxmL{rG7GEu1vup8^9`2yj~*mcM<nbYdaRL|jShbYMjXM| zw;Azhg!ggy+262W=<ju-knZl;lJmnh3<C22wK<L17(_e1N3aIlgJs9)2Mp_%!TYi* zruaXX8mERonw<@QbdguQH{rXxVwO9-gkj}C6BD80B#UD~lT4R9cE3mpb9_q1J{?+{ zG&QR8KX~9NqH*`(;%OWE^fyjM!M&qmJ(sA`>I%K2%v+?urIE5SQc#?2+~C&Ze;m#p zP-LK^m#WrO^n9|8#LYgQlcYmRpXo@D@8F4D%S}6^e21W9XTp65AY+7Vo3u6qcgrsF zu3Gw{-9KT`@+<pzi96PzSoamzZOuTP;*Fyvf&D^@)NIZz)w4OYu!T0R)H$;Bc>;P8 zCB*;x-+8zQiiN-cYi-SrE|M{rh+aZ|ukQD=*6+=^ezH|-C&TWH_b{LMN|67~&Mco6 zulC4sc;aj>Uv826yX}kNE%Nv;yOMKY55}1f8qC<w)@<QVj~0K`2~;>FCQ7)>xOj>H z`MO#jHk|t(XmTi}6x?i&``FqB&kPpUiHzruyy+^xuxk>#5N3JH(a4E5p|O0Wcrif& zU%mo06#2DzvOJba_dGVD&&$-uWKg~1{3+)d5~<@Idx%^%K=pqIS9|qUmYmajihAYG z-_mdGgEExBv-h_VTsC>JE6{+$I8}>4-yZk#eP<s2mWWjw#zN8C+!~L%qP(hLKio1k zmvl`+%E$p19mBnOvau;UTKAON<X|>DyK8)SHKmv`J?Jc>WTPSIJCwiCB$>_do<c?@ z;jl2!vxYvQ280cX**(}L0E)?OK9VP{T=smK5f->c77``Llg@H=ae+^}&<wfv6ow!6 zrIA``lkbuF6DDt#6-6E4Rsr1)Q3#WNRN~#+5u3p4+O~PTocVk8XT;o9DPlrHw={t+ z$mkm_`K7QY+m-Mucl)$O*MrWopWyzUzQ0ZTxl}b3-}u4u#3Wtd?5OvM@#x5a6*6;$ zJWdI$@B|H`m?AuGhHDKMnDek0mAs1T!=0Df&7E1de0+w~l&^c@NIk;@C~L{Ua}{To zQU0<Y5kcn%Y$)+7O(}9nZu9+CW@b%di_i#vB#HR?g`+ynEUX=PdGjW(HrJKgX|+Ma zc?bG*XAu!wJj7+?NkC%-8Xs)U(OrUE+AR+TaL45^bB}(nvLDuSZFC8xk6n5HPD#t} zC%wNyXSP3L8t$*2NU!seB*l%VFGOzYQRhJ(!-R{^_9?(0Om&PTU*0?g&<fA#$=YxG z0v`enbAbt(tdJGKg+L9~Lm!usnVlYduEF7wV}&_WE-n?rJwr#?wx2GCOp%}u9Q5o; z5W3^lM1l2;ARFx)yb(eh@#T2>yzUupaIb%Mb`rI}Tx4~6Cj890mF3_l!GgaMlZR-s zWe+@Lf6t**E0n9z0deU}O(=mpvu?Y!FSAiO$#vz{uGX8{ggUeDo{Qc7$LYR{g1^oJ zzuE$HX6djnz~-BwK~4X1iS(;q<9=3its!DuT*%eVu9`3`HhjWGQi6%rw!@RvSU@1U zOnu6bHT|=p#A53bPCs)!`L}YW38K39&})QkxLA@|{*@W&$-lqwMjw=H0_wRPXYu0x zDT~p=6ZPZAKI#>)86PqKgOP-uFa@en|1iy(r8Hwr&Eyfq505l8(*w_NG40Z=OVX;! zq{;)Y+m@IooySF6;7mp8*>igUnL|6yHHx$vX(Ewd9+tFzX)brJEo^n99kmz<Job)Y zmzd(7I_vXP#usc6Tpa^UXm%pA>Fh=`U?*?e90#VVHx|$LPI{MFDsW8`_l(6d4~x5Q zSsZsi;^4Bu&b=+eva`rkCLi?dd^6bJPp@)X8Q?=vV(TDZf+~dD1W3rTG(l>LtC(N; zwja8hEmY^Rm$#Ib?6EuAM`EpH0gwg4F#P1RU`@cVt|n1cCw_nqVjsT<h-MFF`TFT) zpr!E$45OiiuQ7nwoO8_~pag~-+SlgqZ{+z<NGNZl;|STCrs%-AT|dqSq80_E$4%{z zHtM_!OgdENHhy)RC0l65kXhxIv1VRGE>+frRjs>nD`+GF^IFtz{YETz9lu@0I1420 zrgFyHu#A-5s_eA!Z=AfwrOR0rPW4BOFbu*J;-kY7LOV~#HgW!wo%kAqvg+Rq^d1D& zNc*lZ8&D(nU%SUiw`L%{;2m*?LX+O^+J(=~4k^NOuCN7AYzcB3jfax^9}^!XsJadN zg)BX&oH<@Ec}2{O+|;H5unH+Fpecg}5)Y<MKB72I3bWG#7djhG7jnz%vS@=(`T)7z z<ytYJBQuLqy~QU*DrD(7yte}YAH(tebqByN+*oe3avrK#H!!Q!?0A0W+a+k}x3G$} zOeocLq=ZBVa`iRs?ZOi3_C~TI-jEu?if21`3jF}C`g>%256TVr8+^Y%2>U(_Vn+{! zdeZ8QV0zWAb2bNuM17DbZkGRIzYgH$kYMj|<X=o-oj6a2?3=9vhMO!EzKh*U_(cm( z$bZox1>gj1|Nf?vd8phGe{!%gC=|GUOpyOn79Q_*AqQFRfITcSd%};P3@^3`Iv%W| zqh-38KURC>3zLr1fmAwzyyRG&I9yn*emFjAz}o?mb4Fs@<F^m|wos~zO3i<M=LTG( zfhbjhnl9nDy=TNtvDxCT5rLzWGH|yq1+iX@GCKy@4$LGa&w>oZNFelXV{~ttK3in* z-uZ=%W16&V*lJ}CG}O~83EEp#=E50llgv2U1Fn<B_HSatk$S5gkUc#{W&MoEBP)U! z3X*X>-ICtNnH{}DV?dtq0I~~?#O0Xyll|=B`GhjNdB#nC<D!`e<+g~b<B)o!sst$S z+~oX~p!aniVub_yCTj~k>XH=-I$1x0fA3_K*6`m?ajz#fMBUg<yK*kg99iF#;}fjC z(V>_@hNMdIUCcQ*s&Y$|7wB?)D=)|6-~0aj&-pPiHoaly&A~yT$(|wX3fH<m_JS&y zzZu1(A264tE>JgGxM7IrHIuh)#Y9K25nKFAirp;h_Q#h1U~v8xP4S@tLJ6!0KqVL0 z^OoUA!KB!7e#xy|nr8_6Fro9EbZ4Io%Z9@9LgDwlY5p4%k%e{p2P)>10WfA0$uG2k zlxR$k5nddSn7&^-lW6;jF}*i0(%7yqYt*t~xoW4UW^Jmwdybt|*2Fn*4_oLQxbw>p z>%Ey~o!K9W@`7Ey5}eOd=ePV9yAB~!vhXtQJsZptL~hN7pE#$>)?mjw>h-aqKRais z*!9d3Ldd!<D@R)lE}>&PFNe}#+wb${TwYunrQF$m(v+W{BlKu6NkJiM?r@&LIzm&2 zSUML|7H9~SWW`3h-n5?^rdg*QL0Qv2z@}Gxw;RQY$yt`mb(myITHjn!aT|Wu|6Gy= zUp11XX}Y0~*DMu|95*%;>ERh~O)$2PRNjk?l*2fd(ha_z`q>a(wtdImap=yR{kClK zDNEAxh^RMGA8$U||1_DT8EV$tCSPi-O6L$M9A@gA{JT4#({J$gcj8a+el1>9p7sW? zoQSoJ$u`TaeSFvA`J%*$?PTDImITYl_l$s@#Z#l-yW{o<!&XtftSyhZy{#i|$7FKt zL8NG!=C03{4eY3U#M6c)yM@Ft0v3?G$jnu$eiAg5wKELv9UVXRi-I(2$~KLv^>SH` z2URb(u%Ld=3SYC?>Q5*t|5|LfWym1IM+*|M>LofxktPDpS$cD;ZRtov#0<j|%yUuj z7BMYfaF}G@I;p2q9MIlC#4}+8FDyR7D)6i_+_rn!ZMfFg-7nSW#ruI<009C`7Ijhb zXFsu1K|#~Q?n@6=<vkI(12=&?1E|E@)m15*&YxYcdhS=fYI+0Qg0yqt00Z#ScSloW zWVzL$8z{y{UVfU%rmK@}7B2$iF!un<4-|7wa;}<|S$xA?Q+_?rlQ1&e2K?MsLOq)K zg730c+XVGJ%4u5!OFAN`AstY)MDC?NUP>tu207R++23P5a1nf#zmxKCdBQ#0{CM1+ z(Gp+nx%D1Y_4d}R<A(ehBTT3PYGMy|AlGzyO3m@0-ly0bk53a4GTraTIM)h$Pk4?B z_Oi=JqD#p@)(%j7mrdg>UCLDCKJ}8!w#oqk6j5&vJL0F(_Z!Yn;L+4KZc(|rXTk*_ z*%M7A6CrG^ON5xwibC$7gPH<EaR36LlIr{gRBt_)Fx>7}t|wv*y|EKjCD8|$hwD8- ziM8*9i;*}}{HQ^Jp=n{1X2qtR%EfM#2ejHY4FP@0<TmBI*P{C%_lHT1l#ZdTBQK!h z-=FrojBQd>%~4eK3Pj!h8&x*q<B6Q{?|M<T_hia%9XC3nWW8hYLC>&8B&$9$66c%) zSZ_OK(}K{2snSSwe^2E1@9W^b2Z6A9GqUiYGnDa>-)MZi4L^y2i2z?7`5n8b-)wh6 z%>%YtH>_L9<GnsjVh!I#-0d5r?&C6u5Wf8K72HC~K+u2f`(&ZHw|N%5%fQQZcG;&q zdGFx@48%5pJU6sVS)6cxul#}8d-N9c5^z_IIIMeoM)%eC)eJeZ?}o}D0P6UEBRB!1 z`9Jy4{|HWiHv(PyAAIQl<U)bO{{Ns(|8FA$Q0(F?{@2JCivceEf35ldv5;WPb&}xt zn|8eY%{L`1m==*@CkH2S8Pz5f`|)`#o%};4CtQx7=0$H>Dt^$ENIQ^FI~nc)`%=&w zIM#ah?67flSYMxu%Uqz`xfl1lgr^3upd4n}&z}qrfArxpF|=*g*H=PKM=B9ND&Y*f z{4n)Vn#%v|dH&8)XN31r?TGy$9_49YVT47+Wj{3{oR~lVlbbkM4V*R4+(8$ph;RA8 z;G7sBcjF{5WWtQOz4POth{(6IwY9NYP&tR|y3e22Lzt{7?rIFtr)UnNdUJFXCH%^W z|11!&p22QHDHVc#Ga=@x?0&BuRzhiHf%djt=CENbs~abyDz5ux&<-AwMBa>I)Rj8j zNl$nGaZqm<7n44%sZ(G=4P-gwC%YMcetdSYj*>syl7v~u>5MhJc(#$kARxEXZ|-gP z(<T9z4vMqzB_BUh!aMa;Nv?h*n^F45K0$u#XJ=UG)kGuqMaRhW1_R<=q2l>i;dFa+ zAd!Fr&mSHOl7RDArDZYt+r7JDZc(?G1S>l^U@l{Rim=}+1fkpETrAH)-q;0)m=kqz zwC}paoh`g9pZ}?J+^omzwq0E_trk6rMxI1X>`(b)x%5|bfsO^YpT!Fp%8S14GlG$@ z#{R9))nqMs-WuVEg73kAUT1g^kB6fp7#|t5$(+u;xuWFcvw{&sA%-piWifkXc{ESW z6QMWWDF2}P_36|?*C;<FnA>P{a(C5pbZ?ik;V9nV@8LV@Ohp@;@Ix5Dnq~_8&yN09 z-?qH3Hy#qHL?#4i<B<HxydIDY2UiytmlaO?%(-9$^UoX3nM)n_*Bn<%!CaSm8<x`4 zHuY)-m@VqJJGGrSi`7yA1ROkd6uO`(C#7Xa$6#9FHF>(2%!SH_-oD_3@V39U6CB4f zIEw)$Pl9b0QSMiYdTHJvI(gV0CJfJ25Rqox0TRCcwpZHuJ^F<w?Zw*dy?f8solkQ2 z_74b!zI8QNaRF6r7^Bi<sN7LN6ieY3BVi@E7Dh&6#zCL@`n*EAqwMb@Zs<b~MZD5% z*DSN>ctOZq>_pD2dcIh3v4x|}(8Ec|ZstY(=^n=%I%5uFG4P)5VSPH~zRQW|#S0*9 z>}%0H7s<Tp>Y{J{`<)dwCEP~XCdB*o65E490m0OCK>2ErUPuRdvhR#sN@YV(2sKVi ztv_XmxRcX+j6}I|wyCr(^ER2}KDh5VktMeCd36OvZ~m4183Iwdp6ZPV4LsXfl>uUu zVd$AoI!Ls&CE!XlN8A694OvpZ71nvB#U%Tb!>xGu<Zbls5>DDPlHS9LcwE0K1Ky@U zOsD;O3(2JhdSbJ49#%b%BB_g$uzS<9O|ct7uUBrT%kIep1gE!twwzf2?`wQ~Y_)5} znvGVR-dKHP^Q|1vG7AfgtD<0f-aS7z^SC?GFM}yxQpS_Ecc4CA7KOp@4^37>jiaG* zK*{q7BL<t3_Hht_^)-u}KXArfesEzF?!gs)Uh&{~HhfX^=5toT+}>mGChtw)f`E+` zS8U=}DA!#xV?OZ2v5g846T+>>Z<?MqXQ}e$U&hep-@MFcN_}a5vGb1gF!hBF?ob3U zG8WL!sK{dNOHKIRe&lz&8YTv({%iZP9WLj2Q3dL^Oc7FBON94ri;V|nnDGUVe=4;L zGhob3rl0W%agtfR3HGx*?%4f>p6fM{Tivumzc7>oF5)op)m-&6BAEUrsOd3Dy(lDW zeo)=6Kf67Rv^2k6I9Ma*38!}$%Obkpeywe8)B@LPnrXrh`GR$6iN1>XwKlH*q1b?j zX#ctTzHz3l_om^HC&uUd{+ydnk-_Enm^`N3S{;+`76Ma&nyUM2!&Qj)1sqBahD#)% zy#6lMv?9gHy3N2TSxlgU;j5_Y2o+OJslqu^pW(eAt@yz72-kV<c?OP#c+ytwMxLXW zH(dg@nK|ZE+#=^yT2+c^%7phkBcv)7plfa&MjUhYMt73Em=MN{>6`?XiPoi9Gs9LB zu|IGnSA$>08-FS!3`XGB1*+T_B2B7BcoDUB##IILO6FA~{7m+9DlyeXPx^D<So@pf z<%-Wv4(#*L!ie`)7HO1fsY#g{6hNuJHrM}sPgkoTZ;YE05*$vnfJtHBsx_B>5OOY6 zQ_o5cTB)*YDwf2r74JVfOmQEf+}{2;R0V|f@a&l2E`RvDS8oa93VrxXO`@cpI(DXb z5ntXA8+bY=i_*}hqL3v0YnT0+O1*yJGXvaz8RU|g;HAmrFdqmHKY5>e*Xt$^ViT~X zp}h@%e>`A(WR?n$b_fWeW(Uugg5-3@f1s0{Ow1oTj6pmRKrLQIRITPY$wo;#l?>2c zRII0fT8(?K$)PGRAjq|rZ%-pDL`!mV;49?&<1OJ5fKP7YyKsu+Zf@LW4Q>mRu;&;G zv!g#@SKRy$*m7GhuE<vh8`cf=j`+(#1_nlLqGo5kK|Pzu*$*6C6uZ<H;l=#!y7V7= zd^xTIl>Vx<v4H0l^IfV5J?sx1$6v#$jzvMIyCp?MhXVE^YhMnB3kybt$)*}x%q8OE z^0(Q3OT%=^qsYN34j(;IPTy-JJ2Dh9D&h=k|AZ)G2C&%EUjNfAU&CLiriuM!gt5<O z<`*@WlYSaWqGtkF1IN1Ms-;`|Uqo{?94YIq`cgqTpnI+AU4f5<Rj=O6?a=57KxDdD zXR6oRK_OWF^V=4cug=HIJa;zgrL{ou%)bLP%qf6OKwSa%aeVgq>}`7<;CK~NA|gJZ zMB?sWZ1IrD@lh#yL@MZ5w_WKU0zy?)T_5%#cd|h~)2}xTJhGdhj*m~Q{&=~fpmb=@ z<`q-R)66{E2>q0@y%s;N)@rAKs#%BTTDvbEbB?o2&d!dp>yfzZFBeaTn=-cAnXF$% zM4*qyU2o3)L|DrO#$$U&A95ust>>3<mp`aCYZaZE`kBy`ECJ<}W0m)6J~MCIr1O=} z?gTYfWKyzzaUdZrdyuV}Uc!|sz?XCLqOPyWsM3E^&oJME8v>y4{}Ihy+RaG<tWz!# z#Bm(9u0t_;;|}32mEq$w5Qs~3N(&|mEr?J;7ZfCL8m@x?Z0xn8qmY<$IEP(T()abZ zbRx}SV))@j@O45HzC7^oc~(-zgz!KZLdo1X@w3d){J<D`9K5H^F+E+97m^xK%zI(H zVYH&o+7!X;%))I~f6@5mV0*M)+)Vjem)jDpT_hTVnEJ^$eLP}~qRkNmLz6wK-->MG zRM*@2+*&-*|2TT((&DuDv|vniwKUf=z(zstG8JG?j!xxI|KOp;ZA|h;i`QWc2#YNt zkw+)0$Kg8QLG9^6LSiBrCj-`(VULlG4m_0Cfi?8UAWv*t@5k&ep{F~+!}|%NR`HkX z6`n5}F5U$rK5<QQ*=0vH!oAOjz7U;wJ;Km#Tp;S?4S)CKoS|#XXk@kBOZ;U8E%olE zDuYtBvGNjLzPG*d2ea>iIcyV_r}qztQxo%3k0$gDC%3~RB81p%dd<FfN7;C19w|=V zljUFOg8GGXTLcmFT@%cT5$(TiM?01T;^IcNikUyg#|d;usR^quCZ~(jV1(V@K{@#p zan>HZ0v)AR()ic)Wopb$w&Tmv$v!8y90%RFxu&JIHoqMA;!nMceg*V=F6OgKKb}hx zKRz`;!TNiDmAc7iO*R;=o~J(JlG<{V!<2ut4}^|uNu+tr?LCJ-YyNJ}sV~-@Q1i!S z<+E`~Kv#O8-*PP#yNv$8Q`Wk+jZX#k`_V0h=oEgt&uAE;3ISv0T#vn}{qc_VOV&0? z3&$5NOX2G6TSuI8t|>-bV)^0DgI`9oIy9m^x^LmUQ(kUvs;oyw{rvJ7N!ivPLp%O) zb0}`EbWOT!#^(bvJ4@|KQ0V?8nv|?*W886%x_pM&C{AAE#>lEmzOpj*nR;@0B(gly zCcg|PWw4XXGc{K2WFI~JCM$hl%ro|EIKQmp{I_UOZQQBDtb?fE-#Z2NvUx)NIgz8= zh*A3+ru|x7e)H8I{aQpF5;y~4&rqS@Ib4@ucZ^1jdLH6I-(20U9BS%+`#%x9RivX< zk;~sh<yIm>Y4Gg809d*feZH^@_syNj+hwA4IR*9n!87VBT&V+}ej&6o+Wc3g2JBF5 zy8hq+cyvp#<mV0;BiE_!3cbK2Pi}<{u&XuEfnV}5X@lA>9&s<E!HafywXV*49bjF0 zD%FoZSAAboUm<pTt5BfMGXDhbxgvlK6qWv=Kj7GEt15q|Eiid6^5MX511L=AJDLP~ z=THs_jOgE0D=X)i(g_uIla*hgqlr9g=TxT5?<WNOJRX6iKw!@_o)$c@dh>q(s$$nS literal 0 HcmV?d00001 diff --git a/theme/elegant-logo/elegant_logo.svg b/theme/elegant-logo/elegant_logo.svg new file mode 100644 index 0000000..a3d6408 --- /dev/null +++ b/theme/elegant-logo/elegant_logo.svg @@ -0,0 +1,15 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 67 67" width="500" height="500"> + <rect width="57.681" height="62.899" x="2.802" y="-11.841" ry="0" fill="none"/> + <rect width="65.83" height="65.83" x=".585" y=".585" ry="2.398" fill="none" stroke="maroon" stroke-width="1.17"/> + <g transform="translate(2.518 1.626)"> + <path d="M39 25H24v-5h11A11.013 11.013 0 0046 9V3a1 1 0 00-1-1H19a5.006 5.006 0 00-5 5v31a11.013 11.013 0 0011 11h4v7h-2a3 3 0 000 6h10a3 3 0 000-6h-2v-7h15V36a11.013 11.013 0 00-11-11zm0 2a8.953 8.953 0 015.644 2H35v2h11.478a8.962 8.962 0 011 2H39v2h8.941A8.935 8.935 0 0148 36v1h-4v2h4v2H29a3 3 0 01-3-3V27zm-4-9H24v-8h19.941A9.01 9.01 0 0135 18zM24 4h20v4H24zm-8 3a3 3 0 013-3h3v21h-6zm21 51a1 1 0 010 2H27a1 1 0 010-2zm-4-2h-2v-7h2zm15-9H25a9.01 9.01 0 01-9-9V27h2v7h2v-7h4v11a5.006 5.006 0 005 5h19z" fill="#8b0000"/> + <path d="M18 36h2v2h-2z"/> + <circle cx="20.5" cy="7.5" r="1.5"/> + </g> + <path d="M26.437 7.605V5.578H46.54v4.055H26.437z" fill="#f60"/> + <path d="M26.437 15.625v-4.066h20.08l-.142.768c-.295 1.594-1.123 3.188-2.318 4.465a9.294 9.294 0 01-4.3 2.613c-.763.216-.916.221-7.05.253l-6.27.033z" fill="#fc0"/> + <path d="M31.034 42.573c-1.137-.164-2.058-.933-2.45-2.043l-.124-.353-.012-5.77-.012-5.768h6.68c4.323 0 6.854.016 7.173.045 1.68.152 3.39.8 4.668 1.766l.19.144h-9.66v2.04h11.572l.194.308c.195.31.661 1.251.747 1.508l.047.138h-8.53v2.04h4.499c4.244 0 4.5.004 4.527.074.016.041.04.49.054 1l.025.923h-4.044v2.04h4.031v1.955l-9.66-.005c-5.312-.003-9.774-.022-9.915-.042z" stroke="maroon" stroke-width=".043"/> + <path d="M33.553 54.137v-3.485h1.955v6.969h-1.955zm-4.31 7.426c-.228-.06-.596-.423-.658-.648a.893.893 0 01.054-.682c.107-.229.303-.421.525-.514.112-.047 1.071-.058 5.355-.057 4.97.001 5.226.005 5.387.08.647.296.778 1.177.241 1.62-.32.265-.08.255-5.656.25-3.352-.003-5.138-.02-5.248-.049z" fill="#f60" stroke="maroon" stroke-width=".042"/> + <path d="M2.306 65.641c-.368-.16-.7-.478-.918-.882l-.174-.324V2.614l.19-.387a1.83 1.83 0 011.044-.914c.452-.161 61.652-.161 62.104 0a1.83 1.83 0 011.044.914l.19.387v61.82l-.174.325c-.223.413-.554.726-.936.885-.27.113-3.443.126-31.194.123-27.422-.003-30.924-.017-31.176-.126zm38.526-2.277c.607-.297 1.086-.772 1.422-1.41.21-.398.228-.502.228-1.322 0-.773-.026-.941-.193-1.277a3.304 3.304 0 00-1.449-1.452c-.534-.263-.55-.265-1.896-.292l-1.358-.027v-6.946h14.977l-.028-7.262c-.027-7.004-.034-7.288-.196-7.99-.505-2.194-1.441-3.938-2.97-5.53-1.094-1.14-3.132-2.357-4.7-2.805-1.558-.445-1.538-.445-10.137-.445h-7.95v-4.928l6.21-.03c5.931-.028 6.243-.036 6.939-.196 3.94-.906 7.003-3.602 8.222-7.24.529-1.58.568-1.944.614-5.791.024-1.924.017-3.67-.014-3.88a1.042 1.042 0 00-.325-.648l-.268-.268H34.35c-15.082 0-14.013-.037-15.144.532-.707.356-1.604 1.2-2.01 1.89a6.506 6.506 0 00-.5 1.139l-.189.606V40.97l.183.824c.489 2.207 1.435 3.997 2.914 5.511 1.509 1.546 3.359 2.587 5.521 3.11.607.146 1.021.17 3.54.202l2.853.037v6.931l-1.396.027c-1.313.025-1.423.04-1.855.242-1.7.797-2.304 2.958-1.254 4.489.357.521.954.967 1.551 1.16.464.15.736.157 6.11.14l5.623-.016z" fill="#fff" stroke="#fff" stroke-width=".08093600000000001"/> + <path d="M26.5 48.525c-1.283-.147-2.925-.767-4.049-1.53-1.516-1.03-2.8-2.727-3.402-4.497-.47-1.38-.478-1.525-.478-7.973V28.63h1.942v7.04H22.536v-7.04H26.5v5.846c.002 6.462-.004 6.38.519 7.404.604 1.186 1.532 2.001 2.87 2.522l.535.209 10.014.022 10.013.022V48.615l-11.672-.01c-6.42-.006-11.946-.042-12.28-.08zm-3.964-9.903v-1.011H20.513V39.634H22.536zM18.57 17.394c0-10.175-.029-9.59.525-10.425.316-.475.804-.863 1.403-1.115.329-.138.616-.163 2.18-.19l1.8-.03v1.342c0 .739-.033 1.342-.072 1.342-.04 0-.128-.087-.198-.193-.214-.326-.805-.56-1.308-.518-1.841.153-1.884 2.863-.048 3.039.513.05.9-.085 1.234-.429.148-.153.298-.279.331-.28.033 0 .06 3.75.06 8.334v8.335h-5.906z" fill="#fff" stroke="#fff" stroke-width=".08093600000000001"/> +</svg> diff --git a/theme/gulpfile.babel.js b/theme/gulpfile.babel.js new file mode 100644 index 0000000..1a4315d --- /dev/null +++ b/theme/gulpfile.babel.js @@ -0,0 +1,158 @@ +import fs from "fs"; +import path from "path"; +import { src, dest, watch, parallel, series } from "gulp"; +import { exec } from "child_process"; +import { create as browserSyncCreate } from "browser-sync"; +import run from "gulp-run-command"; +import postcss from "gulp-postcss"; +import magician from "postcss-font-magician"; +import cssnano from "cssnano"; +import postcssPresetEnv from "postcss-preset-env"; +import rfs from "rfs"; +import concat from "gulp-concat"; +import terser from "gulp-terser"; + +const browserSync = browserSyncCreate(); + +const path404 = path.join(__dirname, "documentation/output/404.html"); +const content_404 = () => + fs.existsSync(path404) ? fs.readFileSync(path404) : null; + +const cleanOutput = () => exec("cd documentation && rm -rf outout/"); + +const buildContent = () => exec("cd documentation && invoke build"); +const compileBootstrapLess = () => + exec( + "node_modules/recess/bin/recess --compile static/bootstrap/bootstrap.less > static/css/bootstrap.css" + ); +const compileResponsiveLess = () => + exec( + "node_modules/recess/bin/recess --compile static/bootstrap/responsive.less > static/css/bootstrap_responsive.css" + ); + +const reload = cb => { + browserSync.init( + { + ui: { + port: 9002 + }, + server: { + baseDir: "documentation/output", + serveStaticOptions: { + extensions: ["html"] + } + }, + files: "documentation/output/*.html", + port: 9001 + }, + (_, bs) => { + bs.addMiddleware("*", (_, res) => { + res.write(content_404()); + res.end(); + }); + } + ); + cb(); +}; + +const watchFiles = () => { + watch( + [ + "documentation/content/**/*.md", + "documentation/content/**/*.rest", + "documentation/pelicanconf.py", + "documentation/publishconf.py", + "templates/**/*.html", + "static/**/*.css", + "static/**/*.less", + "static/**/*.js", + "!static/**/bootstrap.css", + "!static/**/bootstrap_responsive.css", + "!static/**/elegant.prod.9e9d5ce754.css", + "!static/js/elegant.prod.9e9d5ce754.js" + ], + { ignoreInitial: false }, + buildAll + ); +}; + +const pathProdCSS = path.join( + __dirname, + "static/css/elegant.prod.9e9d5ce754.css" +); +const rmProdCSS = cb => { + if (fs.existsSync(pathProdCSS)) { + fs.unlinkSync(pathProdCSS); + } + cb(); +}; +const minifyJS = () => { + return src([ + "static/applause-button/applause-button.js", + "static/photoswipe/photoswipe.js", + "static/photoswipe/photoswipe-ui-default.js", + "static/photoswipe/photoswipe-array-from-dom.js", + "static/lunr/lunr.js", + "static/clipboard/clipboard.js", + "static/js/copy-to-clipboard.js", + "static/js/lunr-search-result.js", + "!static/js/elegant.prod.9e9d5ce754.js" + ]) + .pipe(concat("elegant.prod.9e9d5ce754.js")) + .pipe(terser()) + .pipe(dest("static/js/")); +}; + +const compileCSS = () => { + const plugins = [ + // postcssPresetEnv comes with autoprefixer + postcssPresetEnv({ stage: 1 }), + magician({}), + rfs(), + cssnano() + ]; + return src([ + "static/applause-button/applause-button.css", + "static/photoswipe/photoswipe.css", + "static/photoswipe/default-skin/default-skin.css", + "static/css/*.css", + "!static/css/elegant.prod.9e9d5ce754.css" + ]) + .pipe(postcss(plugins)) + .pipe(concat("elegant.prod.9e9d5ce754.css")) + .pipe(dest("static/css/")); +}; + +const buildAll = series( + rmProdCSS, + compileBootstrapLess, + compileResponsiveLess, + compileCSS, + minifyJS, + buildContent +); + +exports.validate = run("jinja-ninja templates"); + +exports.js = minifyJS; + +exports.css = series( + rmProdCSS, + compileBootstrapLess, + compileResponsiveLess, + compileCSS +); + +const build = series( + compileBootstrapLess, + compileResponsiveLess, + compileCSS, + minifyJS, + cleanOutput, + buildContent +); +exports.build = build; + +const elegant = series(build, parallel(watchFiles, reload)); +exports.elegant = elegant; +exports.default = elegant; diff --git a/theme/netlify.toml b/theme/netlify.toml new file mode 100644 index 0000000..26195cf --- /dev/null +++ b/theme/netlify.toml @@ -0,0 +1,4 @@ +[build] + base = "./documentation" + publish = "./documentation/output" + command = "invoke plugins-sync publish" diff --git a/theme/package.json b/theme/package.json new file mode 100644 index 0000000..9402370 --- /dev/null +++ b/theme/package.json @@ -0,0 +1,38 @@ +{ + "name": "Pelican-Elegant", + "devDependencies": { + "@semantic-release/changelog": "^5.0.0", + "@semantic-release/exec": "^5.0.0", + "@semantic-release/git": "^9.0.0", + "babel-core": "^6.26.3", + "babel-preset-es2015": "^6.24.1", + "browser-sync": "^2.26.7", + "cssnano": "^4.1.10", + "cz-conventional-changelog": "3.1.0", + "gulp": "^4.0.2", + "gulp-concat": "^2.6.1", + "gulp-postcss": "^8.0.0", + "gulp-run-command": "^0.0.10", + "gulp-terser": "^1.2.0", + "postcss-font-magician": "^2.3.1", + "postcss-preset-env": "^6.7.0", + "recess": "^1.1.9", + "rfs": "^9.0.2", + "semantic-release": "^17.0.4" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "babel": { + "presets": [ + "es2015" + ] + }, + "dependencies": {}, + "browserslist": [ + "defaults", + "IE 10" + ] +} diff --git a/theme/static/applause-button/applause-button.css b/theme/static/applause-button/applause-button.css new file mode 100644 index 0000000..99871fb --- /dev/null +++ b/theme/static/applause-button/applause-button.css @@ -0,0 +1,212 @@ +applause-button { + position: relative; + cursor: pointer; +} + +applause-button .style-root { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; +} + +applause-button .style-root:after { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + content: " "; + display: block; + border-radius: 50%; + border: 1px solid; +} + +applause-button .style-root:hover:after:not(.clap-limit-exceeded) { + border-color: inherit; +} + +applause-button.loading { + opacity: 0.5; +} + +applause-button .shockwave { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + border-radius: 50%; +} + +applause-button svg { + position: absolute; + width: 60%; + height: 60%; + margin-left: 20%; + margin-top: 20%; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + opacity: 0.8; + stroke: none; + overflow: visible !important; +} + +applause-button svg g.flat { + visibility: hidden; +} + +applause-button svg g.outline { + visibility: visible; +} + +applause-button.clapped svg g.flat { + visibility: visible; +} + +applause-button.clapped svg g.outline { + visibility: hidden; +} + +applause-button .count-container { + position: absolute; + top: -40%; + width: 100%; + color: gray; + user-select: none; +} + +applause-button .count-container .count { + margin-left: 50%; + transform: translateX(-50%); + width: 1000px; + text-align: center; +} + +applause-button g.sparkle circle { + opacity: 0; + stroke-width: 0; +} + +applause-button g.sparkle g:nth-child(1) { + transform: rotate(0deg) translateX(10px); +} + +applause-button g.sparkle g:nth-child(2) { + transform: rotate(72deg) translateX(10px); +} + +applause-button g.sparkle g:nth-child(3) { + transform: rotate(144deg) translateX(10px); +} + +applause-button g.sparkle g:nth-child(4) { + transform: rotate(216deg) translateX(10px); +} + +applause-button g.sparkle g:nth-child(5) { + transform: rotate(288deg) translateX(10px); +} + +applause-button:hover:not(.clapped) .shockwave { + animation-name: shockwave; + animation-duration: 1s; + animation-iteration-count: infinite; + animation-timing-function: ease-in; +} + +applause-button.clap { + animation-name: pulse; + animation-duration: 0.5s; + animation-iteration-count: 1; +} + +applause-button.clap .sparkle circle { + animation-name: explode; + animation-duration: 0.5s; + animation-iteration-count: 1; +} + +applause-button.clap .count { + animation-name: hideThenShow; + animation-duration: 0.5s; + animation-iteration-count: 1; +} + +@keyframes explode { + 0% { + transform: translateX(10px); + opacity: 0; + } + + 20% { + opacity: 1; + } + + 50% { + opacity: 1; + } + + 100% { + opacity: 0; + transform: translateX(25px); + } +} + +@keyframes shockwave { + 0% { + transform: scale(1); + box-shadow: 0 0 2px; + opacity: 1; + } + + 100% { + transform: scale(1); + opacity: 0; + box-shadow: 0 0 50px, inset 0 0 10px; + } +} + +@keyframes pulse { + 0% { + transform: scale(1); + } + + 50% { + transform: scale(1.1); + } + + 100% { + transform: scale(1); + } +} + +@keyframes hideThenShow { + 0% { + opacity: 1; + transform: translateY(0); + } + + 20% { + opacity: 0; + transform: translateY(-10px); + } + + 50% { + transform: translateY(10px); + } + + 80% { + transform: translateY(10px); + opacity: 0; + } + + 100% { + opacity: 1; + transform: translateY(0); + } +} diff --git a/theme/static/applause-button/applause-button.js b/theme/static/applause-button/applause-button.js new file mode 100644 index 0000000..ce9ff05 --- /dev/null +++ b/theme/static/applause-button/applause-button.js @@ -0,0 +1,1194 @@ +!(function(e, t) { + "object" == typeof exports && "undefined" != typeof module + ? t() + : "function" == typeof define && define.amd + ? define(t) + : t(); +})(0, function() { + "use strict"; + var e = + "function" == typeof Symbol && "symbol" == typeof Symbol.iterator + ? function(e) { + return typeof e; + } + : function(e) { + return e && + "function" == typeof Symbol && + e.constructor === Symbol && + e !== Symbol.prototype + ? "symbol" + : typeof e; + }, + t = function(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function"); + }, + n = (function() { + function e(e, t) { + for (var n = 0; n < t.length; n++) { + var r = t[n]; + (r.enumerable = r.enumerable || !1), + (r.configurable = !0), + "value" in r && (r.writable = !0), + Object.defineProperty(e, r.key, r); + } + } + return function(t, n, r) { + return n && e(t.prototype, n), r && e(t, r), t; + }; + })(), + r = function(e, t) { + if ("function" != typeof t && null !== t) + throw new TypeError( + "Super expression must either be null or a function, not " + typeof t + ); + (e.prototype = Object.create(t && t.prototype, { + constructor: { + value: e, + enumerable: !1, + writable: !0, + configurable: !0 + } + })), + t && + (Object.setPrototypeOf + ? Object.setPrototypeOf(e, t) + : (e.__proto__ = t)); + }, + o = function(e, t) { + if (!e) + throw new ReferenceError( + "this hasn't been initialised - super() hasn't been called" + ); + return !t || ("object" != typeof t && "function" != typeof t) ? e : t; + }; + !(function(t, n) { + var r = t.document, + o = t.Object, + l = (function(e) { + var t, + n, + r, + l, + i = /^[A-Z]+[a-z]/, + a = function(e, t) { + (t = t.toLowerCase()) in u || + ((u[e] = (u[e] || []).concat(t)), + (u[t] = u[t.toUpperCase()] = e)); + }, + u = (o.create || o)(null), + c = {}; + for (n in e) + for (l in e[n]) + for (r = e[n][l], u[l] = r, t = 0; t < r.length; t++) + u[r[t].toLowerCase()] = u[r[t].toUpperCase()] = l; + return ( + (c.get = function(e) { + return "string" == typeof e + ? u[e] || (i.test(e) ? [] : "") + : (function(e) { + var t, + n = []; + for (t in u) e.test(t) && n.push(t); + return n; + })(e); + }), + (c.set = function(e, t) { + return i.test(e) ? a(e, t) : a(t, e), c; + }), + c + ); + })({ + collections: { + HTMLAllCollection: ["all"], + HTMLCollection: ["forms"], + HTMLFormControlsCollection: ["elements"], + HTMLOptionsCollection: ["options"] + }, + elements: { + Element: ["element"], + HTMLAnchorElement: ["a"], + HTMLAppletElement: ["applet"], + HTMLAreaElement: ["area"], + HTMLAttachmentElement: ["attachment"], + HTMLAudioElement: ["audio"], + HTMLBRElement: ["br"], + HTMLBaseElement: ["base"], + HTMLBodyElement: ["body"], + HTMLButtonElement: ["button"], + HTMLCanvasElement: ["canvas"], + HTMLContentElement: ["content"], + HTMLDListElement: ["dl"], + HTMLDataElement: ["data"], + HTMLDataListElement: ["datalist"], + HTMLDetailsElement: ["details"], + HTMLDialogElement: ["dialog"], + HTMLDirectoryElement: ["dir"], + HTMLDivElement: ["div"], + HTMLDocument: ["document"], + HTMLElement: [ + "element", + "abbr", + "address", + "article", + "aside", + "b", + "bdi", + "bdo", + "cite", + "code", + "command", + "dd", + "dfn", + "dt", + "em", + "figcaption", + "figure", + "footer", + "header", + "i", + "kbd", + "mark", + "nav", + "noscript", + "rp", + "rt", + "ruby", + "s", + "samp", + "section", + "small", + "strong", + "sub", + "summary", + "sup", + "u", + "var", + "wbr" + ], + HTMLEmbedElement: ["embed"], + HTMLFieldSetElement: ["fieldset"], + HTMLFontElement: ["font"], + HTMLFormElement: ["form"], + HTMLFrameElement: ["frame"], + HTMLFrameSetElement: ["frameset"], + HTMLHRElement: ["hr"], + HTMLHeadElement: ["head"], + HTMLHeadingElement: ["h1", "h2", "h3", "h4", "h5", "h6"], + HTMLHtmlElement: ["html"], + HTMLIFrameElement: ["iframe"], + HTMLImageElement: ["img"], + HTMLInputElement: ["input"], + HTMLKeygenElement: ["keygen"], + HTMLLIElement: ["li"], + HTMLLabelElement: ["label"], + HTMLLegendElement: ["legend"], + HTMLLinkElement: ["link"], + HTMLMapElement: ["map"], + HTMLMarqueeElement: ["marquee"], + HTMLMediaElement: ["media"], + HTMLMenuElement: ["menu"], + HTMLMenuItemElement: ["menuitem"], + HTMLMetaElement: ["meta"], + HTMLMeterElement: ["meter"], + HTMLModElement: ["del", "ins"], + HTMLOListElement: ["ol"], + HTMLObjectElement: ["object"], + HTMLOptGroupElement: ["optgroup"], + HTMLOptionElement: ["option"], + HTMLOutputElement: ["output"], + HTMLParagraphElement: ["p"], + HTMLParamElement: ["param"], + HTMLPictureElement: ["picture"], + HTMLPreElement: ["pre"], + HTMLProgressElement: ["progress"], + HTMLQuoteElement: ["blockquote", "q", "quote"], + HTMLScriptElement: ["script"], + HTMLSelectElement: ["select"], + HTMLShadowElement: ["shadow"], + HTMLSlotElement: ["slot"], + HTMLSourceElement: ["source"], + HTMLSpanElement: ["span"], + HTMLStyleElement: ["style"], + HTMLTableCaptionElement: ["caption"], + HTMLTableCellElement: ["td", "th"], + HTMLTableColElement: ["col", "colgroup"], + HTMLTableElement: ["table"], + HTMLTableRowElement: ["tr"], + HTMLTableSectionElement: ["thead", "tbody", "tfoot"], + HTMLTemplateElement: ["template"], + HTMLTextAreaElement: ["textarea"], + HTMLTimeElement: ["time"], + HTMLTitleElement: ["title"], + HTMLTrackElement: ["track"], + HTMLUListElement: ["ul"], + HTMLUnknownElement: ["unknown", "vhgroupv", "vkeygen"], + HTMLVideoElement: ["video"] + }, + nodes: { + Attr: ["node"], + Audio: ["audio"], + CDATASection: ["node"], + CharacterData: ["node"], + Comment: ["#comment"], + Document: ["#document"], + DocumentFragment: ["#document-fragment"], + DocumentType: ["node"], + HTMLDocument: ["#document"], + Image: ["img"], + Option: ["option"], + ProcessingInstruction: ["node"], + ShadowRoot: ["#shadow-root"], + Text: ["#text"], + XMLDocument: ["xml"] + } + }); + "object" !== (void 0 === n ? "undefined" : e(n)) && + (n = { + type: n || "auto" + }); + var i, + a, + u, + c, + s, + m, + f, + p, + d, + h = "registerElement", + L = "__" + h + ((1e5 * t.Math.random()) >> 0), + C = "addEventListener", + v = "attached", + T = "Callback", + M = "detached", + E = "extends", + b = "attributeChanged" + T, + g = v + T, + y = "connected" + T, + H = "disconnected" + T, + w = "created" + T, + A = M + T, + O = "ADDITION", + _ = "REMOVAL", + N = "DOMAttrModified", + S = "DOMContentLoaded", + D = "DOMSubtreeModified", + k = "<", + I = "=", + P = /^[A-Z][A-Z0-9]*(?:-[A-Z0-9]+)+$/, + F = [ + "ANNOTATION-XML", + "COLOR-PROFILE", + "FONT-FACE", + "FONT-FACE-SRC", + "FONT-FACE-URI", + "FONT-FACE-FORMAT", + "FONT-FACE-NAME", + "MISSING-GLYPH" + ], + R = [], + x = [], + V = "", + z = r.documentElement, + U = + R.indexOf || + function(e) { + for (var t = this.length; t-- && this[t] !== e; ); + return t; + }, + j = o.prototype, + q = j.hasOwnProperty, + B = j.isPrototypeOf, + Z = o.defineProperty, + G = [], + K = o.getOwnPropertyDescriptor, + X = o.getOwnPropertyNames, + J = o.getPrototypeOf, + Q = o.setPrototypeOf, + W = !!o.__proto__, + Y = "__dreCEv1", + $ = t.customElements, + ee = + !/^force/.test(n.type) && !!($ && $.define && $.get && $.whenDefined), + te = o.create || o, + ne = + t.Map || + function() { + var e, + t = [], + n = []; + return { + get: function(e) { + return n[U.call(t, e)]; + }, + set: function(r, o) { + (e = U.call(t, r)) < 0 ? (n[t.push(r) - 1] = o) : (n[e] = o); + } + }; + }, + re = + t.Promise || + function(e) { + var t = [], + n = !1, + r = { + catch: function() { + return r; + }, + then: function(e) { + return t.push(e), n && setTimeout(o, 1), r; + } + }; + + function o(e) { + for (n = !0; t.length; ) t.shift()(e); + } + return e(o), r; + }, + oe = !1, + le = te(null), + ie = te(null), + ae = new ne(), + ue = function(e) { + return e.toLowerCase(); + }, + ce = + o.create || + function e(t) { + return t ? ((e.prototype = t), new e()) : this; + }, + se = + Q || + (W + ? function(e, t) { + return (e.__proto__ = t), e; + } + : X && K + ? (function() { + function e(e, t) { + for (var n, r = X(t), o = 0, l = r.length; o < l; o++) + (n = r[o]), q.call(e, n) || Z(e, n, K(t, n)); + } + return function(t, n) { + do { + e(t, n); + } while ((n = J(n)) && !B.call(n, t)); + return t; + }; + })() + : function(e, t) { + for (var n in t) e[n] = t[n]; + return e; + }), + me = t.MutationObserver || t.WebKitMutationObserver, + fe = (t.HTMLElement || t.Element || t.Node).prototype, + pe = !B.call(fe, z), + de = pe + ? function(e, t, n) { + return (e[t] = n.value), e; + } + : Z, + he = pe + ? function(e) { + return 1 === e.nodeType; + } + : function(e) { + return B.call(fe, e); + }, + Le = pe && [], + Ce = fe.attachShadow, + ve = fe.cloneNode, + Te = fe.dispatchEvent, + Me = fe.getAttribute, + Ee = fe.hasAttribute, + be = fe.removeAttribute, + ge = fe.setAttribute, + ye = r.createElement, + He = ye, + we = me && { + attributes: !0, + characterData: !0, + attributeOldValue: !0 + }, + Ae = + me || + function(e) { + (De = !1), z.removeEventListener(N, Ae); + }, + Oe = 0, + _e = h in r && !/^force-all/.test(n.type), + Ne = !0, + Se = !1, + De = !0, + ke = !0, + Ie = !0; + + function Pe() { + var e = i.splice(0, i.length); + for (Oe = 0; e.length; ) e.shift().call(null, e.shift()); + } + + function Fe(e, t) { + for (var n = 0, r = e.length; n < r; n++) Ge(e[n], t); + } + + function Re(e) { + return function(t) { + he(t) && (Ge(t, e), V.length && Fe(t.querySelectorAll(V), e)); + }; + } + + function xe(e) { + var t = Me.call(e, "is"), + n = e.nodeName.toUpperCase(), + r = U.call(R, t ? I + t.toUpperCase() : k + n); + return t && -1 < r && !Ve(n, t) ? -1 : r; + } + + function Ve(e, t) { + return -1 < V.indexOf(e + '[is="' + t + '"]'); + } + + function ze(e) { + var t = e.currentTarget, + n = e.attrChange, + r = e.attrName, + o = e.target, + l = e[O] || 2, + i = e[_] || 3; + !Ie || + (o && o !== t) || + !t[b] || + "style" === r || + (e.prevValue === e.newValue && + ("" !== e.newValue || (n !== l && n !== i))) || + t[b](r, n === l ? null : e.prevValue, n === i ? null : e.newValue); + } + + function Ue(e) { + var t = Re(e); + return function(e) { + i.push(t, e.target), Oe && clearTimeout(Oe), (Oe = setTimeout(Pe, 1)); + }; + } + + function je(e) { + ke && ((ke = !1), e.currentTarget.removeEventListener(S, je)), + V.length && + Fe((e.target || r).querySelectorAll(V), e.detail === M ? M : v), + pe && + (function() { + for (var e, t = 0, n = Le.length; t < n; t++) + (e = Le[t]), z.contains(e) || (n--, Le.splice(t--, 1), Ge(e, M)); + })(); + } + + function qe(e, t) { + ge.call(this, e, t), + a.call(this, { + target: this + }); + } + + function Be(e, t) { + se(e, t), + s + ? s.observe(e, we) + : (De && ((e.setAttribute = qe), (e[L] = c(e)), e[C](D, a)), + e[C](N, ze)), + e[w] && Ie && ((e.created = !0), e[w](), (e.created = !1)); + } + + function Ze(e) { + throw new Error("A " + e + " type is already registered"); + } + + function Ge(e, t) { + var n, + r, + o = xe(e); + -1 < o && + (f(e, x[o]), + (o = 0), + t !== v || e[v] + ? t !== M || + e[M] || + ((e[v] = !1), (e[M] = !0), (r = "disconnected"), (o = 1)) + : ((e[M] = !1), + (e[v] = !0), + (r = "connected"), + (o = 1), + pe && U.call(Le, e) < 0 && Le.push(e)), + o && (n = e[t + T] || e[r + T]) && n.call(e)); + } + + function Ke() {} + + function Xe(e, t, n) { + var o = (n && n[E]) || "", + l = t.prototype, + i = ce(l), + a = t.observedAttributes || G, + u = { + prototype: i + }; + de(i, w, { + value: function() { + if (oe) oe = !1; + else if (!this[Y]) { + (this[Y] = !0), new t(this), l[w] && l[w].call(this); + var e = le[ae.get(t)]; + (!ee || e.create.length > 1) && We(this); + } + } + }), + de(i, b, { + value: function(e) { + -1 < U.call(a, e) && l[b].apply(this, arguments); + } + }), + l[y] && + de(i, g, { + value: l[y] + }), + l[H] && + de(i, A, { + value: l[H] + }), + o && (u[E] = o), + (e = e.toUpperCase()), + (le[e] = { + constructor: t, + create: o ? [o, ue(e)] : [e] + }), + ae.set(t, e), + r[h](e.toLowerCase(), u), + Ye(e), + ie[e].r(); + } + + function Je(e) { + var t = le[e.toUpperCase()]; + return t && t.constructor; + } + + function Qe(e) { + return "string" == typeof e ? e : (e && e.is) || ""; + } + + function We(e) { + for (var t, n = e[b], r = n ? e.attributes : G, o = r.length; o--; ) + (t = r[o]), + n.call(e, t.name || t.nodeName, null, t.value || t.nodeValue); + } + + function Ye(e) { + return ( + (e = e.toUpperCase()) in ie || + ((ie[e] = {}), + (ie[e].p = new re(function(t) { + ie[e].r = t; + }))), + ie[e].p + ); + } + + function $e() { + $ && delete t.customElements, + Z(t, "customElements", { + configurable: !0, + value: new Ke() + }), + Z(t, "CustomElementRegistry", { + configurable: !0, + value: Ke + }); + for ( + var e = function(e) { + var n = t[e]; + if (n) { + (t[e] = function(e) { + var t, o; + return ( + e || (e = this), + e[Y] || + ((oe = !0), + (t = le[ae.get(e.constructor)]), + ((e = (o = ee && 1 === t.create.length) + ? Reflect.construct(n, G, t.constructor) + : r.createElement.apply(r, t.create))[Y] = !0), + (oe = !1), + o || We(e)), + e + ); + }), + (t[e].prototype = n.prototype); + try { + n.prototype.constructor = t[e]; + } catch (r) { + Z(n, Y, { + value: t[e] + }); + } + } + }, + n = l.get(/^HTML[A-Z]*[a-z]/), + o = n.length; + o--; + e(n[o]) + ); + (r.createElement = function(e, t) { + var n = Qe(t); + return n ? He.call(this, e, ue(n)) : He.call(this, e); + }), + _e || ((Se = !0), r[h]("")); + } + if ( + (me && + (((d = r.createElement("div")).innerHTML = "<div><div></div></div>"), + new me(function(e, t) { + if ( + e[0] && + "childList" == e[0].type && + !e[0].removedNodes[0].childNodes.length + ) { + var n = (d = K(fe, "innerHTML")) && d.set; + n && + Z(fe, "innerHTML", { + set: function(e) { + for (; this.lastChild; ) this.removeChild(this.lastChild); + n.call(this, e); + } + }); + } + t.disconnect(), (d = null); + }).observe(d, { + childList: !0, + subtree: !0 + }), + (d.innerHTML = "")), + _e || + (Q || W + ? ((f = function(e, t) { + B.call(t, e) || Be(e, t); + }), + (p = Be)) + : (p = f = function(e, t) { + e[L] || ((e[L] = o(!0)), Be(e, t)); + }), + pe + ? ((De = !1), + (function() { + var e = K(fe, C), + t = e.value, + n = function(e) { + var t = new CustomEvent(N, { + bubbles: !0 + }); + (t.attrName = e), + (t.prevValue = Me.call(this, e)), + (t.newValue = null), + (t[_] = t.attrChange = 2), + be.call(this, e), + Te.call(this, t); + }, + r = function(e, t) { + var n = Ee.call(this, e), + r = n && Me.call(this, e), + o = new CustomEvent(N, { + bubbles: !0 + }); + ge.call(this, e, t), + (o.attrName = e), + (o.prevValue = n ? r : null), + (o.newValue = t), + n + ? (o.MODIFICATION = o.attrChange = 1) + : (o[O] = o.attrChange = 0), + Te.call(this, o); + }, + o = function(e) { + var t, + n = e.currentTarget, + r = n[L], + o = e.propertyName; + r.hasOwnProperty(o) && + ((r = r[o]), + ((t = new CustomEvent(N, { + bubbles: !0 + })).attrName = r.name), + (t.prevValue = r.value || null), + (t.newValue = r.value = n[o] || null), + null == t.prevValue + ? (t[O] = t.attrChange = 0) + : (t.MODIFICATION = t.attrChange = 1), + Te.call(n, t)); + }; + (e.value = function(e, l, i) { + e === N && + this[b] && + this.setAttribute !== r && + ((this[L] = { + className: { + name: "class", + value: this.className + } + }), + (this.setAttribute = r), + (this.removeAttribute = n), + t.call(this, "propertychange", o)), + t.call(this, e, l, i); + }), + Z(fe, C, e); + })()) + : me || + (z[C](N, Ae), + z.setAttribute(L, 1), + z.removeAttribute(L), + De && + ((a = function(e) { + var t, n, r; + if (this === e.target) { + for (r in ((t = this[L]), (this[L] = n = c(this)), n)) { + if (!(r in t)) return u(0, this, r, t[r], n[r], O); + if (n[r] !== t[r]) + return u(1, this, r, t[r], n[r], "MODIFICATION"); + } + for (r in t) + if (!(r in n)) return u(2, this, r, t[r], n[r], _); + } + }), + (u = function(e, t, n, r, o, l) { + var i = { + attrChange: e, + currentTarget: t, + attrName: n, + prevValue: r, + newValue: o + }; + (i[l] = e), ze(i); + }), + (c = function(e) { + for ( + var t, n, r = {}, o = e.attributes, l = 0, i = o.length; + l < i; + l++ + ) + "setAttribute" !== (n = (t = o[l]).name) && (r[n] = t.value); + return r; + }))), + (r[h] = function(e, t) { + if ( + ((n = e.toUpperCase()), + Ne && + ((Ne = !1), + me + ? ((s = (function(e, t) { + function n(e, t) { + for (var n = 0, r = e.length; n < r; t(e[n++])); + } + return new me(function(r) { + for (var o, l, i, a = 0, u = r.length; a < u; a++) + "childList" === (o = r[a]).type + ? (n(o.addedNodes, e), n(o.removedNodes, t)) + : ((l = o.target), + Ie && + l[b] && + "style" !== o.attributeName && + (i = Me.call(l, o.attributeName)) !== + o.oldValue && + l[b](o.attributeName, o.oldValue, i)); + }); + })(Re(v), Re(M))), + (m = function(e) { + return ( + s.observe(e, { + childList: !0, + subtree: !0 + }), + e + ); + })(r), + Ce && + (fe.attachShadow = function() { + return m(Ce.apply(this, arguments)); + })) + : ((i = []), + r[C]("DOMNodeInserted", Ue(v)), + r[C]("DOMNodeRemoved", Ue(M))), + r[C](S, je), + r[C]("readystatechange", je), + (fe.cloneNode = function(e) { + var t = ve.call(this, !!e), + n = xe(t); + return ( + -1 < n && p(t, x[n]), + e && + V.length && + (function(e) { + for (var t, n = 0, r = e.length; n < r; n++) + (t = e[n]), p(t, x[xe(t)]); + })(t.querySelectorAll(V)), + t + ); + })), + Se) + ) + return (Se = !1); + if ( + (-2 < U.call(R, I + n) + U.call(R, k + n) && Ze(e), + !P.test(n) || -1 < U.call(F, n)) + ) + throw new Error("The type " + e + " is invalid"); + var n, + o, + l = function() { + return u ? r.createElement(c, n) : r.createElement(c); + }, + a = t || j, + u = q.call(a, E), + c = u ? t[E].toUpperCase() : n; + return ( + u && -1 < U.call(R, k + c) && Ze(c), + (o = R.push((u ? I : k) + n) - 1), + (V = V.concat( + V.length ? "," : "", + u ? c + '[is="' + e.toLowerCase() + '"]' : c + )), + (l.prototype = x[o] = q.call(a, "prototype") + ? a.prototype + : ce(fe)), + V.length && Fe(r.querySelectorAll(V), v), + l + ); + }), + (r.createElement = He = function(e, t) { + var n = Qe(t), + o = n ? ye.call(r, e, ue(n)) : ye.call(r, e), + l = "" + e, + i = U.call(R, (n ? I : k) + (n || l).toUpperCase()), + a = -1 < i; + return ( + n && + (o.setAttribute("is", (n = n.toLowerCase())), + a && (a = Ve(l.toUpperCase(), n))), + (Ie = !r.createElement.innerHTMLHelper), + a && p(o, x[i]), + o + ); + })), + (Ke.prototype = { + constructor: Ke, + define: ee + ? function(e, t, n) { + if (n) Xe(e, t, n); + else { + var r = e.toUpperCase(); + (le[r] = { + constructor: t, + create: [r] + }), + ae.set(t, r), + $.define(e, t); + } + } + : Xe, + get: ee + ? function(e) { + return $.get(e) || Je(e); + } + : Je, + whenDefined: ee + ? function(e) { + return re.race([$.whenDefined(e), Ye(e)]); + } + : Ye + }), + !$ || /^force/.test(n.type)) + ) + $e(); + else if (!n.noBuiltIn) + try { + !(function(e, n, o) { + if ( + ((n[E] = "a"), + ((e.prototype = ce(HTMLAnchorElement.prototype)).constructor = e), + t.customElements.define(o, e, n), + Me.call( + r.createElement("a", { + is: o + }), + "is" + ) !== o || + (ee && Me.call(new e(), "is") !== o)) + ) + throw n; + })( + function e() { + return Reflect.construct(HTMLAnchorElement, [], e); + }, + {}, + "document-register-element-a" + ); + } catch (e) { + $e(); + } + if (!n.noBuiltIn) + try { + ye.call(r, "a", "a"); + } catch (e) { + ue = function(e) { + return { + is: e.toLowerCase() + }; + }; + } + })(window); + var l = function(e) { + return e.toLocaleString("en"); + }, + i = (function(e) { + function l(e) { + var n; + return ( + t(this, l), + ((n = o( + this, + (l.__proto__ || Object.getPrototypeOf(l)).call(this, e) + )), + (e = n)).init(), + o(n, e) + ); + } + return ( + r(l, e), + n(l, [ + { + key: "init", + value: function() {} + } + ]), + l + ); + })(HTMLElement), + a = (function(e) { + function a() { + return ( + t(this, a), + o( + this, + (a.__proto__ || Object.getPrototypeOf(a)).apply(this, arguments) + ) + ); + } + return ( + r(a, i), + n( + a, + [ + { + key: "connectedCallback", + value: function() { + var e = this; + if (!this._connected) { + var t; + this.classList.add("loading"), + (this.style.display = "block"), + (this.innerHTML = + '\n <div class="style-root">\n <div class="shockwave"></div>\n <div class="count-container">\n <div class="count"></div>\n </div>\n <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60">\n <g class="flat">\n <path d="M57.0443547 6.86206897C57.6058817 6.46227795 57.7389459 5.67962382 57.3416215 5.11431557 56.9442971 4.54900731 56.1672933 4.41483804 55.6055588 4.81504702L52.4950525 7.030721C51.9335255 7.43051202 51.8004613 8.21316614 52.1977857 8.7784744 52.4404567 9.12371996 52.8251182 9.30825496 53.2153846 9.30825496 53.4640757 9.30825496 53.7152578 9.23343783 53.9338485 9.07753396L57.0443547 6.86206897zM48.8035059 6.1414838C48.94778 6.19623824 49.0959982 6.22215256 49.2415177 6.22215256 49.7455426 6.22215256 50.2198824 5.91201672 50.4075424 5.40898642L51.7485642 1.81818182C51.9906124 1.17011494 51.664906.447021944 51.0209664.203343783 50.3772345-.0405433647 49.6587706.287774295 49.4167224.93584117L48.0757006 4.52664577C47.83386 5.17471264 48.1595664 5.89780564 48.8035059 6.1414838zM58.5931726 11.6219436C58.5846615 11.6219436 58.5761504 11.6219436 58.5674317 11.6219436L54.7579749 11.6541275C54.0702341 11.6681296 53.5240687 12.1985371 53.5379772 12.8909091 53.551678 13.5745037 54.1065621 14.1297806 54.7828855 14.1297806 54.7913966 14.1297806 54.7999077 14.1297806 54.8086265 14.1297806L58.6180833 14.0643678C59.305824 14.0501567 59.8519894 13.4934169 59.838081 12.8010449 59.8243801 12.1174504 59.269496 11.6219436 58.5931726 11.6219436z"/>\n <path d="M37.1910045 6.68944619C37.7313574 6.14566353 38.4431784 5.8737722 39.155207 5.8737722 39.967916 5.8737722 40.7808327 6.22800418 41.3380002 6.93667712 42.2214969 8.06039707 42.0666359 9.69111808 41.0600392 10.7042842L39.777765 11.9949843C39.5801407 12.1276907 39.3877061 12.2695925 39.2075193 12.430303 39.0619998 11.5985371 38.7167801 10.7954023 38.1668781 10.0961338 37.4907623 9.23636364 36.588375 8.62424242 35.5772114 8.31410658L37.1910045 6.68944619zM28.5289586 3.66394984C29.0691039 3.12016719 29.7811325 2.84827586 30.4931611 2.84827586 31.3060777 2.84848485 32.1187868 3.20271682 32.6759543 3.91138976 33.559451 5.03510972 33.40459 6.66562173 32.3979933 7.67878788L17.6760235 22.3467085 17.6276554 20.6499478C17.6149925 19.014629 16.8595779 17.554441 15.6854573 16.5945664L28.5289586 3.66394984zM.624996757 36.9889537C.491717597 36.554099.508245877 35.7327064.906400646 35.2666667L3.45579518 32.2829676C3.45662553 32.2819923 4.33763118 25.8376176 6.09881213 12.9498433 6.09881213 11.4271682 7.33624726 10.1814002 8.84873717 10.1814002 10.3612271 10.1814002 11.5988698 11.4271682 11.5988698 12.9498433L11.6704878 15.4649948C9.18191673 15.8089864 7.24428555 17.9170324 7.14921001 20.492581L4.62804751 38.9475444 3.8946373 39.8060606C3.04504924 39.4926018 2.3776139 39.1458968 1.89233128 38.7659456 1.16440735 38.1960189.758275917 37.4238085.624996757 36.9889537z"/>\n <path d="M49.6070811,36.8942529 L42.4182909,44.1316614 C36.2784454,50.3128527 29.8604313,55.2743992 24.2225349,56.5113898 C24.0512744,56.5492163 23.8901857,56.6217346 23.7511014,56.7293626 L20.5013032,59.2417973 C20.2908084,59.4045977 20.1673015,59.6181154 19.5026647,59.6181154 C18.8380279,59.6181154 13.0160695,55.8303982 10.3595306,53.2846814 C7.96626306,50.9912532 3.77432047,43.9549368 4.44453927,43.0079415 L6.99372621,40.0244514 C6.99469496,40.0233368 7.87570061,33.578962 9.63674317,20.6913271 C9.63674317,19.168652 10.8743859,17.922675 12.3868758,17.922675 C13.8993657,17.922675 15.1368008,19.168652 15.1368008,20.6913271 L15.2667512,25.2522466 C15.2883404,26.0100313 15.907577,26.5034483 16.5519317,26.5034483 C16.8662207,26.5034483 17.1867374,26.3857889 17.4464306,26.1245559 L32.0670972,11.4054336 C32.6074501,10.861442 33.3190635,10.5897597 34.0312997,10.5897597 C34.8440088,10.5897597 35.6569254,10.9439916 36.214093,11.6526646 C37.0975897,12.7763845 36.942521,14.4071055 35.9359243,15.4202717 L25.8641449,25.5598746 C25.3412294,26.0865204 25.3412294,26.9398119 25.8641449,27.4660397 C26.1288202,27.7324974 26.4757006,27.8658307 26.822581,27.8658307 C27.1694614,27.8658307 27.5165494,27.7324974 27.7810172,27.4660397 L40.7291431,14.43093 C41.2692884,13.8869383 41.9811094,13.615256 42.6933456,13.615256 C43.5060547,13.615465 44.3189713,13.969697 44.8761389,14.6783699 C45.7596356,15.8018809 45.6045669,17.4326019 44.5979702,18.445768 L31.7106677,31.4198537 C31.1806943,31.953605 31.1806943,32.8183908 31.7106677,33.3521421 C31.9718141,33.615047 32.31392,33.7464995 32.656441,33.7464995 C32.9985469,33.7464995 33.3408603,33.615047 33.6020067,33.3521421 L43.7346096,23.1515152 C44.2749625,22.6075235 44.9867835,22.3358412 45.6988121,22.3358412 C46.5115212,22.3358412 47.3244378,22.6900731 47.8816054,23.3989551 C48.7651021,24.522466 48.6100334,26.153187 47.6034367,27.1663532 L37.5667397,37.2708464 C37.0245185,37.8165099 37.0245185,38.7017764 37.5667397,39.2474399 C37.8334909,39.5161964 38.161896,39.6422153 38.4900934,39.6422153 C38.8184984,39.6422153 39.1469035,39.5161964 39.3972552,39.2639498 L45.6195133,32.999791 C46.1802099,32.4353187 46.93085,32.1368861 47.678999,32.1368861 C48.2741552,32.1368861 48.8676508,32.3258098 49.361919,32.7197492 C50.682182,33.7717868 50.7639719,35.7297806 49.6070811,36.8942529 Z"/>\n </g>\n <g class="outline">\n <path d="M57.1428763 6.63333333C57.6856856 6.24686869 57.8143144 5.49030303 57.4302341 4.94383838 57.0461538 4.39737374 56.2950502 4.26767677 55.7520401 4.65454545L52.7452174 6.79636364C52.202408 7.18282828 52.0737793 7.93939394 52.4578595 8.48585859 52.6924415 8.81959596 53.0642809 8.9979798 53.4415385 8.9979798 53.6819398 8.9979798 53.9247492 8.92565657 54.1360535 8.77494949L57.1428763 6.63333333zM49.1767224 5.93676768C49.3161873 5.98969697 49.4594649 6.01474747 49.6001338 6.01474747 50.0873579 6.01474747 50.5458863 5.71494949 50.727291 5.22868687L52.023612 1.75757576C52.257592 1.13111111 51.9427425.432121212 51.3202676.196565657 50.6979933-.0391919192 50.0034783.278181818 49.7694983.904646465L48.4731773 4.37575758C48.239398 5.00222222 48.5542475 5.70121212 49.1767224 5.93676768zM58.6400669 11.2345455C58.6318395 11.2345455 58.623612 11.2345455 58.6151839 11.2345455L54.932709 11.2656566C54.267893 11.2791919 53.7399331 11.7919192 53.7533779 12.4612121 53.7666221 13.1220202 54.30301 13.6587879 54.9567893 13.6587879 54.9650167 13.6587879 54.9732441 13.6587879 54.9816722 13.6587879L58.6641472 13.5955556C59.3289632 13.5818182 59.8569231 13.0436364 59.8434783 12.3743434 59.8302341 11.7135354 59.2938462 11.2345455 58.6400669 11.2345455zM51.2107023 29.7280808C50.5940468 29.2365657 49.8640134 28.9020202 49.0922408 28.7448485 49.1432107 28.6519192 49.1907692 28.5573737 49.2357191 28.4614141L49.7189298 27.9749495C51.5799331 26.1012121 51.7753846 23.1519192 50.1732441 21.1141414 49.4169231 20.1523232 48.3670234 19.5131313 47.2009365 19.2745455 47.284214 19.120202 47.3580602 18.9624242 47.4250836 18.8022222 48.6925084 16.9539394 48.6718395 14.469899 47.2681605 12.6844444 46.5116388 11.7220202 45.4613378 11.0808081 44.2946488 10.8426263 45.2578595 9.05959596 45.1348495 6.83737374 43.8481605 5.20121212 42.8753177 3.96383838 41.4182609 3.25393939 39.8502341 3.25393939 38.5946488 3.25393939 37.4101003 3.70565657 36.480602 4.53272727 36.3399331 3.72888889 36.0064214 2.95252525 35.4748495 2.27636364 34.501806 1.0389899 33.0447492.329292929 31.4767224.329090909 30.1141806.329090909 28.8351171.861414141 27.8753177 1.82767677L15.6666221 14.1185859 15.6200669 12.4781818C15.5985953 9.68424242 13.3340468 7.41777778 10.5537793 7.41777778 7.8238796 7.41777778 5.59143813 9.60262626 5.49110368 12.3264646L3.05377926 30.1660606 1.05050167 32.510303C-.150100334 33.9157576.751318148 36.4103164 1.05050167 37.002855 1.3496852 37.5953936 1.66593319 37.9666982 2.51271962 38.8651283 2.8050341 39.1752704 3.3712736 39.6680391 4.21143813 40.3434343 3.2935786 41.7335354 4.72327715 47.298456 9.51045561 52.4226263 15.4436869 58.7735254 20.1888963 59.9262626 21.1316388 59.9262626 21.9056187 59.9262626 22.6703679 59.6646465 23.2846154 59.189899L26.2031438 56.9337374C29.0107023 56.2660606 32.1060201 54.7492929 35.4086288 52.4226263 38.2924415 50.3907071 41.4210702 47.6832323 44.7070234 44.3749495L51.656388 37.3787879C52.681204 36.3470707 53.220602 34.9165657 53.1363211 33.4541414 53.0520401 31.9941414 52.350301 30.6361616 51.2107023 29.7280808zM37.9513043 6.46646465C38.4736455 5.94080808 39.1617391 5.6779798 39.8500334 5.6779798 40.6356522 5.6779798 41.4214716 6.02040404 41.9600669 6.70545455 42.8141137 7.79171717 42.6644147 9.36808081 41.6913712 10.3474747L40.4518395 11.5951515C40.2608027 11.7234343 40.0747826 11.8606061 39.900602 12.0159596 39.7599331 11.2119192 39.4262207 10.4355556 38.8946488 9.75959596 38.2410702 8.92848485 37.3687625 8.33676768 36.3913043 8.0369697L37.9513043 6.46646465zM29.5779933 3.54181818C30.1001338 3.01616162 30.7884281 2.75333333 31.4767224 2.75333333 32.2625418 2.75353535 33.0481605 3.0959596 33.5867559 3.7810101 34.4408027 4.86727273 34.2911037 6.44343434 33.3180602 7.42282828L19.0868227 21.6018182 19.0400669 19.9616162C19.0278261 18.3808081 18.297592 16.9692929 17.1626087 16.0414141L29.5779933 3.54181818zM2.60416353 35.7559886C2.47532701 35.335629 2.49130435 34.5416162 2.87618729 34.0911111L5.34060201 31.2068687C5.34140468 31.2059259 6.19304348 24.9763636 7.89551839 12.5181818 7.89551839 11.0462626 9.09170569 9.8420202 10.5537793 9.8420202 12.0158528 9.8420202 13.2122408 11.0462626 13.2122408 12.5181818L13.2814716 14.9494949C10.8758528 15.2820202 9.00280936 17.319798 8.91090301 19.8094949L6.47377926 37.6492929 5.76481605 38.4791919C4.9435476 38.1761817 4.2983601 37.8410335 3.82925357 37.4737474 3.12559377 36.9228183 2.73300005 36.1763482 2.60416353 35.7559886zM49.9535117 35.6644444L43.0043478 42.6606061C37.0691639 48.6357576 30.8650836 53.4319192 25.4151171 54.6276768 25.2495652 54.6642424 25.0938462 54.7343434 24.959398 54.8383838L21.8179264 57.2670707C21.6144482 57.4244444 21.4950582 57.6308449 20.8525759 57.6308449 20.2100936 57.6308449 14.5822005 53.9693849 12.0142129 51.5085254 9.70072096 49.2915447 5.64850979 42.4897722 6.29638796 41.5743434L8.76060201 38.690303C8.76153846 38.6892256 9.61317726 32.4596633 11.3155184 20.0016162 11.3155184 18.529697 12.5119064 17.3252525 13.9739799 17.3252525 15.4360535 17.3252525 16.6322408 18.529697 16.6322408 20.0016162L16.7578595 24.4105051C16.7787291 25.1430303 17.3773244 25.62 18.0002007 25.62 18.3040134 25.62 18.6138462 25.5062626 18.8648829 25.2537374L32.998194 11.0252525C33.5205351 10.4993939 34.2084281 10.2367677 34.8969231 10.2367677 35.6825418 10.2367677 36.4683612 10.5791919 37.0069565 11.2642424 37.8610033 12.3505051 37.7111037 13.9268687 36.7380602 14.9062626L27.0020067 24.7078788C26.4965217 25.2169697 26.4965217 26.0418182 27.0020067 26.5505051 27.2578595 26.8080808 27.5931773 26.9369697 27.928495 26.9369697 28.2638127 26.9369697 28.5993311 26.8080808 28.8549833 26.5505051L41.371505 13.949899C41.8936455 13.4240404 42.5817391 13.1614141 43.2702341 13.1614141 44.0558528 13.1616162 44.8416722 13.5040404 45.3802676 14.1890909 46.2343144 15.2751515 46.0844147 16.8515152 45.1113712 17.8309091L32.6536455 30.3725253C32.1413378 30.8884848 32.1413378 31.7244444 32.6536455 32.240404 32.906087 32.4945455 33.2367893 32.6216162 33.567893 32.6216162 33.8985953 32.6216162 34.2294983 32.4945455 34.4819398 32.240404L44.2767893 22.379798C44.7991304 21.8539394 45.4872241 21.5913131 46.1755184 21.5913131 46.9611371 21.5913131 47.7469565 21.9337374 48.2855518 22.6189899 49.1395987 23.7050505 48.989699 25.2814141 48.0166555 26.2608081L38.3145151 36.0284848C37.7903679 36.5559596 37.7903679 37.4117172 38.3145151 37.9391919 38.5723746 38.1989899 38.8898328 38.3208081 39.2070903 38.3208081 39.5245485 38.3208081 39.8420067 38.1989899 40.0840134 37.9551515L46.0988629 31.899798C46.6408696 31.3541414 47.3664883 31.0656566 48.089699 31.0656566 48.6650167 31.0656566 49.2387291 31.2482828 49.7165217 31.6290909 50.9927759 32.6460606 51.0718395 34.5387879 49.9535117 35.6644444z"/>\n </g>\n </svg>\n <svg xmlns="http://www.w3.org/2000/svg" viewBox="-10 -10 20 20">\n <g class="sparkle">\n ' + + ((t = 5), new Array(t).fill(void 0)) + .map(function(e) { + return '<g><circle cx="0" cy="0" r="1"/></g>'; + }) + .join("") + + "\n </g>\n </svg>\n </div>\n "), + (this._styleRootElement = this.querySelector( + ".style-root" + )), + (this._countElement = this.querySelector(".count")), + this._updateRootColor(), + (this._totalClaps = 0); + var n, + r, + o, + i, + a, + u = void 0; + (this._initialClapCount = new Promise(function(e) { + return (u = e); + })), + (this._bufferedClaps = 0), + (this._updateClaps = + ((n = function() { + if (e._totalClaps < 10) { + var t = Math.min( + e._bufferedClaps, + 10 - e._totalClaps + ); + (n = e.api), + (r = t), + (o = e.url), + fetch( + n + "/update-claps" + (o ? "?url=" + o : ""), + { + method: "POST", + headers: { + "Content-Type": "text/plain" + }, + body: JSON.stringify(r + ",3.3.0") + } + ).then(function(e) { + return e.text(); + }), + (e._totalClaps += t), + (e._bufferedClaps = 0); + } + var n, r, o; + }), + (r = 2e3), + (o = null), + function() { + var e = this, + t = arguments; + clearTimeout(o), + (o = setTimeout(function() { + return n.apply(e, t); + }, r)); + })), + this.addEventListener("mousedown", function(t) { + if ( + 0 === t.button && + (e.classList.add("clapped"), + !e.classList.contains("clap-limit-exceeded")) + ) { + var n, + r, + o = + Number(e._countElement.innerHTML.replace(",", "")) + + 1; + e.dispatchEvent( + new CustomEvent("clapped", { + bubbles: !0, + detail: { + clapCount: o + } + }) + ), + (r = "clap"), + (n = e).classList.remove(r), + setTimeout(function() { + n.classList.add(r); + }, 100), + setTimeout(function() { + n.classList.remove(r); + }, 1e3), + e._bufferedClaps++, + e._updateClaps(), + setTimeout(function() { + e._countElement.innerHTML = l(o); + }, 250), + e.multiclap + ? e._bufferedClaps + e._totalClaps >= 10 && + e.classList.add("clap-limit-exceeded") + : e.classList.add("clap-limit-exceeded"); + } + }), + ((i = this.api), + (a = this.url), + fetch(i + "/get-claps" + (a ? "?url=" + a : ""), { + headers: { + "Content-Type": "text/plain" + } + }).then(function(e) { + return e.text(); + })).then(function(t) { + e.classList.remove("loading"); + var n = Number(t); + u(n), n > 0 && (e._countElement.innerHTML = l(n)); + }), + (this._connected = !0); + } + } + }, + { + key: "attributeChangedCallback", + value: function(e, t, n) { + this._updateRootColor(); + } + }, + { + key: "_updateRootColor", + value: function() { + if (this._styleRootElement) { + var e = this.getAttribute("color") || "green", + t = this._styleRootElement.style; + (t.fill = e), (t.stroke = e), (t.color = e); + } + } + }, + { + key: "initialClapCount", + get: function() { + return this._initialClapCount; + } + }, + { + key: "color", + get: function() { + return this.getAttribute("color"); + }, + set: function(e) { + e + ? this.setAttribute("color", e) + : this.removeAttribute("color"), + this._updateRootColor(); + } + }, + { + key: "api", + set: function(e) { + e ? this.setAttribute("api", e) : this.removeAttribute("api"); + }, + get: function() { + return ( + this.getAttribute("api") || "https://api.applause-button.com" + ); + } + }, + { + key: "url", + set: function(e) { + e ? this.setAttribute("url", e) : this.removeAttribute("url"), + this._updateRootColor(); + }, + get: function() { + return this.getAttribute("url"); + } + }, + { + key: "multiclap", + get: function() { + return "true" === this.getAttribute("multiclap"); + }, + set: function(e) { + e + ? this.setAttribute("multiclap", e ? "true" : "false") + : this.removeAttribute("multiclap"); + } + } + ], + [ + { + key: "observedAttributes", + get: function() { + return ["color"]; + } + } + ] + ), + a + ); + })(); + customElements.define("applause-button", a); +}); diff --git a/theme/static/bootstrap/accordion.less b/theme/static/bootstrap/accordion.less new file mode 100644 index 0000000..d63523b --- /dev/null +++ b/theme/static/bootstrap/accordion.less @@ -0,0 +1,34 @@ +// +// Accordion +// -------------------------------------------------- + + +// Parent container +.accordion { + margin-bottom: @baseLineHeight; +} + +// Group == heading + body +.accordion-group { + margin-bottom: 2px; + border: 1px solid #e5e5e5; + .border-radius(@baseBorderRadius); +} +.accordion-heading { + border-bottom: 0; +} +.accordion-heading .accordion-toggle { + display: block; + padding: 8px 15px; +} + +// General toggle styles +.accordion-toggle { + cursor: pointer; +} + +// Inner needs the styles because you can't animate properly with any styles on the element +.accordion-inner { + padding: 9px 15px; + border-top: 1px solid #e5e5e5; +} diff --git a/theme/static/bootstrap/alerts.less b/theme/static/bootstrap/alerts.less new file mode 100644 index 0000000..0116b19 --- /dev/null +++ b/theme/static/bootstrap/alerts.less @@ -0,0 +1,79 @@ +// +// Alerts +// -------------------------------------------------- + + +// Base styles +// ------------------------- + +.alert { + padding: 8px 35px 8px 14px; + margin-bottom: @baseLineHeight; + text-shadow: 0 1px 0 rgba(255,255,255,.5); + background-color: @warningBackground; + border: 1px solid @warningBorder; + .border-radius(@baseBorderRadius); +} +.alert, +.alert h4 { + // Specified for the h4 to prevent conflicts of changing @headingsColor + color: @warningText; +} +.alert h4 { + margin: 0; +} + +// Adjust close link position +.alert .close { + position: relative; + top: -2px; + right: -21px; + line-height: @baseLineHeight; +} + + +// Alternate styles +// ------------------------- + +.alert-success { + background-color: @successBackground; + border-color: @successBorder; + color: @successText; +} +.alert-success h4 { + color: @successText; +} +.alert-danger, +.alert-error { + background-color: @errorBackground; + border-color: @errorBorder; + color: @errorText; +} +.alert-danger h4, +.alert-error h4 { + color: @errorText; +} +.alert-info { + background-color: @infoBackground; + border-color: @infoBorder; + color: @infoText; +} +.alert-info h4 { + color: @infoText; +} + + +// Block alerts +// ------------------------- + +.alert-block { + padding-top: 14px; + padding-bottom: 14px; +} +.alert-block > p, +.alert-block > ul { + margin-bottom: 0; +} +.alert-block p + p { + margin-top: 5px; +} diff --git a/theme/static/bootstrap/bootstrap.less b/theme/static/bootstrap/bootstrap.less new file mode 100644 index 0000000..3eabae1 --- /dev/null +++ b/theme/static/bootstrap/bootstrap.less @@ -0,0 +1,63 @@ +/*! + * Bootstrap v2.3.2 + * + * Copyright 2013 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world by @mdo and @fat. + */ + +// Core variables and mixins +@import "variables.less"; // Modify this for custom colors, font-sizes, etc +@import "mixins.less"; + +// CSS Reset +@import "reset.less"; + +// Grid system and page structure +@import "scaffolding.less"; +@import "grid.less"; +@import "layouts.less"; + +// Base CSS +@import "type.less"; +@import "code.less"; +@import "forms.less"; +@import "tables.less"; + +// Components: common +@import "sprites.less"; +@import "dropdowns.less"; +@import "wells.less"; +@import "component-animations.less"; +@import "close.less"; + +// Components: Buttons & Alerts +@import "buttons.less"; +@import "button-groups.less"; +@import "alerts.less"; // Note: alerts share common CSS with buttons and thus have styles in buttons.less + +// Components: Nav +@import "navs.less"; +@import "navbar.less"; +@import "breadcrumbs.less"; +@import "pagination.less"; +@import "pager.less"; + +// Components: Popovers +@import "modals.less"; +@import "tooltip.less"; +@import "popovers.less"; + +// Components: Misc +@import "thumbnails.less"; +@import "media.less"; +@import "labels-badges.less"; +@import "progress-bars.less"; +@import "accordion.less"; +@import "carousel.less"; +@import "hero-unit.less"; + +// Utility classes +@import "utilities.less"; // Has to be last to override when necessary diff --git a/theme/static/bootstrap/breadcrumbs.less b/theme/static/bootstrap/breadcrumbs.less new file mode 100644 index 0000000..f753df6 --- /dev/null +++ b/theme/static/bootstrap/breadcrumbs.less @@ -0,0 +1,24 @@ +// +// Breadcrumbs +// -------------------------------------------------- + + +.breadcrumb { + padding: 8px 15px; + margin: 0 0 @baseLineHeight; + list-style: none; + background-color: #f5f5f5; + .border-radius(@baseBorderRadius); + > li { + display: inline-block; + .ie7-inline-block(); + text-shadow: 0 1px 0 @white; + > .divider { + padding: 0 5px; + color: #ccc; + } + } + > .active { + color: @grayLight; + } +} diff --git a/theme/static/bootstrap/button-groups.less b/theme/static/bootstrap/button-groups.less new file mode 100644 index 0000000..55cdc60 --- /dev/null +++ b/theme/static/bootstrap/button-groups.less @@ -0,0 +1,229 @@ +// +// Button groups +// -------------------------------------------------- + + +// Make the div behave like a button +.btn-group { + position: relative; + display: inline-block; + .ie7-inline-block(); + font-size: 0; // remove as part 1 of font-size inline-block hack + vertical-align: middle; // match .btn alignment given font-size hack above + white-space: nowrap; // prevent buttons from wrapping when in tight spaces (e.g., the table on the tests page) + .ie7-restore-left-whitespace(); +} + +// Space out series of button groups +.btn-group + .btn-group { + margin-left: 5px; +} + +// Optional: Group multiple button groups together for a toolbar +.btn-toolbar { + font-size: 0; // Hack to remove whitespace that results from using inline-block + margin-top: @baseLineHeight / 2; + margin-bottom: @baseLineHeight / 2; + > .btn + .btn, + > .btn-group + .btn, + > .btn + .btn-group { + margin-left: 5px; + } +} + +// Float them, remove border radius, then re-add to first and last elements +.btn-group > .btn { + position: relative; + .border-radius(0); +} +.btn-group > .btn + .btn { + margin-left: -1px; +} +.btn-group > .btn, +.btn-group > .dropdown-menu, +.btn-group > .popover { + font-size: @baseFontSize; // redeclare as part 2 of font-size inline-block hack +} + +// Reset fonts for other sizes +.btn-group > .btn-mini { + font-size: @fontSizeMini; +} +.btn-group > .btn-small { + font-size: @fontSizeSmall; +} +.btn-group > .btn-large { + font-size: @fontSizeLarge; +} + +// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match +.btn-group > .btn:first-child { + margin-left: 0; + .border-top-left-radius(@baseBorderRadius); + .border-bottom-left-radius(@baseBorderRadius); +} +// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it +.btn-group > .btn:last-child, +.btn-group > .dropdown-toggle { + .border-top-right-radius(@baseBorderRadius); + .border-bottom-right-radius(@baseBorderRadius); +} +// Reset corners for large buttons +.btn-group > .btn.large:first-child { + margin-left: 0; + .border-top-left-radius(@borderRadiusLarge); + .border-bottom-left-radius(@borderRadiusLarge); +} +.btn-group > .btn.large:last-child, +.btn-group > .large.dropdown-toggle { + .border-top-right-radius(@borderRadiusLarge); + .border-bottom-right-radius(@borderRadiusLarge); +} + +// On hover/focus/active, bring the proper btn to front +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active { + z-index: 2; +} + +// On active and open, don't show outline +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + + + +// Split button dropdowns +// ---------------------- + +// Give the line between buttons some depth +.btn-group > .btn + .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; + .box-shadow(~"inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05)"); + *padding-top: 5px; + *padding-bottom: 5px; +} +.btn-group > .btn-mini + .dropdown-toggle { + padding-left: 5px; + padding-right: 5px; + *padding-top: 2px; + *padding-bottom: 2px; +} +.btn-group > .btn-small + .dropdown-toggle { + *padding-top: 5px; + *padding-bottom: 4px; +} +.btn-group > .btn-large + .dropdown-toggle { + padding-left: 12px; + padding-right: 12px; + *padding-top: 7px; + *padding-bottom: 7px; +} + +.btn-group.open { + + // The clickable button for toggling the menu + // Remove the gradient and set the same inset shadow as the :active state + .dropdown-toggle { + background-image: none; + .box-shadow(~"inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05)"); + } + + // Keep the hover's background when dropdown is open + .btn.dropdown-toggle { + background-color: @btnBackgroundHighlight; + } + .btn-primary.dropdown-toggle { + background-color: @btnPrimaryBackgroundHighlight; + } + .btn-warning.dropdown-toggle { + background-color: @btnWarningBackgroundHighlight; + } + .btn-danger.dropdown-toggle { + background-color: @btnDangerBackgroundHighlight; + } + .btn-success.dropdown-toggle { + background-color: @btnSuccessBackgroundHighlight; + } + .btn-info.dropdown-toggle { + background-color: @btnInfoBackgroundHighlight; + } + .btn-inverse.dropdown-toggle { + background-color: @btnInverseBackgroundHighlight; + } +} + + +// Reposition the caret +.btn .caret { + margin-top: 8px; + margin-left: 0; +} +// Carets in other button sizes +.btn-large .caret { + margin-top: 6px; +} +.btn-large .caret { + border-left-width: 5px; + border-right-width: 5px; + border-top-width: 5px; +} +.btn-mini .caret, +.btn-small .caret { + margin-top: 8px; +} +// Upside down carets for .dropup +.dropup .btn-large .caret { + border-bottom-width: 5px; +} + + + +// Account for other colors +.btn-primary, +.btn-warning, +.btn-danger, +.btn-info, +.btn-success, +.btn-inverse { + .caret { + border-top-color: @white; + border-bottom-color: @white; + } +} + + + +// Vertical button groups +// ---------------------- + +.btn-group-vertical { + display: inline-block; // makes buttons only take up the width they need + .ie7-inline-block(); +} +.btn-group-vertical > .btn { + display: block; + float: none; + max-width: 100%; + .border-radius(0); +} +.btn-group-vertical > .btn + .btn { + margin-left: 0; + margin-top: -1px; +} +.btn-group-vertical > .btn:first-child { + .border-radius(@baseBorderRadius @baseBorderRadius 0 0); +} +.btn-group-vertical > .btn:last-child { + .border-radius(0 0 @baseBorderRadius @baseBorderRadius); +} +.btn-group-vertical > .btn-large:first-child { + .border-radius(@borderRadiusLarge @borderRadiusLarge 0 0); +} +.btn-group-vertical > .btn-large:last-child { + .border-radius(0 0 @borderRadiusLarge @borderRadiusLarge); +} diff --git a/theme/static/bootstrap/buttons.less b/theme/static/bootstrap/buttons.less new file mode 100644 index 0000000..4cd4d86 --- /dev/null +++ b/theme/static/bootstrap/buttons.less @@ -0,0 +1,228 @@ +// +// Buttons +// -------------------------------------------------- + + +// Base styles +// -------------------------------------------------- + +// Core +.btn { + display: inline-block; + .ie7-inline-block(); + padding: 4px 12px; + margin-bottom: 0; // For input.btn + font-size: @baseFontSize; + line-height: @baseLineHeight; + text-align: center; + vertical-align: middle; + cursor: pointer; + .buttonBackground(@btnBackground, @btnBackgroundHighlight, @grayDark, 0 1px 1px rgba(255,255,255,.75)); + border: 1px solid @btnBorder; + *border: 0; // Remove the border to prevent IE7's black border on input:focus + border-bottom-color: darken(@btnBorder, 10%); + .border-radius(@baseBorderRadius); + .ie7-restore-left-whitespace(); // Give IE7 some love + .box-shadow(~"inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05)"); + + // Hover/focus state + &:hover, + &:focus { + color: @grayDark; + text-decoration: none; + background-position: 0 -15px; + + // transition is only when going to hover/focus, otherwise the background + // behind the gradient (there for IE<=9 fallback) gets mismatched + .transition(background-position .1s linear); + } + + // Focus state for keyboard and accessibility + &:focus { + .tab-focus(); + } + + // Active state + &.active, + &:active { + background-image: none; + outline: 0; + .box-shadow(~"inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05)"); + } + + // Disabled state + &.disabled, + &[disabled] { + cursor: default; + background-image: none; + .opacity(65); + .box-shadow(none); + } + +} + + + +// Button Sizes +// -------------------------------------------------- + +// Large +.btn-large { + padding: @paddingLarge; + font-size: @fontSizeLarge; + .border-radius(@borderRadiusLarge); +} +.btn-large [class^="icon-"], +.btn-large [class*=" icon-"] { + margin-top: 4px; +} + +// Small +.btn-small { + padding: @paddingSmall; + font-size: @fontSizeSmall; + .border-radius(@borderRadiusSmall); +} +.btn-small [class^="icon-"], +.btn-small [class*=" icon-"] { + margin-top: 0; +} +.btn-mini [class^="icon-"], +.btn-mini [class*=" icon-"] { + margin-top: -1px; +} + +// Mini +.btn-mini { + padding: @paddingMini; + font-size: @fontSizeMini; + .border-radius(@borderRadiusSmall); +} + + +// Block button +// ------------------------- + +.btn-block { + display: block; + width: 100%; + padding-left: 0; + padding-right: 0; + .box-sizing(border-box); +} + +// Vertically space out multiple block buttons +.btn-block + .btn-block { + margin-top: 5px; +} + +// Specificity overrides +input[type="submit"], +input[type="reset"], +input[type="button"] { + &.btn-block { + width: 100%; + } +} + + + +// Alternate buttons +// -------------------------------------------------- + +// Provide *some* extra contrast for those who can get it +.btn-primary.active, +.btn-warning.active, +.btn-danger.active, +.btn-success.active, +.btn-info.active, +.btn-inverse.active { + color: rgba(255,255,255,.75); +} + +// Set the backgrounds +// ------------------------- +.btn-primary { + .buttonBackground(@btnPrimaryBackground, @btnPrimaryBackgroundHighlight); +} +// Warning appears are orange +.btn-warning { + .buttonBackground(@btnWarningBackground, @btnWarningBackgroundHighlight); +} +// Danger and error appear as red +.btn-danger { + .buttonBackground(@btnDangerBackground, @btnDangerBackgroundHighlight); +} +// Success appears as green +.btn-success { + .buttonBackground(@btnSuccessBackground, @btnSuccessBackgroundHighlight); +} +// Info appears as a neutral blue +.btn-info { + .buttonBackground(@btnInfoBackground, @btnInfoBackgroundHighlight); +} +// Inverse appears as dark gray +.btn-inverse { + .buttonBackground(@btnInverseBackground, @btnInverseBackgroundHighlight); +} + + +// Cross-browser Jank +// -------------------------------------------------- + +button.btn, +input[type="submit"].btn { + + // Firefox 3.6 only I believe + &::-moz-focus-inner { + padding: 0; + border: 0; + } + + // IE7 has some default padding on button controls + *padding-top: 3px; + *padding-bottom: 3px; + + &.btn-large { + *padding-top: 7px; + *padding-bottom: 7px; + } + &.btn-small { + *padding-top: 3px; + *padding-bottom: 3px; + } + &.btn-mini { + *padding-top: 1px; + *padding-bottom: 1px; + } +} + + +// Link buttons +// -------------------------------------------------- + +// Make a button look and behave like a link +.btn-link, +.btn-link:active, +.btn-link[disabled] { + background-color: transparent; + background-image: none; + .box-shadow(none); +} +.btn-link { + border-color: transparent; + cursor: pointer; + color: @linkColor; + .border-radius(0); +} +.btn-link:hover, +.btn-link:focus { + color: @linkColorHover; + text-decoration: underline; + background-color: transparent; +} +.btn-link[disabled]:hover, +.btn-link[disabled]:focus { + color: @grayDark; + text-decoration: none; +} diff --git a/theme/static/bootstrap/carousel.less b/theme/static/bootstrap/carousel.less new file mode 100644 index 0000000..55bc050 --- /dev/null +++ b/theme/static/bootstrap/carousel.less @@ -0,0 +1,158 @@ +// +// Carousel +// -------------------------------------------------- + + +.carousel { + position: relative; + margin-bottom: @baseLineHeight; + line-height: 1; +} + +.carousel-inner { + overflow: hidden; + width: 100%; + position: relative; +} + +.carousel-inner { + + > .item { + display: none; + position: relative; + .transition(.6s ease-in-out left); + + // Account for jankitude on images + > img, + > a > img { + display: block; + line-height: 1; + } + } + + > .active, + > .next, + > .prev { display: block; } + + > .active { + left: 0; + } + + > .next, + > .prev { + position: absolute; + top: 0; + width: 100%; + } + + > .next { + left: 100%; + } + > .prev { + left: -100%; + } + > .next.left, + > .prev.right { + left: 0; + } + + > .active.left { + left: -100%; + } + > .active.right { + left: 100%; + } + +} + +// Left/right controls for nav +// --------------------------- + +.carousel-control { + position: absolute; + top: 40%; + left: 15px; + width: 40px; + height: 40px; + margin-top: -20px; + font-size: 60px; + font-weight: 100; + line-height: 30px; + color: @white; + text-align: center; + background: @grayDarker; + border: 3px solid @white; + .border-radius(23px); + .opacity(50); + + // we can't have this transition here + // because webkit cancels the carousel + // animation if you trip this while + // in the middle of another animation + // ;_; + // .transition(opacity .2s linear); + + // Reposition the right one + &.right { + left: auto; + right: 15px; + } + + // Hover/focus state + &:hover, + &:focus { + color: @white; + text-decoration: none; + .opacity(90); + } +} + +// Carousel indicator pips +// ----------------------------- +.carousel-indicators { + position: absolute; + top: 15px; + right: 15px; + z-index: 5; + margin: 0; + list-style: none; + + li { + display: block; + float: left; + width: 10px; + height: 10px; + margin-left: 5px; + text-indent: -999px; + background-color: #ccc; + background-color: rgba(255,255,255,.25); + border-radius: 5px; + } + .active { + background-color: #fff; + } +} + +// Caption for text below images +// ----------------------------- + +.carousel-caption { + position: absolute; + left: 0; + right: 0; + bottom: 0; + padding: 15px; + background: @grayDark; + background: rgba(0,0,0,.75); +} +.carousel-caption h4, +.carousel-caption p { + color: @white; + line-height: @baseLineHeight; +} +.carousel-caption h4 { + margin: 0 0 5px; +} +.carousel-caption p { + margin-bottom: 0; +} diff --git a/theme/static/bootstrap/close.less b/theme/static/bootstrap/close.less new file mode 100644 index 0000000..5c27c7e --- /dev/null +++ b/theme/static/bootstrap/close.less @@ -0,0 +1,32 @@ +// +// Close icons +// -------------------------------------------------- + + +.close { + float: right; + font-size: 20px; + font-weight: bold; + line-height: @baseLineHeight; + color: @black; + text-shadow: 0 1px 0 rgba(255,255,255,1); + .opacity(20); + &:hover, + &:focus { + color: @black; + text-decoration: none; + cursor: pointer; + .opacity(40); + } +} + +// Additional properties for button version +// iOS requires the button element instead of an anchor tag. +// If you want the anchor version, it requires `href="#"`. +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} diff --git a/theme/static/bootstrap/code.less b/theme/static/bootstrap/code.less new file mode 100644 index 0000000..6b1da60 --- /dev/null +++ b/theme/static/bootstrap/code.less @@ -0,0 +1,56 @@ +// +// Code (inline and blocK) +// -------------------------------------------------- + + +// Inline and block code styles +code, +pre { + padding: 0 3px 2px; + font-size: @baseFontSize - 2; + color: @grayDark; + .border-radius(3px); +} + +// Inline code +code { + padding: 2px 4px; + color: #d14; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; + white-space: nowrap; +} + +// Blocks of code +pre { + display: block; + padding: (@baseLineHeight - 1) / 2; + margin: 0 0 @baseLineHeight / 2; + font-size: @baseFontSize - 1; // 14px to 13px + line-height: @baseLineHeight; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; + + // Make prettyprint styles more spaced out for readability + &.prettyprint { + margin-bottom: @baseLineHeight; + } + + // Account for some code outputs that place code tags in pre tags + code { + padding: 0; + color: inherit; + white-space: pre; + white-space: pre-wrap; + background-color: transparent; + border: 0; + } +} + +// Enable scrollable blocks of code +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} diff --git a/theme/static/bootstrap/component-animations.less b/theme/static/bootstrap/component-animations.less new file mode 100644 index 0000000..d614263 --- /dev/null +++ b/theme/static/bootstrap/component-animations.less @@ -0,0 +1,22 @@ +// +// Component animations +// -------------------------------------------------- + + +.fade { + opacity: 0; + .transition(opacity .15s linear); + &.in { + opacity: 1; + } +} + +.collapse { + position: relative; + height: 0; + overflow: hidden; + .transition(height .35s ease); + &.in { + height: auto; + } +} diff --git a/theme/static/bootstrap/dropdowns.less b/theme/static/bootstrap/dropdowns.less new file mode 100644 index 0000000..9e47b47 --- /dev/null +++ b/theme/static/bootstrap/dropdowns.less @@ -0,0 +1,248 @@ +// +// Dropdown menus +// -------------------------------------------------- + + +// Use the .menu class on any <li> element within the topbar or ul.tabs and you'll get some superfancy dropdowns +.dropup, +.dropdown { + position: relative; +} +.dropdown-toggle { + // The caret makes the toggle a bit too tall in IE7 + *margin-bottom: -3px; +} +.dropdown-toggle:active, +.open .dropdown-toggle { + outline: 0; +} + +// Dropdown arrow/caret +// -------------------- +.caret { + display: inline-block; + width: 0; + height: 0; + vertical-align: top; + border-top: 4px solid @black; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + content: ""; +} + +// Place the caret +.dropdown .caret { + margin-top: 8px; + margin-left: 2px; +} + +// The dropdown menu (ul) +// ---------------------- +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: @zindexDropdown; + display: none; // none by default, but block on "open" of the menu + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; // override default ul + list-style: none; + background-color: @dropdownBackground; + border: 1px solid #ccc; // Fallback for IE7-8 + border: 1px solid @dropdownBorder; + *border-right-width: 2px; + *border-bottom-width: 2px; + .border-radius(6px); + .box-shadow(0 5px 10px rgba(0,0,0,.2)); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; + + // Aligns the dropdown menu to right + &.pull-right { + right: 0; + left: auto; + } + + // Dividers (basically an hr) within the dropdown + .divider { + .nav-divider(@dropdownDividerTop, @dropdownDividerBottom); + } + + // Links within the dropdown menu + > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: @baseLineHeight; + color: @dropdownLinkColor; + white-space: nowrap; + } +} + +// Hover/Focus state +// ----------- +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus, +.dropdown-submenu:hover > a, +.dropdown-submenu:focus > a { + text-decoration: none; + color: @dropdownLinkColorHover; + #gradient > .vertical(@dropdownLinkBackgroundHover, darken(@dropdownLinkBackgroundHover, 5%)); +} + +// Active state +// ------------ +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: @dropdownLinkColorActive; + text-decoration: none; + outline: 0; + #gradient > .vertical(@dropdownLinkBackgroundActive, darken(@dropdownLinkBackgroundActive, 5%)); +} + +// Disabled state +// -------------- +// Gray out text and ensure the hover/focus state remains gray +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: @grayLight; +} +// Nuke hover/focus effects +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + background-color: transparent; + background-image: none; // Remove CSS gradient + .reset-filter(); + cursor: default; +} + +// Open state for the dropdown +// --------------------------- +.open { + // IE7's z-index only goes to the nearest positioned ancestor, which would + // make the menu appear below buttons that appeared later on the page + *z-index: @zindexDropdown; + + & > .dropdown-menu { + display: block; + } +} + +// Backdrop to catch body clicks on mobile, etc. +// --------------------------- +.dropdown-backdrop { + position: fixed; + left: 0; + right: 0; + bottom: 0; + top: 0; + z-index: @zindexDropdown - 10; +} + +// Right aligned dropdowns +// --------------------------- +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +// Allow for dropdowns to go bottom up (aka, dropup-menu) +// ------------------------------------------------------ +// Just add .dropup after the standard .dropdown class and you're set, bro. +// TODO: abstract this so that the navbar fixed styles are not placed here? +.dropup, +.navbar-fixed-bottom .dropdown { + // Reverse the caret + .caret { + border-top: 0; + border-bottom: 4px solid @black; + content: ""; + } + // Different positioning for bottom up menu + .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; + } +} + +// Sub menus +// --------------------------- +.dropdown-submenu { + position: relative; +} +// Default dropdowns +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + .border-radius(0 6px 6px 6px); +} +.dropdown-submenu:hover > .dropdown-menu { + display: block; +} + +// Dropups +.dropup .dropdown-submenu > .dropdown-menu { + top: auto; + bottom: 0; + margin-top: 0; + margin-bottom: -2px; + .border-radius(5px 5px 5px 0); +} + +// Caret to indicate there is a submenu +.dropdown-submenu > a:after { + display: block; + content: " "; + float: right; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + border-width: 5px 0 5px 5px; + border-left-color: darken(@dropdownBackground, 20%); + margin-top: 5px; + margin-right: -10px; +} +.dropdown-submenu:hover > a:after { + border-left-color: @dropdownLinkColorHover; +} + +// Left aligned submenus +.dropdown-submenu.pull-left { + // Undo the float + // Yes, this is awkward since .pull-left adds a float, but it sticks to our conventions elsewhere. + float: none; + + // Positioning the submenu + > .dropdown-menu { + left: -100%; + margin-left: 10px; + .border-radius(6px 0 6px 6px); + } +} + +// Tweak nav headers +// ----------------- +// Increase padding from 15px to 20px on sides +.dropdown .dropdown-menu .nav-header { + padding-left: 20px; + padding-right: 20px; +} + +// Typeahead +// --------- +.typeahead { + z-index: 1051; + margin-top: 2px; // give it some space to breathe + .border-radius(@baseBorderRadius); +} diff --git a/theme/static/bootstrap/forms.less b/theme/static/bootstrap/forms.less new file mode 100644 index 0000000..06767bd --- /dev/null +++ b/theme/static/bootstrap/forms.less @@ -0,0 +1,690 @@ +// +// Forms +// -------------------------------------------------- + + +// GENERAL STYLES +// -------------- + +// Make all forms have space below them +form { + margin: 0 0 @baseLineHeight; +} + +fieldset { + padding: 0; + margin: 0; + border: 0; +} + +// Groups of fields with labels on top (legends) +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: @baseLineHeight; + font-size: @baseFontSize * 1.5; + line-height: @baseLineHeight * 2; + color: @grayDark; + border: 0; + border-bottom: 1px solid #e5e5e5; + + // Small + small { + font-size: @baseLineHeight * .75; + color: @grayLight; + } +} + +// Set font for forms +label, +input, +button, +select, +textarea { + #font > .shorthand(@baseFontSize,normal,@baseLineHeight); // Set size, weight, line-height here +} +input, +button, +select, +textarea { + font-family: @baseFontFamily; // And only set font-family here for those that need it (note the missing label element) +} + +// Identify controls by their labels +label { + display: block; + margin-bottom: 5px; +} + +// Form controls +// ------------------------- + +// Shared size and type resets +select, +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + display: inline-block; + height: @baseLineHeight; + padding: 4px 6px; + margin-bottom: @baseLineHeight / 2; + font-size: @baseFontSize; + line-height: @baseLineHeight; + color: @gray; + .border-radius(@inputBorderRadius); + vertical-align: middle; +} + +// Reset appearance properties for textual inputs and textarea +// Declare width for legacy (can't be on input[type=*] selectors or it's too specific) +input, +textarea, +.uneditable-input { + width: 206px; // plus 12px padding and 2px border +} +// Reset height since textareas have rows +textarea { + height: auto; +} +// Everything else +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + background-color: @inputBackground; + border: 1px solid @inputBorder; + .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); + .transition(~"border linear .2s, box-shadow linear .2s"); + + // Focus state + &:focus { + border-color: rgba(82,168,236,.8); + outline: 0; + outline: thin dotted \9; /* IE6-9 */ + .box-shadow(~"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6)"); + } +} + +// Position radios and checkboxes better +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + *margin-top: 0; /* IE7 */ + margin-top: 1px \9; /* IE8-9 */ + line-height: normal; +} + +// Reset width of input images, buttons, radios, checkboxes +input[type="file"], +input[type="image"], +input[type="submit"], +input[type="reset"], +input[type="button"], +input[type="radio"], +input[type="checkbox"] { + width: auto; // Override of generic input selector +} + +// Set the height of select and file controls to match text inputs +select, +input[type="file"] { + height: @inputHeight; /* In IE7, the height of the select element cannot be changed by height, only font-size */ + *margin-top: 4px; /* For IE7, add top margin to align select with labels */ + line-height: @inputHeight; +} + +// Make select elements obey height by applying a border +select { + width: 220px; // default input width + 10px of padding that doesn't get applied + border: 1px solid @inputBorder; + background-color: @inputBackground; // Chrome on Linux and Mobile Safari need background-color +} + +// Make multiple select elements height not fixed +select[multiple], +select[size] { + height: auto; +} + +// Focus for select, file, radio, and checkbox +select:focus, +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + .tab-focus(); +} + + +// Uneditable inputs +// ------------------------- + +// Make uneditable inputs look inactive +.uneditable-input, +.uneditable-textarea { + color: @grayLight; + background-color: darken(@inputBackground, 1%); + border-color: @inputBorder; + .box-shadow(inset 0 1px 2px rgba(0,0,0,.025)); + cursor: not-allowed; +} + +// For text that needs to appear as an input but should not be an input +.uneditable-input { + overflow: hidden; // prevent text from wrapping, but still cut it off like an input does + white-space: nowrap; +} + +// Make uneditable textareas behave like a textarea +.uneditable-textarea { + width: auto; + height: auto; +} + + +// Placeholder +// ------------------------- + +// Placeholder text gets special styles because when browsers invalidate entire lines if it doesn't understand a selector +input, +textarea { + .placeholder(); +} + + +// CHECKBOXES & RADIOS +// ------------------- + +// Indent the labels to position radios/checkboxes as hanging +.radio, +.checkbox { + min-height: @baseLineHeight; // clear the floating input if there is no label text + padding-left: 20px; +} +.radio input[type="radio"], +.checkbox input[type="checkbox"] { + float: left; + margin-left: -20px; +} + +// Move the options list down to align with labels +.controls > .radio:first-child, +.controls > .checkbox:first-child { + padding-top: 5px; // has to be padding because margin collaspes +} + +// Radios and checkboxes on same line +// TODO v3: Convert .inline to .control-inline +.radio.inline, +.checkbox.inline { + display: inline-block; + padding-top: 5px; + margin-bottom: 0; + vertical-align: middle; +} +.radio.inline + .radio.inline, +.checkbox.inline + .checkbox.inline { + margin-left: 10px; // space out consecutive inline controls +} + + + +// INPUT SIZES +// ----------- + +// General classes for quick sizes +.input-mini { width: 60px; } +.input-small { width: 90px; } +.input-medium { width: 150px; } +.input-large { width: 210px; } +.input-xlarge { width: 270px; } +.input-xxlarge { width: 530px; } + +// Grid style input sizes +input[class*="span"], +select[class*="span"], +textarea[class*="span"], +.uneditable-input[class*="span"], +// Redeclare since the fluid row class is more specific +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"] { + float: none; + margin-left: 0; +} +// Ensure input-prepend/append never wraps +.input-append input[class*="span"], +.input-append .uneditable-input[class*="span"], +.input-prepend input[class*="span"], +.input-prepend .uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"], +.row-fluid .input-prepend [class*="span"], +.row-fluid .input-append [class*="span"] { + display: inline-block; +} + + + +// GRID SIZING FOR INPUTS +// ---------------------- + +// Grid sizes +#grid > .input(@gridColumnWidth, @gridGutterWidth); + +// Control row for multiple inputs per line +.controls-row { + .clearfix(); // Clear the float from controls +} + +// Float to collapse white-space for proper grid alignment +.controls-row [class*="span"], +// Redeclare the fluid grid collapse since we undo the float for inputs +.row-fluid .controls-row [class*="span"] { + float: left; +} +// Explicity set top padding on all checkboxes/radios, not just first-child +.controls-row .checkbox[class*="span"], +.controls-row .radio[class*="span"] { + padding-top: 5px; +} + + + + +// DISABLED STATE +// -------------- + +// Disabled and read-only inputs +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { + cursor: not-allowed; + background-color: @inputDisabledBackground; +} +// Explicitly reset the colors here +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"][readonly], +input[type="checkbox"][readonly] { + background-color: transparent; +} + + + + +// FORM FIELD FEEDBACK STATES +// -------------------------- + +// Warning +.control-group.warning { + .formFieldState(@warningText, @warningText, @warningBackground); +} +// Error +.control-group.error { + .formFieldState(@errorText, @errorText, @errorBackground); +} +// Success +.control-group.success { + .formFieldState(@successText, @successText, @successBackground); +} +// Success +.control-group.info { + .formFieldState(@infoText, @infoText, @infoBackground); +} + +// HTML5 invalid states +// Shares styles with the .control-group.error above +input:focus:invalid, +textarea:focus:invalid, +select:focus:invalid { + color: #b94a48; + border-color: #ee5f5b; + &:focus { + border-color: darken(#ee5f5b, 10%); + @shadow: 0 0 6px lighten(#ee5f5b, 20%); + .box-shadow(@shadow); + } +} + + + +// FORM ACTIONS +// ------------ + +.form-actions { + padding: (@baseLineHeight - 1) 20px @baseLineHeight; + margin-top: @baseLineHeight; + margin-bottom: @baseLineHeight; + background-color: @formActionsBackground; + border-top: 1px solid #e5e5e5; + .clearfix(); // Adding clearfix to allow for .pull-right button containers +} + + + +// HELP TEXT +// --------- + +.help-block, +.help-inline { + color: lighten(@textColor, 15%); // lighten the text some for contrast +} + +.help-block { + display: block; // account for any element using help-block + margin-bottom: @baseLineHeight / 2; +} + +.help-inline { + display: inline-block; + .ie7-inline-block(); + vertical-align: middle; + padding-left: 5px; +} + + + +// INPUT GROUPS +// ------------ + +// Allow us to put symbols and text within the input field for a cleaner look +.input-append, +.input-prepend { + display: inline-block; + margin-bottom: @baseLineHeight / 2; + vertical-align: middle; + font-size: 0; // white space collapse hack + white-space: nowrap; // Prevent span and input from separating + + // Reset the white space collapse hack + input, + select, + .uneditable-input, + .dropdown-menu, + .popover { + font-size: @baseFontSize; + } + + input, + select, + .uneditable-input { + position: relative; // placed here by default so that on :focus we can place the input above the .add-on for full border and box-shadow goodness + margin-bottom: 0; // prevent bottom margin from screwing up alignment in stacked forms + *margin-left: 0; + vertical-align: top; + .border-radius(0 @inputBorderRadius @inputBorderRadius 0); + // Make input on top when focused so blue border and shadow always show + &:focus { + z-index: 2; + } + } + .add-on { + display: inline-block; + width: auto; + height: @baseLineHeight; + min-width: 16px; + padding: 4px 5px; + font-size: @baseFontSize; + font-weight: normal; + line-height: @baseLineHeight; + text-align: center; + text-shadow: 0 1px 0 @white; + background-color: @grayLighter; + border: 1px solid #ccc; + } + .add-on, + .btn, + .btn-group > .dropdown-toggle { + vertical-align: top; + .border-radius(0); + } + .active { + background-color: lighten(@green, 30); + border-color: @green; + } +} + +.input-prepend { + .add-on, + .btn { + margin-right: -1px; + } + .add-on:first-child, + .btn:first-child { + // FYI, `.btn:first-child` accounts for a button group that's prepended + .border-radius(@inputBorderRadius 0 0 @inputBorderRadius); + } +} + +.input-append { + input, + select, + .uneditable-input { + .border-radius(@inputBorderRadius 0 0 @inputBorderRadius); + + .btn-group .btn:last-child { + .border-radius(0 @inputBorderRadius @inputBorderRadius 0); + } + } + .add-on, + .btn, + .btn-group { + margin-left: -1px; + } + .add-on:last-child, + .btn:last-child, + .btn-group:last-child > .dropdown-toggle { + .border-radius(0 @inputBorderRadius @inputBorderRadius 0); + } +} + +// Remove all border-radius for inputs with both prepend and append +.input-prepend.input-append { + input, + select, + .uneditable-input { + .border-radius(0); + + .btn-group .btn { + .border-radius(0 @inputBorderRadius @inputBorderRadius 0); + } + } + .add-on:first-child, + .btn:first-child { + margin-right: -1px; + .border-radius(@inputBorderRadius 0 0 @inputBorderRadius); + } + .add-on:last-child, + .btn:last-child { + margin-left: -1px; + .border-radius(0 @inputBorderRadius @inputBorderRadius 0); + } + .btn-group:first-child { + margin-left: 0; + } +} + + + + +// SEARCH FORM +// ----------- + +input.search-query { + padding-right: 14px; + padding-right: 4px \9; + padding-left: 14px; + padding-left: 4px \9; /* IE7-8 doesn't have border-radius, so don't indent the padding */ + margin-bottom: 0; // Remove the default margin on all inputs + .border-radius(15px); +} + +/* Allow for input prepend/append in search forms */ +.form-search .input-append .search-query, +.form-search .input-prepend .search-query { + .border-radius(0); // Override due to specificity +} +.form-search .input-append .search-query { + .border-radius(14px 0 0 14px); +} +.form-search .input-append .btn { + .border-radius(0 14px 14px 0); +} +.form-search .input-prepend .search-query { + .border-radius(0 14px 14px 0); +} +.form-search .input-prepend .btn { + .border-radius(14px 0 0 14px); +} + + + + +// HORIZONTAL & VERTICAL FORMS +// --------------------------- + +// Common properties +// ----------------- + +.form-search, +.form-inline, +.form-horizontal { + input, + textarea, + select, + .help-inline, + .uneditable-input, + .input-prepend, + .input-append { + display: inline-block; + .ie7-inline-block(); + margin-bottom: 0; + vertical-align: middle; + } + // Re-hide hidden elements due to specifity + .hide { + display: none; + } +} +.form-search label, +.form-inline label, +.form-search .btn-group, +.form-inline .btn-group { + display: inline-block; +} +// Remove margin for input-prepend/-append +.form-search .input-append, +.form-inline .input-append, +.form-search .input-prepend, +.form-inline .input-prepend { + margin-bottom: 0; +} +// Inline checkbox/radio labels (remove padding on left) +.form-search .radio, +.form-search .checkbox, +.form-inline .radio, +.form-inline .checkbox { + padding-left: 0; + margin-bottom: 0; + vertical-align: middle; +} +// Remove float and margin, set to inline-block +.form-search .radio input[type="radio"], +.form-search .checkbox input[type="checkbox"], +.form-inline .radio input[type="radio"], +.form-inline .checkbox input[type="checkbox"] { + float: left; + margin-right: 3px; + margin-left: 0; +} + + +// Margin to space out fieldsets +.control-group { + margin-bottom: @baseLineHeight / 2; +} + +// Legend collapses margin, so next element is responsible for spacing +legend + .control-group { + margin-top: @baseLineHeight; + -webkit-margin-top-collapse: separate; +} + +// Horizontal-specific styles +// -------------------------- + +.form-horizontal { + // Increase spacing between groups + .control-group { + margin-bottom: @baseLineHeight; + .clearfix(); + } + // Float the labels left + .control-label { + float: left; + width: @horizontalComponentOffset - 20; + padding-top: 5px; + text-align: right; + } + // Move over all input controls and content + .controls { + // Super jank IE7 fix to ensure the inputs in .input-append and input-prepend + // don't inherit the margin of the parent, in this case .controls + *display: inline-block; + *padding-left: 20px; + margin-left: @horizontalComponentOffset; + *margin-left: 0; + &:first-child { + *padding-left: @horizontalComponentOffset; + } + } + // Remove bottom margin on block level help text since that's accounted for on .control-group + .help-block { + margin-bottom: 0; + } + // And apply it only to .help-block instances that follow a form control + input, + select, + textarea, + .uneditable-input, + .input-prepend, + .input-append { + + .help-block { + margin-top: @baseLineHeight / 2; + } + } + // Move over buttons in .form-actions to align with .controls + .form-actions { + padding-left: @horizontalComponentOffset; + } +} diff --git a/theme/static/bootstrap/grid.less b/theme/static/bootstrap/grid.less new file mode 100644 index 0000000..750d203 --- /dev/null +++ b/theme/static/bootstrap/grid.less @@ -0,0 +1,21 @@ +// +// Grid system +// -------------------------------------------------- + + +// Fixed (940px) +#grid > .core(@gridColumnWidth, @gridGutterWidth); + +// Fluid (940px) +#grid > .fluid(@fluidGridColumnWidth, @fluidGridGutterWidth); + +// Reset utility classes due to specificity +[class*="span"].hide, +.row-fluid [class*="span"].hide { + display: none; +} + +[class*="span"].pull-right, +.row-fluid [class*="span"].pull-right { + float: right; +} diff --git a/theme/static/bootstrap/hero-unit.less b/theme/static/bootstrap/hero-unit.less new file mode 100644 index 0000000..763d86a --- /dev/null +++ b/theme/static/bootstrap/hero-unit.less @@ -0,0 +1,25 @@ +// +// Hero unit +// -------------------------------------------------- + + +.hero-unit { + padding: 60px; + margin-bottom: 30px; + font-size: 18px; + font-weight: 200; + line-height: @baseLineHeight * 1.5; + color: @heroUnitLeadColor; + background-color: @heroUnitBackground; + .border-radius(6px); + h1 { + margin-bottom: 0; + font-size: 60px; + line-height: 1; + color: @heroUnitHeadingColor; + letter-spacing: -1px; + } + li { + line-height: @baseLineHeight * 1.5; // Reset since we specify in type.less + } +} diff --git a/theme/static/bootstrap/labels-badges.less b/theme/static/bootstrap/labels-badges.less new file mode 100644 index 0000000..bc321fe --- /dev/null +++ b/theme/static/bootstrap/labels-badges.less @@ -0,0 +1,84 @@ +// +// Labels and badges +// -------------------------------------------------- + + +// Base classes +.label, +.badge { + display: inline-block; + padding: 2px 4px; + font-size: @baseFontSize * .846; + font-weight: bold; + line-height: 14px; // ensure proper line-height if floated + color: @white; + vertical-align: baseline; + white-space: nowrap; + text-shadow: 0 -1px 0 rgba(0,0,0,.25); + background-color: @grayLight; +} +// Set unique padding and border-radii +.label { + .border-radius(3px); +} +.badge { + padding-left: 9px; + padding-right: 9px; + .border-radius(9px); +} + +// Empty labels/badges collapse +.label, +.badge { + &:empty { + display: none; + } +} + +// Hover/focus state, but only for links +a { + &.label:hover, + &.label:focus, + &.badge:hover, + &.badge:focus { + color: @white; + text-decoration: none; + cursor: pointer; + } +} + +// Colors +// Only give background-color difference to links (and to simplify, we don't qualifty with `a` but [href] attribute) +.label, +.badge { + // Important (red) + &-important { background-color: @errorText; } + &-important[href] { background-color: darken(@errorText, 10%); } + // Warnings (orange) + &-warning { background-color: @orange; } + &-warning[href] { background-color: darken(@orange, 10%); } + // Success (green) + &-success { background-color: @successText; } + &-success[href] { background-color: darken(@successText, 10%); } + // Info (turquoise) + &-info { background-color: @infoText; } + &-info[href] { background-color: darken(@infoText, 10%); } + // Inverse (black) + &-inverse { background-color: @grayDark; } + &-inverse[href] { background-color: darken(@grayDark, 10%); } +} + +// Quick fix for labels/badges in buttons +.btn { + .label, + .badge { + position: relative; + top: -1px; + } +} +.btn-mini { + .label, + .badge { + top: 0; + } +} diff --git a/theme/static/bootstrap/layouts.less b/theme/static/bootstrap/layouts.less new file mode 100644 index 0000000..ade5c75 --- /dev/null +++ b/theme/static/bootstrap/layouts.less @@ -0,0 +1,16 @@ +// +// Layouts +// -------------------------------------------------- + + +// Container (centered, fixed-width layouts) +.container { + .container-fixed(); +} + +// Fluid layouts (left aligned, with sidebar, min- & max-width content) +.container-fluid { + padding-right: @gridGutterWidth; + padding-left: @gridGutterWidth; + .clearfix(); +} diff --git a/theme/static/bootstrap/media.less b/theme/static/bootstrap/media.less new file mode 100644 index 0000000..e461e44 --- /dev/null +++ b/theme/static/bootstrap/media.less @@ -0,0 +1,55 @@ +// Media objects +// Source: http://stubbornella.org/content/?p=497 +// -------------------------------------------------- + + +// Common styles +// ------------------------- + +// Clear the floats +.media, +.media-body { + overflow: hidden; + *overflow: visible; + zoom: 1; +} + +// Proper spacing between instances of .media +.media, +.media .media { + margin-top: 15px; +} +.media:first-child { + margin-top: 0; +} + +// For images and videos, set to block +.media-object { + display: block; +} + +// Reset margins on headings for tighter default spacing +.media-heading { + margin: 0 0 5px; +} + + +// Media image alignment +// ------------------------- + +.media > .pull-left { + margin-right: 10px; +} +.media > .pull-right { + margin-left: 10px; +} + + +// Media list variation +// ------------------------- + +// Undo default ul/ol styles +.media-list { + margin-left: 0; + list-style: none; +} diff --git a/theme/static/bootstrap/mixins.less b/theme/static/bootstrap/mixins.less new file mode 100644 index 0000000..857561e --- /dev/null +++ b/theme/static/bootstrap/mixins.less @@ -0,0 +1,702 @@ +// +// Mixins +// -------------------------------------------------- + + +// UTILITY MIXINS +// -------------------------------------------------- + +// Clearfix +// -------- +// For clearing floats like a boss h5bp.com/q +.clearfix { + *zoom: 1; + &:before, + &:after { + display: table; + content: ""; + // Fixes Opera/contenteditable bug: + // http://nicolasgallagher.com/micro-clearfix-hack/#comment-36952 + line-height: 0; + } + &:after { + clear: both; + } +} + +// Webkit-style focus +// ------------------ +.tab-focus() { + // Default + outline: thin dotted #333; + // Webkit + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +// Center-align a block level element +// ---------------------------------- +.center-block() { + display: block; + margin-left: auto; + margin-right: auto; +} + +// IE7 inline-block +// ---------------- +.ie7-inline-block() { + *display: inline; /* IE7 inline-block hack */ + *zoom: 1; +} + +// IE7 likes to collapse whitespace on either side of the inline-block elements. +// Ems because we're attempting to match the width of a space character. Left +// version is for form buttons, which typically come after other elements, and +// right version is for icons, which come before. Applying both is ok, but it will +// mean that space between those elements will be .6em (~2 space characters) in IE7, +// instead of the 1 space in other browsers. +.ie7-restore-left-whitespace() { + *margin-left: .3em; + + &:first-child { + *margin-left: 0; + } +} + +.ie7-restore-right-whitespace() { + *margin-right: .3em; +} + +// Sizing shortcuts +// ------------------------- +.size(@height, @width) { + width: @width; + height: @height; +} +.square(@size) { + .size(@size, @size); +} + +// Placeholder text +// ------------------------- +.placeholder(@color: @placeholderText) { + &:-moz-placeholder { + color: @color; + } + &:-ms-input-placeholder { + color: @color; + } + &::-webkit-input-placeholder { + color: @color; + } +} + +// Text overflow +// ------------------------- +// Requires inline-block or block for proper styling +.text-overflow() { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +// CSS image replacement +// ------------------------- +// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + + +// FONTS +// -------------------------------------------------- + +#font { + #family { + .serif() { + font-family: @serifFontFamily; + } + .sans-serif() { + font-family: @sansFontFamily; + } + .monospace() { + font-family: @monoFontFamily; + } + } + .shorthand(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) { + font-size: @size; + font-weight: @weight; + line-height: @lineHeight; + } + .serif(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) { + #font > #family > .serif; + #font > .shorthand(@size, @weight, @lineHeight); + } + .sans-serif(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) { + #font > #family > .sans-serif; + #font > .shorthand(@size, @weight, @lineHeight); + } + .monospace(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) { + #font > #family > .monospace; + #font > .shorthand(@size, @weight, @lineHeight); + } +} + + +// FORMS +// -------------------------------------------------- + +// Block level inputs +.input-block-level { + display: block; + width: 100%; + min-height: @inputHeight; // Make inputs at least the height of their button counterpart (base line-height + padding + border) + .box-sizing(border-box); // Makes inputs behave like true block-level elements +} + + + +// Mixin for form field states +.formFieldState(@textColor: #555, @borderColor: #ccc, @backgroundColor: #f5f5f5) { + // Set the text color + .control-label, + .help-block, + .help-inline { + color: @textColor; + } + // Style inputs accordingly + .checkbox, + .radio, + input, + select, + textarea { + color: @textColor; + } + input, + select, + textarea { + border-color: @borderColor; + .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work + &:focus { + border-color: darken(@borderColor, 10%); + @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@borderColor, 20%); + .box-shadow(@shadow); + } + } + // Give a small background color for input-prepend/-append + .input-prepend .add-on, + .input-append .add-on { + color: @textColor; + background-color: @backgroundColor; + border-color: @textColor; + } +} + + + +// CSS3 PROPERTIES +// -------------------------------------------------- + +// Border Radius +.border-radius(@radius) { + -webkit-border-radius: @radius; + -moz-border-radius: @radius; + border-radius: @radius; +} + +// Single Corner Border Radius +.border-top-left-radius(@radius) { + -webkit-border-top-left-radius: @radius; + -moz-border-radius-topleft: @radius; + border-top-left-radius: @radius; +} +.border-top-right-radius(@radius) { + -webkit-border-top-right-radius: @radius; + -moz-border-radius-topright: @radius; + border-top-right-radius: @radius; +} +.border-bottom-right-radius(@radius) { + -webkit-border-bottom-right-radius: @radius; + -moz-border-radius-bottomright: @radius; + border-bottom-right-radius: @radius; +} +.border-bottom-left-radius(@radius) { + -webkit-border-bottom-left-radius: @radius; + -moz-border-radius-bottomleft: @radius; + border-bottom-left-radius: @radius; +} + +// Single Side Border Radius +.border-top-radius(@radius) { + .border-top-right-radius(@radius); + .border-top-left-radius(@radius); +} +.border-right-radius(@radius) { + .border-top-right-radius(@radius); + .border-bottom-right-radius(@radius); +} +.border-bottom-radius(@radius) { + .border-bottom-right-radius(@radius); + .border-bottom-left-radius(@radius); +} +.border-left-radius(@radius) { + .border-top-left-radius(@radius); + .border-bottom-left-radius(@radius); +} + +// Drop shadows +.box-shadow(@shadow) { + -webkit-box-shadow: @shadow; + -moz-box-shadow: @shadow; + box-shadow: @shadow; +} + +// Transitions +.transition(@transition) { + -webkit-transition: @transition; + -moz-transition: @transition; + -o-transition: @transition; + transition: @transition; +} +.transition-delay(@transition-delay) { + -webkit-transition-delay: @transition-delay; + -moz-transition-delay: @transition-delay; + -o-transition-delay: @transition-delay; + transition-delay: @transition-delay; +} +.transition-duration(@transition-duration) { + -webkit-transition-duration: @transition-duration; + -moz-transition-duration: @transition-duration; + -o-transition-duration: @transition-duration; + transition-duration: @transition-duration; +} + +// Transformations +.rotate(@degrees) { + -webkit-transform: rotate(@degrees); + -moz-transform: rotate(@degrees); + -ms-transform: rotate(@degrees); + -o-transform: rotate(@degrees); + transform: rotate(@degrees); +} +.scale(@ratio) { + -webkit-transform: scale(@ratio); + -moz-transform: scale(@ratio); + -ms-transform: scale(@ratio); + -o-transform: scale(@ratio); + transform: scale(@ratio); +} +.translate(@x, @y) { + -webkit-transform: translate(@x, @y); + -moz-transform: translate(@x, @y); + -ms-transform: translate(@x, @y); + -o-transform: translate(@x, @y); + transform: translate(@x, @y); +} +.skew(@x, @y) { + -webkit-transform: skew(@x, @y); + -moz-transform: skew(@x, @y); + -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885 + -o-transform: skew(@x, @y); + transform: skew(@x, @y); + -webkit-backface-visibility: hidden; // See https://github.com/twbs/bootstrap/issues/5319 +} +.translate3d(@x, @y, @z) { + -webkit-transform: translate3d(@x, @y, @z); + -moz-transform: translate3d(@x, @y, @z); + -o-transform: translate3d(@x, @y, @z); + transform: translate3d(@x, @y, @z); +} + +// Backface visibility +// Prevent browsers from flickering when using CSS 3D transforms. +// Default value is `visible`, but can be changed to `hidden +// See git pull https://github.com/dannykeane/bootstrap.git backface-visibility for examples +.backface-visibility(@visibility){ + -webkit-backface-visibility: @visibility; + -moz-backface-visibility: @visibility; + backface-visibility: @visibility; +} + +// Background clipping +// Heads up: FF 3.6 and under need "padding" instead of "padding-box" +.background-clip(@clip) { + -webkit-background-clip: @clip; + -moz-background-clip: @clip; + background-clip: @clip; +} + +// Background sizing +.background-size(@size) { + -webkit-background-size: @size; + -moz-background-size: @size; + -o-background-size: @size; + background-size: @size; +} + + +// Box sizing +.box-sizing(@boxmodel) { + -webkit-box-sizing: @boxmodel; + -moz-box-sizing: @boxmodel; + box-sizing: @boxmodel; +} + +// User select +// For selecting text on the page +.user-select(@select) { + -webkit-user-select: @select; + -moz-user-select: @select; + -ms-user-select: @select; + -o-user-select: @select; + user-select: @select; +} + +// Resize anything +.resizable(@direction) { + resize: @direction; // Options: horizontal, vertical, both + overflow: auto; // Safari fix +} + +// CSS3 Content Columns +.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; +} + +// Optional hyphenation +.hyphens(@mode: auto) { + word-wrap: break-word; + -webkit-hyphens: @mode; + -moz-hyphens: @mode; + -ms-hyphens: @mode; + -o-hyphens: @mode; + hyphens: @mode; +} + +// Opacity +.opacity(@opacity) { + opacity: @opacity / 100; + filter: ~"alpha(opacity=@{opacity})"; +} + + + +// BACKGROUNDS +// -------------------------------------------------- + +// Add an alphatransparency value to any background or border color (via Elyse Holladay) +#translucent { + .background(@color: @white, @alpha: 1) { + background-color: hsla(hue(@color), saturation(@color), lightness(@color), @alpha); + } + .border(@color: @white, @alpha: 1) { + border-color: hsla(hue(@color), saturation(@color), lightness(@color), @alpha); + .background-clip(padding-box); + } +} + +// Gradient Bar Colors for buttons and alerts +.gradientBar(@primaryColor, @secondaryColor, @textColor: #fff, @textShadow: 0 -1px 0 rgba(0,0,0,.25)) { + color: @textColor; + text-shadow: @textShadow; + #gradient > .vertical(@primaryColor, @secondaryColor); + border-color: @secondaryColor @secondaryColor darken(@secondaryColor, 15%); + border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) fadein(rgba(0,0,0,.1), 15%); +} + +// Gradients +#gradient { + .horizontal(@startColor: #555, @endColor: #333) { + 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: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@startColor),argb(@endColor))); // IE9 and down + } + .vertical(@startColor: #555, @endColor: #333) { + 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: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down + } + .directional(@startColor: #555, @endColor: #333, @deg: 45deg) { + background-color: @endColor; + background-repeat: repeat-x; + background-image: -moz-linear-gradient(@deg, @startColor, @endColor); // FF 3.6+ + background-image: -webkit-linear-gradient(@deg, @startColor, @endColor); // Safari 5.1+, Chrome 10+ + background-image: -o-linear-gradient(@deg, @startColor, @endColor); // Opera 11.10 + background-image: linear-gradient(@deg, @startColor, @endColor); // Standard, IE10 + } + .horizontal-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) { + background-color: mix(@midColor, @endColor, 80%); + background-image: -webkit-gradient(left, linear, 0 0, 0 100%, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor)); + background-image: -webkit-linear-gradient(left, @startColor, @midColor @colorStop, @endColor); + background-image: -moz-linear-gradient(left, @startColor, @midColor @colorStop, @endColor); + background-image: -o-linear-gradient(left, @startColor, @midColor @colorStop, @endColor); + background-image: linear-gradient(to right, @startColor, @midColor @colorStop, @endColor); + background-repeat: no-repeat; + filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down, gets no color-stop at all for proper fallback + } + + .vertical-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) { + background-color: mix(@midColor, @endColor, 80%); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor)); + background-image: -webkit-linear-gradient(@startColor, @midColor @colorStop, @endColor); + background-image: -moz-linear-gradient(top, @startColor, @midColor @colorStop, @endColor); + background-image: -o-linear-gradient(@startColor, @midColor @colorStop, @endColor); + background-image: linear-gradient(@startColor, @midColor @colorStop, @endColor); + background-repeat: no-repeat; + filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down, gets no color-stop at all for proper fallback + } + .radial(@innerColor: #555, @outerColor: #333) { + background-color: @outerColor; + background-image: -webkit-gradient(radial, center center, 0, center center, 460, from(@innerColor), to(@outerColor)); + background-image: -webkit-radial-gradient(circle, @innerColor, @outerColor); + background-image: -moz-radial-gradient(circle, @innerColor, @outerColor); + background-image: -o-radial-gradient(circle, @innerColor, @outerColor); + background-repeat: no-repeat; + } + .striped(@color: #555, @angle: 45deg) { + background-color: @color; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,.15)), color-stop(.75, rgba(255,255,255,.15)), color-stop(.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent); + } +} +// Reset filters for IE +.reset-filter() { + filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)")); +} + + + +// COMPONENT MIXINS +// -------------------------------------------------- + +// Horizontal dividers +// ------------------------- +// Dividers (basically an hr) within dropdowns and nav lists +.nav-divider(@top: #e5e5e5, @bottom: @white) { + // IE7 needs a set width since we gave a height. Restricting just + // to IE7 to keep the 1px left/right space in other browsers. + // It is unclear where IE is getting the extra space that we need + // to negative-margin away, but so it goes. + *width: 100%; + height: 1px; + margin: ((@baseLineHeight / 2) - 1) 1px; // 8px 1px + *margin: -5px 0 5px; + overflow: hidden; + background-color: @top; + border-bottom: 1px solid @bottom; +} + +// Button backgrounds +// ------------------ +.buttonBackground(@startColor, @endColor, @textColor: #fff, @textShadow: 0 -1px 0 rgba(0,0,0,.25)) { + // gradientBar will set the background to a pleasing blend of these, to support IE<=9 + .gradientBar(@startColor, @endColor, @textColor, @textShadow); + *background-color: @endColor; /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + .reset-filter(); + + // in these cases the gradient won't cover the background, so we override + &:hover, &:focus, &:active, &.active, &.disabled, &[disabled] { + color: @textColor; + background-color: @endColor; + *background-color: darken(@endColor, 5%); + } + + // IE 7 + 8 can't handle box-shadow to show active, so we darken a bit ourselves + &:active, + &.active { + background-color: darken(@endColor, 10%) e("\9"); + } +} + +// Navbar vertical align +// ------------------------- +// Vertically center elements in the navbar. +// Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. +.navbarVerticalAlign(@elementHeight) { + margin-top: (@navbarHeight - @elementHeight) / 2; +} + + + +// Grid System +// ----------- + +// Centered container element +.container-fixed() { + margin-right: auto; + margin-left: auto; + .clearfix(); +} + +// Table columns +.tableColumns(@columnSpan: 1) { + float: none; // undo default grid column styles + width: ((@gridColumnWidth) * @columnSpan) + (@gridGutterWidth * (@columnSpan - 1)) - 16; // 16 is total padding on left and right of table cells + margin-left: 0; // undo default grid column styles +} + +// Make a Grid +// Use .makeRow and .makeColumn to assign semantic layouts grid system behavior +.makeRow() { + margin-left: @gridGutterWidth * -1; + .clearfix(); +} +.makeColumn(@columns: 1, @offset: 0) { + float: left; + margin-left: (@gridColumnWidth * @offset) + (@gridGutterWidth * (@offset - 1)) + (@gridGutterWidth * 2); + width: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns - 1)); +} + +// The Grid +#grid { + + .core (@gridColumnWidth, @gridGutterWidth) { + + .spanX (@index) when (@index > 0) { + .span@{index} { .span(@index); } + .spanX(@index - 1); + } + .spanX (0) {} + + .offsetX (@index) when (@index > 0) { + .offset@{index} { .offset(@index); } + .offsetX(@index - 1); + } + .offsetX (0) {} + + .offset (@columns) { + margin-left: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns + 1)); + } + + .span (@columns) { + width: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns - 1)); + } + + .row { + margin-left: @gridGutterWidth * -1; + .clearfix(); + } + + [class*="span"] { + float: left; + min-height: 1px; // prevent collapsing columns + margin-left: @gridGutterWidth; + } + + // Set the container width, and override it for fixed navbars in media queries + .container, + .navbar-static-top .container, + .navbar-fixed-top .container, + .navbar-fixed-bottom .container { .span(@gridColumns); } + + // generate .spanX and .offsetX + .spanX (@gridColumns); + .offsetX (@gridColumns); + + } + + .fluid (@fluidGridColumnWidth, @fluidGridGutterWidth) { + + .spanX (@index) when (@index > 0) { + .span@{index} { .span(@index); } + .spanX(@index - 1); + } + .spanX (0) {} + + .offsetX (@index) when (@index > 0) { + .offset@{index} { .offset(@index); } + .offset@{index}:first-child { .offsetFirstChild(@index); } + .offsetX(@index - 1); + } + .offsetX (0) {} + + .offset (@columns) { + margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) + (@fluidGridGutterWidth*2); + *margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%) + (@fluidGridGutterWidth*2) - (.5 / @gridRowWidth * 100 * 1%); + } + + .offsetFirstChild (@columns) { + margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) + (@fluidGridGutterWidth); + *margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%) + @fluidGridGutterWidth - (.5 / @gridRowWidth * 100 * 1%); + } + + .span (@columns) { + width: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)); + *width: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%); + } + + .row-fluid { + width: 100%; + .clearfix(); + [class*="span"] { + .input-block-level(); + float: left; + margin-left: @fluidGridGutterWidth; + *margin-left: @fluidGridGutterWidth - (.5 / @gridRowWidth * 100 * 1%); + } + [class*="span"]:first-child { + margin-left: 0; + } + + // Space grid-sized controls properly if multiple per line + .controls-row [class*="span"] + [class*="span"] { + margin-left: @fluidGridGutterWidth; + } + + // generate .spanX and .offsetX + .spanX (@gridColumns); + .offsetX (@gridColumns); + } + + } + + .input(@gridColumnWidth, @gridGutterWidth) { + + .spanX (@index) when (@index > 0) { + input.span@{index}, textarea.span@{index}, .uneditable-input.span@{index} { .span(@index); } + .spanX(@index - 1); + } + .spanX (0) {} + + .span(@columns) { + width: ((@gridColumnWidth) * @columns) + (@gridGutterWidth * (@columns - 1)) - 14; + } + + input, + textarea, + .uneditable-input { + margin-left: 0; // override margin-left from core grid system + } + + // Space grid-sized controls properly if multiple per line + .controls-row [class*="span"] + [class*="span"] { + margin-left: @gridGutterWidth; + } + + // generate .spanX + .spanX (@gridColumns); + + } +} diff --git a/theme/static/bootstrap/modals.less b/theme/static/bootstrap/modals.less new file mode 100644 index 0000000..8e272d4 --- /dev/null +++ b/theme/static/bootstrap/modals.less @@ -0,0 +1,95 @@ +// +// Modals +// -------------------------------------------------- + +// Background +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: @zindexModalBackdrop; + background-color: @black; + // Fade for backdrop + &.fade { opacity: 0; } +} + +.modal-backdrop, +.modal-backdrop.fade.in { + .opacity(80); +} + +// Base modal +.modal { + position: fixed; + top: 10%; + left: 50%; + z-index: @zindexModal; + width: 560px; + margin-left: -280px; + background-color: @white; + border: 1px solid #999; + border: 1px solid rgba(0,0,0,.3); + *border: 1px solid #999; /* IE6-7 */ + .border-radius(6px); + .box-shadow(0 3px 7px rgba(0,0,0,0.3)); + .background-clip(padding-box); + // Remove focus outline from opened modal + outline: none; + + &.fade { + .transition(e('opacity .3s linear, top .3s ease-out')); + top: -25%; + } + &.fade.in { top: 10%; } +} +.modal-header { + padding: 9px 15px; + border-bottom: 1px solid #eee; + // Close icon + .close { margin-top: 2px; } + // Heading + h3 { + margin: 0; + line-height: 30px; + } +} + +// Body (where all modal content resides) +.modal-body { + position: relative; + overflow-y: auto; + max-height: 400px; + padding: 15px; +} +// Remove bottom margin if need be +.modal-form { + margin-bottom: 0; +} + +// Footer (for actions) +.modal-footer { + padding: 14px 15px 15px; + margin-bottom: 0; + text-align: right; // right align buttons + background-color: #f5f5f5; + border-top: 1px solid #ddd; + .border-radius(0 0 6px 6px); + .box-shadow(inset 0 1px 0 @white); + .clearfix(); // clear it in case folks use .pull-* classes on buttons + + // Properly space out buttons + .btn + .btn { + margin-left: 5px; + margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs + } + // but override that for button groups + .btn-group .btn + .btn { + margin-left: -1px; + } + // and override it for block buttons as well + .btn-block + .btn-block { + margin-left: 0; + } +} diff --git a/theme/static/bootstrap/navbar.less b/theme/static/bootstrap/navbar.less new file mode 100644 index 0000000..88d4a87 --- /dev/null +++ b/theme/static/bootstrap/navbar.less @@ -0,0 +1,494 @@ +// +// Navbars (Redux) +// -------------------------------------------------- + + +// COMMON STYLES +// ------------- + +// Base class and wrapper +.navbar { + overflow: visible; + margin-bottom: @baseLineHeight; + + // Fix for IE7's bad z-indexing so dropdowns don't appear below content that follows the navbar + *position: relative; + *z-index: 2; +} + +// Inner for background effects +// Gradient is applied to its own element because overflow visible is not honored by IE when filter is present +.navbar-inner { + min-height: @navbarHeight; + padding-left: 20px; + padding-right: 20px; + #gradient > .vertical(@navbarBackgroundHighlight, @navbarBackground); + border: 1px solid @navbarBorder; + .border-radius(@baseBorderRadius); + .box-shadow(0 1px 4px rgba(0,0,0,.065)); + + // Prevent floats from breaking the navbar + .clearfix(); +} + +// Set width to auto for default container +// We then reset it for fixed navbars in the #gridSystem mixin +.navbar .container { + width: auto; +} + +// Override the default collapsed state +.nav-collapse.collapse { + height: auto; + overflow: visible; +} + + +// Brand: website or project name +// ------------------------- +.navbar .brand { + float: left; + display: block; + // Vertically center the text given @navbarHeight + padding: ((@navbarHeight - @baseLineHeight) / 2) 20px ((@navbarHeight - @baseLineHeight) / 2); + margin-left: -20px; // negative indent to left-align the text down the page + font-size: 20px; + font-weight: 200; + color: @navbarBrandColor; + text-shadow: 0 1px 0 @navbarBackgroundHighlight; + &:hover, + &:focus { + text-decoration: none; + } +} + +// Plain text in topbar +// ------------------------- +.navbar-text { + margin-bottom: 0; + line-height: @navbarHeight; + color: @navbarText; +} + +// Janky solution for now to account for links outside the .nav +// ------------------------- +.navbar-link { + color: @navbarLinkColor; + &:hover, + &:focus { + color: @navbarLinkColorHover; + } +} + +// Dividers in navbar +// ------------------------- +.navbar .divider-vertical { + height: @navbarHeight; + margin: 0 9px; + border-left: 1px solid @navbarBackground; + border-right: 1px solid @navbarBackgroundHighlight; +} + +// Buttons in navbar +// ------------------------- +.navbar .btn, +.navbar .btn-group { + .navbarVerticalAlign(30px); // Vertically center in navbar +} +.navbar .btn-group .btn, +.navbar .input-prepend .btn, +.navbar .input-append .btn, +.navbar .input-prepend .btn-group, +.navbar .input-append .btn-group { + margin-top: 0; // then undo the margin here so we don't accidentally double it +} + +// Navbar forms +// ------------------------- +.navbar-form { + margin-bottom: 0; // remove default bottom margin + .clearfix(); + input, + select, + .radio, + .checkbox { + .navbarVerticalAlign(30px); // Vertically center in navbar + } + input, + select, + .btn { + display: inline-block; + margin-bottom: 0; + } + input[type="image"], + input[type="checkbox"], + input[type="radio"] { + margin-top: 3px; + } + .input-append, + .input-prepend { + margin-top: 5px; + white-space: nowrap; // preven two items from separating within a .navbar-form that has .pull-left + input { + margin-top: 0; // remove the margin on top since it's on the parent + } + } +} + +// Navbar search +// ------------------------- +.navbar-search { + position: relative; + float: left; + .navbarVerticalAlign(30px); // Vertically center in navbar + margin-bottom: 0; + .search-query { + margin-bottom: 0; + padding: 4px 14px; + #font > .sans-serif(13px, normal, 1); + .border-radius(15px); // redeclare because of specificity of the type attribute + } +} + + + +// Static navbar +// ------------------------- + +.navbar-static-top { + position: static; + margin-bottom: 0; // remove 18px margin for default navbar + .navbar-inner { + .border-radius(0); + } +} + + + +// Fixed navbar +// ------------------------- + +// Shared (top/bottom) styles +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: @zindexFixedNavbar; + margin-bottom: 0; // remove 18px margin for default navbar +} +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + border-width: 0 0 1px; +} +.navbar-fixed-bottom .navbar-inner { + border-width: 1px 0 0; +} +.navbar-fixed-top .navbar-inner, +.navbar-fixed-bottom .navbar-inner { + padding-left: 0; + padding-right: 0; + .border-radius(0); +} + +// Reset container width +// Required here as we reset the width earlier on and the grid mixins don't override early enough +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + #grid > .core > .span(@gridColumns); +} + +// Fixed to top +.navbar-fixed-top { + top: 0; +} +.navbar-fixed-top, +.navbar-static-top { + .navbar-inner { + .box-shadow(~"0 1px 10px rgba(0,0,0,.1)"); + } +} + +// Fixed to bottom +.navbar-fixed-bottom { + bottom: 0; + .navbar-inner { + .box-shadow(~"0 -1px 10px rgba(0,0,0,.1)"); + } +} + + + +// NAVIGATION +// ---------- + +.navbar .nav { + position: relative; + left: 0; + display: block; + float: left; + margin: 0 10px 0 0; +} +.navbar .nav.pull-right { + float: right; // redeclare due to specificity + margin-right: 0; // remove margin on float right nav +} +.navbar .nav > li { + float: left; +} + +// Links +.navbar .nav > li > a { + color: @navbarLinkColor; + text-decoration: none; + text-shadow: 0 1px 0 @navbarBackgroundHighlight; +} +.navbar .nav .dropdown-toggle .caret { + margin-top: 8px; +} + +// Hover/focus +.navbar .nav > li > a:focus, +.navbar .nav > li > a:hover { + background-color: @navbarLinkBackgroundHover; // "transparent" is default to differentiate :hover/:focus from .active + color: @navbarLinkColorHover; + text-decoration: none; +} + +// Active nav items +.navbar .nav > .active > a, +.navbar .nav > .active > a:hover, +.navbar .nav > .active > a:focus { + color: @navbarLinkColorActive; + text-decoration: none; + background-color: @navbarLinkBackgroundActive; + .box-shadow(inset 0 3px 8px rgba(0,0,0,.125)); +} + +// Navbar button for toggling navbar items in responsive layouts +// These definitions need to come after '.navbar .btn' +.navbar .btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-left: 5px; + margin-right: 5px; + .buttonBackground(darken(@navbarBackgroundHighlight, 5%), darken(@navbarBackground, 5%)); + .box-shadow(~"inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075)"); +} +.navbar .btn-navbar .icon-bar { + display: block; + width: 18px; + height: 2px; + background-color: #f5f5f5; + .border-radius(1px); + .box-shadow(0 1px 0 rgba(0,0,0,.25)); +} +.btn-navbar .icon-bar + .icon-bar { + margin-top: 3px; +} + + + +// Dropdown menus +// -------------- + +// Menu position and menu carets +.navbar .nav > li > .dropdown-menu { + &:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-bottom-color: @dropdownBorder; + position: absolute; + top: -7px; + left: 9px; + } + &:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid @dropdownBackground; + position: absolute; + top: -6px; + left: 10px; + } +} +// Menu position and menu caret support for dropups via extra dropup class +.navbar-fixed-bottom .nav > li > .dropdown-menu { + &:before { + border-top: 7px solid #ccc; + border-top-color: @dropdownBorder; + border-bottom: 0; + bottom: -7px; + top: auto; + } + &:after { + border-top: 6px solid @dropdownBackground; + border-bottom: 0; + bottom: -6px; + top: auto; + } +} + +// Caret should match text color on hover/focus +.navbar .nav li.dropdown > a:hover .caret, +.navbar .nav li.dropdown > a:focus .caret { + border-top-color: @navbarLinkColorHover; + border-bottom-color: @navbarLinkColorHover; +} + +// Remove background color from open dropdown +.navbar .nav li.dropdown.open > .dropdown-toggle, +.navbar .nav li.dropdown.active > .dropdown-toggle, +.navbar .nav li.dropdown.open.active > .dropdown-toggle { + background-color: @navbarLinkBackgroundActive; + color: @navbarLinkColorActive; +} +.navbar .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: @navbarLinkColor; + border-bottom-color: @navbarLinkColor; +} +.navbar .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: @navbarLinkColorActive; + border-bottom-color: @navbarLinkColorActive; +} + +// Right aligned menus need alt position +.navbar .pull-right > li > .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right { + left: auto; + right: 0; + &:before { + left: auto; + right: 12px; + } + &:after { + left: auto; + right: 13px; + } + .dropdown-menu { + left: auto; + right: 100%; + margin-left: 0; + margin-right: -1px; + .border-radius(6px 0 6px 6px); + } +} + + +// Inverted navbar +// ------------------------- + +.navbar-inverse { + + .navbar-inner { + #gradient > .vertical(@navbarInverseBackgroundHighlight, @navbarInverseBackground); + border-color: @navbarInverseBorder; + } + + .brand, + .nav > li > a { + color: @navbarInverseLinkColor; + text-shadow: 0 -1px 0 rgba(0,0,0,.25); + &:hover, + &:focus { + color: @navbarInverseLinkColorHover; + } + } + + .brand { + color: @navbarInverseBrandColor; + } + + .navbar-text { + color: @navbarInverseText; + } + + .nav > li > a:focus, + .nav > li > a:hover { + background-color: @navbarInverseLinkBackgroundHover; + color: @navbarInverseLinkColorHover; + } + + .nav .active > a, + .nav .active > a:hover, + .nav .active > a:focus { + color: @navbarInverseLinkColorActive; + background-color: @navbarInverseLinkBackgroundActive; + } + + // Inline text links + .navbar-link { + color: @navbarInverseLinkColor; + &:hover, + &:focus { + color: @navbarInverseLinkColorHover; + } + } + + // Dividers in navbar + .divider-vertical { + border-left-color: @navbarInverseBackground; + border-right-color: @navbarInverseBackgroundHighlight; + } + + // Dropdowns + .nav li.dropdown.open > .dropdown-toggle, + .nav li.dropdown.active > .dropdown-toggle, + .nav li.dropdown.open.active > .dropdown-toggle { + background-color: @navbarInverseLinkBackgroundActive; + color: @navbarInverseLinkColorActive; + } + .nav li.dropdown > a:hover .caret, + .nav li.dropdown > a:focus .caret { + border-top-color: @navbarInverseLinkColorActive; + border-bottom-color: @navbarInverseLinkColorActive; + } + .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: @navbarInverseLinkColor; + border-bottom-color: @navbarInverseLinkColor; + } + .nav li.dropdown.open > .dropdown-toggle .caret, + .nav li.dropdown.active > .dropdown-toggle .caret, + .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: @navbarInverseLinkColorActive; + border-bottom-color: @navbarInverseLinkColorActive; + } + + // Navbar search + .navbar-search { + .search-query { + color: @white; + background-color: @navbarInverseSearchBackground; + border-color: @navbarInverseSearchBorder; + .box-shadow(~"inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15)"); + .transition(none); + .placeholder(@navbarInverseSearchPlaceholderColor); + + // Focus states (we use .focused since IE7-8 and down doesn't support :focus) + &:focus, + &.focused { + padding: 5px 15px; + color: @grayDark; + text-shadow: 0 1px 0 @white; + background-color: @navbarInverseSearchBackgroundFocus; + border: 0; + .box-shadow(0 0 3px rgba(0,0,0,.15)); + outline: 0; + } + } + } + + // Navbar collapse button + .btn-navbar { + .buttonBackground(darken(@navbarInverseBackgroundHighlight, 5%), darken(@navbarInverseBackground, 5%)); + } + +} diff --git a/theme/static/bootstrap/navs.less b/theme/static/bootstrap/navs.less new file mode 100644 index 0000000..01cd805 --- /dev/null +++ b/theme/static/bootstrap/navs.less @@ -0,0 +1,409 @@ +// +// Navs +// -------------------------------------------------- + + +// BASE CLASS +// ---------- + +.nav { + margin-left: 0; + margin-bottom: @baseLineHeight; + list-style: none; +} + +// Make links block level +.nav > li > a { + display: block; +} +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: @grayLighter; +} + +// Prevent IE8 from misplacing imgs +// See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989 +.nav > li > a > img { + max-width: none; +} + +// Redeclare pull classes because of specifity +.nav > .pull-right { + float: right; +} + +// Nav headers (for dropdowns and lists) +.nav-header { + display: block; + padding: 3px 15px; + font-size: 11px; + font-weight: bold; + line-height: @baseLineHeight; + color: @grayLight; + text-shadow: 0 1px 0 rgba(255,255,255,.5); + text-transform: uppercase; +} +// Space them out when they follow another list item (link) +.nav li + .nav-header { + margin-top: 9px; +} + + + +// NAV LIST +// -------- + +.nav-list { + padding-left: 15px; + padding-right: 15px; + margin-bottom: 0; +} +.nav-list > li > a, +.nav-list .nav-header { + margin-left: -15px; + margin-right: -15px; + text-shadow: 0 1px 0 rgba(255,255,255,.5); +} +.nav-list > li > a { + padding: 3px 15px; +} +.nav-list > .active > a, +.nav-list > .active > a:hover, +.nav-list > .active > a:focus { + color: @white; + text-shadow: 0 -1px 0 rgba(0,0,0,.2); + background-color: @linkColor; +} +.nav-list [class^="icon-"], +.nav-list [class*=" icon-"] { + margin-right: 2px; +} +// Dividers (basically an hr) within the dropdown +.nav-list .divider { + .nav-divider(); +} + + + +// TABS AND PILLS +// ------------- + +// Common styles +.nav-tabs, +.nav-pills { + .clearfix(); +} +.nav-tabs > li, +.nav-pills > li { + float: left; +} +.nav-tabs > li > a, +.nav-pills > li > a { + padding-right: 12px; + padding-left: 12px; + margin-right: 2px; + line-height: 14px; // keeps the overall height an even number +} + +// TABS +// ---- + +// Give the tabs something to sit on +.nav-tabs { + border-bottom: 1px solid #ddd; +} +// Make the list-items overlay the bottom border +.nav-tabs > li { + margin-bottom: -1px; +} +// Actual tabs (as links) +.nav-tabs > li > a { + padding-top: 8px; + padding-bottom: 8px; + line-height: @baseLineHeight; + border: 1px solid transparent; + .border-radius(4px 4px 0 0); + &:hover, + &:focus { + border-color: @grayLighter @grayLighter #ddd; + } +} +// Active state, and it's :hover/:focus to override normal :hover/:focus +.nav-tabs > .active > a, +.nav-tabs > .active > a:hover, +.nav-tabs > .active > a:focus { + color: @gray; + background-color: @bodyBackground; + border: 1px solid #ddd; + border-bottom-color: transparent; + cursor: default; +} + + +// PILLS +// ----- + +// Links rendered as pills +.nav-pills > li > a { + padding-top: 8px; + padding-bottom: 8px; + margin-top: 2px; + margin-bottom: 2px; + .border-radius(5px); +} + +// Active state +.nav-pills > .active > a, +.nav-pills > .active > a:hover, +.nav-pills > .active > a:focus { + color: @white; + background-color: @linkColor; +} + + + +// STACKED NAV +// ----------- + +// Stacked tabs and pills +.nav-stacked > li { + float: none; +} +.nav-stacked > li > a { + margin-right: 0; // no need for the gap between nav items +} + +// Tabs +.nav-tabs.nav-stacked { + border-bottom: 0; +} +.nav-tabs.nav-stacked > li > a { + border: 1px solid #ddd; + .border-radius(0); +} +.nav-tabs.nav-stacked > li:first-child > a { + .border-top-radius(4px); +} +.nav-tabs.nav-stacked > li:last-child > a { + .border-bottom-radius(4px); +} +.nav-tabs.nav-stacked > li > a:hover, +.nav-tabs.nav-stacked > li > a:focus { + border-color: #ddd; + z-index: 2; +} + +// Pills +.nav-pills.nav-stacked > li > a { + margin-bottom: 3px; +} +.nav-pills.nav-stacked > li:last-child > a { + margin-bottom: 1px; // decrease margin to match sizing of stacked tabs +} + + + +// DROPDOWNS +// --------- + +.nav-tabs .dropdown-menu { + .border-radius(0 0 6px 6px); // remove the top rounded corners here since there is a hard edge above the menu +} +.nav-pills .dropdown-menu { + .border-radius(6px); // make rounded corners match the pills +} + +// Default dropdown links +// ------------------------- +// Make carets use linkColor to start +.nav .dropdown-toggle .caret { + border-top-color: @linkColor; + border-bottom-color: @linkColor; + margin-top: 6px; +} +.nav .dropdown-toggle:hover .caret, +.nav .dropdown-toggle:focus .caret { + border-top-color: @linkColorHover; + border-bottom-color: @linkColorHover; +} +/* move down carets for tabs */ +.nav-tabs .dropdown-toggle .caret { + margin-top: 8px; +} + +// Active dropdown links +// ------------------------- +.nav .active .dropdown-toggle .caret { + border-top-color: #fff; + border-bottom-color: #fff; +} +.nav-tabs .active .dropdown-toggle .caret { + border-top-color: @gray; + border-bottom-color: @gray; +} + +// Active:hover/:focus dropdown links +// ------------------------- +.nav > .dropdown.active > a:hover, +.nav > .dropdown.active > a:focus { + cursor: pointer; +} + +// Open dropdowns +// ------------------------- +.nav-tabs .open .dropdown-toggle, +.nav-pills .open .dropdown-toggle, +.nav > li.dropdown.open.active > a:hover, +.nav > li.dropdown.open.active > a:focus { + color: @white; + background-color: @grayLight; + border-color: @grayLight; +} +.nav li.dropdown.open .caret, +.nav li.dropdown.open.active .caret, +.nav li.dropdown.open a:hover .caret, +.nav li.dropdown.open a:focus .caret { + border-top-color: @white; + border-bottom-color: @white; + .opacity(100); +} + +// Dropdowns in stacked tabs +.tabs-stacked .open > a:hover, +.tabs-stacked .open > a:focus { + border-color: @grayLight; +} + + + +// TABBABLE +// -------- + + +// COMMON STYLES +// ------------- + +// Clear any floats +.tabbable { + .clearfix(); +} +.tab-content { + overflow: auto; // prevent content from running below tabs +} + +// Remove border on bottom, left, right +.tabs-below > .nav-tabs, +.tabs-right > .nav-tabs, +.tabs-left > .nav-tabs { + border-bottom: 0; +} + +// Show/hide tabbable areas +.tab-content > .tab-pane, +.pill-content > .pill-pane { + display: none; +} +.tab-content > .active, +.pill-content > .active { + display: block; +} + + +// BOTTOM +// ------ + +.tabs-below > .nav-tabs { + border-top: 1px solid #ddd; +} +.tabs-below > .nav-tabs > li { + margin-top: -1px; + margin-bottom: 0; +} +.tabs-below > .nav-tabs > li > a { + .border-radius(0 0 4px 4px); + &:hover, + &:focus { + border-bottom-color: transparent; + border-top-color: #ddd; + } +} +.tabs-below > .nav-tabs > .active > a, +.tabs-below > .nav-tabs > .active > a:hover, +.tabs-below > .nav-tabs > .active > a:focus { + border-color: transparent #ddd #ddd #ddd; +} + +// LEFT & RIGHT +// ------------ + +// Common styles +.tabs-left > .nav-tabs > li, +.tabs-right > .nav-tabs > li { + float: none; +} +.tabs-left > .nav-tabs > li > a, +.tabs-right > .nav-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} + +// Tabs on the left +.tabs-left > .nav-tabs { + float: left; + margin-right: 19px; + border-right: 1px solid #ddd; +} +.tabs-left > .nav-tabs > li > a { + margin-right: -1px; + .border-radius(4px 0 0 4px); +} +.tabs-left > .nav-tabs > li > a:hover, +.tabs-left > .nav-tabs > li > a:focus { + border-color: @grayLighter #ddd @grayLighter @grayLighter; +} +.tabs-left > .nav-tabs .active > a, +.tabs-left > .nav-tabs .active > a:hover, +.tabs-left > .nav-tabs .active > a:focus { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: @white; +} + +// Tabs on the right +.tabs-right > .nav-tabs { + float: right; + margin-left: 19px; + border-left: 1px solid #ddd; +} +.tabs-right > .nav-tabs > li > a { + margin-left: -1px; + .border-radius(0 4px 4px 0); +} +.tabs-right > .nav-tabs > li > a:hover, +.tabs-right > .nav-tabs > li > a:focus { + border-color: @grayLighter @grayLighter @grayLighter #ddd; +} +.tabs-right > .nav-tabs .active > a, +.tabs-right > .nav-tabs .active > a:hover, +.tabs-right > .nav-tabs .active > a:focus { + border-color: #ddd #ddd #ddd transparent; + *border-left-color: @white; +} + + + +// DISABLED STATES +// --------------- + +// Gray out text +.nav > .disabled > a { + color: @grayLight; +} +// Nuke hover/focus effects +.nav > .disabled > a:hover, +.nav > .disabled > a:focus { + text-decoration: none; + background-color: transparent; + cursor: default; +} diff --git a/theme/static/bootstrap/pager.less b/theme/static/bootstrap/pager.less new file mode 100644 index 0000000..1d461cd --- /dev/null +++ b/theme/static/bootstrap/pager.less @@ -0,0 +1,43 @@ +// +// Pager pagination +// -------------------------------------------------- + + +.pager { + margin: @baseLineHeight 0; + list-style: none; + text-align: center; + .clearfix(); +} +.pager li { + display: inline; +} +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + .border-radius(15px); +} +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #f5f5f5; +} +.pager .next > a, +.pager .next > span { + float: right; +} +.pager .previous > a, +.pager .previous > span { + float: left; +} +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: @grayLight; + background-color: #fff; + cursor: default; +} diff --git a/theme/static/bootstrap/pagination.less b/theme/static/bootstrap/pagination.less new file mode 100644 index 0000000..a789db2 --- /dev/null +++ b/theme/static/bootstrap/pagination.less @@ -0,0 +1,123 @@ +// +// Pagination (multiple pages) +// -------------------------------------------------- + +// Space out pagination from surrounding content +.pagination { + margin: @baseLineHeight 0; +} + +.pagination ul { + // Allow for text-based alignment + display: inline-block; + .ie7-inline-block(); + // Reset default ul styles + margin-left: 0; + margin-bottom: 0; + // Visuals + .border-radius(@baseBorderRadius); + .box-shadow(0 1px 2px rgba(0,0,0,.05)); +} +.pagination ul > li { + display: inline; // Remove list-style and block-level defaults +} +.pagination ul > li > a, +.pagination ul > li > span { + float: left; // Collapse white-space + padding: 4px 12px; + line-height: @baseLineHeight; + text-decoration: none; + background-color: @paginationBackground; + border: 1px solid @paginationBorder; + border-left-width: 0; +} +.pagination ul > li > a:hover, +.pagination ul > li > a:focus, +.pagination ul > .active > a, +.pagination ul > .active > span { + background-color: @paginationActiveBackground; +} +.pagination ul > .active > a, +.pagination ul > .active > span { + color: @grayLight; + cursor: default; +} +.pagination ul > .disabled > span, +.pagination ul > .disabled > a, +.pagination ul > .disabled > a:hover, +.pagination ul > .disabled > a:focus { + color: @grayLight; + background-color: transparent; + cursor: default; +} +.pagination ul > li:first-child > a, +.pagination ul > li:first-child > span { + border-left-width: 1px; + .border-left-radius(@baseBorderRadius); +} +.pagination ul > li:last-child > a, +.pagination ul > li:last-child > span { + .border-right-radius(@baseBorderRadius); +} + + +// Alignment +// -------------------------------------------------- + +.pagination-centered { + text-align: center; +} +.pagination-right { + text-align: right; +} + + +// Sizing +// -------------------------------------------------- + +// Large +.pagination-large { + ul > li > a, + ul > li > span { + padding: @paddingLarge; + font-size: @fontSizeLarge; + } + ul > li:first-child > a, + ul > li:first-child > span { + .border-left-radius(@borderRadiusLarge); + } + ul > li:last-child > a, + ul > li:last-child > span { + .border-right-radius(@borderRadiusLarge); + } +} + +// Small and mini +.pagination-mini, +.pagination-small { + ul > li:first-child > a, + ul > li:first-child > span { + .border-left-radius(@borderRadiusSmall); + } + ul > li:last-child > a, + ul > li:last-child > span { + .border-right-radius(@borderRadiusSmall); + } +} + +// Small +.pagination-small { + ul > li > a, + ul > li > span { + padding: @paddingSmall; + font-size: @fontSizeSmall; + } +} +// Mini +.pagination-mini { + ul > li > a, + ul > li > span { + padding: @paddingMini; + font-size: @fontSizeMini; + } +} diff --git a/theme/static/bootstrap/popovers.less b/theme/static/bootstrap/popovers.less new file mode 100644 index 0000000..aae35c8 --- /dev/null +++ b/theme/static/bootstrap/popovers.less @@ -0,0 +1,133 @@ +// +// Popovers +// -------------------------------------------------- + + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: @zindexPopover; + display: none; + max-width: 276px; + padding: 1px; + text-align: left; // Reset given new insertion method + background-color: @popoverBackground; + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0,0,0,.2); + .border-radius(6px); + .box-shadow(0 5px 10px rgba(0,0,0,.2)); + + // Overrides for proper insertion + white-space: normal; + + // Offset the popover to account for the popover arrow + &.top { margin-top: -10px; } + &.right { margin-left: 10px; } + &.bottom { margin-top: 10px; } + &.left { margin-left: -10px; } +} + +.popover-title { + margin: 0; // reset heading margin + padding: 8px 14px; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: @popoverTitleBackground; + border-bottom: 1px solid darken(@popoverTitleBackground, 5%); + .border-radius(5px 5px 0 0); + + &:empty { + display: none; + } +} + +.popover-content { + padding: 9px 14px; +} + +// Arrows +// +// .arrow is outer, .arrow:after is inner + +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.popover .arrow { + border-width: @popoverArrowOuterWidth; +} +.popover .arrow:after { + border-width: @popoverArrowWidth; + content: ""; +} + +.popover { + &.top .arrow { + left: 50%; + margin-left: -@popoverArrowOuterWidth; + border-bottom-width: 0; + border-top-color: #999; // IE8 fallback + border-top-color: @popoverArrowOuterColor; + bottom: -@popoverArrowOuterWidth; + &:after { + bottom: 1px; + margin-left: -@popoverArrowWidth; + border-bottom-width: 0; + border-top-color: @popoverArrowColor; + } + } + &.right .arrow { + top: 50%; + left: -@popoverArrowOuterWidth; + margin-top: -@popoverArrowOuterWidth; + border-left-width: 0; + border-right-color: #999; // IE8 fallback + border-right-color: @popoverArrowOuterColor; + &:after { + left: 1px; + bottom: -@popoverArrowWidth; + border-left-width: 0; + border-right-color: @popoverArrowColor; + } + } + &.bottom .arrow { + left: 50%; + margin-left: -@popoverArrowOuterWidth; + border-top-width: 0; + border-bottom-color: #999; // IE8 fallback + border-bottom-color: @popoverArrowOuterColor; + top: -@popoverArrowOuterWidth; + &:after { + top: 1px; + margin-left: -@popoverArrowWidth; + border-top-width: 0; + border-bottom-color: @popoverArrowColor; + } + } + + &.left .arrow { + top: 50%; + right: -@popoverArrowOuterWidth; + margin-top: -@popoverArrowOuterWidth; + border-right-width: 0; + border-left-color: #999; // IE8 fallback + border-left-color: @popoverArrowOuterColor; + &:after { + right: 1px; + border-right-width: 0; + border-left-color: @popoverArrowColor; + bottom: -@popoverArrowWidth; + } + } + +} diff --git a/theme/static/bootstrap/progress-bars.less b/theme/static/bootstrap/progress-bars.less new file mode 100644 index 0000000..5e0c3dd --- /dev/null +++ b/theme/static/bootstrap/progress-bars.less @@ -0,0 +1,122 @@ +// +// Progress bars +// -------------------------------------------------- + + +// ANIMATIONS +// ---------- + +// Webkit +@-webkit-keyframes progress-bar-stripes { + from { background-position: 40px 0; } + to { background-position: 0 0; } +} + +// Firefox +@-moz-keyframes progress-bar-stripes { + from { background-position: 40px 0; } + to { background-position: 0 0; } +} + +// IE9 +@-ms-keyframes progress-bar-stripes { + from { background-position: 40px 0; } + to { background-position: 0 0; } +} + +// Opera +@-o-keyframes progress-bar-stripes { + from { background-position: 0 0; } + to { background-position: 40px 0; } +} + +// Spec +@keyframes progress-bar-stripes { + from { background-position: 40px 0; } + to { background-position: 0 0; } +} + + + +// THE BARS +// -------- + +// Outer container +.progress { + overflow: hidden; + height: @baseLineHeight; + margin-bottom: @baseLineHeight; + #gradient > .vertical(#f5f5f5, #f9f9f9); + .box-shadow(inset 0 1px 2px rgba(0,0,0,.1)); + .border-radius(@baseBorderRadius); +} + +// Bar of progress +.progress .bar { + width: 0%; + height: 100%; + color: @white; + float: left; + font-size: 12px; + text-align: center; + text-shadow: 0 -1px 0 rgba(0,0,0,.25); + #gradient > .vertical(#149bdf, #0480be); + .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15)); + .box-sizing(border-box); + .transition(width .6s ease); +} +.progress .bar + .bar { + .box-shadow(~"inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15)"); +} + +// Striped bars +.progress-striped .bar { + #gradient > .striped(#149bdf); + .background-size(40px 40px); +} + +// Call animation for the active one +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} + + + +// COLORS +// ------ + +// Danger (red) +.progress-danger .bar, .progress .bar-danger { + #gradient > .vertical(#ee5f5b, #c43c35); +} +.progress-danger.progress-striped .bar, .progress-striped .bar-danger { + #gradient > .striped(#ee5f5b); +} + +// Success (green) +.progress-success .bar, .progress .bar-success { + #gradient > .vertical(#62c462, #57a957); +} +.progress-success.progress-striped .bar, .progress-striped .bar-success { + #gradient > .striped(#62c462); +} + +// Info (teal) +.progress-info .bar, .progress .bar-info { + #gradient > .vertical(#5bc0de, #339bb9); +} +.progress-info.progress-striped .bar, .progress-striped .bar-info { + #gradient > .striped(#5bc0de); +} + +// Warning (orange) +.progress-warning .bar, .progress .bar-warning { + #gradient > .vertical(lighten(@orange, 15%), @orange); +} +.progress-warning.progress-striped .bar, .progress-striped .bar-warning { + #gradient > .striped(lighten(@orange, 15%)); +} diff --git a/theme/static/bootstrap/reset.less b/theme/static/bootstrap/reset.less new file mode 100644 index 0000000..4806bd5 --- /dev/null +++ b/theme/static/bootstrap/reset.less @@ -0,0 +1,216 @@ +// +// Reset CSS +// Adapted from http://github.com/necolas/normalize.css +// -------------------------------------------------- + + +// Display in IE6-9 and FF3 +// ------------------------- + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section { + display: block; +} + +// Display block in IE6-9 and FF3 +// ------------------------- + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +// Prevents modern browsers from displaying 'audio' without controls +// ------------------------- + +audio:not([controls]) { + display: none; +} + +// Base settings +// ------------------------- + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +// Focus states +a:focus { + .tab-focus(); +} +// Hover & Active +a:hover, +a:active { + outline: 0; +} + +// Prevents sub and sup affecting line-height in all browsers +// ------------------------- + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} + +// Img border in a's and image quality +// ------------------------- + +img { + /* Responsive images (ensure images don't scale beyond their parents) */ + max-width: 100%; /* Part 1: Set a maxium relative to the parent */ + width: auto\9; /* IE7-8 need help adjusting responsive images */ + height: auto; /* Part 2: Scale the height according to the width, otherwise you get stretching */ + + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} + +// Prevent max-width from affecting Google Maps +#map_canvas img, +.google-maps img { + max-width: none; +} + +// Forms +// ------------------------- + +// Font size in all browsers, margin changes, misc consistency +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} +button, +input { + *overflow: visible; // Inner spacing ie IE6/7 + line-height: normal; // FF3/4 have !important on line-height in UA stylesheet +} +button::-moz-focus-inner, +input::-moz-focus-inner { // Inner padding and border oddities in FF3/4 + padding: 0; + border: 0; +} +button, +html input[type="button"], // Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls. +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; // Corrects inability to style clickable `input` types in iOS. + cursor: pointer; // Improves usability and consistency of cursor style between image-type `input` and others. +} +label, +select, +button, +input[type="button"], +input[type="reset"], +input[type="submit"], +input[type="radio"], +input[type="checkbox"] { + cursor: pointer; // Improves usability and consistency of cursor style between image-type `input` and others. +} +input[type="search"] { // Appearance in Safari/Chrome + .box-sizing(content-box); + -webkit-appearance: textfield; +} +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; // Inner-padding issues in Chrome OSX, Safari 5 +} +textarea { + overflow: auto; // Remove vertical scrollbar in IE6-9 + vertical-align: top; // Readability and alignment cross-browser +} + + +// Printing +// ------------------------- +// Source: https://github.com/h5bp/html5-boilerplate/blob/master/css/main.css + +@media print { + + * { + text-shadow: none !important; + color: #000 !important; // Black prints faster: h5bp.com/s + background: transparent !important; + box-shadow: none !important; + } + + a, + a:visited { + text-decoration: underline; + } + + a[href]:after { + content: " (" attr(href) ")"; + } + + abbr[title]:after { + content: " (" attr(title) ")"; + } + + // Don't show links for images, or javascript/internal links + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + + thead { + display: table-header-group; // h5bp.com/t + } + + tr, + img { + page-break-inside: avoid; + } + + img { + max-width: 100% !important; + } + + @page { + margin: 0.5cm; + } + + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + + h2, + h3 { + page-break-after: avoid; + } +} diff --git a/theme/static/bootstrap/responsive-1200px-min.less b/theme/static/bootstrap/responsive-1200px-min.less new file mode 100644 index 0000000..4f35ba6 --- /dev/null +++ b/theme/static/bootstrap/responsive-1200px-min.less @@ -0,0 +1,28 @@ +// +// Responsive: Large desktop and up +// -------------------------------------------------- + + +@media (min-width: 1200px) { + + // Fixed grid + #grid > .core(@gridColumnWidth1200, @gridGutterWidth1200); + + // Fluid grid + #grid > .fluid(@fluidGridColumnWidth1200, @fluidGridGutterWidth1200); + + // Input grid + #grid > .input(@gridColumnWidth1200, @gridGutterWidth1200); + + // Thumbnails + .thumbnails { + margin-left: -@gridGutterWidth1200; + } + .thumbnails > li { + margin-left: @gridGutterWidth1200; + } + .row-fluid .thumbnails { + margin-left: 0; + } + +} diff --git a/theme/static/bootstrap/responsive-767px-max.less b/theme/static/bootstrap/responsive-767px-max.less new file mode 100644 index 0000000..128f4ce --- /dev/null +++ b/theme/static/bootstrap/responsive-767px-max.less @@ -0,0 +1,193 @@ +// +// Responsive: Landscape phone to desktop/tablet +// -------------------------------------------------- + + +@media (max-width: 767px) { + + // Padding to set content in a bit + body { + padding-left: 20px; + padding-right: 20px; + } + // Negative indent the now static "fixed" navbar + .navbar-fixed-top, + .navbar-fixed-bottom, + .navbar-static-top { + margin-left: -20px; + margin-right: -20px; + } + // Remove padding on container given explicit padding set on body + .container-fluid { + padding: 0; + } + + // TYPOGRAPHY + // ---------- + // Reset horizontal dl + .dl-horizontal { + dt { + float: none; + clear: none; + width: auto; + text-align: left; + } + dd { + margin-left: 0; + } + } + + // GRID & CONTAINERS + // ----------------- + // Remove width from containers + .container { + width: auto; + } + // Fluid rows + .row-fluid { + width: 100%; + } + // Undo negative margin on rows and thumbnails + .row, + .thumbnails { + margin-left: 0; + } + .thumbnails > li { + float: none; + margin-left: 0; // Reset the default margin for all li elements when no .span* classes are present + } + // Make all grid-sized elements block level again + [class*="span"], + .uneditable-input[class*="span"], // Makes uneditable inputs full-width when using grid sizing + .row-fluid [class*="span"] { + float: none; + display: block; + width: 100%; + margin-left: 0; + .box-sizing(border-box); + } + .span12, + .row-fluid .span12 { + width: 100%; + .box-sizing(border-box); + } + .row-fluid [class*="offset"]:first-child { + margin-left: 0; + } + + // FORM FIELDS + // ----------- + // Make span* classes full width + .input-large, + .input-xlarge, + .input-xxlarge, + input[class*="span"], + select[class*="span"], + textarea[class*="span"], + .uneditable-input { + .input-block-level(); + } + // But don't let it screw up prepend/append inputs + .input-prepend input, + .input-append input, + .input-prepend input[class*="span"], + .input-append input[class*="span"] { + display: inline-block; // redeclare so they don't wrap to new lines + width: auto; + } + .controls-row [class*="span"] + [class*="span"] { + margin-left: 0; + } + + // Modals + .modal { + position: fixed; + top: 20px; + left: 20px; + right: 20px; + width: auto; + margin: 0; + &.fade { top: -100px; } + &.fade.in { top: 20px; } + } + +} + + + +// UP TO LANDSCAPE PHONE +// --------------------- + +@media (max-width: 480px) { + + // Smooth out the collapsing/expanding nav + .nav-collapse { + -webkit-transform: translate3d(0, 0, 0); // activate the GPU + } + + // Block level the page header small tag for readability + .page-header h1 small { + display: block; + line-height: @baseLineHeight; + } + + // Update checkboxes for iOS + input[type="checkbox"], + input[type="radio"] { + border: 1px solid #ccc; + } + + // Remove the horizontal form styles + .form-horizontal { + .control-label { + float: none; + width: auto; + padding-top: 0; + text-align: left; + } + // Move over all input controls and content + .controls { + margin-left: 0; + } + // Move the options list down to align with labels + .control-list { + padding-top: 0; // has to be padding because margin collaspes + } + // Move over buttons in .form-actions to align with .controls + .form-actions { + padding-left: 10px; + padding-right: 10px; + } + } + + // Medias + // Reset float and spacing to stack + .media .pull-left, + .media .pull-right { + float: none; + display: block; + margin-bottom: 10px; + } + // Remove side margins since we stack instead of indent + .media-object { + margin-right: 0; + margin-left: 0; + } + + // Modals + .modal { + top: 10px; + left: 10px; + right: 10px; + } + .modal-header .close { + padding: 10px; + margin: -10px; + } + + // Carousel + .carousel-caption { + position: static; + } + +} diff --git a/theme/static/bootstrap/responsive-768px-979px.less b/theme/static/bootstrap/responsive-768px-979px.less new file mode 100644 index 0000000..8e8c486 --- /dev/null +++ b/theme/static/bootstrap/responsive-768px-979px.less @@ -0,0 +1,19 @@ +// +// Responsive: Tablet to desktop +// -------------------------------------------------- + + +@media (min-width: 768px) and (max-width: 979px) { + + // Fixed grid + #grid > .core(@gridColumnWidth768, @gridGutterWidth768); + + // Fluid grid + #grid > .fluid(@fluidGridColumnWidth768, @fluidGridGutterWidth768); + + // Input grid + #grid > .input(@gridColumnWidth768, @gridGutterWidth768); + + // No need to reset .thumbnails here since it's the same @gridGutterWidth + +} diff --git a/theme/static/bootstrap/responsive-navbar.less b/theme/static/bootstrap/responsive-navbar.less new file mode 100644 index 0000000..39dee45 --- /dev/null +++ b/theme/static/bootstrap/responsive-navbar.less @@ -0,0 +1,189 @@ +// +// Responsive: Navbar +// -------------------------------------------------- + + +// TABLETS AND BELOW +// ----------------- +@media (max-width: @navbarCollapseWidth) { + + // UNFIX THE TOPBAR + // ---------------- + // Remove any padding from the body + body { + padding-top: 0; + } + // Unfix the navbars + .navbar-fixed-top, + .navbar-fixed-bottom { + position: static; + } + .navbar-fixed-top { + margin-bottom: @baseLineHeight; + } + .navbar-fixed-bottom { + margin-top: @baseLineHeight; + } + .navbar-fixed-top .navbar-inner, + .navbar-fixed-bottom .navbar-inner { + padding: 5px; + } + .navbar .container { + width: auto; + padding: 0; + } + // Account for brand name + .navbar .brand { + padding-left: 10px; + padding-right: 10px; + margin: 0 0 0 -5px; + } + + // COLLAPSIBLE NAVBAR + // ------------------ + // Nav collapse clears brand + .nav-collapse { + clear: both; + } + // Block-level the nav + .nav-collapse .nav { + float: none; + margin: 0 0 (@baseLineHeight / 2); + } + .nav-collapse .nav > li { + float: none; + } + .nav-collapse .nav > li > a { + margin-bottom: 2px; + } + .nav-collapse .nav > .divider-vertical { + display: none; + } + .nav-collapse .nav .nav-header { + color: @navbarText; + text-shadow: none; + } + // Nav and dropdown links in navbar + .nav-collapse .nav > li > a, + .nav-collapse .dropdown-menu a { + padding: 9px 15px; + font-weight: bold; + color: @navbarLinkColor; + .border-radius(3px); + } + // Buttons + .nav-collapse .btn { + padding: 4px 10px 4px; + font-weight: normal; + .border-radius(@baseBorderRadius); + } + .nav-collapse .dropdown-menu li + li a { + margin-bottom: 2px; + } + .nav-collapse .nav > li > a:hover, + .nav-collapse .nav > li > a:focus, + .nav-collapse .dropdown-menu a:hover, + .nav-collapse .dropdown-menu a:focus { + background-color: @navbarBackground; + } + .navbar-inverse .nav-collapse .nav > li > a, + .navbar-inverse .nav-collapse .dropdown-menu a { + color: @navbarInverseLinkColor; + } + .navbar-inverse .nav-collapse .nav > li > a:hover, + .navbar-inverse .nav-collapse .nav > li > a:focus, + .navbar-inverse .nav-collapse .dropdown-menu a:hover, + .navbar-inverse .nav-collapse .dropdown-menu a:focus { + background-color: @navbarInverseBackground; + } + // Buttons in the navbar + .nav-collapse.in .btn-group { + margin-top: 5px; + padding: 0; + } + // Dropdowns in the navbar + .nav-collapse .dropdown-menu { + position: static; + top: auto; + left: auto; + float: none; + display: none; + max-width: none; + margin: 0 15px; + padding: 0; + background-color: transparent; + border: none; + .border-radius(0); + .box-shadow(none); + } + .nav-collapse .open > .dropdown-menu { + display: block; + } + + .nav-collapse .dropdown-menu:before, + .nav-collapse .dropdown-menu:after { + display: none; + } + .nav-collapse .dropdown-menu .divider { + display: none; + } + .nav-collapse .nav > li > .dropdown-menu { + &:before, + &:after { + display: none; + } + } + // Forms in navbar + .nav-collapse .navbar-form, + .nav-collapse .navbar-search { + float: none; + padding: (@baseLineHeight / 2) 15px; + margin: (@baseLineHeight / 2) 0; + border-top: 1px solid @navbarBackground; + border-bottom: 1px solid @navbarBackground; + .box-shadow(~"inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1)"); + } + .navbar-inverse .nav-collapse .navbar-form, + .navbar-inverse .nav-collapse .navbar-search { + border-top-color: @navbarInverseBackground; + border-bottom-color: @navbarInverseBackground; + } + // Pull right (secondary) nav content + .navbar .nav-collapse .nav.pull-right { + float: none; + margin-left: 0; + } + // Hide everything in the navbar save .brand and toggle button */ + .nav-collapse, + .nav-collapse.collapse { + overflow: hidden; + height: 0; + } + // Navbar button + .navbar .btn-navbar { + display: block; + } + + // STATIC NAVBAR + // ------------- + .navbar-static .navbar-inner { + padding-left: 10px; + padding-right: 10px; + } + + +} + + +// DEFAULT DESKTOP +// --------------- + +@media (min-width: @navbarCollapseDesktopWidth) { + + // Required to make the collapsing navbar work on regular desktops + .nav-collapse.collapse { + height: auto !important; + overflow: visible !important; + } + +} diff --git a/theme/static/bootstrap/responsive-utilities.less b/theme/static/bootstrap/responsive-utilities.less new file mode 100644 index 0000000..bf43e8e --- /dev/null +++ b/theme/static/bootstrap/responsive-utilities.less @@ -0,0 +1,59 @@ +// +// Responsive: Utility classes +// -------------------------------------------------- + + +// IE10 Metro responsive +// Required for Windows 8 Metro split-screen snapping with IE10 +// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/ +@-ms-viewport{ + width: device-width; +} + +// Hide from screenreaders and browsers +// Credit: HTML5 Boilerplate +.hidden { + display: none; + visibility: hidden; +} + +// Visibility utilities + +// For desktops +.visible-phone { display: none !important; } +.visible-tablet { display: none !important; } +.hidden-phone { } +.hidden-tablet { } +.hidden-desktop { display: none !important; } +.visible-desktop { display: inherit !important; } + +// Tablets & small desktops only +@media (min-width: 768px) and (max-width: 979px) { + // Hide everything else + .hidden-desktop { display: inherit !important; } + .visible-desktop { display: none !important ; } + // Show + .visible-tablet { display: inherit !important; } + // Hide + .hidden-tablet { display: none !important; } +} + +// Phones only +@media (max-width: 767px) { + // Hide everything else + .hidden-desktop { display: inherit !important; } + .visible-desktop { display: none !important; } + // Show + .visible-phone { display: inherit !important; } // Use inherit to restore previous behavior + // Hide + .hidden-phone { display: none !important; } +} + +// Print utilities +.visible-print { display: none !important; } +.hidden-print { } + +@media print { + .visible-print { display: inherit !important; } + .hidden-print { display: none !important; } +} diff --git a/theme/static/bootstrap/responsive.less b/theme/static/bootstrap/responsive.less new file mode 100644 index 0000000..3d4c58c --- /dev/null +++ b/theme/static/bootstrap/responsive.less @@ -0,0 +1,48 @@ +/*! + * Bootstrap Responsive v2.3.2 + * + * Copyright 2013 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world by @mdo and @fat. + */ + + +// Responsive.less +// For phone and tablet devices +// ------------------------------------------------------------- + + +// REPEAT VARIABLES & MIXINS +// ------------------------- +// Required since we compile the responsive stuff separately + +@import "variables.less"; // Modify this for custom colors, font-sizes, etc +@import "mixins.less"; + + +// RESPONSIVE CLASSES +// ------------------ + +@import "responsive-utilities.less"; + + +// MEDIA QUERIES +// ------------------ + +// Large desktops +@import "responsive-1200px-min.less"; + +// Tablets to regular desktops +@import "responsive-768px-979px.less"; + +// Phones to portrait tablets and narrow desktops +@import "responsive-767px-max.less"; + + +// RESPONSIVE NAVBAR +// ------------------ + +// From 979px and below, show a button to toggle navbar contents +@import "responsive-navbar.less"; diff --git a/theme/static/bootstrap/scaffolding.less b/theme/static/bootstrap/scaffolding.less new file mode 100644 index 0000000..d130b8a --- /dev/null +++ b/theme/static/bootstrap/scaffolding.less @@ -0,0 +1,51 @@ +// +// Scaffolding +// -------------------------------------------------- + + +// Body reset +// ------------------------- + +body { + font-size: @baseFontSize; + line-height: @baseLineHeight; + color: @textColor; + background-color: @bodyBackground; +} + + +// Links +// ------------------------- + +a { + color: @linkColor; + text-decoration: none; +} +a:hover, +a:focus { + color: @linkColorHover; + text-decoration: underline; +} + + +// Images +// ------------------------- + +// Rounded corners +.img-rounded { + .border-radius(6px); +} + +// Add polaroid-esque trim +.img-polaroid { + padding: 4px; + background-color: #fff; + border: 1px solid #ccc; + border: 1px solid rgba(0,0,0,.2); + .box-shadow(0 1px 3px rgba(0,0,0,.1)); +} + +// Perfect circle +.img-circle { + .border-radius(500px); // crank the border-radius so it works with most reasonably sized images +} diff --git a/theme/static/bootstrap/sprites.less b/theme/static/bootstrap/sprites.less new file mode 100644 index 0000000..1812bf7 --- /dev/null +++ b/theme/static/bootstrap/sprites.less @@ -0,0 +1,197 @@ +// +// Sprites +// -------------------------------------------------- + + +// ICONS +// ----- + +// All icons receive the styles of the <i> tag with a base class +// of .i and are then given a unique class to add width, height, +// and background-position. Your resulting HTML will look like +// <i class="icon-inbox"></i>. + +// For the white version of the icons, just add the .icon-white class: +// <i class="icon-inbox icon-white"></i> + +[class^="icon-"], +[class*=" icon-"] { + display: inline-block; + width: 14px; + height: 14px; + .ie7-restore-right-whitespace(); + line-height: 14px; + vertical-align: text-top; + background-image: url("@{iconSpritePath}"); + background-position: 14px 14px; + background-repeat: no-repeat; + margin-top: 1px; +} + +/* White icons with optional class, or on hover/focus/active states of certain elements */ +.icon-white, +.nav-pills > .active > a > [class^="icon-"], +.nav-pills > .active > a > [class*=" icon-"], +.nav-list > .active > a > [class^="icon-"], +.nav-list > .active > a > [class*=" icon-"], +.navbar-inverse .nav > .active > a > [class^="icon-"], +.navbar-inverse .nav > .active > a > [class*=" icon-"], +.dropdown-menu > li > a:hover > [class^="icon-"], +.dropdown-menu > li > a:focus > [class^="icon-"], +.dropdown-menu > li > a:hover > [class*=" icon-"], +.dropdown-menu > li > a:focus > [class*=" icon-"], +.dropdown-menu > .active > a > [class^="icon-"], +.dropdown-menu > .active > a > [class*=" icon-"], +.dropdown-submenu:hover > a > [class^="icon-"], +.dropdown-submenu:focus > a > [class^="icon-"], +.dropdown-submenu:hover > a > [class*=" icon-"], +.dropdown-submenu:focus > a > [class*=" icon-"] { + background-image: url("@{iconWhiteSpritePath}"); +} + +.icon-glass { background-position: 0 0; } +.icon-music { background-position: -24px 0; } +.icon-search { background-position: -48px 0; } +.icon-envelope { background-position: -72px 0; } +.icon-heart { background-position: -96px 0; } +.icon-star { background-position: -120px 0; } +.icon-star-empty { background-position: -144px 0; } +.icon-user { background-position: -168px 0; } +.icon-film { background-position: -192px 0; } +.icon-th-large { background-position: -216px 0; } +.icon-th { background-position: -240px 0; } +.icon-th-list { background-position: -264px 0; } +.icon-ok { background-position: -288px 0; } +.icon-remove { background-position: -312px 0; } +.icon-zoom-in { background-position: -336px 0; } +.icon-zoom-out { background-position: -360px 0; } +.icon-off { background-position: -384px 0; } +.icon-signal { background-position: -408px 0; } +.icon-cog { background-position: -432px 0; } +.icon-trash { background-position: -456px 0; } + +.icon-home { background-position: 0 -24px; } +.icon-file { background-position: -24px -24px; } +.icon-time { background-position: -48px -24px; } +.icon-road { background-position: -72px -24px; } +.icon-download-alt { background-position: -96px -24px; } +.icon-download { background-position: -120px -24px; } +.icon-upload { background-position: -144px -24px; } +.icon-inbox { background-position: -168px -24px; } +.icon-play-circle { background-position: -192px -24px; } +.icon-repeat { background-position: -216px -24px; } +.icon-refresh { background-position: -240px -24px; } +.icon-list-alt { background-position: -264px -24px; } +.icon-lock { background-position: -287px -24px; } // 1px off +.icon-flag { background-position: -312px -24px; } +.icon-headphones { background-position: -336px -24px; } +.icon-volume-off { background-position: -360px -24px; } +.icon-volume-down { background-position: -384px -24px; } +.icon-volume-up { background-position: -408px -24px; } +.icon-qrcode { background-position: -432px -24px; } +.icon-barcode { background-position: -456px -24px; } + +.icon-tag { background-position: 0 -48px; } +.icon-tags { background-position: -25px -48px; } // 1px off +.icon-book { background-position: -48px -48px; } +.icon-bookmark { background-position: -72px -48px; } +.icon-print { background-position: -96px -48px; } +.icon-camera { background-position: -120px -48px; } +.icon-font { background-position: -144px -48px; } +.icon-bold { background-position: -167px -48px; } // 1px off +.icon-italic { background-position: -192px -48px; } +.icon-text-height { background-position: -216px -48px; } +.icon-text-width { background-position: -240px -48px; } +.icon-align-left { background-position: -264px -48px; } +.icon-align-center { background-position: -288px -48px; } +.icon-align-right { background-position: -312px -48px; } +.icon-align-justify { background-position: -336px -48px; } +.icon-list { background-position: -360px -48px; } +.icon-indent-left { background-position: -384px -48px; } +.icon-indent-right { background-position: -408px -48px; } +.icon-facetime-video { background-position: -432px -48px; } +.icon-picture { background-position: -456px -48px; } + +.icon-pencil { background-position: 0 -72px; } +.icon-map-marker { background-position: -24px -72px; } +.icon-adjust { background-position: -48px -72px; } +.icon-tint { background-position: -72px -72px; } +.icon-edit { background-position: -96px -72px; } +.icon-share { background-position: -120px -72px; } +.icon-check { background-position: -144px -72px; } +.icon-move { background-position: -168px -72px; } +.icon-step-backward { background-position: -192px -72px; } +.icon-fast-backward { background-position: -216px -72px; } +.icon-backward { background-position: -240px -72px; } +.icon-play { background-position: -264px -72px; } +.icon-pause { background-position: -288px -72px; } +.icon-stop { background-position: -312px -72px; } +.icon-forward { background-position: -336px -72px; } +.icon-fast-forward { background-position: -360px -72px; } +.icon-step-forward { background-position: -384px -72px; } +.icon-eject { background-position: -408px -72px; } +.icon-chevron-left { background-position: -432px -72px; } +.icon-chevron-right { background-position: -456px -72px; } + +.icon-plus-sign { background-position: 0 -96px; } +.icon-minus-sign { background-position: -24px -96px; } +.icon-remove-sign { background-position: -48px -96px; } +.icon-ok-sign { background-position: -72px -96px; } +.icon-question-sign { background-position: -96px -96px; } +.icon-info-sign { background-position: -120px -96px; } +.icon-screenshot { background-position: -144px -96px; } +.icon-remove-circle { background-position: -168px -96px; } +.icon-ok-circle { background-position: -192px -96px; } +.icon-ban-circle { background-position: -216px -96px; } +.icon-arrow-left { background-position: -240px -96px; } +.icon-arrow-right { background-position: -264px -96px; } +.icon-arrow-up { background-position: -289px -96px; } // 1px off +.icon-arrow-down { background-position: -312px -96px; } +.icon-share-alt { background-position: -336px -96px; } +.icon-resize-full { background-position: -360px -96px; } +.icon-resize-small { background-position: -384px -96px; } +.icon-plus { background-position: -408px -96px; } +.icon-minus { background-position: -433px -96px; } +.icon-asterisk { background-position: -456px -96px; } + +.icon-exclamation-sign { background-position: 0 -120px; } +.icon-gift { background-position: -24px -120px; } +.icon-leaf { background-position: -48px -120px; } +.icon-fire { background-position: -72px -120px; } +.icon-eye-open { background-position: -96px -120px; } +.icon-eye-close { background-position: -120px -120px; } +.icon-warning-sign { background-position: -144px -120px; } +.icon-plane { background-position: -168px -120px; } +.icon-calendar { background-position: -192px -120px; } +.icon-random { background-position: -216px -120px; width: 16px; } +.icon-comment { background-position: -240px -120px; } +.icon-magnet { background-position: -264px -120px; } +.icon-chevron-up { background-position: -288px -120px; } +.icon-chevron-down { background-position: -313px -119px; } // 1px, 1px off +.icon-retweet { background-position: -336px -120px; } +.icon-shopping-cart { background-position: -360px -120px; } +.icon-folder-close { background-position: -384px -120px; width: 16px; } +.icon-folder-open { background-position: -408px -120px; width: 16px; } +.icon-resize-vertical { background-position: -432px -119px; } // 1px, 1px off +.icon-resize-horizontal { background-position: -456px -118px; } // 1px, 2px off + +.icon-hdd { background-position: 0 -144px; } +.icon-bullhorn { background-position: -24px -144px; } +.icon-bell { background-position: -48px -144px; } +.icon-certificate { background-position: -72px -144px; } +.icon-thumbs-up { background-position: -96px -144px; } +.icon-thumbs-down { background-position: -120px -144px; } +.icon-hand-right { background-position: -144px -144px; } +.icon-hand-left { background-position: -168px -144px; } +.icon-hand-up { background-position: -192px -144px; } +.icon-hand-down { background-position: -216px -144px; } +.icon-circle-arrow-right { background-position: -240px -144px; } +.icon-circle-arrow-left { background-position: -264px -144px; } +.icon-circle-arrow-up { background-position: -288px -144px; } +.icon-circle-arrow-down { background-position: -312px -144px; } +.icon-globe { background-position: -336px -144px; } +.icon-wrench { background-position: -360px -144px; } +.icon-tasks { background-position: -384px -144px; } +.icon-filter { background-position: -408px -144px; } +.icon-briefcase { background-position: -432px -144px; } +.icon-fullscreen { background-position: -456px -144px; } diff --git a/theme/static/bootstrap/tables.less b/theme/static/bootstrap/tables.less new file mode 100644 index 0000000..0e35271 --- /dev/null +++ b/theme/static/bootstrap/tables.less @@ -0,0 +1,244 @@ +// +// Tables +// -------------------------------------------------- + + +// BASE TABLES +// ----------------- + +table { + max-width: 100%; + background-color: @tableBackground; + border-collapse: collapse; + border-spacing: 0; +} + +// BASELINE STYLES +// --------------- + +.table { + width: 100%; + margin-bottom: @baseLineHeight; + // Cells + th, + td { + padding: 8px; + line-height: @baseLineHeight; + text-align: left; + vertical-align: top; + border-top: 1px solid @tableBorder; + } + th { + font-weight: bold; + } + // Bottom align for column headings + thead th { + vertical-align: bottom; + } + // Remove top border from thead by default + caption + thead tr:first-child th, + caption + thead tr:first-child td, + colgroup + thead tr:first-child th, + colgroup + thead tr:first-child td, + thead:first-child tr:first-child th, + thead:first-child tr:first-child td { + border-top: 0; + } + // Account for multiple tbody instances + tbody + tbody { + border-top: 2px solid @tableBorder; + } + + // Nesting + .table { + background-color: @bodyBackground; + } +} + + + +// CONDENSED TABLE W/ HALF PADDING +// ------------------------------- + +.table-condensed { + th, + td { + padding: 4px 5px; + } +} + + +// BORDERED VERSION +// ---------------- + +.table-bordered { + border: 1px solid @tableBorder; + border-collapse: separate; // Done so we can round those corners! + *border-collapse: collapse; // IE7 can't round corners anyway + border-left: 0; + .border-radius(@baseBorderRadius); + th, + td { + border-left: 1px solid @tableBorder; + } + // Prevent a double border + caption + thead tr:first-child th, + caption + tbody tr:first-child th, + caption + tbody tr:first-child td, + colgroup + thead tr:first-child th, + colgroup + tbody tr:first-child th, + colgroup + tbody tr:first-child td, + thead:first-child tr:first-child th, + tbody:first-child tr:first-child th, + tbody:first-child tr:first-child td { + border-top: 0; + } + // For first th/td in the first row in the first thead or tbody + thead:first-child tr:first-child > th:first-child, + tbody:first-child tr:first-child > td:first-child, + tbody:first-child tr:first-child > th:first-child { + .border-top-left-radius(@baseBorderRadius); + } + // For last th/td in the first row in the first thead or tbody + thead:first-child tr:first-child > th:last-child, + tbody:first-child tr:first-child > td:last-child, + tbody:first-child tr:first-child > th:last-child { + .border-top-right-radius(@baseBorderRadius); + } + // For first th/td (can be either) in the last row in the last thead, tbody, and tfoot + thead:last-child tr:last-child > th:first-child, + tbody:last-child tr:last-child > td:first-child, + tbody:last-child tr:last-child > th:first-child, + tfoot:last-child tr:last-child > td:first-child, + tfoot:last-child tr:last-child > th:first-child { + .border-bottom-left-radius(@baseBorderRadius); + } + // For last th/td (can be either) in the last row in the last thead, tbody, and tfoot + thead:last-child tr:last-child > th:last-child, + tbody:last-child tr:last-child > td:last-child, + tbody:last-child tr:last-child > th:last-child, + tfoot:last-child tr:last-child > td:last-child, + tfoot:last-child tr:last-child > th:last-child { + .border-bottom-right-radius(@baseBorderRadius); + } + + // Clear border-radius for first and last td in the last row in the last tbody for table with tfoot + tfoot + tbody:last-child tr:last-child td:first-child { + .border-bottom-left-radius(0); + } + tfoot + tbody:last-child tr:last-child td:last-child { + .border-bottom-right-radius(0); + } + + // Special fixes to round the left border on the first td/th + caption + thead tr:first-child th:first-child, + caption + tbody tr:first-child td:first-child, + colgroup + thead tr:first-child th:first-child, + colgroup + tbody tr:first-child td:first-child { + .border-top-left-radius(@baseBorderRadius); + } + caption + thead tr:first-child th:last-child, + caption + tbody tr:first-child td:last-child, + colgroup + thead tr:first-child th:last-child, + colgroup + tbody tr:first-child td:last-child { + .border-top-right-radius(@baseBorderRadius); + } + +} + + + + +// ZEBRA-STRIPING +// -------------- + +// Default zebra-stripe styles (alternating gray and transparent backgrounds) +.table-striped { + tbody { + > tr:nth-child(odd) > td, + > tr:nth-child(odd) > th { + background-color: @tableBackgroundAccent; + } + } +} + + +// HOVER EFFECT +// ------------ +// Placed here since it has to come after the potential zebra striping +.table-hover { + tbody { + tr:hover > td, + tr:hover > th { + background-color: @tableBackgroundHover; + } + } +} + + +// TABLE CELL SIZING +// ----------------- + +// Reset default grid behavior +table td[class*="span"], +table th[class*="span"], +.row-fluid table td[class*="span"], +.row-fluid table th[class*="span"] { + display: table-cell; + float: none; // undo default grid column styles + margin-left: 0; // undo default grid column styles +} + +// Change the column widths to account for td/th padding +.table td, +.table th { + &.span1 { .tableColumns(1); } + &.span2 { .tableColumns(2); } + &.span3 { .tableColumns(3); } + &.span4 { .tableColumns(4); } + &.span5 { .tableColumns(5); } + &.span6 { .tableColumns(6); } + &.span7 { .tableColumns(7); } + &.span8 { .tableColumns(8); } + &.span9 { .tableColumns(9); } + &.span10 { .tableColumns(10); } + &.span11 { .tableColumns(11); } + &.span12 { .tableColumns(12); } +} + + + +// TABLE BACKGROUNDS +// ----------------- +// Exact selectors below required to override .table-striped + +.table tbody tr { + &.success > td { + background-color: @successBackground; + } + &.error > td { + background-color: @errorBackground; + } + &.warning > td { + background-color: @warningBackground; + } + &.info > td { + background-color: @infoBackground; + } +} + +// Hover states for .table-hover +.table-hover tbody tr { + &.success:hover > td { + background-color: darken(@successBackground, 5%); + } + &.error:hover > td { + background-color: darken(@errorBackground, 5%); + } + &.warning:hover > td { + background-color: darken(@warningBackground, 5%); + } + &.info:hover > td { + background-color: darken(@infoBackground, 5%); + } +} diff --git a/theme/static/bootstrap/thumbnails.less b/theme/static/bootstrap/thumbnails.less new file mode 100644 index 0000000..4fd07d2 --- /dev/null +++ b/theme/static/bootstrap/thumbnails.less @@ -0,0 +1,53 @@ +// +// Thumbnails +// -------------------------------------------------- + + +// Note: `.thumbnails` and `.thumbnails > li` are overriden in responsive files + +// Make wrapper ul behave like the grid +.thumbnails { + margin-left: -@gridGutterWidth; + list-style: none; + .clearfix(); +} +// Fluid rows have no left margin +.row-fluid .thumbnails { + margin-left: 0; +} + +// Float li to make thumbnails appear in a row +.thumbnails > li { + float: left; // Explicity set the float since we don't require .span* classes + margin-bottom: @baseLineHeight; + margin-left: @gridGutterWidth; +} + +// The actual thumbnail (can be `a` or `div`) +.thumbnail { + display: block; + padding: 4px; + line-height: @baseLineHeight; + border: 1px solid #ddd; + .border-radius(@baseBorderRadius); + .box-shadow(0 1px 3px rgba(0,0,0,.055)); + .transition(all .2s ease-in-out); +} +// Add a hover/focus state for linked versions only +a.thumbnail:hover, +a.thumbnail:focus { + border-color: @linkColor; + .box-shadow(0 1px 4px rgba(0,105,214,.25)); +} + +// Images and captions +.thumbnail > img { + display: block; + max-width: 100%; + margin-left: auto; + margin-right: auto; +} +.thumbnail .caption { + padding: 9px; + color: @gray; +} diff --git a/theme/static/bootstrap/tooltip.less b/theme/static/bootstrap/tooltip.less new file mode 100644 index 0000000..83d5f2b --- /dev/null +++ b/theme/static/bootstrap/tooltip.less @@ -0,0 +1,70 @@ +// +// Tooltips +// -------------------------------------------------- + + +// Base class +.tooltip { + position: absolute; + z-index: @zindexTooltip; + display: block; + visibility: visible; + font-size: 11px; + line-height: 1.4; + .opacity(0); + &.in { .opacity(80); } + &.top { margin-top: -3px; padding: 5px 0; } + &.right { margin-left: 3px; padding: 0 5px; } + &.bottom { margin-top: 3px; padding: 5px 0; } + &.left { margin-left: -3px; padding: 0 5px; } +} + +// Wrapper for the tooltip content +.tooltip-inner { + max-width: 200px; + padding: 8px; + color: @tooltipColor; + text-align: center; + text-decoration: none; + background-color: @tooltipBackground; + .border-radius(@baseBorderRadius); +} + +// Arrows +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip { + &.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -@tooltipArrowWidth; + border-width: @tooltipArrowWidth @tooltipArrowWidth 0; + border-top-color: @tooltipArrowColor; + } + &.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -@tooltipArrowWidth; + border-width: @tooltipArrowWidth @tooltipArrowWidth @tooltipArrowWidth 0; + border-right-color: @tooltipArrowColor; + } + &.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -@tooltipArrowWidth; + border-width: @tooltipArrowWidth 0 @tooltipArrowWidth @tooltipArrowWidth; + border-left-color: @tooltipArrowColor; + } + &.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -@tooltipArrowWidth; + border-width: 0 @tooltipArrowWidth @tooltipArrowWidth; + border-bottom-color: @tooltipArrowColor; + } +} diff --git a/theme/static/bootstrap/type.less b/theme/static/bootstrap/type.less new file mode 100644 index 0000000..e9fdf78 --- /dev/null +++ b/theme/static/bootstrap/type.less @@ -0,0 +1,152 @@ +// +// Typography +// -------------------------------------------------- + + +// Body text +// ------------------------- + +p { + margin: 0 0 @baseLineHeight / 2; +} +.lead { + margin-bottom: @baseLineHeight; + font-size: @baseFontSize * 1.5; + font-weight: 200; + line-height: @baseLineHeight * 1.5; +} + + +// Emphasis & misc +// ------------------------- + +// Ex: 14px base font * 85% = about 12px +small { font-size: 85%; } + +strong { font-weight: bold; } +em { font-style: italic; } +cite { font-style: normal; } + +// Utility classes +.muted { color: @grayLight; } +a.muted:hover, +a.muted:focus { color: darken(@grayLight, 10%); } + +.text-warning { color: @warningText; } +a.text-warning:hover, +a.text-warning:focus { color: darken(@warningText, 10%); } + +.text-error { color: @errorText; } +a.text-error:hover, +a.text-error:focus { color: darken(@errorText, 10%); } + +.text-info { color: @infoText; } +a.text-info:hover, +a.text-info:focus { color: darken(@infoText, 10%); } + +.text-success { color: @successText; } +a.text-success:hover, +a.text-success:focus { color: darken(@successText, 10%); } + +.text-left { text-align: left; } +.text-right { text-align: right; } +.text-center { text-align: center; } + + +// Lists +// -------------------------------------------------- + +// Unordered and Ordered lists +ul, ol { + padding: 0; + margin: 0 0 @baseLineHeight / 2 25px; +} +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} +li { + line-height: @baseLineHeight; +} + +// Remove default list styles +ul.unstyled, +ol.unstyled { + margin-left: 0; + list-style: none; +} + +// Single-line list items +ul.inline, +ol.inline { + margin-left: 0; + list-style: none; + > li { + display: inline-block; + .ie7-inline-block(); + padding-left: 5px; + padding-right: 5px; + } +} + +// Description Lists +dl { + margin-bottom: @baseLineHeight; +} +dt, +dd { + line-height: @baseLineHeight; +} +dt { + font-weight: bold; +} +dd { + margin-left: @baseLineHeight / 2; +} +// Horizontal layout (like forms) +.dl-horizontal { + .clearfix(); // Ensure dl clears floats if empty dd elements present + dt { + float: left; + width: @horizontalComponentOffset - 20; + clear: left; + text-align: right; + .text-overflow(); + } + dd { + margin-left: @horizontalComponentOffset; + } +} + +// MISC +// ---- + +// Horizontal rules +hr { + margin: @baseLineHeight 0; + border: 0; + border-top: 1px solid @hrBorder; + border-bottom: 1px solid @white; +} + +// Abbreviations and acronyms +abbr[title], +// Added data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257 +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted @grayLight; +} +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +// Addresses +address { + display: block; + margin-bottom: @baseLineHeight; + font-style: normal; + line-height: @baseLineHeight; +} diff --git a/theme/static/bootstrap/utilities.less b/theme/static/bootstrap/utilities.less new file mode 100644 index 0000000..314b4ff --- /dev/null +++ b/theme/static/bootstrap/utilities.less @@ -0,0 +1,30 @@ +// +// Utility classes +// -------------------------------------------------- + + +// Quick floats +.pull-right { + float: right; +} +.pull-left { + float: left; +} + +// Toggling content +.hide { + display: none; +} +.show { + display: block; +} + +// Visibility +.invisible { + visibility: hidden; +} + +// For Affix plugin +.affix { + position: fixed; +} diff --git a/theme/static/bootstrap/variables.less b/theme/static/bootstrap/variables.less new file mode 100644 index 0000000..31c131b --- /dev/null +++ b/theme/static/bootstrap/variables.less @@ -0,0 +1,301 @@ +// +// Variables +// -------------------------------------------------- + + +// Global values +// -------------------------------------------------- + + +// Grays +// ------------------------- +@black: #000; +@grayDarker: #222; +@grayDark: #333; +@gray: #555; +@grayLight: #999; +@grayLighter: #eee; +@white: #fff; + + +// Accent colors +// ------------------------- +@blue: #049cdb; +@blueDark: #0064cd; +@green: #46a546; +@red: #9d261d; +@yellow: #ffc40d; +@orange: #f89406; +@pink: #c3325f; +@purple: #7a43b6; + + +// Scaffolding +// ------------------------- +@bodyBackground: @white; +@textColor: @grayDark; + + +// Links +// ------------------------- +@linkColor: #08c; +@linkColorHover: darken(@linkColor, 15%); + + +// Typography +// ------------------------- +@sansFontFamily: "Helvetica Neue", Helvetica, Arial, sans-serif; +@serifFontFamily: Georgia, "Times New Roman", Times, serif; +@monoFontFamily: Monaco, Menlo, Consolas, "Courier New", monospace; + +@baseFontSize: 14px; +@baseFontFamily: @sansFontFamily; +@baseLineHeight: 20px; +@altFontFamily: @serifFontFamily; + +@headingsFontFamily: inherit; // empty to use BS default, @baseFontFamily +@headingsFontWeight: bold; // instead of browser default, bold +@headingsColor: inherit; // empty to use BS default, @textColor + + +// Component sizing +// ------------------------- +// Based on 14px font-size and 20px line-height + +@fontSizeLarge: @baseFontSize * 1.25; // ~18px +@fontSizeSmall: @baseFontSize * 0.85; // ~12px +@fontSizeMini: @baseFontSize * 0.75; // ~11px + +@paddingLarge: 11px 19px; // 44px +@paddingSmall: 2px 10px; // 26px +@paddingMini: 0 6px; // 22px + +@baseBorderRadius: 4px; +@borderRadiusLarge: 6px; +@borderRadiusSmall: 3px; + + +// Tables +// ------------------------- +@tableBackground: transparent; // overall background-color +@tableBackgroundAccent: #f9f9f9; // for striping +@tableBackgroundHover: #f5f5f5; // for hover +@tableBorder: #ddd; // table and cell border + +// Buttons +// ------------------------- +@btnBackground: @white; +@btnBackgroundHighlight: darken(@white, 10%); +@btnBorder: #ccc; + +@btnPrimaryBackground: @linkColor; +@btnPrimaryBackgroundHighlight: spin(@btnPrimaryBackground, 20%); + +@btnInfoBackground: #5bc0de; +@btnInfoBackgroundHighlight: #2f96b4; + +@btnSuccessBackground: #62c462; +@btnSuccessBackgroundHighlight: #51a351; + +@btnWarningBackground: lighten(@orange, 15%); +@btnWarningBackgroundHighlight: @orange; + +@btnDangerBackground: #ee5f5b; +@btnDangerBackgroundHighlight: #bd362f; + +@btnInverseBackground: #444; +@btnInverseBackgroundHighlight: @grayDarker; + + +// Forms +// ------------------------- +@inputBackground: @white; +@inputBorder: #ccc; +@inputBorderRadius: @baseBorderRadius; +@inputDisabledBackground: @grayLighter; +@formActionsBackground: #f5f5f5; +@inputHeight: @baseLineHeight + 10px; // base line-height + 8px vertical padding + 2px top/bottom border + + +// Dropdowns +// ------------------------- +@dropdownBackground: @white; +@dropdownBorder: rgba(0,0,0,.2); +@dropdownDividerTop: #e5e5e5; +@dropdownDividerBottom: @white; + +@dropdownLinkColor: @grayDark; +@dropdownLinkColorHover: @white; +@dropdownLinkColorActive: @white; + +@dropdownLinkBackgroundActive: @linkColor; +@dropdownLinkBackgroundHover: @dropdownLinkBackgroundActive; + + + +// COMPONENT VARIABLES +// -------------------------------------------------- + + +// Z-index master list +// ------------------------- +// Used for a bird's eye view of components dependent on the z-axis +// Try to avoid customizing these :) +@zindexDropdown: 1000; +@zindexPopover: 1010; +@zindexTooltip: 1030; +@zindexFixedNavbar: 1030; +@zindexModalBackdrop: 1040; +@zindexModal: 1050; + + +// Sprite icons path +// ------------------------- +@iconSpritePath: "../img/glyphicons-halflings.png"; +@iconWhiteSpritePath: "../img/glyphicons-halflings-white.png"; + + +// Input placeholder text color +// ------------------------- +@placeholderText: @grayLight; + + +// Hr border color +// ------------------------- +@hrBorder: @grayLighter; + + +// Horizontal forms & lists +// ------------------------- +@horizontalComponentOffset: 180px; + + +// Wells +// ------------------------- +@wellBackground: #f5f5f5; + + +// Navbar +// ------------------------- +@navbarCollapseWidth: 979px; +@navbarCollapseDesktopWidth: @navbarCollapseWidth + 1; + +@navbarHeight: 40px; +@navbarBackgroundHighlight: #ffffff; +@navbarBackground: darken(@navbarBackgroundHighlight, 5%); +@navbarBorder: darken(@navbarBackground, 12%); + +@navbarText: #777; +@navbarLinkColor: #777; +@navbarLinkColorHover: @grayDark; +@navbarLinkColorActive: @gray; +@navbarLinkBackgroundHover: transparent; +@navbarLinkBackgroundActive: darken(@navbarBackground, 5%); + +@navbarBrandColor: @navbarLinkColor; + +// Inverted navbar +@navbarInverseBackground: #111111; +@navbarInverseBackgroundHighlight: #222222; +@navbarInverseBorder: #252525; + +@navbarInverseText: @grayLight; +@navbarInverseLinkColor: @grayLight; +@navbarInverseLinkColorHover: @white; +@navbarInverseLinkColorActive: @navbarInverseLinkColorHover; +@navbarInverseLinkBackgroundHover: transparent; +@navbarInverseLinkBackgroundActive: @navbarInverseBackground; + +@navbarInverseSearchBackground: lighten(@navbarInverseBackground, 25%); +@navbarInverseSearchBackgroundFocus: @white; +@navbarInverseSearchBorder: @navbarInverseBackground; +@navbarInverseSearchPlaceholderColor: #ccc; + +@navbarInverseBrandColor: @navbarInverseLinkColor; + + +// Pagination +// ------------------------- +@paginationBackground: #fff; +@paginationBorder: #ddd; +@paginationActiveBackground: #f5f5f5; + + +// Hero unit +// ------------------------- +@heroUnitBackground: @grayLighter; +@heroUnitHeadingColor: inherit; +@heroUnitLeadColor: inherit; + + +// Form states and alerts +// ------------------------- +@warningText: #c09853; +@warningBackground: #fcf8e3; +@warningBorder: darken(spin(@warningBackground, -10), 3%); + +@errorText: #b94a48; +@errorBackground: #f2dede; +@errorBorder: darken(spin(@errorBackground, -10), 3%); + +@successText: #468847; +@successBackground: #dff0d8; +@successBorder: darken(spin(@successBackground, -10), 5%); + +@infoText: #3a87ad; +@infoBackground: #d9edf7; +@infoBorder: darken(spin(@infoBackground, -10), 7%); + + +// Tooltips and popovers +// ------------------------- +@tooltipColor: #fff; +@tooltipBackground: #000; +@tooltipArrowWidth: 5px; +@tooltipArrowColor: @tooltipBackground; + +@popoverBackground: #fff; +@popoverArrowWidth: 10px; +@popoverArrowColor: #fff; +@popoverTitleBackground: darken(@popoverBackground, 3%); + +// Special enhancement for popovers +@popoverArrowOuterWidth: @popoverArrowWidth + 1; +@popoverArrowOuterColor: rgba(0,0,0,.25); + + + +// GRID +// -------------------------------------------------- + + +// Default 940px grid +// ------------------------- +@gridColumns: 12; +@gridColumnWidth: 60px; +@gridGutterWidth: 20px; +@gridRowWidth: (@gridColumns * @gridColumnWidth) + (@gridGutterWidth * (@gridColumns - 1)); + +// 1200px min +@gridColumnWidth1200: 70px; +@gridGutterWidth1200: 30px; +@gridRowWidth1200: (@gridColumns * @gridColumnWidth1200) + (@gridGutterWidth1200 * (@gridColumns - 1)); + +// 768px-979px +@gridColumnWidth768: 42px; +@gridGutterWidth768: 20px; +@gridRowWidth768: (@gridColumns * @gridColumnWidth768) + (@gridGutterWidth768 * (@gridColumns - 1)); + + +// Fluid grid +// ------------------------- +@fluidGridColumnWidth: percentage(@gridColumnWidth/@gridRowWidth); +@fluidGridGutterWidth: percentage(@gridGutterWidth/@gridRowWidth); + +// 1200px min +@fluidGridColumnWidth1200: percentage(@gridColumnWidth1200/@gridRowWidth1200); +@fluidGridGutterWidth1200: percentage(@gridGutterWidth1200/@gridRowWidth1200); + +// 768px-979px +@fluidGridColumnWidth768: percentage(@gridColumnWidth768/@gridRowWidth768); +@fluidGridGutterWidth768: percentage(@gridGutterWidth768/@gridRowWidth768); diff --git a/theme/static/bootstrap/wells.less b/theme/static/bootstrap/wells.less new file mode 100644 index 0000000..84a744b --- /dev/null +++ b/theme/static/bootstrap/wells.less @@ -0,0 +1,29 @@ +// +// Wells +// -------------------------------------------------- + + +// Base class +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: @wellBackground; + border: 1px solid darken(@wellBackground, 7%); + .border-radius(@baseBorderRadius); + .box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); + blockquote { + border-color: #ddd; + border-color: rgba(0,0,0,.15); + } +} + +// Sizes +.well-large { + padding: 24px; + .border-radius(@borderRadiusLarge); +} +.well-small { + padding: 9px; + .border-radius(@borderRadiusSmall); +} diff --git a/theme/static/clipboard/clipboard.js b/theme/static/clipboard/clipboard.js new file mode 100644 index 0000000..b7f55b2 --- /dev/null +++ b/theme/static/clipboard/clipboard.js @@ -0,0 +1,1170 @@ +/*! + * clipboard.js v2.0.4 + * https://zenorocha.github.io/clipboard.js + * + * Licensed MIT © Zeno Rocha + */ +(function webpackUniversalModuleDefinition(root, factory) { + if (typeof exports === "object" && typeof module === "object") + module.exports = factory(); + else if (typeof define === "function" && define.amd) define([], factory); + else if (typeof exports === "object") exports["ClipboardJS"] = factory(); + else root["ClipboardJS"] = factory(); +})(this, function() { + return /******/ (function(modules) { + // webpackBootstrap + /******/ // The module cache + /******/ var installedModules = {}; // The require function + /******/ + /******/ /******/ function __webpack_require__(moduleId) { + /******/ + /******/ // Check if module is in cache + /******/ if (installedModules[moduleId]) { + /******/ return installedModules[moduleId].exports; + /******/ + } // Create a new module (and put it into the cache) + /******/ /******/ var module = (installedModules[moduleId] = { + /******/ i: moduleId, + /******/ l: false, + /******/ exports: {} + /******/ + }); // Execute the module function + /******/ + /******/ /******/ modules[moduleId].call( + module.exports, + module, + module.exports, + __webpack_require__ + ); // Flag the module as loaded + /******/ + /******/ /******/ module.l = true; // Return the exports of the module + /******/ + /******/ /******/ return module.exports; + /******/ + } // expose the modules object (__webpack_modules__) + /******/ + /******/ + /******/ /******/ __webpack_require__.m = modules; // expose the module cache + /******/ + /******/ /******/ __webpack_require__.c = installedModules; // define getter function for harmony exports + /******/ + /******/ /******/ __webpack_require__.d = function(exports, name, getter) { + /******/ if (!__webpack_require__.o(exports, name)) { + /******/ Object.defineProperty(exports, name, { + enumerable: true, + get: getter + }); + /******/ + } + /******/ + }; // define __esModule on exports + /******/ + /******/ /******/ __webpack_require__.r = function(exports) { + /******/ if (typeof Symbol !== "undefined" && Symbol.toStringTag) { + /******/ Object.defineProperty(exports, Symbol.toStringTag, { + value: "Module" + }); + /******/ + } + /******/ Object.defineProperty(exports, "__esModule", { value: true }); + /******/ + }; // create a fake namespace object // mode & 1: value is a module id, require it // mode & 2: merge all properties of value into the ns // mode & 4: return value when already ns object // mode & 8|1: behave like require + /******/ + /******/ /******/ /******/ /******/ /******/ /******/ __webpack_require__.t = function( + value, + mode + ) { + /******/ if (mode & 1) value = __webpack_require__(value); + /******/ if (mode & 8) return value; + /******/ if ( + mode & 4 && + typeof value === "object" && + value && + value.__esModule + ) + return value; + /******/ var ns = Object.create(null); + /******/ __webpack_require__.r(ns); + /******/ Object.defineProperty(ns, "default", { + enumerable: true, + value: value + }); + /******/ if (mode & 2 && typeof value != "string") + for (var key in value) + __webpack_require__.d( + ns, + key, + function(key) { + return value[key]; + }.bind(null, key) + ); + /******/ return ns; + /******/ + }; // getDefaultExport function for compatibility with non-harmony modules + /******/ + /******/ /******/ __webpack_require__.n = function(module) { + /******/ var getter = + module && module.__esModule + ? /******/ function getDefault() { + return module["default"]; + } + : /******/ function getModuleExports() { + return module; + }; + /******/ __webpack_require__.d(getter, "a", getter); + /******/ return getter; + /******/ + }; // Object.prototype.hasOwnProperty.call + /******/ + /******/ /******/ __webpack_require__.o = function(object, property) { + return Object.prototype.hasOwnProperty.call(object, property); + }; // __webpack_public_path__ + /******/ + /******/ /******/ __webpack_require__.p = ""; // Load entry module and return exports + /******/ + /******/ + /******/ /******/ return __webpack_require__((__webpack_require__.s = 0)); + /******/ + })( + /************************************************************************/ + /******/ [ + /* 0 */ + /***/ function(module, exports, __webpack_require__) { + "use strict"; + + var _typeof = + typeof Symbol === "function" && typeof Symbol.iterator === "symbol" + ? function(obj) { + return typeof obj; + } + : function(obj) { + return obj && + typeof Symbol === "function" && + obj.constructor === Symbol && + obj !== Symbol.prototype + ? "symbol" + : typeof obj; + }; + + var _createClass = (function() { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + return function(Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; + })(); + + var _clipboardAction = __webpack_require__(1); + + var _clipboardAction2 = _interopRequireDefault(_clipboardAction); + + var _tinyEmitter = __webpack_require__(3); + + var _tinyEmitter2 = _interopRequireDefault(_tinyEmitter); + + var _goodListener = __webpack_require__(4); + + var _goodListener2 = _interopRequireDefault(_goodListener); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + function _possibleConstructorReturn(self, call) { + if (!self) { + throw new ReferenceError( + "this hasn't been initialised - super() hasn't been called" + ); + } + return call && + (typeof call === "object" || typeof call === "function") + ? call + : self; + } + + function _inherits(subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError( + "Super expression must either be null or a function, not " + + typeof superClass + ); + } + subClass.prototype = Object.create( + superClass && superClass.prototype, + { + constructor: { + value: subClass, + enumerable: false, + writable: true, + configurable: true + } + } + ); + if (superClass) + Object.setPrototypeOf + ? Object.setPrototypeOf(subClass, superClass) + : (subClass.__proto__ = superClass); + } + + /** + * Base class which takes one or more elements, adds event listeners to them, + * and instantiates a new `ClipboardAction` on each click. + */ + var Clipboard = (function(_Emitter) { + _inherits(Clipboard, _Emitter); + + /** + * @param {String|HTMLElement|HTMLCollection|NodeList} trigger + * @param {Object} options + */ + function Clipboard(trigger, options) { + _classCallCheck(this, Clipboard); + + var _this = _possibleConstructorReturn( + this, + (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call( + this + ) + ); + + _this.resolveOptions(options); + _this.listenClick(trigger); + return _this; + } + + /** + * Defines if attributes would be resolved using internal setter functions + * or custom functions that were passed in the constructor. + * @param {Object} options + */ + + _createClass( + Clipboard, + [ + { + key: "resolveOptions", + value: function resolveOptions() { + var options = + arguments.length > 0 && arguments[0] !== undefined + ? arguments[0] + : {}; + + this.action = + typeof options.action === "function" + ? options.action + : this.defaultAction; + this.target = + typeof options.target === "function" + ? options.target + : this.defaultTarget; + this.text = + typeof options.text === "function" + ? options.text + : this.defaultText; + this.container = + _typeof(options.container) === "object" + ? options.container + : document.body; + } + + /** + * Adds a click event listener to the passed trigger. + * @param {String|HTMLElement|HTMLCollection|NodeList} trigger + */ + }, + { + key: "listenClick", + value: function listenClick(trigger) { + var _this2 = this; + + this.listener = (0, _goodListener2.default)( + trigger, + "click", + function(e) { + return _this2.onClick(e); + } + ); + } + + /** + * Defines a new `ClipboardAction` on each click event. + * @param {Event} e + */ + }, + { + key: "onClick", + value: function onClick(e) { + var trigger = e.delegateTarget || e.currentTarget; + + if (this.clipboardAction) { + this.clipboardAction = null; + } + + this.clipboardAction = new _clipboardAction2.default({ + action: this.action(trigger), + target: this.target(trigger), + text: this.text(trigger), + container: this.container, + trigger: trigger, + emitter: this + }); + } + + /** + * Default `action` lookup function. + * @param {Element} trigger + */ + }, + { + key: "defaultAction", + value: function defaultAction(trigger) { + return getAttributeValue("action", trigger); + } + + /** + * Default `target` lookup function. + * @param {Element} trigger + */ + }, + { + key: "defaultTarget", + value: function defaultTarget(trigger) { + var selector = getAttributeValue("target", trigger); + + if (selector) { + return document.querySelector(selector); + } + } + + /** + * Returns the support of the given action, or all actions if no action is + * given. + * @param {String} [action] + */ + }, + { + key: "defaultText", + + /** + * Default `text` lookup function. + * @param {Element} trigger + */ + value: function defaultText(trigger) { + return getAttributeValue("text", trigger); + } + + /** + * Destroy lifecycle. + */ + }, + { + key: "destroy", + value: function destroy() { + this.listener.destroy(); + + if (this.clipboardAction) { + this.clipboardAction.destroy(); + this.clipboardAction = null; + } + } + } + ], + [ + { + key: "isSupported", + value: function isSupported() { + var action = + arguments.length > 0 && arguments[0] !== undefined + ? arguments[0] + : ["copy", "cut"]; + + var actions = typeof action === "string" ? [action] : action; + var support = !!document.queryCommandSupported; + + actions.forEach(function(action) { + support = + support && !!document.queryCommandSupported(action); + }); + + return support; + } + } + ] + ); + + return Clipboard; + })(_tinyEmitter2.default); + + /** + * Helper function to retrieve attribute value. + * @param {String} suffix + * @param {Element} element + */ + + function getAttributeValue(suffix, element) { + var attribute = "data-clipboard-" + suffix; + + if (!element.hasAttribute(attribute)) { + return; + } + + return element.getAttribute(attribute); + } + + module.exports = Clipboard; + + /***/ + }, + /* 1 */ + /***/ function(module, exports, __webpack_require__) { + "use strict"; + + var _typeof = + typeof Symbol === "function" && typeof Symbol.iterator === "symbol" + ? function(obj) { + return typeof obj; + } + : function(obj) { + return obj && + typeof Symbol === "function" && + obj.constructor === Symbol && + obj !== Symbol.prototype + ? "symbol" + : typeof obj; + }; + + var _createClass = (function() { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + return function(Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; + })(); + + var _select = __webpack_require__(2); + + var _select2 = _interopRequireDefault(_select); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + /** + * Inner class which performs selection from either `text` or `target` + * properties and then executes copy or cut operations. + */ + var ClipboardAction = (function() { + /** + * @param {Object} options + */ + function ClipboardAction(options) { + _classCallCheck(this, ClipboardAction); + + this.resolveOptions(options); + this.initSelection(); + } + + /** + * Defines base properties passed from constructor. + * @param {Object} options + */ + + _createClass(ClipboardAction, [ + { + key: "resolveOptions", + value: function resolveOptions() { + var options = + arguments.length > 0 && arguments[0] !== undefined + ? arguments[0] + : {}; + + this.action = options.action; + this.container = options.container; + this.emitter = options.emitter; + this.target = options.target; + this.text = options.text; + this.trigger = options.trigger; + + this.selectedText = ""; + } + + /** + * Decides which selection strategy is going to be applied based + * on the existence of `text` and `target` properties. + */ + }, + { + key: "initSelection", + value: function initSelection() { + if (this.text) { + this.selectFake(); + } else if (this.target) { + this.selectTarget(); + } + } + + /** + * Creates a fake textarea element, sets its value from `text` property, + * and makes a selection on it. + */ + }, + { + key: "selectFake", + value: function selectFake() { + var _this = this; + + var isRTL = + document.documentElement.getAttribute("dir") == "rtl"; + + this.removeFake(); + + this.fakeHandlerCallback = function() { + return _this.removeFake(); + }; + this.fakeHandler = + this.container.addEventListener( + "click", + this.fakeHandlerCallback + ) || true; + + this.fakeElem = document.createElement("textarea"); + // Prevent zooming on iOS + this.fakeElem.style.fontSize = "12pt"; + // Reset box model + this.fakeElem.style.border = "0"; + this.fakeElem.style.padding = "0"; + this.fakeElem.style.margin = "0"; + // Move element out of screen horizontally + this.fakeElem.style.position = "absolute"; + this.fakeElem.style[isRTL ? "right" : "left"] = "-9999px"; + // Move element to the same position vertically + var yPosition = + window.pageYOffset || document.documentElement.scrollTop; + this.fakeElem.style.top = yPosition + "px"; + + this.fakeElem.setAttribute("readonly", ""); + this.fakeElem.value = this.text; + + this.container.appendChild(this.fakeElem); + + this.selectedText = (0, _select2.default)(this.fakeElem); + this.copyText(); + } + + /** + * Only removes the fake element after another click event, that way + * a user can hit `Ctrl+C` to copy because selection still exists. + */ + }, + { + key: "removeFake", + value: function removeFake() { + if (this.fakeHandler) { + this.container.removeEventListener( + "click", + this.fakeHandlerCallback + ); + this.fakeHandler = null; + this.fakeHandlerCallback = null; + } + + if (this.fakeElem) { + this.container.removeChild(this.fakeElem); + this.fakeElem = null; + } + } + + /** + * Selects the content from element passed on `target` property. + */ + }, + { + key: "selectTarget", + value: function selectTarget() { + this.selectedText = (0, _select2.default)(this.target); + this.copyText(); + } + + /** + * Executes the copy operation based on the current selection. + */ + }, + { + key: "copyText", + value: function copyText() { + var succeeded = void 0; + + try { + succeeded = document.execCommand(this.action); + } catch (err) { + succeeded = false; + } + + this.handleResult(succeeded); + } + + /** + * Fires an event based on the copy operation result. + * @param {Boolean} succeeded + */ + }, + { + key: "handleResult", + value: function handleResult(succeeded) { + this.emitter.emit(succeeded ? "success" : "error", { + action: this.action, + text: this.selectedText, + trigger: this.trigger, + clearSelection: this.clearSelection.bind(this) + }); + } + + /** + * Moves focus away from `target` and back to the trigger, removes current selection. + */ + }, + { + key: "clearSelection", + value: function clearSelection() { + if (this.trigger) { + this.trigger.focus(); + } + + window.getSelection().removeAllRanges(); + } + + /** + * Sets the `action` to be performed which can be either 'copy' or 'cut'. + * @param {String} action + */ + }, + { + key: "destroy", + + /** + * Destroy lifecycle. + */ + value: function destroy() { + this.removeFake(); + } + }, + { + key: "action", + set: function set() { + var action = + arguments.length > 0 && arguments[0] !== undefined + ? arguments[0] + : "copy"; + + this._action = action; + + if (this._action !== "copy" && this._action !== "cut") { + throw new Error( + 'Invalid "action" value, use either "copy" or "cut"' + ); + } + }, + + /** + * Gets the `action` property. + * @return {String} + */ + get: function get() { + return this._action; + } + + /** + * Sets the `target` property using an element + * that will be have its content copied. + * @param {Element} target + */ + }, + { + key: "target", + set: function set(target) { + if (target !== undefined) { + if ( + target && + (typeof target === "undefined" + ? "undefined" + : _typeof(target)) === "object" && + target.nodeType === 1 + ) { + if ( + this.action === "copy" && + target.hasAttribute("disabled") + ) { + throw new Error( + 'Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute' + ); + } + + if ( + this.action === "cut" && + (target.hasAttribute("readonly") || + target.hasAttribute("disabled")) + ) { + throw new Error( + 'Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes' + ); + } + + this._target = target; + } else { + throw new Error( + 'Invalid "target" value, use a valid Element' + ); + } + } + }, + + /** + * Gets the `target` property. + * @return {String|HTMLElement} + */ + get: function get() { + return this._target; + } + } + ]); + + return ClipboardAction; + })(); + + module.exports = ClipboardAction; + + /***/ + }, + /* 2 */ + /***/ function(module, exports) { + function select(element) { + var selectedText; + + if (element.nodeName === "SELECT") { + element.focus(); + + selectedText = element.value; + } else if ( + element.nodeName === "INPUT" || + element.nodeName === "TEXTAREA" + ) { + var isReadOnly = element.hasAttribute("readonly"); + + if (!isReadOnly) { + element.setAttribute("readonly", ""); + } + + element.select(); + element.setSelectionRange(0, element.value.length); + + if (!isReadOnly) { + element.removeAttribute("readonly"); + } + + selectedText = element.value; + } else { + if (element.hasAttribute("contenteditable")) { + element.focus(); + } + + var selection = window.getSelection(); + var range = document.createRange(); + + range.selectNodeContents(element); + selection.removeAllRanges(); + selection.addRange(range); + + selectedText = selection.toString(); + } + + return selectedText; + } + + module.exports = select; + + /***/ + }, + /* 3 */ + /***/ function(module, exports) { + function E() { + // Keep this empty so it's easier to inherit from + // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3) + } + + E.prototype = { + on: function(name, callback, ctx) { + var e = this.e || (this.e = {}); + + (e[name] || (e[name] = [])).push({ + fn: callback, + ctx: ctx + }); + + return this; + }, + + once: function(name, callback, ctx) { + var self = this; + function listener() { + self.off(name, listener); + callback.apply(ctx, arguments); + } + + listener._ = callback; + return this.on(name, listener, ctx); + }, + + emit: function(name) { + var data = [].slice.call(arguments, 1); + var evtArr = ((this.e || (this.e = {}))[name] || []).slice(); + var i = 0; + var len = evtArr.length; + + for (i; i < len; i++) { + evtArr[i].fn.apply(evtArr[i].ctx, data); + } + + return this; + }, + + off: function(name, callback) { + var e = this.e || (this.e = {}); + var evts = e[name]; + var liveEvents = []; + + if (evts && callback) { + for (var i = 0, len = evts.length; i < len; i++) { + if (evts[i].fn !== callback && evts[i].fn._ !== callback) + liveEvents.push(evts[i]); + } + } + + // Remove event from queue to prevent memory leak + // Suggested by https://github.com/lazd + // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910 + + liveEvents.length ? (e[name] = liveEvents) : delete e[name]; + + return this; + } + }; + + module.exports = E; + + /***/ + }, + /* 4 */ + /***/ function(module, exports, __webpack_require__) { + var is = __webpack_require__(5); + var delegate = __webpack_require__(6); + + /** + * Validates all params and calls the right + * listener function based on its target type. + * + * @param {String|HTMLElement|HTMLCollection|NodeList} target + * @param {String} type + * @param {Function} callback + * @return {Object} + */ + function listen(target, type, callback) { + if (!target && !type && !callback) { + throw new Error("Missing required arguments"); + } + + if (!is.string(type)) { + throw new TypeError("Second argument must be a String"); + } + + if (!is.fn(callback)) { + throw new TypeError("Third argument must be a Function"); + } + + if (is.node(target)) { + return listenNode(target, type, callback); + } else if (is.nodeList(target)) { + return listenNodeList(target, type, callback); + } else if (is.string(target)) { + return listenSelector(target, type, callback); + } else { + throw new TypeError( + "First argument must be a String, HTMLElement, HTMLCollection, or NodeList" + ); + } + } + + /** + * Adds an event listener to a HTML element + * and returns a remove listener function. + * + * @param {HTMLElement} node + * @param {String} type + * @param {Function} callback + * @return {Object} + */ + function listenNode(node, type, callback) { + node.addEventListener(type, callback); + + return { + destroy: function() { + node.removeEventListener(type, callback); + } + }; + } + + /** + * Add an event listener to a list of HTML elements + * and returns a remove listener function. + * + * @param {NodeList|HTMLCollection} nodeList + * @param {String} type + * @param {Function} callback + * @return {Object} + */ + function listenNodeList(nodeList, type, callback) { + Array.prototype.forEach.call(nodeList, function(node) { + node.addEventListener(type, callback); + }); + + return { + destroy: function() { + Array.prototype.forEach.call(nodeList, function(node) { + node.removeEventListener(type, callback); + }); + } + }; + } + + /** + * Add an event listener to a selector + * and returns a remove listener function. + * + * @param {String} selector + * @param {String} type + * @param {Function} callback + * @return {Object} + */ + function listenSelector(selector, type, callback) { + return delegate(document.body, selector, type, callback); + } + + module.exports = listen; + + /***/ + }, + /* 5 */ + /***/ function(module, exports) { + /** + * Check if argument is a HTML element. + * + * @param {Object} value + * @return {Boolean} + */ + exports.node = function(value) { + return ( + value !== undefined && + value instanceof HTMLElement && + value.nodeType === 1 + ); + }; + + /** + * Check if argument is a list of HTML elements. + * + * @param {Object} value + * @return {Boolean} + */ + exports.nodeList = function(value) { + var type = Object.prototype.toString.call(value); + + return ( + value !== undefined && + (type === "[object NodeList]" || + type === "[object HTMLCollection]") && + "length" in value && + (value.length === 0 || exports.node(value[0])) + ); + }; + + /** + * Check if argument is a string. + * + * @param {Object} value + * @return {Boolean} + */ + exports.string = function(value) { + return typeof value === "string" || value instanceof String; + }; + + /** + * Check if argument is a function. + * + * @param {Object} value + * @return {Boolean} + */ + exports.fn = function(value) { + var type = Object.prototype.toString.call(value); + + return type === "[object Function]"; + }; + + /***/ + }, + /* 6 */ + /***/ function(module, exports, __webpack_require__) { + var closest = __webpack_require__(7); + + /** + * Delegates event to a selector. + * + * @param {Element} element + * @param {String} selector + * @param {String} type + * @param {Function} callback + * @param {Boolean} useCapture + * @return {Object} + */ + function _delegate(element, selector, type, callback, useCapture) { + var listenerFn = listener.apply(this, arguments); + + element.addEventListener(type, listenerFn, useCapture); + + return { + destroy: function() { + element.removeEventListener(type, listenerFn, useCapture); + } + }; + } + + /** + * Delegates event to a selector. + * + * @param {Element|String|Array} [elements] + * @param {String} selector + * @param {String} type + * @param {Function} callback + * @param {Boolean} useCapture + * @return {Object} + */ + function delegate(elements, selector, type, callback, useCapture) { + // Handle the regular Element usage + if (typeof elements.addEventListener === "function") { + return _delegate.apply(null, arguments); + } + + // Handle Element-less usage, it defaults to global delegation + if (typeof type === "function") { + // Use `document` as the first parameter, then apply arguments + // This is a short way to .unshift `arguments` without running into deoptimizations + return _delegate.bind(null, document).apply(null, arguments); + } + + // Handle Selector-based usage + if (typeof elements === "string") { + elements = document.querySelectorAll(elements); + } + + // Handle Array-like based usage + return Array.prototype.map.call(elements, function(element) { + return _delegate(element, selector, type, callback, useCapture); + }); + } + + /** + * Finds closest match and invokes callback. + * + * @param {Element} element + * @param {String} selector + * @param {String} type + * @param {Function} callback + * @return {Function} + */ + function listener(element, selector, type, callback) { + return function(e) { + e.delegateTarget = closest(e.target, selector); + + if (e.delegateTarget) { + callback.call(element, e); + } + }; + } + + module.exports = delegate; + + /***/ + }, + /* 7 */ + /***/ function(module, exports) { + var DOCUMENT_NODE_TYPE = 9; + + /** + * A polyfill for Element.matches() + */ + if (typeof Element !== "undefined" && !Element.prototype.matches) { + var proto = Element.prototype; + + proto.matches = + proto.matchesSelector || + proto.mozMatchesSelector || + proto.msMatchesSelector || + proto.oMatchesSelector || + proto.webkitMatchesSelector; + } + + /** + * Finds the closest parent that matches a selector. + * + * @param {Element} element + * @param {String} selector + * @return {Function} + */ + function closest(element, selector) { + while (element && element.nodeType !== DOCUMENT_NODE_TYPE) { + if ( + typeof element.matches === "function" && + element.matches(selector) + ) { + return element; + } + element = element.parentNode; + } + } + + module.exports = closest; + + /***/ + } + /******/ + ] + ); +}); diff --git a/theme/static/css/admonition.css b/theme/static/css/admonition.css new file mode 100644 index 0000000..7ababeb --- /dev/null +++ b/theme/static/css/admonition.css @@ -0,0 +1,153 @@ +/* Admonition styles */ +div.admonition { + padding: 0; + margin-bottom: 20px; + background-color: #fcf8e3; + border: 1px solid; + border-bottom-left-radius: var(--border-radius); + border-bottom-right-radius: var(--border-radius); +} + +div.admonition p { + margin: 0.5em 1em 0.5em 1em; + padding: 0; +} + +div.admonition p a { + color: inherit !important; +} + +div.admonition div.highlight { + margin-left: 1em; + margin-right: 1em; +} + +div.admonition table.highlighttable { + padding-left: 1em; + padding-right: 1em; +} + +div.admonition table.highlighttable div.highlight { + margin-left: 0; + margin-right: 0; +} + +div.admonition p.admonition-title { + color: #fff; + margin: 0; + padding: 0.1em 0 0.1em 0.5em; + font-weight: bold; +} + +div.admonition ul, +div.admonition ol { + margin: 0.1em 0.5em 0.5em 3em; + padding: 0; +} + +/* -- danger, error -- */ +div.danger, +div.error { + color: #b94a48; + background-color: #f2dede; +} + +div.danger p.admonition-title, +div.error p.admonition-title { + background-color: #b94a48; +} + +/* -- warning, caution, attention -- */ +div.warning, +div.caution, +div.attention { + color: #c09853; +} +div.warning p.admonition-title, +div.caution p.admonition-title, +div.attention p.admonition-title { + background-color: #c09853; +} + +/* -- note, important -- */ +div.note, +div.important { + color: #468847; + background-color: #dff0d8; +} + +div.note p.admonition-title, +div.important p.admonition-title { + background-color: #468847; +} + +/* -- hint, tip -- */ +div.hint, +div.tip { + color: #3a87ad; + background-color: #d9edf7; +} + +div.hint p.admonition-title, +div.tip p.admonition-title { + background-color: #3a87ad; +} + +div.danger p.admonition-title:before, +div.error p.admonition-title:before, +div.warning p.admonition-title:before, +div.caution p.admonition-title:before, +div.attention p.admonition-title:before, +div.important p.admonition-title:before, +div.note p.admonition-title:before, +div.hint p.admonition-title:before, +div.tip p.admonition-title:before { + display: inline-block; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +div.danger p.admonition-title:before, +div.error p.admonition-title:before { + height: 20px; + width: 23px; + background-size: 20px 20px; + content: ""; + background-repeat: no-repeat; + background-image: url('data:image/svg+xml; utf8, <svg aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="white" d="M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"></path></svg>'); + vertical-align: -20%; +} +div.warning p.admonition-title:before, +div.caution p.admonition-title:before, +div.attention p.admonition-title:before { + height: 20px; + width: 23px; + background-size: 20px 20px; + content: ""; + background-repeat: no-repeat; + background-image: url('data:image/svg+xml; utf8, <svg aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path fill="white" d="M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"></path></svg>'); + vertical-align: -20%; +} +div.important p.admonition-title:before, +div.note p.admonition-title:before { + height: 20px; + width: 23px; + background-size: 20px 20px; + content: ""; + background-repeat: no-repeat; + background-image: url('data:image/svg+xml; utf8, <svg aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="white" d="M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"></path></svg>'); + vertical-align: -20%; +} +div.hint p.admonition-title:before, +div.tip p.admonition-title:before { + height: 20px; + width: 23px; + background-size: 20px 20px; + content: ""; + background-repeat: no-repeat; + background-image: url('data:image/svg+xml; utf8, <svg aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 352 512"><path fill="white" d="M176 80c-52.94 0-96 43.06-96 96 0 8.84 7.16 16 16 16s16-7.16 16-16c0-35.3 28.72-64 64-64 8.84 0 16-7.16 16-16s-7.16-16-16-16zM96.06 459.17c0 3.15.93 6.22 2.68 8.84l24.51 36.84c2.97 4.46 7.97 7.14 13.32 7.14h78.85c5.36 0 10.36-2.68 13.32-7.14l24.51-36.84c1.74-2.62 2.67-5.7 2.68-8.84l.05-43.18H96.02l.04 43.18zM176 0C73.72 0 0 82.97 0 176c0 44.37 16.45 84.85 43.56 115.78 16.64 18.99 42.74 58.8 52.42 92.16v.06h48v-.12c-.01-4.77-.72-9.51-2.15-14.07-5.59-17.81-22.82-64.77-62.17-109.67-20.54-23.43-31.52-53.15-31.61-84.14-.2-73.64 59.67-128 127.95-128 70.58 0 128 57.42 128 128 0 30.97-11.24 60.85-31.65 84.14-39.11 44.61-56.42 91.47-62.1 109.46a47.507 47.507 0 0 0-2.22 14.3v.1h48v-.05c9.68-33.37 35.78-73.18 52.42-92.16C335.55 260.85 352 220.37 352 176 352 78.8 273.2 0 176 0z"></path></svg>'); + vertical-align: -20%; +} diff --git a/theme/static/css/applause-button.css b/theme/static/css/applause-button.css new file mode 100644 index 0000000..f275d99 --- /dev/null +++ b/theme/static/css/applause-button.css @@ -0,0 +1,15 @@ +div.applause_button { + display: flex; + justify-content: flex-end; + & applause-button { + height: 50px; + width: 50px; + & div.style-root { + /* We are forced to use important because applause-button has defined + * style on the element */ + fill: maroon !important; + stroke: maroon !important; + color: maroon !important; + } + } +} diff --git a/theme/static/css/blockquote.css b/theme/static/css/blockquote.css new file mode 100644 index 0000000..8ab1728 --- /dev/null +++ b/theme/static/css/blockquote.css @@ -0,0 +1,38 @@ +.article-content { + & blockquote { + --quotes-margin: 13px; + background: Cornsilk; + border-left: 5px solid goldenrod; + border-radius: var(--border-radius); + box-sizing: border-box; + margin: 1rem auto 2rem; + padding: 0.1rem 1.2rem; + position: relative; + width: 80%; + &:before, + &:after { + color: dimgray; + font-size: 4rem; + line-height: 0; + margin: 0; + padding: 0; + position: absolute; + } + &:before { + content: open-quote; + margin-right: var(--quotes-margin); + right: 100%; + top: 30px; + } + &:after { + bottom: 0px; + content: close-quote; + left: 100%; + margin-left: var(--quotes-margin); + top: auto; + } + & p { + margin: 20px 0; + } + } +} diff --git a/theme/static/css/bootstrap.css b/theme/static/css/bootstrap.css new file mode 100644 index 0000000..5f7aa59 --- /dev/null +++ b/theme/static/css/bootstrap.css @@ -0,0 +1,6399 @@ +/*! + * Bootstrap v2.3.2 + * + * Copyright 2013 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world by @mdo and @fat. + */ + +.clearfix { + *zoom: 1; +} + +.clearfix:before, +.clearfix:after { + display: table; + line-height: 0; + content: ""; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section { + display: block; +} + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +audio:not([controls]) { + display: none; +} + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +a:hover, +a:active { + outline: 0; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + width: auto\9; + height: auto; + max-width: 100%; + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} + +#map_canvas img, +.google-maps img { + max-width: none; +} + +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} + +button, +input { + *overflow: visible; + line-height: normal; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} + +label, +select, +button, +input[type="button"], +input[type="reset"], +input[type="submit"], +input[type="radio"], +input[type="checkbox"] { + cursor: pointer; +} + +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +@media print { + * { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + @page { + margin: 0.5cm; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } +} + +body { + font-size: 14px; + line-height: 20px; + color: #333333; + background-color: #ffffff; +} + +a { + color: #0088cc; + text-decoration: none; +} + +a:hover, +a:focus { + color: #005580; + text-decoration: underline; +} + +.img-rounded { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.img-polaroid { + padding: 4px; + background-color: #fff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +.img-circle { + -webkit-border-radius: 500px; + -moz-border-radius: 500px; + border-radius: 500px; +} + +.row { + margin-left: -20px; + *zoom: 1; +} + +.row:before, +.row:after { + display: table; + line-height: 0; + content: ""; +} + +.row:after { + clear: both; +} + +[class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; +} + +.container, +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.span12 { + width: 940px; +} + +.span11 { + width: 860px; +} + +.span10 { + width: 780px; +} + +.span9 { + width: 700px; +} + +.span8 { + width: 620px; +} + +.span7 { + width: 540px; +} + +.span6 { + width: 460px; +} + +.span5 { + width: 380px; +} + +.span4 { + width: 300px; +} + +.span3 { + width: 220px; +} + +.span2 { + width: 140px; +} + +.span1 { + width: 60px; +} + +.offset12 { + margin-left: 980px; +} + +.offset11 { + margin-left: 900px; +} + +.offset10 { + margin-left: 820px; +} + +.offset9 { + margin-left: 740px; +} + +.offset8 { + margin-left: 660px; +} + +.offset7 { + margin-left: 580px; +} + +.offset6 { + margin-left: 500px; +} + +.offset5 { + margin-left: 420px; +} + +.offset4 { + margin-left: 340px; +} + +.offset3 { + margin-left: 260px; +} + +.offset2 { + margin-left: 180px; +} + +.offset1 { + margin-left: 100px; +} + +.row-fluid { + width: 100%; + *zoom: 1; +} + +.row-fluid:before, +.row-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 30px; + margin-left: 2.127659574468085%; + *margin-left: 2.074468085106383%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.row-fluid [class*="span"]:first-child { + margin-left: 0; +} + +.row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.127659574468085%; +} + +.row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; +} + +.row-fluid .span11 { + width: 91.48936170212765%; + *width: 91.43617021276594%; +} + +.row-fluid .span10 { + width: 82.97872340425532%; + *width: 82.92553191489361%; +} + +.row-fluid .span9 { + width: 74.46808510638297%; + *width: 74.41489361702126%; +} + +.row-fluid .span8 { + width: 65.95744680851064%; + *width: 65.90425531914893%; +} + +.row-fluid .span7 { + width: 57.44680851063829%; + *width: 57.39361702127659%; +} + +.row-fluid .span6 { + width: 48.93617021276595%; + *width: 48.88297872340425%; +} + +.row-fluid .span5 { + width: 40.42553191489362%; + *width: 40.37234042553192%; +} + +.row-fluid .span4 { + width: 31.914893617021278%; + *width: 31.861702127659576%; +} + +.row-fluid .span3 { + width: 23.404255319148934%; + *width: 23.351063829787233%; +} + +.row-fluid .span2 { + width: 14.893617021276595%; + *width: 14.840425531914894%; +} + +.row-fluid .span1 { + width: 6.382978723404255%; + *width: 6.329787234042553%; +} + +.row-fluid .offset12 { + margin-left: 104.25531914893617%; + *margin-left: 104.14893617021275%; +} + +.row-fluid .offset12:first-child { + margin-left: 102.12765957446808%; + *margin-left: 102.02127659574467%; +} + +.row-fluid .offset11 { + margin-left: 95.74468085106382%; + *margin-left: 95.6382978723404%; +} + +.row-fluid .offset11:first-child { + margin-left: 93.61702127659574%; + *margin-left: 93.51063829787232%; +} + +.row-fluid .offset10 { + margin-left: 87.23404255319149%; + *margin-left: 87.12765957446807%; +} + +.row-fluid .offset10:first-child { + margin-left: 85.1063829787234%; + *margin-left: 84.99999999999999%; +} + +.row-fluid .offset9 { + margin-left: 78.72340425531914%; + *margin-left: 78.61702127659572%; +} + +.row-fluid .offset9:first-child { + margin-left: 76.59574468085106%; + *margin-left: 76.48936170212764%; +} + +.row-fluid .offset8 { + margin-left: 70.2127659574468%; + *margin-left: 70.10638297872339%; +} + +.row-fluid .offset8:first-child { + margin-left: 68.08510638297872%; + *margin-left: 67.9787234042553%; +} + +.row-fluid .offset7 { + margin-left: 61.70212765957446%; + *margin-left: 61.59574468085106%; +} + +.row-fluid .offset7:first-child { + margin-left: 59.574468085106375%; + *margin-left: 59.46808510638297%; +} + +.row-fluid .offset6 { + margin-left: 53.191489361702125%; + *margin-left: 53.085106382978715%; +} + +.row-fluid .offset6:first-child { + margin-left: 51.063829787234035%; + *margin-left: 50.95744680851063%; +} + +.row-fluid .offset5 { + margin-left: 44.68085106382979%; + *margin-left: 44.57446808510638%; +} + +.row-fluid .offset5:first-child { + margin-left: 42.5531914893617%; + *margin-left: 42.4468085106383%; +} + +.row-fluid .offset4 { + margin-left: 36.170212765957444%; + *margin-left: 36.06382978723405%; +} + +.row-fluid .offset4:first-child { + margin-left: 34.04255319148936%; + *margin-left: 33.93617021276596%; +} + +.row-fluid .offset3 { + margin-left: 27.659574468085104%; + *margin-left: 27.5531914893617%; +} + +.row-fluid .offset3:first-child { + margin-left: 25.53191489361702%; + *margin-left: 25.425531914893618%; +} + +.row-fluid .offset2 { + margin-left: 19.148936170212764%; + *margin-left: 19.04255319148936%; +} + +.row-fluid .offset2:first-child { + margin-left: 17.02127659574468%; + *margin-left: 16.914893617021278%; +} + +.row-fluid .offset1 { + margin-left: 10.638297872340425%; + *margin-left: 10.53191489361702%; +} + +.row-fluid .offset1:first-child { + margin-left: 8.51063829787234%; + *margin-left: 8.404255319148938%; +} + +[class*="span"].hide, +.row-fluid [class*="span"].hide { + display: none; +} + +[class*="span"].pull-right, +.row-fluid [class*="span"].pull-right { + float: right; +} + +.container { + margin-right: auto; + margin-left: auto; + *zoom: 1; +} + +.container:before, +.container:after { + display: table; + line-height: 0; + content: ""; +} + +.container:after { + clear: both; +} + +.container-fluid { + padding-right: 20px; + padding-left: 20px; + *zoom: 1; +} + +.container-fluid:before, +.container-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.container-fluid:after { + clear: both; +} + +p { + margin: 0 0 10px; +} + +.lead { + margin-bottom: 20px; + font-size: 21px; + font-weight: 200; + line-height: 30px; +} + +small { + font-size: 85%; +} + +strong { + font-weight: bold; +} + +em { + font-style: italic; +} + +cite { + font-style: normal; +} + +.muted { + color: #999999; +} + +a.muted:hover, +a.muted:focus { + color: #808080; +} + +.text-warning { + color: #c09853; +} + +a.text-warning:hover, +a.text-warning:focus { + color: #a47e3c; +} + +.text-error { + color: #b94a48; +} + +a.text-error:hover, +a.text-error:focus { + color: #953b39; +} + +.text-info { + color: #3a87ad; +} + +a.text-info:hover, +a.text-info:focus { + color: #2d6987; +} + +.text-success { + color: #468847; +} + +a.text-success:hover, +a.text-success:focus { + color: #356635; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.text-center { + text-align: center; +} + +ul, +ol { + padding: 0; + margin: 0 0 10px 25px; +} + +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} + +li { + line-height: 20px; +} + +ul.unstyled, +ol.unstyled { + margin-left: 0; + list-style: none; +} + +ul.inline, +ol.inline { + margin-left: 0; + list-style: none; +} + +ul.inline > li, +ol.inline > li { + display: inline-block; + *display: inline; + padding-right: 5px; + padding-left: 5px; + *zoom: 1; +} + +dl { + margin-bottom: 20px; +} + +dt, +dd { + line-height: 20px; +} + +dt { + font-weight: bold; +} + +dd { + margin-left: 10px; +} + +.dl-horizontal { + *zoom: 1; +} + +.dl-horizontal:before, +.dl-horizontal:after { + display: table; + line-height: 0; + content: ""; +} + +.dl-horizontal:after { + clear: both; +} + +.dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; +} + +.dl-horizontal dd { + margin-left: 180px; +} + +hr { + margin: 20px 0; + border: 0; + border-top: 1px solid #eeeeee; + border-bottom: 1px solid #ffffff; +} + +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999999; +} + +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +address { + display: block; + margin-bottom: 20px; + font-style: normal; + line-height: 20px; +} + +code, +pre { + padding: 0 3px 2px; + font-size: 12px; + color: #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +code { + padding: 2px 4px; + color: #d14; + white-space: nowrap; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} + +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 20px; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; +} + +pre.prettyprint { + margin-bottom: 20px; +} + +pre code { + padding: 0; + color: inherit; + white-space: pre; + white-space: pre-wrap; + background-color: transparent; + border: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +form { + margin: 0 0 20px; +} + +fieldset { + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: 40px; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} + +legend small { + font-size: 15px; + color: #999999; +} + +label, +input, +button, +select, +textarea { + font-size: 14px; + font-weight: normal; + line-height: 20px; +} + +input, +button, +select, +textarea { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +label { + display: block; + margin-bottom: 5px; +} + +select, +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + display: inline-block; + height: 20px; + padding: 4px 6px; + margin-bottom: 10px; + font-size: 14px; + line-height: 20px; + color: #555555; + vertical-align: middle; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +input, +textarea, +.uneditable-input { + width: 206px; +} + +textarea { + height: auto; +} + +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + background-color: #ffffff; + border: 1px solid #cccccc; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; + -moz-transition: border linear 0.2s, box-shadow linear 0.2s; + -o-transition: border linear 0.2s, box-shadow linear 0.2s; + transition: border linear 0.2s, box-shadow linear 0.2s; +} + +textarea:focus, +input[type="text"]:focus, +input[type="password"]:focus, +input[type="datetime"]:focus, +input[type="datetime-local"]:focus, +input[type="date"]:focus, +input[type="month"]:focus, +input[type="time"]:focus, +input[type="week"]:focus, +input[type="number"]:focus, +input[type="email"]:focus, +input[type="url"]:focus, +input[type="search"]:focus, +input[type="tel"]:focus, +input[type="color"]:focus, +.uneditable-input:focus { + border-color: rgba(82, 168, 236, 0.8); + outline: 0; + outline: thin dotted \9; + /* IE6-9 */ + + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), + 0 0 8px rgba(82, 168, 236, 0.6); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), + 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), + 0 0 8px rgba(82, 168, 236, 0.6); +} + +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + *margin-top: 0; + line-height: normal; +} + +input[type="file"], +input[type="image"], +input[type="submit"], +input[type="reset"], +input[type="button"], +input[type="radio"], +input[type="checkbox"] { + width: auto; +} + +select, +input[type="file"] { + height: 30px; + /* In IE7, the height of the select element cannot be changed by height, only font-size */ + + *margin-top: 4px; + /* For IE7, add top margin to align select with labels */ + + line-height: 30px; +} + +select { + width: 220px; + background-color: #ffffff; + border: 1px solid #cccccc; +} + +select[multiple], +select[size] { + height: auto; +} + +select:focus, +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.uneditable-input, +.uneditable-textarea { + color: #999999; + cursor: not-allowed; + background-color: #fcfcfc; + border-color: #cccccc; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); +} + +.uneditable-input { + overflow: hidden; + white-space: nowrap; +} + +.uneditable-textarea { + width: auto; + height: auto; +} + +input:-moz-placeholder, +textarea:-moz-placeholder { + color: #999999; +} + +input:-ms-input-placeholder, +textarea:-ms-input-placeholder { + color: #999999; +} + +input::-webkit-input-placeholder, +textarea::-webkit-input-placeholder { + color: #999999; +} + +.radio, +.checkbox { + min-height: 20px; + padding-left: 20px; +} + +.radio input[type="radio"], +.checkbox input[type="checkbox"] { + float: left; + margin-left: -20px; +} + +.controls > .radio:first-child, +.controls > .checkbox:first-child { + padding-top: 5px; +} + +.radio.inline, +.checkbox.inline { + display: inline-block; + padding-top: 5px; + margin-bottom: 0; + vertical-align: middle; +} + +.radio.inline + .radio.inline, +.checkbox.inline + .checkbox.inline { + margin-left: 10px; +} + +.input-mini { + width: 60px; +} + +.input-small { + width: 90px; +} + +.input-medium { + width: 150px; +} + +.input-large { + width: 210px; +} + +.input-xlarge { + width: 270px; +} + +.input-xxlarge { + width: 530px; +} + +input[class*="span"], +select[class*="span"], +textarea[class*="span"], +.uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"] { + float: none; + margin-left: 0; +} + +.input-append input[class*="span"], +.input-append .uneditable-input[class*="span"], +.input-prepend input[class*="span"], +.input-prepend .uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"], +.row-fluid .input-prepend [class*="span"], +.row-fluid .input-append [class*="span"] { + display: inline-block; +} + +input, +textarea, +.uneditable-input { + margin-left: 0; +} + +.controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; +} + +input.span12, +textarea.span12, +.uneditable-input.span12 { + width: 926px; +} + +input.span11, +textarea.span11, +.uneditable-input.span11 { + width: 846px; +} + +input.span10, +textarea.span10, +.uneditable-input.span10 { + width: 766px; +} + +input.span9, +textarea.span9, +.uneditable-input.span9 { + width: 686px; +} + +input.span8, +textarea.span8, +.uneditable-input.span8 { + width: 606px; +} + +input.span7, +textarea.span7, +.uneditable-input.span7 { + width: 526px; +} + +input.span6, +textarea.span6, +.uneditable-input.span6 { + width: 446px; +} + +input.span5, +textarea.span5, +.uneditable-input.span5 { + width: 366px; +} + +input.span4, +textarea.span4, +.uneditable-input.span4 { + width: 286px; +} + +input.span3, +textarea.span3, +.uneditable-input.span3 { + width: 206px; +} + +input.span2, +textarea.span2, +.uneditable-input.span2 { + width: 126px; +} + +input.span1, +textarea.span1, +.uneditable-input.span1 { + width: 46px; +} + +.controls-row { + *zoom: 1; +} + +.controls-row:before, +.controls-row:after { + display: table; + line-height: 0; + content: ""; +} + +.controls-row:after { + clear: both; +} + +.controls-row [class*="span"], +.row-fluid .controls-row [class*="span"] { + float: left; +} + +.controls-row .checkbox[class*="span"], +.controls-row .radio[class*="span"] { + padding-top: 5px; +} + +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { + cursor: not-allowed; + background-color: #eeeeee; +} + +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"][readonly], +input[type="checkbox"][readonly] { + background-color: transparent; +} + +.control-group.warning .control-label, +.control-group.warning .help-block, +.control-group.warning .help-inline { + color: #c09853; +} + +.control-group.warning .checkbox, +.control-group.warning .radio, +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + color: #c09853; +} + +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + border-color: #c09853; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.warning input:focus, +.control-group.warning select:focus, +.control-group.warning textarea:focus { + border-color: #a47e3c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +} + +.control-group.warning .input-prepend .add-on, +.control-group.warning .input-append .add-on { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} + +.control-group.error .control-label, +.control-group.error .help-block, +.control-group.error .help-inline { + color: #b94a48; +} + +.control-group.error .checkbox, +.control-group.error .radio, +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + color: #b94a48; +} + +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + border-color: #b94a48; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.error input:focus, +.control-group.error select:focus, +.control-group.error textarea:focus { + border-color: #953b39; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +} + +.control-group.error .input-prepend .add-on, +.control-group.error .input-append .add-on { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} + +.control-group.success .control-label, +.control-group.success .help-block, +.control-group.success .help-inline { + color: #468847; +} + +.control-group.success .checkbox, +.control-group.success .radio, +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + color: #468847; +} + +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + border-color: #468847; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.success input:focus, +.control-group.success select:focus, +.control-group.success textarea:focus { + border-color: #356635; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +} + +.control-group.success .input-prepend .add-on, +.control-group.success .input-append .add-on { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} + +.control-group.info .control-label, +.control-group.info .help-block, +.control-group.info .help-inline { + color: #3a87ad; +} + +.control-group.info .checkbox, +.control-group.info .radio, +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + color: #3a87ad; +} + +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + border-color: #3a87ad; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.info input:focus, +.control-group.info select:focus, +.control-group.info textarea:focus { + border-color: #2d6987; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; +} + +.control-group.info .input-prepend .add-on, +.control-group.info .input-append .add-on { + color: #3a87ad; + background-color: #d9edf7; + border-color: #3a87ad; +} + +input:focus:invalid, +textarea:focus:invalid, +select:focus:invalid { + color: #b94a48; + border-color: #ee5f5b; +} + +input:focus:invalid:focus, +textarea:focus:invalid:focus, +select:focus:invalid:focus { + border-color: #e9322d; + -webkit-box-shadow: 0 0 6px #f8b9b7; + -moz-box-shadow: 0 0 6px #f8b9b7; + box-shadow: 0 0 6px #f8b9b7; +} + +.form-actions { + padding: 19px 20px 20px; + margin-top: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-top: 1px solid #e5e5e5; + *zoom: 1; +} + +.form-actions:before, +.form-actions:after { + display: table; + line-height: 0; + content: ""; +} + +.form-actions:after { + clear: both; +} + +.help-block, +.help-inline { + color: #595959; +} + +.help-block { + display: block; + margin-bottom: 10px; +} + +.help-inline { + display: inline-block; + *display: inline; + padding-left: 5px; + vertical-align: middle; + *zoom: 1; +} + +.input-append, +.input-prepend { + display: inline-block; + margin-bottom: 10px; + font-size: 0; + white-space: nowrap; + vertical-align: middle; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input, +.input-append .dropdown-menu, +.input-prepend .dropdown-menu, +.input-append .popover, +.input-prepend .popover { + font-size: 14px; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input { + position: relative; + margin-bottom: 0; + *margin-left: 0; + vertical-align: top; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-append input:focus, +.input-prepend input:focus, +.input-append select:focus, +.input-prepend select:focus, +.input-append .uneditable-input:focus, +.input-prepend .uneditable-input:focus { + z-index: 2; +} + +.input-append .add-on, +.input-prepend .add-on { + display: inline-block; + width: auto; + height: 20px; + min-width: 16px; + padding: 4px 5px; + font-size: 14px; + font-weight: normal; + line-height: 20px; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + background-color: #eeeeee; + border: 1px solid #ccc; +} + +.input-append .add-on, +.input-prepend .add-on, +.input-append .btn, +.input-prepend .btn, +.input-append .btn-group > .dropdown-toggle, +.input-prepend .btn-group > .dropdown-toggle { + vertical-align: top; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-append .active, +.input-prepend .active { + background-color: #a9dba9; + border-color: #46a546; +} + +.input-prepend .add-on, +.input-prepend .btn { + margin-right: -1px; +} + +.input-prepend .add-on:first-child, +.input-prepend .btn:first-child { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-append input, +.input-append select, +.input-append .uneditable-input { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-append input + .btn-group .btn:last-child, +.input-append select + .btn-group .btn:last-child, +.input-append .uneditable-input + .btn-group .btn:last-child { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-append .add-on, +.input-append .btn, +.input-append .btn-group { + margin-left: -1px; +} + +.input-append .add-on:last-child, +.input-append .btn:last-child, +.input-append .btn-group:last-child > .dropdown-toggle { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append input, +.input-prepend.input-append select, +.input-prepend.input-append .uneditable-input { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-prepend.input-append input + .btn-group .btn, +.input-prepend.input-append select + .btn-group .btn, +.input-prepend.input-append .uneditable-input + .btn-group .btn { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append .add-on:first-child, +.input-prepend.input-append .btn:first-child { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-prepend.input-append .add-on:last-child, +.input-prepend.input-append .btn:last-child { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append .btn-group:first-child { + margin-left: 0; +} + +input.search-query { + padding-right: 14px; + padding-right: 4px \9; + padding-left: 14px; + padding-left: 4px \9; + /* IE7-8 doesn't have border-radius, so don't indent the padding */ + + margin-bottom: 0; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +/* Allow for input prepend/append in search forms */ + +.form-search .input-append .search-query, +.form-search .input-prepend .search-query { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.form-search .input-append .search-query { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search .input-append .btn { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .search-query { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .btn { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search input, +.form-inline input, +.form-horizontal input, +.form-search textarea, +.form-inline textarea, +.form-horizontal textarea, +.form-search select, +.form-inline select, +.form-horizontal select, +.form-search .help-inline, +.form-inline .help-inline, +.form-horizontal .help-inline, +.form-search .uneditable-input, +.form-inline .uneditable-input, +.form-horizontal .uneditable-input, +.form-search .input-prepend, +.form-inline .input-prepend, +.form-horizontal .input-prepend, +.form-search .input-append, +.form-inline .input-append, +.form-horizontal .input-append { + display: inline-block; + *display: inline; + margin-bottom: 0; + vertical-align: middle; + *zoom: 1; +} + +.form-search .hide, +.form-inline .hide, +.form-horizontal .hide { + display: none; +} + +.form-search label, +.form-inline label, +.form-search .btn-group, +.form-inline .btn-group { + display: inline-block; +} + +.form-search .input-append, +.form-inline .input-append, +.form-search .input-prepend, +.form-inline .input-prepend { + margin-bottom: 0; +} + +.form-search .radio, +.form-search .checkbox, +.form-inline .radio, +.form-inline .checkbox { + padding-left: 0; + margin-bottom: 0; + vertical-align: middle; +} + +.form-search .radio input[type="radio"], +.form-search .checkbox input[type="checkbox"], +.form-inline .radio input[type="radio"], +.form-inline .checkbox input[type="checkbox"] { + float: left; + margin-right: 3px; + margin-left: 0; +} + +.control-group { + margin-bottom: 10px; +} + +legend + .control-group { + margin-top: 20px; + -webkit-margin-top-collapse: separate; +} + +.form-horizontal .control-group { + margin-bottom: 20px; + *zoom: 1; +} + +.form-horizontal .control-group:before, +.form-horizontal .control-group:after { + display: table; + line-height: 0; + content: ""; +} + +.form-horizontal .control-group:after { + clear: both; +} + +.form-horizontal .control-label { + float: left; + width: 160px; + padding-top: 5px; + text-align: right; +} + +.form-horizontal .controls { + *display: inline-block; + *padding-left: 20px; + margin-left: 180px; + *margin-left: 0; +} + +.form-horizontal .controls:first-child { + *padding-left: 180px; +} + +.form-horizontal .help-block { + margin-bottom: 0; +} + +.form-horizontal input + .help-block, +.form-horizontal select + .help-block, +.form-horizontal textarea + .help-block, +.form-horizontal .uneditable-input + .help-block, +.form-horizontal .input-prepend + .help-block, +.form-horizontal .input-append + .help-block { + margin-top: 10px; +} + +.form-horizontal .form-actions { + padding-left: 180px; +} + +table { + max-width: 100%; + background-color: transparent; + border-collapse: collapse; + border-spacing: 0; +} + +.table { + width: 100%; + margin-bottom: 20px; +} + +.table th, +.table td { + padding: 8px; + line-height: 20px; + text-align: left; + vertical-align: top; + border-top: 1px solid #dddddd; +} + +.table th { + font-weight: bold; +} + +.table thead th { + vertical-align: bottom; +} + +.table caption + thead tr:first-child th, +.table caption + thead tr:first-child td, +.table colgroup + thead tr:first-child th, +.table colgroup + thead tr:first-child td, +.table thead:first-child tr:first-child th, +.table thead:first-child tr:first-child td { + border-top: 0; +} + +.table tbody + tbody { + border-top: 2px solid #dddddd; +} + +.table .table { + background-color: #ffffff; +} + +.table-condensed th, +.table-condensed td { + padding: 4px 5px; +} + +.table-bordered { + border: 1px solid #dddddd; + border-collapse: separate; + *border-collapse: collapse; + border-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.table-bordered th, +.table-bordered td { + border-left: 1px solid #dddddd; +} + +.table-bordered caption + thead tr:first-child th, +.table-bordered caption + tbody tr:first-child th, +.table-bordered caption + tbody tr:first-child td, +.table-bordered colgroup + thead tr:first-child th, +.table-bordered colgroup + tbody tr:first-child th, +.table-bordered colgroup + tbody tr:first-child td, +.table-bordered thead:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child td { + border-top: 0; +} + +.table-bordered thead:first-child tr:first-child > th:first-child, +.table-bordered tbody:first-child tr:first-child > td:first-child, +.table-bordered tbody:first-child tr:first-child > th:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered thead:first-child tr:first-child > th:last-child, +.table-bordered tbody:first-child tr:first-child > td:last-child, +.table-bordered tbody:first-child tr:first-child > th:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-bordered thead:last-child tr:last-child > th:first-child, +.table-bordered tbody:last-child tr:last-child > td:first-child, +.table-bordered tbody:last-child tr:last-child > th:first-child, +.table-bordered tfoot:last-child tr:last-child > td:first-child, +.table-bordered tfoot:last-child tr:last-child > th:first-child { + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.table-bordered thead:last-child tr:last-child > th:last-child, +.table-bordered tbody:last-child tr:last-child > td:last-child, +.table-bordered tbody:last-child tr:last-child > th:last-child, +.table-bordered tfoot:last-child tr:last-child > td:last-child, +.table-bordered tfoot:last-child tr:last-child > th:last-child { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; +} + +.table-bordered tfoot + tbody:last-child tr:last-child td:first-child { + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + -moz-border-radius-bottomleft: 0; +} + +.table-bordered tfoot + tbody:last-child tr:last-child td:last-child { + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomright: 0; +} + +.table-bordered caption + thead tr:first-child th:first-child, +.table-bordered caption + tbody tr:first-child td:first-child, +.table-bordered colgroup + thead tr:first-child th:first-child, +.table-bordered colgroup + tbody tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered caption + thead tr:first-child th:last-child, +.table-bordered caption + tbody tr:first-child td:last-child, +.table-bordered colgroup + thead tr:first-child th:last-child, +.table-bordered colgroup + tbody tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-striped tbody > tr:nth-child(odd) > td, +.table-striped tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; +} + +.table-hover tbody tr:hover > td, +.table-hover tbody tr:hover > th { + background-color: #f5f5f5; +} + +table td[class*="span"], +table th[class*="span"], +.row-fluid table td[class*="span"], +.row-fluid table th[class*="span"] { + display: table-cell; + float: none; + margin-left: 0; +} + +.table td.span1, +.table th.span1 { + float: none; + width: 44px; + margin-left: 0; +} + +.table td.span2, +.table th.span2 { + float: none; + width: 124px; + margin-left: 0; +} + +.table td.span3, +.table th.span3 { + float: none; + width: 204px; + margin-left: 0; +} + +.table td.span4, +.table th.span4 { + float: none; + width: 284px; + margin-left: 0; +} + +.table td.span5, +.table th.span5 { + float: none; + width: 364px; + margin-left: 0; +} + +.table td.span6, +.table th.span6 { + float: none; + width: 444px; + margin-left: 0; +} + +.table td.span7, +.table th.span7 { + float: none; + width: 524px; + margin-left: 0; +} + +.table td.span8, +.table th.span8 { + float: none; + width: 604px; + margin-left: 0; +} + +.table td.span9, +.table th.span9 { + float: none; + width: 684px; + margin-left: 0; +} + +.table td.span10, +.table th.span10 { + float: none; + width: 764px; + margin-left: 0; +} + +.table td.span11, +.table th.span11 { + float: none; + width: 844px; + margin-left: 0; +} + +.table td.span12, +.table th.span12 { + float: none; + width: 924px; + margin-left: 0; +} + +.table tbody tr.success > td { + background-color: #dff0d8; +} + +.table tbody tr.error > td { + background-color: #f2dede; +} + +.table tbody tr.warning > td { + background-color: #fcf8e3; +} + +.table tbody tr.info > td { + background-color: #d9edf7; +} + +.table-hover tbody tr.success:hover > td { + background-color: #d0e9c6; +} + +.table-hover tbody tr.error:hover > td { + background-color: #ebcccc; +} + +.table-hover tbody tr.warning:hover > td { + background-color: #faf2cc; +} + +.table-hover tbody tr.info:hover > td { + background-color: #c4e3f3; +} + +[class^="icon-"], +[class*=" icon-"] { + display: inline-block; + width: 14px; + height: 14px; + margin-top: 1px; + *margin-right: 0.3em; + line-height: 14px; + vertical-align: text-top; + background-image: url("../img/glyphicons-halflings.png"); + background-position: 14px 14px; + background-repeat: no-repeat; +} + +/* White icons with optional class, or on hover/focus/active states of certain elements */ + +.icon-white, +.nav-pills > .active > a > [class^="icon-"], +.nav-pills > .active > a > [class*=" icon-"], +.nav-list > .active > a > [class^="icon-"], +.nav-list > .active > a > [class*=" icon-"], +.navbar-inverse .nav > .active > a > [class^="icon-"], +.navbar-inverse .nav > .active > a > [class*=" icon-"], +.dropdown-menu > li > a:hover > [class^="icon-"], +.dropdown-menu > li > a:focus > [class^="icon-"], +.dropdown-menu > li > a:hover > [class*=" icon-"], +.dropdown-menu > li > a:focus > [class*=" icon-"], +.dropdown-menu > .active > a > [class^="icon-"], +.dropdown-menu > .active > a > [class*=" icon-"], +.dropdown-submenu:hover > a > [class^="icon-"], +.dropdown-submenu:focus > a > [class^="icon-"], +.dropdown-submenu:hover > a > [class*=" icon-"], +.dropdown-submenu:focus > a > [class*=" icon-"] { + background-image: url("../img/glyphicons-halflings-white.png"); +} + +.icon-glass { + background-position: 0 0; +} + +.icon-music { + background-position: -24px 0; +} + +.icon-search { + background-position: -48px 0; +} + +.icon-envelope { + background-position: -72px 0; +} + +.icon-heart { + background-position: -96px 0; +} + +.icon-star { + background-position: -120px 0; +} + +.icon-star-empty { + background-position: -144px 0; +} + +.icon-user { + background-position: -168px 0; +} + +.icon-film { + background-position: -192px 0; +} + +.icon-th-large { + background-position: -216px 0; +} + +.icon-th { + background-position: -240px 0; +} + +.icon-th-list { + background-position: -264px 0; +} + +.icon-ok { + background-position: -288px 0; +} + +.icon-remove { + background-position: -312px 0; +} + +.icon-zoom-in { + background-position: -336px 0; +} + +.icon-zoom-out { + background-position: -360px 0; +} + +.icon-off { + background-position: -384px 0; +} + +.icon-signal { + background-position: -408px 0; +} + +.icon-cog { + background-position: -432px 0; +} + +.icon-trash { + background-position: -456px 0; +} + +.icon-home { + background-position: 0 -24px; +} + +.icon-file { + background-position: -24px -24px; +} + +.icon-time { + background-position: -48px -24px; +} + +.icon-road { + background-position: -72px -24px; +} + +.icon-download-alt { + background-position: -96px -24px; +} + +.icon-download { + background-position: -120px -24px; +} + +.icon-upload { + background-position: -144px -24px; +} + +.icon-inbox { + background-position: -168px -24px; +} + +.icon-play-circle { + background-position: -192px -24px; +} + +.icon-repeat { + background-position: -216px -24px; +} + +.icon-refresh { + background-position: -240px -24px; +} + +.icon-list-alt { + background-position: -264px -24px; +} + +.icon-lock { + background-position: -287px -24px; +} + +.icon-flag { + background-position: -312px -24px; +} + +.icon-headphones { + background-position: -336px -24px; +} + +.icon-volume-off { + background-position: -360px -24px; +} + +.icon-volume-down { + background-position: -384px -24px; +} + +.icon-volume-up { + background-position: -408px -24px; +} + +.icon-qrcode { + background-position: -432px -24px; +} + +.icon-barcode { + background-position: -456px -24px; +} + +.icon-tag { + background-position: 0 -48px; +} + +.icon-tags { + background-position: -25px -48px; +} + +.icon-book { + background-position: -48px -48px; +} + +.icon-bookmark { + background-position: -72px -48px; +} + +.icon-print { + background-position: -96px -48px; +} + +.icon-camera { + background-position: -120px -48px; +} + +.icon-font { + background-position: -144px -48px; +} + +.icon-bold { + background-position: -167px -48px; +} + +.icon-italic { + background-position: -192px -48px; +} + +.icon-text-height { + background-position: -216px -48px; +} + +.icon-text-width { + background-position: -240px -48px; +} + +.icon-align-left { + background-position: -264px -48px; +} + +.icon-align-center { + background-position: -288px -48px; +} + +.icon-align-right { + background-position: -312px -48px; +} + +.icon-align-justify { + background-position: -336px -48px; +} + +.icon-list { + background-position: -360px -48px; +} + +.icon-indent-left { + background-position: -384px -48px; +} + +.icon-indent-right { + background-position: -408px -48px; +} + +.icon-facetime-video { + background-position: -432px -48px; +} + +.icon-picture { + background-position: -456px -48px; +} + +.icon-pencil { + background-position: 0 -72px; +} + +.icon-map-marker { + background-position: -24px -72px; +} + +.icon-adjust { + background-position: -48px -72px; +} + +.icon-tint { + background-position: -72px -72px; +} + +.icon-edit { + background-position: -96px -72px; +} + +.icon-share { + background-position: -120px -72px; +} + +.icon-check { + background-position: -144px -72px; +} + +.icon-move { + background-position: -168px -72px; +} + +.icon-step-backward { + background-position: -192px -72px; +} + +.icon-fast-backward { + background-position: -216px -72px; +} + +.icon-backward { + background-position: -240px -72px; +} + +.icon-play { + background-position: -264px -72px; +} + +.icon-pause { + background-position: -288px -72px; +} + +.icon-stop { + background-position: -312px -72px; +} + +.icon-forward { + background-position: -336px -72px; +} + +.icon-fast-forward { + background-position: -360px -72px; +} + +.icon-step-forward { + background-position: -384px -72px; +} + +.icon-eject { + background-position: -408px -72px; +} + +.icon-chevron-left { + background-position: -432px -72px; +} + +.icon-chevron-right { + background-position: -456px -72px; +} + +.icon-plus-sign { + background-position: 0 -96px; +} + +.icon-minus-sign { + background-position: -24px -96px; +} + +.icon-remove-sign { + background-position: -48px -96px; +} + +.icon-ok-sign { + background-position: -72px -96px; +} + +.icon-question-sign { + background-position: -96px -96px; +} + +.icon-info-sign { + background-position: -120px -96px; +} + +.icon-screenshot { + background-position: -144px -96px; +} + +.icon-remove-circle { + background-position: -168px -96px; +} + +.icon-ok-circle { + background-position: -192px -96px; +} + +.icon-ban-circle { + background-position: -216px -96px; +} + +.icon-arrow-left { + background-position: -240px -96px; +} + +.icon-arrow-right { + background-position: -264px -96px; +} + +.icon-arrow-up { + background-position: -289px -96px; +} + +.icon-arrow-down { + background-position: -312px -96px; +} + +.icon-share-alt { + background-position: -336px -96px; +} + +.icon-resize-full { + background-position: -360px -96px; +} + +.icon-resize-small { + background-position: -384px -96px; +} + +.icon-plus { + background-position: -408px -96px; +} + +.icon-minus { + background-position: -433px -96px; +} + +.icon-asterisk { + background-position: -456px -96px; +} + +.icon-exclamation-sign { + background-position: 0 -120px; +} + +.icon-gift { + background-position: -24px -120px; +} + +.icon-leaf { + background-position: -48px -120px; +} + +.icon-fire { + background-position: -72px -120px; +} + +.icon-eye-open { + background-position: -96px -120px; +} + +.icon-eye-close { + background-position: -120px -120px; +} + +.icon-warning-sign { + background-position: -144px -120px; +} + +.icon-plane { + background-position: -168px -120px; +} + +.icon-calendar { + background-position: -192px -120px; +} + +.icon-random { + width: 16px; + background-position: -216px -120px; +} + +.icon-comment { + background-position: -240px -120px; +} + +.icon-magnet { + background-position: -264px -120px; +} + +.icon-chevron-up { + background-position: -288px -120px; +} + +.icon-chevron-down { + background-position: -313px -119px; +} + +.icon-retweet { + background-position: -336px -120px; +} + +.icon-shopping-cart { + background-position: -360px -120px; +} + +.icon-folder-close { + width: 16px; + background-position: -384px -120px; +} + +.icon-folder-open { + width: 16px; + background-position: -408px -120px; +} + +.icon-resize-vertical { + background-position: -432px -119px; +} + +.icon-resize-horizontal { + background-position: -456px -118px; +} + +.icon-hdd { + background-position: 0 -144px; +} + +.icon-bullhorn { + background-position: -24px -144px; +} + +.icon-bell { + background-position: -48px -144px; +} + +.icon-certificate { + background-position: -72px -144px; +} + +.icon-thumbs-up { + background-position: -96px -144px; +} + +.icon-thumbs-down { + background-position: -120px -144px; +} + +.icon-hand-right { + background-position: -144px -144px; +} + +.icon-hand-left { + background-position: -168px -144px; +} + +.icon-hand-up { + background-position: -192px -144px; +} + +.icon-hand-down { + background-position: -216px -144px; +} + +.icon-circle-arrow-right { + background-position: -240px -144px; +} + +.icon-circle-arrow-left { + background-position: -264px -144px; +} + +.icon-circle-arrow-up { + background-position: -288px -144px; +} + +.icon-circle-arrow-down { + background-position: -312px -144px; +} + +.icon-globe { + background-position: -336px -144px; +} + +.icon-wrench { + background-position: -360px -144px; +} + +.icon-tasks { + background-position: -384px -144px; +} + +.icon-filter { + background-position: -408px -144px; +} + +.icon-briefcase { + background-position: -432px -144px; +} + +.icon-fullscreen { + background-position: -456px -144px; +} + +.dropup, +.dropdown { + position: relative; +} + +.dropdown-toggle { + *margin-bottom: -3px; +} + +.dropdown-toggle:active, +.open .dropdown-toggle { + outline: 0; +} + +.caret { + display: inline-block; + width: 0; + height: 0; + vertical-align: top; + border-top: 4px solid #000000; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + content: ""; +} + +.dropdown .caret { + margin-top: 8px; + margin-left: 2px; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.dropdown-menu .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 20px; + color: #333333; + white-space: nowrap; +} + +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus, +.dropdown-submenu:hover > a, +.dropdown-submenu:focus > a { + color: #ffffff; + text-decoration: none; + background-color: #0081c2; + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient( + linear, + 0 0, + 0 100%, + from(#0088cc), + to(#0077b3) + ); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} + +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #ffffff; + text-decoration: none; + background-color: #0081c2; + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient( + linear, + 0 0, + 0 100%, + from(#0088cc), + to(#0077b3) + ); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-repeat: repeat-x; + outline: 0; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} + +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #999999; +} + +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: default; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.open { + *z-index: 1000; +} + +.open > .dropdown-menu { + display: block; +} + +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; +} + +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px solid #000000; + content: ""; +} + +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} + +.dropdown-submenu { + position: relative; +} + +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + -webkit-border-radius: 0 6px 6px 6px; + -moz-border-radius: 0 6px 6px 6px; + border-radius: 0 6px 6px 6px; +} + +.dropdown-submenu:hover > .dropdown-menu { + display: block; +} + +.dropup .dropdown-submenu > .dropdown-menu { + top: auto; + bottom: 0; + margin-top: 0; + margin-bottom: -2px; + -webkit-border-radius: 5px 5px 5px 0; + -moz-border-radius: 5px 5px 5px 0; + border-radius: 5px 5px 5px 0; +} + +.dropdown-submenu > a:after { + display: block; + float: right; + width: 0; + height: 0; + margin-top: 5px; + margin-right: -10px; + border-color: transparent; + border-left-color: #cccccc; + border-style: solid; + border-width: 5px 0 5px 5px; + content: " "; +} + +.dropdown-submenu:hover > a:after { + border-left-color: #ffffff; +} + +.dropdown-submenu.pull-left { + float: none; +} + +.dropdown-submenu.pull-left > .dropdown-menu { + left: -100%; + margin-left: 10px; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.dropdown .dropdown-menu .nav-header { + padding-right: 20px; + padding-left: 20px; +} + +.typeahead { + z-index: 1051; + margin-top: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} + +.well-large { + padding: 24px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.well-small { + padding: 9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} + +.fade.in { + opacity: 1; +} + +.collapse { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + -moz-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; +} + +.collapse.in { + height: auto; +} + +.close { + float: right; + font-size: 20px; + font-weight: bold; + line-height: 20px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} + +.close:hover, +.close:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + filter: alpha(opacity=40); +} + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +.btn { + display: inline-block; + *display: inline; + padding: 4px 12px; + margin-bottom: 0; + *margin-left: 0.3em; + font-size: 14px; + line-height: 20px; + color: #333333; + text-align: center; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + *background-color: #e6e6e6; + background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -webkit-gradient( + linear, + 0 0, + 0 100%, + from(#ffffff), + to(#e6e6e6) + ); + background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); + background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); + background-repeat: repeat-x; + border: 1px solid #cccccc; + *border: 0; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + border-bottom-color: #b3b3b3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), + 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), + 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), + 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn:hover, +.btn:focus, +.btn:active, +.btn.active, +.btn.disabled, +.btn[disabled] { + color: #333333; + background-color: #e6e6e6; + *background-color: #d9d9d9; +} + +.btn:active, +.btn.active { + background-color: #cccccc \9; +} + +.btn:first-child { + *margin-left: 0; +} + +.btn:hover, +.btn:focus { + color: #333333; + text-decoration: none; + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; +} + +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.btn.active, +.btn:active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), + 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), + 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn.disabled, +.btn[disabled] { + cursor: default; + background-image: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-large { + padding: 11px 19px; + font-size: 17.5px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.btn-large [class^="icon-"], +.btn-large [class*=" icon-"] { + margin-top: 4px; +} + +.btn-small { + padding: 2px 10px; + font-size: 11.9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-small [class^="icon-"], +.btn-small [class*=" icon-"] { + margin-top: 0; +} + +.btn-mini [class^="icon-"], +.btn-mini [class*=" icon-"] { + margin-top: -1px; +} + +.btn-mini { + padding: 0 6px; + font-size: 10.5px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-block { + display: block; + width: 100%; + padding-right: 0; + padding-left: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.btn-block + .btn-block { + margin-top: 5px; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.btn-primary.active, +.btn-warning.active, +.btn-danger.active, +.btn-success.active, +.btn-info.active, +.btn-inverse.active { + color: rgba(255, 255, 255, 0.75); +} + +.btn-primary { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #006dcc; + *background-color: #0044cc; + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-image: -webkit-gradient( + linear, + 0 0, + 0 100%, + from(#0088cc), + to(#0044cc) + ); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(to bottom, #0088cc, #0044cc); + background-repeat: repeat-x; + border-color: #0044cc #0044cc #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.btn-primary.disabled, +.btn-primary[disabled] { + color: #ffffff; + background-color: #0044cc; + *background-color: #003bb3; +} + +.btn-primary:active, +.btn-primary.active { + background-color: #003399 \9; +} + +.btn-warning { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #faa732; + *background-color: #f89406; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient( + linear, + 0 0, + 0 100%, + from(#fbb450), + to(#f89406) + ); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + border-color: #f89406 #f89406 #ad6704; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.btn-warning.disabled, +.btn-warning[disabled] { + color: #ffffff; + background-color: #f89406; + *background-color: #df8505; +} + +.btn-warning:active, +.btn-warning.active { + background-color: #c67605 \9; +} + +.btn-danger { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #da4f49; + *background-color: #bd362f; + background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -webkit-gradient( + linear, + 0 0, + 0 100%, + from(#ee5f5b), + to(#bd362f) + ); + background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); + background-image: linear-gradient(to bottom, #ee5f5b, #bd362f); + background-repeat: repeat-x; + border-color: #bd362f #bd362f #802420; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.btn-danger.disabled, +.btn-danger[disabled] { + color: #ffffff; + background-color: #bd362f; + *background-color: #a9302a; +} + +.btn-danger:active, +.btn-danger.active { + background-color: #942a25 \9; +} + +.btn-success { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #5bb75b; + *background-color: #51a351; + background-image: -moz-linear-gradient(top, #62c462, #51a351); + background-image: -webkit-gradient( + linear, + 0 0, + 0 100%, + from(#62c462), + to(#51a351) + ); + background-image: -webkit-linear-gradient(top, #62c462, #51a351); + background-image: -o-linear-gradient(top, #62c462, #51a351); + background-image: linear-gradient(to bottom, #62c462, #51a351); + background-repeat: repeat-x; + border-color: #51a351 #51a351 #387038; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.btn-success.disabled, +.btn-success[disabled] { + color: #ffffff; + background-color: #51a351; + *background-color: #499249; +} + +.btn-success:active, +.btn-success.active { + background-color: #408140 \9; +} + +.btn-info { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #49afcd; + *background-color: #2f96b4; + background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -webkit-gradient( + linear, + 0 0, + 0 100%, + from(#5bc0de), + to(#2f96b4) + ); + background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); + background-image: linear-gradient(to bottom, #5bc0de, #2f96b4); + background-repeat: repeat-x; + border-color: #2f96b4 #2f96b4 #1f6377; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.btn-info.disabled, +.btn-info[disabled] { + color: #ffffff; + background-color: #2f96b4; + *background-color: #2a85a0; +} + +.btn-info:active, +.btn-info.active { + background-color: #24748c \9; +} + +.btn-inverse { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #363636; + *background-color: #222222; + background-image: -moz-linear-gradient(top, #444444, #222222); + background-image: -webkit-gradient( + linear, + 0 0, + 0 100%, + from(#444444), + to(#222222) + ); + background-image: -webkit-linear-gradient(top, #444444, #222222); + background-image: -o-linear-gradient(top, #444444, #222222); + background-image: linear-gradient(to bottom, #444444, #222222); + background-repeat: repeat-x; + border-color: #222222 #222222 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-inverse:hover, +.btn-inverse:focus, +.btn-inverse:active, +.btn-inverse.active, +.btn-inverse.disabled, +.btn-inverse[disabled] { + color: #ffffff; + background-color: #222222; + *background-color: #151515; +} + +.btn-inverse:active, +.btn-inverse.active { + background-color: #080808 \9; +} + +button.btn, +input[type="submit"].btn { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn::-moz-focus-inner, +input[type="submit"].btn::-moz-focus-inner { + padding: 0; + border: 0; +} + +button.btn.btn-large, +input[type="submit"].btn.btn-large { + *padding-top: 7px; + *padding-bottom: 7px; +} + +button.btn.btn-small, +input[type="submit"].btn.btn-small { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn.btn-mini, +input[type="submit"].btn.btn-mini { + *padding-top: 1px; + *padding-bottom: 1px; +} + +.btn-link, +.btn-link:active, +.btn-link[disabled] { + background-color: transparent; + background-image: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-link { + color: #0088cc; + cursor: pointer; + border-color: transparent; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-link:hover, +.btn-link:focus { + color: #005580; + text-decoration: underline; + background-color: transparent; +} + +.btn-link[disabled]:hover, +.btn-link[disabled]:focus { + color: #333333; + text-decoration: none; +} + +.btn-group { + position: relative; + display: inline-block; + *display: inline; + *margin-left: 0.3em; + font-size: 0; + white-space: nowrap; + vertical-align: middle; + *zoom: 1; +} + +.btn-group:first-child { + *margin-left: 0; +} + +.btn-group + .btn-group { + margin-left: 5px; +} + +.btn-toolbar { + margin-top: 10px; + margin-bottom: 10px; + font-size: 0; +} + +.btn-toolbar > .btn + .btn, +.btn-toolbar > .btn-group + .btn, +.btn-toolbar > .btn + .btn-group { + margin-left: 5px; +} + +.btn-group > .btn { + position: relative; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group > .btn + .btn { + margin-left: -1px; +} + +.btn-group > .btn, +.btn-group > .dropdown-menu, +.btn-group > .popover { + font-size: 14px; +} + +.btn-group > .btn-mini { + font-size: 10.5px; +} + +.btn-group > .btn-small { + font-size: 11.9px; +} + +.btn-group > .btn-large { + font-size: 17.5px; +} + +.btn-group > .btn:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.btn-group > .btn:last-child, +.btn-group > .dropdown-toggle { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.btn-group > .btn.large:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.btn-group > .btn.large:last-child, +.btn-group > .large.dropdown-toggle { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active { + z-index: 2; +} + +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + +.btn-group > .btn + .dropdown-toggle { + *padding-top: 5px; + padding-right: 8px; + *padding-bottom: 5px; + padding-left: 8px; + -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), + inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), + inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), + inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group > .btn-mini + .dropdown-toggle { + *padding-top: 2px; + padding-right: 5px; + *padding-bottom: 2px; + padding-left: 5px; +} + +.btn-group > .btn-small + .dropdown-toggle { + *padding-top: 5px; + *padding-bottom: 4px; +} + +.btn-group > .btn-large + .dropdown-toggle { + *padding-top: 7px; + padding-right: 12px; + *padding-bottom: 7px; + padding-left: 12px; +} + +.btn-group.open .dropdown-toggle { + background-image: none; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), + 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), + 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group.open .btn.dropdown-toggle { + background-color: #e6e6e6; +} + +.btn-group.open .btn-primary.dropdown-toggle { + background-color: #0044cc; +} + +.btn-group.open .btn-warning.dropdown-toggle { + background-color: #f89406; +} + +.btn-group.open .btn-danger.dropdown-toggle { + background-color: #bd362f; +} + +.btn-group.open .btn-success.dropdown-toggle { + background-color: #51a351; +} + +.btn-group.open .btn-info.dropdown-toggle { + background-color: #2f96b4; +} + +.btn-group.open .btn-inverse.dropdown-toggle { + background-color: #222222; +} + +.btn .caret { + margin-top: 8px; + margin-left: 0; +} + +.btn-large .caret { + margin-top: 6px; +} + +.btn-large .caret { + border-top-width: 5px; + border-right-width: 5px; + border-left-width: 5px; +} + +.btn-mini .caret, +.btn-small .caret { + margin-top: 8px; +} + +.dropup .btn-large .caret { + border-bottom-width: 5px; +} + +.btn-primary .caret, +.btn-warning .caret, +.btn-danger .caret, +.btn-info .caret, +.btn-success .caret, +.btn-inverse .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.btn-group-vertical { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; +} + +.btn-group-vertical > .btn { + display: block; + float: none; + max-width: 100%; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group-vertical > .btn + .btn { + margin-top: -1px; + margin-left: 0; +} + +.btn-group-vertical > .btn:first-child { + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.btn-group-vertical > .btn:last-child { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.btn-group-vertical > .btn-large:first-child { + -webkit-border-radius: 6px 6px 0 0; + -moz-border-radius: 6px 6px 0 0; + border-radius: 6px 6px 0 0; +} + +.btn-group-vertical > .btn-large:last-child { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.alert { + padding: 8px 35px 8px 14px; + margin-bottom: 20px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + background-color: #fcf8e3; + border: 1px solid #fbeed5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.alert, +.alert h4 { + color: #c09853; +} + +.alert h4 { + margin: 0; +} + +.alert .close { + position: relative; + top: -2px; + right: -21px; + line-height: 20px; +} + +.alert-success { + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.alert-success h4 { + color: #468847; +} + +.alert-danger, +.alert-error { + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7; +} + +.alert-danger h4, +.alert-error h4 { + color: #b94a48; +} + +.alert-info { + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1; +} + +.alert-info h4 { + color: #3a87ad; +} + +.alert-block { + padding-top: 14px; + padding-bottom: 14px; +} + +.alert-block > p, +.alert-block > ul { + margin-bottom: 0; +} + +.alert-block p + p { + margin-top: 5px; +} + +.nav { + margin-bottom: 20px; + margin-left: 0; + list-style: none; +} + +.nav > li > a { + display: block; +} + +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} + +.nav > li > a > img { + max-width: none; +} + +.nav > .pull-right { + float: right; +} + +.nav-header { + display: block; + padding: 3px 15px; + font-size: 11px; + font-weight: bold; + line-height: 20px; + color: #999999; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-transform: uppercase; +} + +.nav li + .nav-header { + margin-top: 9px; +} + +.nav-list { + padding-right: 15px; + padding-left: 15px; + margin-bottom: 0; +} + +.nav-list > li > a, +.nav-list .nav-header { + margin-right: -15px; + margin-left: -15px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} + +.nav-list > li > a { + padding: 3px 15px; +} + +.nav-list > .active > a, +.nav-list > .active > a:hover, +.nav-list > .active > a:focus { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + background-color: #0088cc; +} + +.nav-list [class^="icon-"], +.nav-list [class*=" icon-"] { + margin-right: 2px; +} + +.nav-list .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.nav-tabs, +.nav-pills { + *zoom: 1; +} + +.nav-tabs:before, +.nav-pills:before, +.nav-tabs:after, +.nav-pills:after { + display: table; + line-height: 0; + content: ""; +} + +.nav-tabs:after, +.nav-pills:after { + clear: both; +} + +.nav-tabs > li, +.nav-pills > li { + float: left; +} + +.nav-tabs > li > a, +.nav-pills > li > a { + padding-right: 12px; + padding-left: 12px; + margin-right: 2px; + line-height: 14px; +} + +.nav-tabs { + border-bottom: 1px solid #ddd; +} + +.nav-tabs > li { + margin-bottom: -1px; +} + +.nav-tabs > li > a { + padding-top: 8px; + padding-bottom: 8px; + line-height: 20px; + border: 1px solid transparent; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.nav-tabs > li > a:hover, +.nav-tabs > li > a:focus { + border-color: #eeeeee #eeeeee #dddddd; +} + +.nav-tabs > .active > a, +.nav-tabs > .active > a:hover, +.nav-tabs > .active > a:focus { + color: #555555; + cursor: default; + background-color: #ffffff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} + +.nav-pills > li > a { + padding-top: 8px; + padding-bottom: 8px; + margin-top: 2px; + margin-bottom: 2px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.nav-pills > .active > a, +.nav-pills > .active > a:hover, +.nav-pills > .active > a:focus { + color: #ffffff; + background-color: #0088cc; +} + +.nav-stacked > li { + float: none; +} + +.nav-stacked > li > a { + margin-right: 0; +} + +.nav-tabs.nav-stacked { + border-bottom: 0; +} + +.nav-tabs.nav-stacked > li > a { + border: 1px solid #ddd; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.nav-tabs.nav-stacked > li:first-child > a { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; +} + +.nav-tabs.nav-stacked > li:last-child > a { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.nav-tabs.nav-stacked > li > a:hover, +.nav-tabs.nav-stacked > li > a:focus { + z-index: 2; + border-color: #ddd; +} + +.nav-pills.nav-stacked > li > a { + margin-bottom: 3px; +} + +.nav-pills.nav-stacked > li:last-child > a { + margin-bottom: 1px; +} + +.nav-tabs .dropdown-menu { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.nav-pills .dropdown-menu { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.nav .dropdown-toggle .caret { + margin-top: 6px; + border-top-color: #0088cc; + border-bottom-color: #0088cc; +} + +.nav .dropdown-toggle:hover .caret, +.nav .dropdown-toggle:focus .caret { + border-top-color: #005580; + border-bottom-color: #005580; +} + +/* move down carets for tabs */ + +.nav-tabs .dropdown-toggle .caret { + margin-top: 8px; +} + +.nav .active .dropdown-toggle .caret { + border-top-color: #fff; + border-bottom-color: #fff; +} + +.nav-tabs .active .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.nav > .dropdown.active > a:hover, +.nav > .dropdown.active > a:focus { + cursor: pointer; +} + +.nav-tabs .open .dropdown-toggle, +.nav-pills .open .dropdown-toggle, +.nav > li.dropdown.open.active > a:hover, +.nav > li.dropdown.open.active > a:focus { + color: #ffffff; + background-color: #999999; + border-color: #999999; +} + +.nav li.dropdown.open .caret, +.nav li.dropdown.open.active .caret, +.nav li.dropdown.open a:hover .caret, +.nav li.dropdown.open a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; + opacity: 1; + filter: alpha(opacity=100); +} + +.tabs-stacked .open > a:hover, +.tabs-stacked .open > a:focus { + border-color: #999999; +} + +.tabbable { + *zoom: 1; +} + +.tabbable:before, +.tabbable:after { + display: table; + line-height: 0; + content: ""; +} + +.tabbable:after { + clear: both; +} + +.tab-content { + overflow: auto; +} + +.tabs-below > .nav-tabs, +.tabs-right > .nav-tabs, +.tabs-left > .nav-tabs { + border-bottom: 0; +} + +.tab-content > .tab-pane, +.pill-content > .pill-pane { + display: none; +} + +.tab-content > .active, +.pill-content > .active { + display: block; +} + +.tabs-below > .nav-tabs { + border-top: 1px solid #ddd; +} + +.tabs-below > .nav-tabs > li { + margin-top: -1px; + margin-bottom: 0; +} + +.tabs-below > .nav-tabs > li > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.tabs-below > .nav-tabs > li > a:hover, +.tabs-below > .nav-tabs > li > a:focus { + border-top-color: #ddd; + border-bottom-color: transparent; +} + +.tabs-below > .nav-tabs > .active > a, +.tabs-below > .nav-tabs > .active > a:hover, +.tabs-below > .nav-tabs > .active > a:focus { + border-color: transparent #ddd #ddd #ddd; +} + +.tabs-left > .nav-tabs > li, +.tabs-right > .nav-tabs > li { + float: none; +} + +.tabs-left > .nav-tabs > li > a, +.tabs-right > .nav-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} + +.tabs-left > .nav-tabs { + float: left; + margin-right: 19px; + border-right: 1px solid #ddd; +} + +.tabs-left > .nav-tabs > li > a { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.tabs-left > .nav-tabs > li > a:hover, +.tabs-left > .nav-tabs > li > a:focus { + border-color: #eeeeee #dddddd #eeeeee #eeeeee; +} + +.tabs-left > .nav-tabs .active > a, +.tabs-left > .nav-tabs .active > a:hover, +.tabs-left > .nav-tabs .active > a:focus { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: #ffffff; +} + +.tabs-right > .nav-tabs { + float: right; + margin-left: 19px; + border-left: 1px solid #ddd; +} + +.tabs-right > .nav-tabs > li > a { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.tabs-right > .nav-tabs > li > a:hover, +.tabs-right > .nav-tabs > li > a:focus { + border-color: #eeeeee #eeeeee #eeeeee #dddddd; +} + +.tabs-right > .nav-tabs .active > a, +.tabs-right > .nav-tabs .active > a:hover, +.tabs-right > .nav-tabs .active > a:focus { + border-color: #ddd #ddd #ddd transparent; + *border-left-color: #ffffff; +} + +.nav > .disabled > a { + color: #999999; +} + +.nav > .disabled > a:hover, +.nav > .disabled > a:focus { + text-decoration: none; + cursor: default; + background-color: transparent; +} + +.navbar { + *position: relative; + *z-index: 2; + margin-bottom: 20px; + overflow: visible; +} + +.navbar-inner { + min-height: 40px; + padding-right: 20px; + padding-left: 20px; + background-color: #fafafa; + background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -webkit-gradient( + linear, + 0 0, + 0 100%, + from(#ffffff), + to(#f2f2f2) + ); + background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -o-linear-gradient(top, #ffffff, #f2f2f2); + background-image: linear-gradient(to bottom, #ffffff, #f2f2f2); + background-repeat: repeat-x; + border: 1px solid #d4d4d4; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); + *zoom: 1; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); +} + +.navbar-inner:before, +.navbar-inner:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-inner:after { + clear: both; +} + +.navbar .container { + width: auto; +} + +.nav-collapse.collapse { + height: auto; + overflow: visible; +} + +.navbar .brand { + display: block; + float: left; + padding: 10px 20px 10px; + margin-left: -20px; + font-size: 20px; + font-weight: 200; + color: #777777; + text-shadow: 0 1px 0 #ffffff; +} + +.navbar .brand:hover, +.navbar .brand:focus { + text-decoration: none; +} + +.navbar-text { + margin-bottom: 0; + line-height: 40px; + color: #777777; +} + +.navbar-link { + color: #777777; +} + +.navbar-link:hover, +.navbar-link:focus { + color: #333333; +} + +.navbar .divider-vertical { + height: 40px; + margin: 0 9px; + border-right: 1px solid #ffffff; + border-left: 1px solid #f2f2f2; +} + +.navbar .btn, +.navbar .btn-group { + margin-top: 5px; +} + +.navbar .btn-group .btn, +.navbar .input-prepend .btn, +.navbar .input-append .btn, +.navbar .input-prepend .btn-group, +.navbar .input-append .btn-group { + margin-top: 0; +} + +.navbar-form { + margin-bottom: 0; + *zoom: 1; +} + +.navbar-form:before, +.navbar-form:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-form:after { + clear: both; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .radio, +.navbar-form .checkbox { + margin-top: 5px; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .btn { + display: inline-block; + margin-bottom: 0; +} + +.navbar-form input[type="image"], +.navbar-form input[type="checkbox"], +.navbar-form input[type="radio"] { + margin-top: 3px; +} + +.navbar-form .input-append, +.navbar-form .input-prepend { + margin-top: 5px; + white-space: nowrap; +} + +.navbar-form .input-append input, +.navbar-form .input-prepend input { + margin-top: 0; +} + +.navbar-search { + position: relative; + float: left; + margin-top: 5px; + margin-bottom: 0; +} + +.navbar-search .search-query { + padding: 4px 14px; + margin-bottom: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 1; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.navbar-static-top { + position: static; + margin-bottom: 0; +} + +.navbar-static-top .navbar-inner { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + margin-bottom: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + border-width: 0 0 1px; +} + +.navbar-fixed-bottom .navbar-inner { + border-width: 1px 0 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-fixed-bottom .navbar-inner { + padding-right: 0; + padding-left: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.navbar-fixed-top { + top: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar-fixed-bottom { + bottom: 0; +} + +.navbar-fixed-bottom .navbar-inner { + -webkit-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar .nav { + position: relative; + left: 0; + display: block; + float: left; + margin: 0 10px 0 0; +} + +.navbar .nav.pull-right { + float: right; + margin-right: 0; +} + +.navbar .nav > li { + float: left; +} + +.navbar .nav > li > a { + color: #777777; + text-decoration: none; + text-shadow: 0 1px 0 #ffffff; +} + +.navbar .nav .dropdown-toggle .caret { + margin-top: 8px; +} + +.navbar .nav > li > a:focus, +.navbar .nav > li > a:hover { + color: #333333; + text-decoration: none; + background-color: transparent; +} + +.navbar .nav > .active > a, +.navbar .nav > .active > a:hover, +.navbar .nav > .active > a:focus { + color: #555555; + text-decoration: none; + background-color: #e5e5e5; + -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); +} + +.navbar .btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-right: 5px; + margin-left: 5px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #ededed; + *background-color: #e5e5e5; + background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: -webkit-gradient( + linear, + 0 0, + 0 100%, + from(#f2f2f2), + to(#e5e5e5) + ); + background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5); + background-repeat: repeat-x; + border-color: #e5e5e5 #e5e5e5 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), + 0 1px 0 rgba(255, 255, 255, 0.075); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), + 0 1px 0 rgba(255, 255, 255, 0.075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), + 0 1px 0 rgba(255, 255, 255, 0.075); +} + +.navbar .btn-navbar:hover, +.navbar .btn-navbar:focus, +.navbar .btn-navbar:active, +.navbar .btn-navbar.active, +.navbar .btn-navbar.disabled, +.navbar .btn-navbar[disabled] { + color: #ffffff; + background-color: #e5e5e5; + *background-color: #d9d9d9; +} + +.navbar .btn-navbar:active, +.navbar .btn-navbar.active { + background-color: #cccccc \9; +} + +.navbar .btn-navbar .icon-bar { + display: block; + width: 18px; + height: 2px; + background-color: #f5f5f5; + -webkit-border-radius: 1px; + -moz-border-radius: 1px; + border-radius: 1px; + -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); +} + +.btn-navbar .icon-bar + .icon-bar { + margin-top: 3px; +} + +.navbar .nav > li > .dropdown-menu:before { + position: absolute; + top: -7px; + left: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ""; +} + +.navbar .nav > li > .dropdown-menu:after { + position: absolute; + top: -6px; + left: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + border-left: 6px solid transparent; + content: ""; +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:before { + top: auto; + bottom: -7px; + border-top: 7px solid #ccc; + border-bottom: 0; + border-top-color: rgba(0, 0, 0, 0.2); +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:after { + top: auto; + bottom: -6px; + border-top: 6px solid #ffffff; + border-bottom: 0; +} + +.navbar .nav li.dropdown > a:hover .caret, +.navbar .nav li.dropdown > a:focus .caret { + border-top-color: #333333; + border-bottom-color: #333333; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle, +.navbar .nav li.dropdown.active > .dropdown-toggle, +.navbar .nav li.dropdown.open.active > .dropdown-toggle { + color: #555555; + background-color: #e5e5e5; +} + +.navbar .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #777777; + border-bottom-color: #777777; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.navbar .pull-right > li > .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:before, +.navbar .nav > li > .dropdown-menu.pull-right:before { + right: 12px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:after, +.navbar .nav > li > .dropdown-menu.pull-right:after { + right: 13px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { + right: 100%; + left: auto; + margin-right: -1px; + margin-left: 0; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.navbar-inverse .navbar-inner { + background-color: #1b1b1b; + background-image: -moz-linear-gradient(top, #222222, #111111); + background-image: -webkit-gradient( + linear, + 0 0, + 0 100%, + from(#222222), + to(#111111) + ); + background-image: -webkit-linear-gradient(top, #222222, #111111); + background-image: -o-linear-gradient(top, #222222, #111111); + background-image: linear-gradient(to bottom, #222222, #111111); + background-repeat: repeat-x; + border-color: #252525; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0); +} + +.navbar-inverse .brand, +.navbar-inverse .nav > li > a { + color: #999999; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.navbar-inverse .brand:hover, +.navbar-inverse .nav > li > a:hover, +.navbar-inverse .brand:focus, +.navbar-inverse .nav > li > a:focus { + color: #ffffff; +} + +.navbar-inverse .brand { + color: #999999; +} + +.navbar-inverse .navbar-text { + color: #999999; +} + +.navbar-inverse .nav > li > a:focus, +.navbar-inverse .nav > li > a:hover { + color: #ffffff; + background-color: transparent; +} + +.navbar-inverse .nav .active > a, +.navbar-inverse .nav .active > a:hover, +.navbar-inverse .nav .active > a:focus { + color: #ffffff; + background-color: #111111; +} + +.navbar-inverse .navbar-link { + color: #999999; +} + +.navbar-inverse .navbar-link:hover, +.navbar-inverse .navbar-link:focus { + color: #ffffff; +} + +.navbar-inverse .divider-vertical { + border-right-color: #222222; + border-left-color: #111111; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { + color: #ffffff; + background-color: #111111; +} + +.navbar-inverse .nav li.dropdown > a:hover .caret, +.navbar-inverse .nav li.dropdown > a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #999999; + border-bottom-color: #999999; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .navbar-search .search-query { + color: #ffffff; + background-color: #515151; + border-color: #111111; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), + 0 1px 0 rgba(255, 255, 255, 0.15); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), + 0 1px 0 rgba(255, 255, 255, 0.15); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), + 0 1px 0 rgba(255, 255, 255, 0.15); + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; +} + +.navbar-inverse .navbar-search .search-query:-moz-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:focus, +.navbar-inverse .navbar-search .search-query.focused { + padding: 5px 15px; + color: #333333; + text-shadow: 0 1px 0 #ffffff; + background-color: #ffffff; + border: 0; + outline: 0; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); +} + +.navbar-inverse .btn-navbar { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e0e0e; + *background-color: #040404; + background-image: -moz-linear-gradient(top, #151515, #040404); + background-image: -webkit-gradient( + linear, + 0 0, + 0 100%, + from(#151515), + to(#040404) + ); + background-image: -webkit-linear-gradient(top, #151515, #040404); + background-image: -o-linear-gradient(top, #151515, #040404); + background-image: linear-gradient(to bottom, #151515, #040404); + background-repeat: repeat-x; + border-color: #040404 #040404 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.navbar-inverse .btn-navbar:hover, +.navbar-inverse .btn-navbar:focus, +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active, +.navbar-inverse .btn-navbar.disabled, +.navbar-inverse .btn-navbar[disabled] { + color: #ffffff; + background-color: #040404; + *background-color: #000000; +} + +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active { + background-color: #000000 \9; +} + +.breadcrumb { + padding: 8px 15px; + margin: 0 0 20px; + list-style: none; + background-color: #f5f5f5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.breadcrumb > li { + display: inline-block; + *display: inline; + text-shadow: 0 1px 0 #ffffff; + *zoom: 1; +} + +.breadcrumb > li > .divider { + padding: 0 5px; + color: #ccc; +} + +.breadcrumb > .active { + color: #999999; +} + +.pagination { + margin: 20px 0; +} + +.pagination ul { + display: inline-block; + *display: inline; + margin-bottom: 0; + margin-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + *zoom: 1; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.pagination ul > li { + display: inline; +} + +.pagination ul > li > a, +.pagination ul > li > span { + float: left; + padding: 4px 12px; + line-height: 20px; + text-decoration: none; + background-color: #ffffff; + border: 1px solid #dddddd; + border-left-width: 0; +} + +.pagination ul > li > a:hover, +.pagination ul > li > a:focus, +.pagination ul > .active > a, +.pagination ul > .active > span { + background-color: #f5f5f5; +} + +.pagination ul > .active > a, +.pagination ul > .active > span { + color: #999999; + cursor: default; +} + +.pagination ul > .disabled > span, +.pagination ul > .disabled > a, +.pagination ul > .disabled > a:hover, +.pagination ul > .disabled > a:focus { + color: #999999; + cursor: default; + background-color: transparent; +} + +.pagination ul > li:first-child > a, +.pagination ul > li:first-child > span { + border-left-width: 1px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.pagination ul > li:last-child > a, +.pagination ul > li:last-child > span { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.pagination-centered { + text-align: center; +} + +.pagination-right { + text-align: right; +} + +.pagination-large ul > li > a, +.pagination-large ul > li > span { + padding: 11px 19px; + font-size: 17.5px; +} + +.pagination-large ul > li:first-child > a, +.pagination-large ul > li:first-child > span { + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.pagination-large ul > li:last-child > a, +.pagination-large ul > li:last-child > span { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.pagination-mini ul > li:first-child > a, +.pagination-small ul > li:first-child > a, +.pagination-mini ul > li:first-child > span, +.pagination-small ul > li:first-child > span { + -webkit-border-bottom-left-radius: 3px; + border-bottom-left-radius: 3px; + -webkit-border-top-left-radius: 3px; + border-top-left-radius: 3px; + -moz-border-radius-bottomleft: 3px; + -moz-border-radius-topleft: 3px; +} + +.pagination-mini ul > li:last-child > a, +.pagination-small ul > li:last-child > a, +.pagination-mini ul > li:last-child > span, +.pagination-small ul > li:last-child > span { + -webkit-border-top-right-radius: 3px; + border-top-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + border-bottom-right-radius: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomright: 3px; +} + +.pagination-small ul > li > a, +.pagination-small ul > li > span { + padding: 2px 10px; + font-size: 11.9px; +} + +.pagination-mini ul > li > a, +.pagination-mini ul > li > span { + padding: 0 6px; + font-size: 10.5px; +} + +.pager { + margin: 20px 0; + text-align: center; + list-style: none; + *zoom: 1; +} + +.pager:before, +.pager:after { + display: table; + line-height: 0; + content: ""; +} + +.pager:after { + clear: both; +} + +.pager li { + display: inline; +} + +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #f5f5f5; +} + +.pager .next > a, +.pager .next > span { + float: right; +} + +.pager .previous > a, +.pager .previous > span { + float: left; +} + +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #999999; + cursor: default; + background-color: #fff; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} + +.modal-backdrop.fade { + opacity: 0; +} + +.modal-backdrop, +.modal-backdrop.fade.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.modal { + position: fixed; + top: 10%; + left: 50%; + z-index: 1050; + width: 560px; + margin-left: -280px; + background-color: #ffffff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.3); + *border: 1px solid #999; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + outline: none; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} + +.modal.fade { + top: -25%; + -webkit-transition: opacity 0.3s linear, top 0.3s ease-out; + -moz-transition: opacity 0.3s linear, top 0.3s ease-out; + -o-transition: opacity 0.3s linear, top 0.3s ease-out; + transition: opacity 0.3s linear, top 0.3s ease-out; +} + +.modal.fade.in { + top: 10%; +} + +.modal-header { + padding: 9px 15px; + border-bottom: 1px solid #eee; +} + +.modal-header .close { + margin-top: 2px; +} + +.modal-header h3 { + margin: 0; + line-height: 30px; +} + +.modal-body { + position: relative; + max-height: 400px; + padding: 15px; + overflow-y: auto; +} + +.modal-form { + margin-bottom: 0; +} + +.modal-footer { + padding: 14px 15px 15px; + margin-bottom: 0; + text-align: right; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} + +.modal-footer:before, +.modal-footer:after { + display: table; + line-height: 0; + content: ""; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} + +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} + +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} + +.tooltip { + position: absolute; + z-index: 1030; + display: block; + font-size: 11px; + line-height: 1.4; + opacity: 0; + filter: alpha(opacity=0); + visibility: visible; +} + +.tooltip.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} + +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} + +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} + +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} + +.tooltip-inner { + max-width: 200px; + padding: 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-right-color: #000000; + border-width: 5px 5px 5px 0; +} + +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-left-color: #000000; + border-width: 5px 0 5px 5px; +} + +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + max-width: 276px; + padding: 1px; + text-align: left; + white-space: normal; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.popover.top { + margin-top: -10px; +} + +.popover.right { + margin-left: 10px; +} + +.popover.bottom { + margin-top: 10px; +} + +.popover.left { + margin-left: -10px; +} + +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} + +.popover-title:empty { + display: none; +} + +.popover-content { + padding: 9px 14px; +} + +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover .arrow { + border-width: 11px; +} + +.popover .arrow:after { + border-width: 10px; + content: ""; +} + +.popover.top .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, 0.25); + border-bottom-width: 0; +} + +.popover.top .arrow:after { + bottom: 1px; + margin-left: -10px; + border-top-color: #ffffff; + border-bottom-width: 0; +} + +.popover.right .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, 0.25); + border-left-width: 0; +} + +.popover.right .arrow:after { + bottom: -10px; + left: 1px; + border-right-color: #ffffff; + border-left-width: 0; +} + +.popover.bottom .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, 0.25); + border-top-width: 0; +} + +.popover.bottom .arrow:after { + top: 1px; + margin-left: -10px; + border-bottom-color: #ffffff; + border-top-width: 0; +} + +.popover.left .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, 0.25); + border-right-width: 0; +} + +.popover.left .arrow:after { + right: 1px; + bottom: -10px; + border-left-color: #ffffff; + border-right-width: 0; +} + +.thumbnails { + margin-left: -20px; + list-style: none; + *zoom: 1; +} + +.thumbnails:before, +.thumbnails:after { + display: table; + line-height: 0; + content: ""; +} + +.thumbnails:after { + clear: both; +} + +.row-fluid .thumbnails { + margin-left: 0; +} + +.thumbnails > li { + float: left; + margin-bottom: 20px; + margin-left: 20px; +} + +.thumbnail { + display: block; + padding: 4px; + line-height: 20px; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +a.thumbnail:hover, +a.thumbnail:focus { + border-color: #0088cc; + -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); +} + +.thumbnail > img { + display: block; + max-width: 100%; + margin-right: auto; + margin-left: auto; +} + +.thumbnail .caption { + padding: 9px; + color: #555555; +} + +.media, +.media-body { + overflow: hidden; + *overflow: visible; + zoom: 1; +} + +.media, +.media .media { + margin-top: 15px; +} + +.media:first-child { + margin-top: 0; +} + +.media-object { + display: block; +} + +.media-heading { + margin: 0 0 5px; +} + +.media > .pull-left { + margin-right: 10px; +} + +.media > .pull-right { + margin-left: 10px; +} + +.media-list { + margin-left: 0; + list-style: none; +} + +.label, +.badge { + display: inline-block; + padding: 2px 4px; + font-size: 11.844px; + font-weight: bold; + line-height: 14px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + white-space: nowrap; + vertical-align: baseline; + background-color: #999999; +} + +.label { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.badge { + padding-right: 9px; + padding-left: 9px; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; +} + +.label:empty, +.badge:empty { + display: none; +} + +a.label:hover, +a.label:focus, +a.badge:hover, +a.badge:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.label-important, +.badge-important { + background-color: #b94a48; +} + +.label-important[href], +.badge-important[href] { + background-color: #953b39; +} + +.label-warning, +.badge-warning { + background-color: #f89406; +} + +.label-warning[href], +.badge-warning[href] { + background-color: #c67605; +} + +.label-success, +.badge-success { + background-color: #468847; +} + +.label-success[href], +.badge-success[href] { + background-color: #356635; +} + +.label-info, +.badge-info { + background-color: #3a87ad; +} + +.label-info[href], +.badge-info[href] { + background-color: #2d6987; +} + +.label-inverse, +.badge-inverse { + background-color: #333333; +} + +.label-inverse[href], +.badge-inverse[href] { + background-color: #1a1a1a; +} + +.btn .label, +.btn .badge { + position: relative; + top: -1px; +} + +.btn-mini .label, +.btn-mini .badge { + top: 0; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient( + linear, + 0 0, + 0 100%, + from(#f5f5f5), + to(#f9f9f9) + ); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.progress .bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + color: #ffffff; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient( + linear, + 0 0, + 0 100%, + from(#149bdf), + to(#0480be) + ); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(to bottom, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} + +.progress .bar + .bar { + -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), + inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), + inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), + inset 0 -1px 0 rgba(0, 0, 0, 0.15); +} + +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient( + linear, + 0 100%, + 100% 0, + color-stop(0.25, rgba(255, 255, 255, 0.15)), + color-stop(0.25, transparent), + color-stop(0.5, transparent), + color-stop(0.5, rgba(255, 255, 255, 0.15)), + color-stop(0.75, rgba(255, 255, 255, 0.15)), + color-stop(0.75, transparent), + to(transparent) + ); + background-image: -webkit-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: -moz-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: -o-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} + +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} + +.progress-danger .bar, +.progress .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient( + linear, + 0 0, + 0 100%, + from(#ee5f5b), + to(#c43c35) + ); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); +} + +.progress-danger.progress-striped .bar, +.progress-striped .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient( + linear, + 0 100%, + 100% 0, + color-stop(0.25, rgba(255, 255, 255, 0.15)), + color-stop(0.25, transparent), + color-stop(0.5, transparent), + color-stop(0.5, rgba(255, 255, 255, 0.15)), + color-stop(0.75, rgba(255, 255, 255, 0.15)), + color-stop(0.75, transparent), + to(transparent) + ); + background-image: -webkit-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: -moz-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: -o-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); +} + +.progress-success .bar, +.progress .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient( + linear, + 0 0, + 0 100%, + from(#62c462), + to(#57a957) + ); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); +} + +.progress-success.progress-striped .bar, +.progress-striped .bar-success { + background-color: #62c462; + background-image: -webkit-gradient( + linear, + 0 100%, + 100% 0, + color-stop(0.25, rgba(255, 255, 255, 0.15)), + color-stop(0.25, transparent), + color-stop(0.5, transparent), + color-stop(0.5, rgba(255, 255, 255, 0.15)), + color-stop(0.75, rgba(255, 255, 255, 0.15)), + color-stop(0.75, transparent), + to(transparent) + ); + background-image: -webkit-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: -moz-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: -o-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); +} + +.progress-info .bar, +.progress .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient( + linear, + 0 0, + 0 100%, + from(#5bc0de), + to(#339bb9) + ); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); +} + +.progress-info.progress-striped .bar, +.progress-striped .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient( + linear, + 0 100%, + 100% 0, + color-stop(0.25, rgba(255, 255, 255, 0.15)), + color-stop(0.25, transparent), + color-stop(0.5, transparent), + color-stop(0.5, rgba(255, 255, 255, 0.15)), + color-stop(0.75, rgba(255, 255, 255, 0.15)), + color-stop(0.75, transparent), + to(transparent) + ); + background-image: -webkit-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: -moz-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: -o-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); +} + +.progress-warning .bar, +.progress .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient( + linear, + 0 0, + 0 100%, + from(#fbb450), + to(#f89406) + ); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); +} + +.progress-warning.progress-striped .bar, +.progress-striped .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient( + linear, + 0 100%, + 100% 0, + color-stop(0.25, rgba(255, 255, 255, 0.15)), + color-stop(0.25, transparent), + color-stop(0.5, transparent), + color-stop(0.5, rgba(255, 255, 255, 0.15)), + color-stop(0.75, rgba(255, 255, 255, 0.15)), + color-stop(0.75, transparent), + to(transparent) + ); + background-image: -webkit-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: -moz-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: -o-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); +} + +.accordion { + margin-bottom: 20px; +} + +.accordion-group { + margin-bottom: 2px; + border: 1px solid #e5e5e5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.accordion-heading { + border-bottom: 0; +} + +.accordion-heading .accordion-toggle { + display: block; + padding: 8px 15px; +} + +.accordion-toggle { + cursor: pointer; +} + +.accordion-inner { + padding: 9px 15px; + border-top: 1px solid #e5e5e5; +} + +.carousel { + position: relative; + margin-bottom: 20px; + line-height: 1; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: 0.6s ease-in-out left; + -moz-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} + +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + line-height: 1; +} + +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} + +.carousel-inner > .active { + left: 0; +} + +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} + +.carousel-inner > .next { + left: 100%; +} + +.carousel-inner > .prev { + left: -100%; +} + +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} + +.carousel-inner > .active.left { + left: -100%; +} + +.carousel-inner > .active.right { + left: 100%; +} + +.carousel-control { + position: absolute; + top: 40%; + left: 15px; + width: 40px; + height: 40px; + margin-top: -20px; + font-size: 60px; + font-weight: 100; + line-height: 30px; + color: #ffffff; + text-align: center; + background: #222222; + border: 3px solid #ffffff; + -webkit-border-radius: 23px; + -moz-border-radius: 23px; + border-radius: 23px; + opacity: 0.5; + filter: alpha(opacity=50); +} + +.carousel-control.right { + right: 15px; + left: auto; +} + +.carousel-control:hover, +.carousel-control:focus { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} + +.carousel-indicators { + position: absolute; + top: 15px; + right: 15px; + z-index: 5; + margin: 0; + list-style: none; +} + +.carousel-indicators li { + display: block; + float: left; + width: 10px; + height: 10px; + margin-left: 5px; + text-indent: -999px; + background-color: #ccc; + background-color: rgba(255, 255, 255, 0.25); + border-radius: 5px; +} + +.carousel-indicators .active { + background-color: #fff; +} + +.carousel-caption { + position: absolute; + right: 0; + bottom: 0; + left: 0; + padding: 15px; + background: #333333; + background: rgba(0, 0, 0, 0.75); +} + +.carousel-caption h4, +.carousel-caption p { + line-height: 20px; + color: #ffffff; +} + +.carousel-caption h4 { + margin: 0 0 5px; +} + +.carousel-caption p { + margin-bottom: 0; +} + +.hero-unit { + padding: 60px; + margin-bottom: 30px; + font-size: 18px; + font-weight: 200; + line-height: 30px; + color: inherit; + background-color: #eeeeee; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.hero-unit h1 { + margin-bottom: 0; + font-size: 60px; + line-height: 1; + letter-spacing: -1px; + color: inherit; +} + +.hero-unit li { + line-height: 30px; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.hide { + display: none; +} + +.show { + display: block; +} + +.invisible { + visibility: hidden; +} + +.affix { + position: fixed; +} diff --git a/theme/static/css/bootstrap_responsive.css b/theme/static/css/bootstrap_responsive.css new file mode 100644 index 0000000..0584e35 --- /dev/null +++ b/theme/static/css/bootstrap_responsive.css @@ -0,0 +1,1112 @@ +/*! + * Bootstrap Responsive v2.3.2 + * + * Copyright 2013 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world by @mdo and @fat. + */ + +.clearfix { + *zoom: 1; +} + +.clearfix:before, +.clearfix:after { + display: table; + line-height: 0; + content: ""; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +@-ms-viewport { + width: device-width; +} + +.hidden { + display: none; + visibility: hidden; +} + +.visible-phone { + display: none !important; +} + +.visible-tablet { + display: none !important; +} + +.hidden-desktop { + display: none !important; +} + +.visible-desktop { + display: inherit !important; +} + +@media (min-width: 768px) and (max-width: 979px) { + .hidden-desktop { + display: inherit !important; + } + .visible-desktop { + display: none !important ; + } + .visible-tablet { + display: inherit !important; + } + .hidden-tablet { + display: none !important; + } +} + +@media (max-width: 767px) { + .hidden-desktop { + display: inherit !important; + } + .visible-desktop { + display: none !important; + } + .visible-phone { + display: inherit !important; + } + .hidden-phone { + display: none !important; + } +} + +.visible-print { + display: none !important; +} + +@media print { + .visible-print { + display: inherit !important; + } + .hidden-print { + display: none !important; + } +} + +@media (min-width: 1200px) { + .row { + margin-left: -30px; + *zoom: 1; + } + .row:before, + .row:after { + display: table; + line-height: 0; + content: ""; + } + .row:after { + clear: both; + } + [class*="span"] { + float: left; + min-height: 1px; + margin-left: 30px; + } + .container, + .navbar-static-top .container, + .navbar-fixed-top .container, + .navbar-fixed-bottom .container { + width: 1170px; + } + .span12 { + width: 1170px; + } + .span11 { + width: 1070px; + } + .span10 { + width: 970px; + } + .span9 { + width: 870px; + } + .span8 { + width: 770px; + } + .span7 { + width: 670px; + } + .span6 { + width: 570px; + } + .span5 { + width: 470px; + } + .span4 { + width: 370px; + } + .span3 { + width: 270px; + } + .span2 { + width: 170px; + } + .span1 { + width: 70px; + } + .offset12 { + margin-left: 1230px; + } + .offset11 { + margin-left: 1130px; + } + .offset10 { + margin-left: 1030px; + } + .offset9 { + margin-left: 930px; + } + .offset8 { + margin-left: 830px; + } + .offset7 { + margin-left: 730px; + } + .offset6 { + margin-left: 630px; + } + .offset5 { + margin-left: 530px; + } + .offset4 { + margin-left: 430px; + } + .offset3 { + margin-left: 330px; + } + .offset2 { + margin-left: 230px; + } + .offset1 { + margin-left: 130px; + } + .row-fluid { + width: 100%; + *zoom: 1; + } + .row-fluid:before, + .row-fluid:after { + display: table; + line-height: 0; + content: ""; + } + .row-fluid:after { + clear: both; + } + .row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 30px; + margin-left: 2.564102564102564%; + *margin-left: 2.5109110747408616%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .row-fluid [class*="span"]:first-child { + margin-left: 0; + } + .row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.564102564102564%; + } + .row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; + } + .row-fluid .span11 { + width: 91.45299145299145%; + *width: 91.39979996362975%; + } + .row-fluid .span10 { + width: 82.90598290598291%; + *width: 82.8527914166212%; + } + .row-fluid .span9 { + width: 74.35897435897436%; + *width: 74.30578286961266%; + } + .row-fluid .span8 { + width: 65.81196581196582%; + *width: 65.75877432260411%; + } + .row-fluid .span7 { + width: 57.26495726495726%; + *width: 57.21176577559556%; + } + .row-fluid .span6 { + width: 48.717948717948715%; + *width: 48.664757228587014%; + } + .row-fluid .span5 { + width: 40.17094017094017%; + *width: 40.11774868157847%; + } + .row-fluid .span4 { + width: 31.623931623931625%; + *width: 31.570740134569924%; + } + .row-fluid .span3 { + width: 23.076923076923077%; + *width: 23.023731587561375%; + } + .row-fluid .span2 { + width: 14.52991452991453%; + *width: 14.476723040552828%; + } + .row-fluid .span1 { + width: 5.982905982905983%; + *width: 5.929714493544281%; + } + .row-fluid .offset12 { + margin-left: 105.12820512820512%; + *margin-left: 105.02182214948171%; + } + .row-fluid .offset12:first-child { + margin-left: 102.56410256410257%; + *margin-left: 102.45771958537915%; + } + .row-fluid .offset11 { + margin-left: 96.58119658119658%; + *margin-left: 96.47481360247316%; + } + .row-fluid .offset11:first-child { + margin-left: 94.01709401709402%; + *margin-left: 93.91071103837061%; + } + .row-fluid .offset10 { + margin-left: 88.03418803418803%; + *margin-left: 87.92780505546462%; + } + .row-fluid .offset10:first-child { + margin-left: 85.47008547008548%; + *margin-left: 85.36370249136206%; + } + .row-fluid .offset9 { + margin-left: 79.48717948717949%; + *margin-left: 79.38079650845607%; + } + .row-fluid .offset9:first-child { + margin-left: 76.92307692307693%; + *margin-left: 76.81669394435352%; + } + .row-fluid .offset8 { + margin-left: 70.94017094017094%; + *margin-left: 70.83378796144753%; + } + .row-fluid .offset8:first-child { + margin-left: 68.37606837606839%; + *margin-left: 68.26968539734497%; + } + .row-fluid .offset7 { + margin-left: 62.393162393162385%; + *margin-left: 62.28677941443899%; + } + .row-fluid .offset7:first-child { + margin-left: 59.82905982905982%; + *margin-left: 59.72267685033642%; + } + .row-fluid .offset6 { + margin-left: 53.84615384615384%; + *margin-left: 53.739770867430444%; + } + .row-fluid .offset6:first-child { + margin-left: 51.28205128205128%; + *margin-left: 51.175668303327875%; + } + .row-fluid .offset5 { + margin-left: 45.299145299145295%; + *margin-left: 45.1927623204219%; + } + .row-fluid .offset5:first-child { + margin-left: 42.73504273504273%; + *margin-left: 42.62865975631933%; + } + .row-fluid .offset4 { + margin-left: 36.75213675213675%; + *margin-left: 36.645753773413354%; + } + .row-fluid .offset4:first-child { + margin-left: 34.18803418803419%; + *margin-left: 34.081651209310785%; + } + .row-fluid .offset3 { + margin-left: 28.205128205128204%; + *margin-left: 28.0987452264048%; + } + .row-fluid .offset3:first-child { + margin-left: 25.641025641025642%; + *margin-left: 25.53464266230224%; + } + .row-fluid .offset2 { + margin-left: 19.65811965811966%; + *margin-left: 19.551736679396257%; + } + .row-fluid .offset2:first-child { + margin-left: 17.094017094017094%; + *margin-left: 16.98763411529369%; + } + .row-fluid .offset1 { + margin-left: 11.11111111111111%; + *margin-left: 11.004728132387708%; + } + .row-fluid .offset1:first-child { + margin-left: 8.547008547008547%; + *margin-left: 8.440625568285142%; + } + input, + textarea, + .uneditable-input { + margin-left: 0; + } + .controls-row [class*="span"] + [class*="span"] { + margin-left: 30px; + } + input.span12, + textarea.span12, + .uneditable-input.span12 { + width: 1156px; + } + input.span11, + textarea.span11, + .uneditable-input.span11 { + width: 1056px; + } + input.span10, + textarea.span10, + .uneditable-input.span10 { + width: 956px; + } + input.span9, + textarea.span9, + .uneditable-input.span9 { + width: 856px; + } + input.span8, + textarea.span8, + .uneditable-input.span8 { + width: 756px; + } + input.span7, + textarea.span7, + .uneditable-input.span7 { + width: 656px; + } + input.span6, + textarea.span6, + .uneditable-input.span6 { + width: 556px; + } + input.span5, + textarea.span5, + .uneditable-input.span5 { + width: 456px; + } + input.span4, + textarea.span4, + .uneditable-input.span4 { + width: 356px; + } + input.span3, + textarea.span3, + .uneditable-input.span3 { + width: 256px; + } + input.span2, + textarea.span2, + .uneditable-input.span2 { + width: 156px; + } + input.span1, + textarea.span1, + .uneditable-input.span1 { + width: 56px; + } + .thumbnails { + margin-left: -30px; + } + .thumbnails > li { + margin-left: 30px; + } + .row-fluid .thumbnails { + margin-left: 0; + } +} + +@media (min-width: 768px) and (max-width: 979px) { + .row { + margin-left: -20px; + *zoom: 1; + } + .row:before, + .row:after { + display: table; + line-height: 0; + content: ""; + } + .row:after { + clear: both; + } + [class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; + } + .container, + .navbar-static-top .container, + .navbar-fixed-top .container, + .navbar-fixed-bottom .container { + width: 724px; + } + .span12 { + width: 724px; + } + .span11 { + width: 662px; + } + .span10 { + width: 600px; + } + .span9 { + width: 538px; + } + .span8 { + width: 476px; + } + .span7 { + width: 414px; + } + .span6 { + width: 352px; + } + .span5 { + width: 290px; + } + .span4 { + width: 228px; + } + .span3 { + width: 166px; + } + .span2 { + width: 104px; + } + .span1 { + width: 42px; + } + .offset12 { + margin-left: 764px; + } + .offset11 { + margin-left: 702px; + } + .offset10 { + margin-left: 640px; + } + .offset9 { + margin-left: 578px; + } + .offset8 { + margin-left: 516px; + } + .offset7 { + margin-left: 454px; + } + .offset6 { + margin-left: 392px; + } + .offset5 { + margin-left: 330px; + } + .offset4 { + margin-left: 268px; + } + .offset3 { + margin-left: 206px; + } + .offset2 { + margin-left: 144px; + } + .offset1 { + margin-left: 82px; + } + .row-fluid { + width: 100%; + *zoom: 1; + } + .row-fluid:before, + .row-fluid:after { + display: table; + line-height: 0; + content: ""; + } + .row-fluid:after { + clear: both; + } + .row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 30px; + margin-left: 2.7624309392265194%; + *margin-left: 2.709239449864817%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .row-fluid [class*="span"]:first-child { + margin-left: 0; + } + .row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.7624309392265194%; + } + .row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; + } + .row-fluid .span11 { + width: 91.43646408839778%; + *width: 91.38327259903608%; + } + .row-fluid .span10 { + width: 82.87292817679558%; + *width: 82.81973668743387%; + } + .row-fluid .span9 { + width: 74.30939226519337%; + *width: 74.25620077583166%; + } + .row-fluid .span8 { + width: 65.74585635359117%; + *width: 65.69266486422946%; + } + .row-fluid .span7 { + width: 57.18232044198895%; + *width: 57.12912895262725%; + } + .row-fluid .span6 { + width: 48.61878453038674%; + *width: 48.56559304102504%; + } + .row-fluid .span5 { + width: 40.05524861878453%; + *width: 40.00205712942283%; + } + .row-fluid .span4 { + width: 31.491712707182323%; + *width: 31.43852121782062%; + } + .row-fluid .span3 { + width: 22.92817679558011%; + *width: 22.87498530621841%; + } + .row-fluid .span2 { + width: 14.3646408839779%; + *width: 14.311449394616199%; + } + .row-fluid .span1 { + width: 5.801104972375691%; + *width: 5.747913483013988%; + } + .row-fluid .offset12 { + margin-left: 105.52486187845304%; + *margin-left: 105.41847889972962%; + } + .row-fluid .offset12:first-child { + margin-left: 102.76243093922652%; + *margin-left: 102.6560479605031%; + } + .row-fluid .offset11 { + margin-left: 96.96132596685082%; + *margin-left: 96.8549429881274%; + } + .row-fluid .offset11:first-child { + margin-left: 94.1988950276243%; + *margin-left: 94.09251204890089%; + } + .row-fluid .offset10 { + margin-left: 88.39779005524862%; + *margin-left: 88.2914070765252%; + } + .row-fluid .offset10:first-child { + margin-left: 85.6353591160221%; + *margin-left: 85.52897613729868%; + } + .row-fluid .offset9 { + margin-left: 79.8342541436464%; + *margin-left: 79.72787116492299%; + } + .row-fluid .offset9:first-child { + margin-left: 77.07182320441989%; + *margin-left: 76.96544022569647%; + } + .row-fluid .offset8 { + margin-left: 71.2707182320442%; + *margin-left: 71.16433525332079%; + } + .row-fluid .offset8:first-child { + margin-left: 68.50828729281768%; + *margin-left: 68.40190431409427%; + } + .row-fluid .offset7 { + margin-left: 62.70718232044199%; + *margin-left: 62.600799341718584%; + } + .row-fluid .offset7:first-child { + margin-left: 59.94475138121547%; + *margin-left: 59.838368402492065%; + } + .row-fluid .offset6 { + margin-left: 54.14364640883978%; + *margin-left: 54.037263430116376%; + } + .row-fluid .offset6:first-child { + margin-left: 51.38121546961326%; + *margin-left: 51.27483249088986%; + } + .row-fluid .offset5 { + margin-left: 45.58011049723757%; + *margin-left: 45.47372751851417%; + } + .row-fluid .offset5:first-child { + margin-left: 42.81767955801105%; + *margin-left: 42.71129657928765%; + } + .row-fluid .offset4 { + margin-left: 37.01657458563536%; + *margin-left: 36.91019160691196%; + } + .row-fluid .offset4:first-child { + margin-left: 34.25414364640884%; + *margin-left: 34.14776066768544%; + } + .row-fluid .offset3 { + margin-left: 28.45303867403315%; + *margin-left: 28.346655695309746%; + } + .row-fluid .offset3:first-child { + margin-left: 25.69060773480663%; + *margin-left: 25.584224756083227%; + } + .row-fluid .offset2 { + margin-left: 19.88950276243094%; + *margin-left: 19.783119783707537%; + } + .row-fluid .offset2:first-child { + margin-left: 17.12707182320442%; + *margin-left: 17.02068884448102%; + } + .row-fluid .offset1 { + margin-left: 11.32596685082873%; + *margin-left: 11.219583872105325%; + } + .row-fluid .offset1:first-child { + margin-left: 8.56353591160221%; + *margin-left: 8.457152932878806%; + } + input, + textarea, + .uneditable-input { + margin-left: 0; + } + .controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; + } + input.span12, + textarea.span12, + .uneditable-input.span12 { + width: 710px; + } + input.span11, + textarea.span11, + .uneditable-input.span11 { + width: 648px; + } + input.span10, + textarea.span10, + .uneditable-input.span10 { + width: 586px; + } + input.span9, + textarea.span9, + .uneditable-input.span9 { + width: 524px; + } + input.span8, + textarea.span8, + .uneditable-input.span8 { + width: 462px; + } + input.span7, + textarea.span7, + .uneditable-input.span7 { + width: 400px; + } + input.span6, + textarea.span6, + .uneditable-input.span6 { + width: 338px; + } + input.span5, + textarea.span5, + .uneditable-input.span5 { + width: 276px; + } + input.span4, + textarea.span4, + .uneditable-input.span4 { + width: 214px; + } + input.span3, + textarea.span3, + .uneditable-input.span3 { + width: 152px; + } + input.span2, + textarea.span2, + .uneditable-input.span2 { + width: 90px; + } + input.span1, + textarea.span1, + .uneditable-input.span1 { + width: 28px; + } +} + +@media (max-width: 767px) { + body { + padding-right: 20px; + padding-left: 20px; + } + .navbar-fixed-top, + .navbar-fixed-bottom, + .navbar-static-top { + margin-right: -20px; + margin-left: -20px; + } + .container-fluid { + padding: 0; + } + .dl-horizontal dt { + float: none; + width: auto; + clear: none; + text-align: left; + } + .dl-horizontal dd { + margin-left: 0; + } + .container { + width: auto; + } + .row-fluid { + width: 100%; + } + .row, + .thumbnails { + margin-left: 0; + } + .thumbnails > li { + float: none; + margin-left: 0; + } + [class*="span"], + .uneditable-input[class*="span"], + .row-fluid [class*="span"] { + display: block; + float: none; + width: 100%; + margin-left: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .span12, + .row-fluid .span12 { + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .row-fluid [class*="offset"]:first-child { + margin-left: 0; + } + .input-large, + .input-xlarge, + .input-xxlarge, + input[class*="span"], + select[class*="span"], + textarea[class*="span"], + .uneditable-input { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .input-prepend input, + .input-append input, + .input-prepend input[class*="span"], + .input-append input[class*="span"] { + display: inline-block; + width: auto; + } + .controls-row [class*="span"] + [class*="span"] { + margin-left: 0; + } + .modal { + position: fixed; + top: 20px; + right: 20px; + left: 20px; + width: auto; + margin: 0; + } + .modal.fade { + top: -100px; + } + .modal.fade.in { + top: 20px; + } +} + +@media (max-width: 480px) { + .nav-collapse { + -webkit-transform: translate3d(0, 0, 0); + } + .page-header h1 small { + display: block; + line-height: 20px; + } + input[type="checkbox"], + input[type="radio"] { + border: 1px solid #ccc; + } + .form-horizontal .control-label { + float: none; + width: auto; + padding-top: 0; + text-align: left; + } + .form-horizontal .controls { + margin-left: 0; + } + .form-horizontal .control-list { + padding-top: 0; + } + .form-horizontal .form-actions { + padding-right: 10px; + padding-left: 10px; + } + .media .pull-left, + .media .pull-right { + display: block; + float: none; + margin-bottom: 10px; + } + .media-object { + margin-right: 0; + margin-left: 0; + } + .modal { + top: 10px; + right: 10px; + left: 10px; + } + .modal-header .close { + padding: 10px; + margin: -10px; + } + .carousel-caption { + position: static; + } +} + +@media (max-width: 979px) { + body { + padding-top: 0; + } + .navbar-fixed-top, + .navbar-fixed-bottom { + position: static; + } + .navbar-fixed-top { + margin-bottom: 20px; + } + .navbar-fixed-bottom { + margin-top: 20px; + } + .navbar-fixed-top .navbar-inner, + .navbar-fixed-bottom .navbar-inner { + padding: 5px; + } + .navbar .container { + width: auto; + padding: 0; + } + .navbar .brand { + padding-right: 10px; + padding-left: 10px; + margin: 0 0 0 -5px; + } + .nav-collapse { + clear: both; + } + .nav-collapse .nav { + float: none; + margin: 0 0 10px; + } + .nav-collapse .nav > li { + float: none; + } + .nav-collapse .nav > li > a { + margin-bottom: 2px; + } + .nav-collapse .nav > .divider-vertical { + display: none; + } + .nav-collapse .nav .nav-header { + color: #777777; + text-shadow: none; + } + .nav-collapse .nav > li > a, + .nav-collapse .dropdown-menu a { + padding: 9px 15px; + font-weight: bold; + color: #777777; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + } + .nav-collapse .btn { + padding: 4px 10px 4px; + font-weight: normal; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + } + .nav-collapse .dropdown-menu li + li a { + margin-bottom: 2px; + } + .nav-collapse .nav > li > a:hover, + .nav-collapse .nav > li > a:focus, + .nav-collapse .dropdown-menu a:hover, + .nav-collapse .dropdown-menu a:focus { + background-color: #f2f2f2; + } + .navbar-inverse .nav-collapse .nav > li > a, + .navbar-inverse .nav-collapse .dropdown-menu a { + color: #999999; + } + .navbar-inverse .nav-collapse .nav > li > a:hover, + .navbar-inverse .nav-collapse .nav > li > a:focus, + .navbar-inverse .nav-collapse .dropdown-menu a:hover, + .navbar-inverse .nav-collapse .dropdown-menu a:focus { + background-color: #111111; + } + .nav-collapse.in .btn-group { + padding: 0; + margin-top: 5px; + } + .nav-collapse .dropdown-menu { + position: static; + top: auto; + left: auto; + display: none; + float: none; + max-width: none; + padding: 0; + margin: 0 15px; + background-color: transparent; + border: none; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + } + .nav-collapse .open > .dropdown-menu { + display: block; + } + .nav-collapse .dropdown-menu:before, + .nav-collapse .dropdown-menu:after { + display: none; + } + .nav-collapse .dropdown-menu .divider { + display: none; + } + .nav-collapse .nav > li > .dropdown-menu:before, + .nav-collapse .nav > li > .dropdown-menu:after { + display: none; + } + .nav-collapse .navbar-form, + .nav-collapse .navbar-search { + float: none; + padding: 10px 15px; + margin: 10px 0; + border-top: 1px solid #f2f2f2; + border-bottom: 1px solid #f2f2f2; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), + 0 1px 0 rgba(255, 255, 255, 0.1); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), + 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), + 0 1px 0 rgba(255, 255, 255, 0.1); + } + .navbar-inverse .nav-collapse .navbar-form, + .navbar-inverse .nav-collapse .navbar-search { + border-top-color: #111111; + border-bottom-color: #111111; + } + .navbar .nav-collapse .nav.pull-right { + float: none; + margin-left: 0; + } + .nav-collapse, + .nav-collapse.collapse { + height: 0; + overflow: hidden; + } + .navbar .btn-navbar { + display: block; + } + .navbar-static .navbar-inner { + padding-right: 10px; + padding-left: 10px; + } +} + +@media (min-width: 980px) { + .nav-collapse.collapse { + height: auto !important; + overflow: visible !important; + } +} diff --git a/theme/static/css/code-copy.css b/theme/static/css/code-copy.css new file mode 100644 index 0000000..873a806 --- /dev/null +++ b/theme/static/css/code-copy.css @@ -0,0 +1,34 @@ +.codecopy { + position: relative; + overflow: visible; + + & button.codecopy-btn { + font-size: rfs(0.9rem); + box-shadow: none; + min-height: initial; + + position: absolute; + z-index: 1; + + right: 0; + top: 0; + background-color: #fe8019; + padding: rfs(0.2rem); + border: none; + border-top-right-radius: var(--borderRadius); + border-bottom-left-radius: var(--borderRadius); + + &:hover, + &:focus { + box-shadow: none; + } + } +} + +/* Remove radus when inside liquid_tags.include_code */ +figure.code + > div.highlight:not(:first-child) + > div.codecopy + > button.codecopy-btn { + border-top-right-radius: 0; +} diff --git a/theme/static/css/code.css b/theme/static/css/code.css new file mode 100644 index 0000000..10ad1b8 --- /dev/null +++ b/theme/static/css/code.css @@ -0,0 +1,102 @@ +/* For highlighting lines in code snippets */ +.highlight span.hll span { + background-color: black; + display: inline-block; + width: 100%; +} +div.highlight { + margin-bottom: 20px; + border-radius: var(--borderRadius); +} +td.code div.highlight { + border-radius: 0 var(--borderRadius) var(--borderRadius) 0; +} +pre { + overflow: auto; + white-space: pre; + word-break: normal; + word-wrap: normal; + color: #ebdbb2; /* This is needed due to bug in Pygments. It does not wraps some part of the code of some lagauges, like reST. This is for fallback. */ +} +/* liquid_tags.include_code */ +figure.code { + margin: 0; + padding: 0; + & figcaption { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: space-between; + align-items: center; + border-radius: var(--borderRadius) var(--borderRadius) 0 0; + background-color: #544c50; + color: #ebdbb2; + padding: 1px 9.5px; + font-family: var(--sansFontFamily); + font-size: rfs(1.1rem); + & span.liquid-tags-code-title { + flex-grow: 1; + } + & span.liquid-tags-code-filename { + font-family: var(--monoFontFamily); + color: #fe8019; + } + /* Download Link */ + & a { + color: #b8bb26; + text-transform: capitalize; + position: relative; + margin-left: 30px; + &:before { + height: rfs(0.9rem); + width: rfs(0.9rem); + top: rfs(0.35rem); + content: url("data:image/svg+xml,%3Csvg%20image-rendering%3D%22optimizeQuality%22%20shape-rendering%3D%22geometricPrecision%22%20text-rendering%3D%22geometricPrecision%22%20viewBox%3D%220%200%20294%20452.5%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill%3D%22%23b8bb26%22%3E%3Cpath%20d%3D%22m126%200h42v185h62l-83%20111-83-111h62z%22%2F%3E%3Cpath%20d%3D%22m294%20257v105c-98%200-196%200-294%200v-105h34v71h226v-71z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); + margin: 0; + padding: 0 4px 0 0; + right: 100%; + position: absolute; + } + } + } + & div.highlight:not(:first-child) { + border-radius: 0 0 var(--borderRadius) var(--borderRadius); + } +} + +table { + table-layout: fixed; + width: 100%; +} +td { + vertical-align: top; +} +@media (max-width: 979px) { + .linenos { + display: none !important; + } +} +.linenos { + width: 30px; +} +.linenos div pre { + text-align: right; + overflow: hidden; +} +td.code { + width: 100%; +} +.linenodiv pre { + border-radius: var(--borderRadius) 0 0 var(--borderRadius); + color: #ebdbb2; + background-color: #282828; +} +table.highlighttable { + border: none; +} +table.highlighttable td { + border: none; +} +table.highlighttable tbody > tr:nth-child(odd) > td { + background-color: transparent; +} diff --git a/theme/static/css/custom.css b/theme/static/css/custom.css index ffc2c61..e69de29 100644 --- a/theme/static/css/custom.css +++ b/theme/static/css/custom.css @@ -1,15 +0,0 @@ -.table-of-content .toc { - font-size: 0.9em; -} - -.article-content p{ - font-size: 19px; -} - -.article-content { - max-width: none !important; -} - -pre { - word-break: break-all; -} diff --git a/theme/static/css/default-skin.png b/theme/static/css/default-skin.png new file mode 100644 index 0000000000000000000000000000000000000000..441c502c92fe66534f0ca07b1c639a02a9bfc6e8 GIT binary patch literal 547 zcmeAS@N?(olHy`uVBq!ia0y~yVB`R@BRE)q<YKmk=0Jg0o-U3d6^w6hZ_EmD6gl>> zQzfg0DSPAQu<jh?A1qD&i4UW9oK(6o<CsFutULFjKBR6c;CA%c-tk*}nZ<&(?2Xk4 z$Ntn`J*!va`lG1qnU3Zp6;BxYd!0l0ea=+7kGI5T7#5tI<;|9+YBGKHd8ZBMH4QdB znW3s&aLSQ$?b9;W1wI*@1k!UN3L>=lA~!r-)AA>V`{IQs4>>BL>kcznXerunmlb=| zWcaU3Q?y({((8tixy!m+M^9AR2>U-@Q#M^%Df}$cvwDB2dmHkM!%s>?s`+*-6<*}b z<C)%Z(AZ^u`>C6z+Z%-w!koN!M(Vgcu$6vxWM6}@S%6da&YLklvPaws&rO=B5mA?S z`j1}n(OIHjt=UhUKbx#56!7%<D(MS#>kz(zdN0WP!2crw3%tChOzkj<<b0i=y2knc zj0;J5)!$CrAGmk#%Icy!%X<7jC@<y?`MF<;fq!c30<XDz+bf-(Zr#is;<<WWd(D%s z2T7~A9d5i#sW{I6@4>5G+?=I5j*G7gE&0rKP}eS!-QI|4{hH?XQwM7IF@KnRe$O+> z{=5>|J!M5a2Uz(xeHVC@V0bikU*S=2|Myc@XUBb*dfe5v>F)hwKM!2~;rOU>BEr>~ b?RAXa8OAS+-W5gzBcH+3)z4*}Q$iB}<;L|a literal 0 HcmV?d00001 diff --git a/theme/static/css/default-skin.svg b/theme/static/css/default-skin.svg new file mode 100644 index 0000000..a6f790c --- /dev/null +++ b/theme/static/css/default-skin.svg @@ -0,0 +1 @@ +<svg width="264" height="88" viewBox="0 0 264 88" xmlns="http://www.w3.org/2000/svg"><title>default-skin 2 diff --git a/theme/static/css/elegant.css b/theme/static/css/elegant.css index db6772e..9f6cf14 100644 --- a/theme/static/css/elegant.css +++ b/theme/static/css/elegant.css @@ -1,606 +1,456 @@ /* Base */ -/* #push.height = -#content-sans-footer.margin-bottom = #footer.margin-top + ul.footer-content */ -body, -html { - height: 100%; -} -#content-sans-footer { - min-height: 100%; - margin-bottom: -60px; -} -#push { - height: 60px; -} -h1, -h2, -h3, -h4, -h5, -h6 { - font-family: Baskerville, Garamond, Georgia, 'DejaVu Serif', 'Times New Roman', Times, Serif; - font-weight: normal; -} -h1 small, h1 a, h1 a:hover, -h2 small, h2 a, h2 a:hover, -h3 small, h3 a, h3 a:hover, -h4 small, h4 a, h4 a:hover, -h5 small, h5 a, h5 a:hover, -h6 small, h6 a, h6 a:hover { - color: inherit; - text-decoration: none; +:root { + --borderRadius: 4px; + --mutedTextColor: dimgray; +} +html, +body { + height: 100%; +} +body { + display: flex; + flex-direction: column; +} +div#content { + flex: 1 0 auto; +} +footer { + align-content: center; + align-items: center; + border-top: 1px solid rgba(0, 0, 0, 0.2); + display: flex; + flex-direction: row; + flex-shrink: 0; + flex-wrap: wrap; + justify-content: flex-end; + margin: 15px 0 0 0; + min-height: 40px; + padding: 0 3px; +} +footer div { + margin: 3px 0; +} +footer div:first-child { + margin-right: auto; +} +footer div#fpowered { + margin-left: auto; + margin-right: unset; +} +:lang(zh) { + font-family: "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", + Helvetica, Arial, sans-serif; } a { - color: #3875d7; + color: #3875d7; } hr { - border-width: 3px; -} - -/* site title */ -.site-name { - font-family: 'Monaco', 'Inconsolata', 'Andale Mono', 'Lucida Console', 'Bitstream Vera Sans Mono', 'Courier New', Courier, Monospace; + border-width: 3px; } /* Top navigation menu */ .top-menu li a { - font-weight: bold; -} -/* Footer */ -#footer { - border-top: 1px solid rgba(0, 0, 0, .2); - font: .8em Calibri, Tahoma, Arial, Sans-Serif; - margin: 15px 0 0 0; - padding: 0; -} -ul.footer-content { - list-style: none; - margin: -1px 0 0 0; - padding: 2px 5px 0; - display: table; - height: 45px; - width: 100%; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box; -} -ul.footer-content li { - padding-left: 5px; - display: table-cell; - vertical-align: middle; - height: 100%; -} -.elegant-power { - text-align: right; -} -.elegant-license { - text-align: left; -} -.elegant-subtitle { - text-align: left; + font-weight: bold; } /* comment */ #comment-message, #post-share-links:not(a) { - color: #6F6F6F; - text-shadow: 1px 1px 3px rgba(50, 50, 50, 0.15); -} -#post-share-links a{ - text-shadow: 0 0; -} -.disqus-comment-count { - font-family: 'Trebuchet MS', Trebuchet, 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, Sans-Serif; - font-size: .9em; -} -#disqus_thread { - padding-left: 10px; - padding-right: 10px; -} -/* Syntax Highlight */ -table { - table-layout: fixed; - width: 100%; -} -td { - vertical-align: top; -} -@media (max-width:979px) { - .linenos { - display:none !important; - } -} -.linenos { - width: 30px; -} -.linenos div pre { - text-align: right; - overflow: hidden; -} -pre { - overflow: auto; - white-space: pre; - word-break: normal; - word-wrap: normal; -} -td.code .highlight pre { - border-radius: 0 3px 3px 0; + color: #6f6f6f; + text-shadow: 1px 1px 3px rgba(50, 50, 50, 0.15); } -td.code { - width: 100%; +#post-share-links a { + text-shadow: 0 0; } -.linenodiv pre { - background-color: #eee8d5; - border-radius: 3px 0 0 3px; - color: #657b83; +.comment-count { + font-family: "Trebuchet MS", Trebuchet, "Lucida Sans Unicode", "Lucida Grande", + "Lucida Sans", Arial, Sans-Serif; + font-size: 0.9em; } -div.highlight { - margin-bottom: 20px; +#comment_thread { + padding-left: 10px; + padding-right: 10px; } /* Tags */ +ul.list-projects, .list-of-tags { - font-family: 'Helvetica Neue', Helvetica, Arial, Sans-Serif; - list-style: none; - margin: 0; - overflow: hidden; + list-style: none; + margin: 0; + overflow: hidden; } .list-of-tags li { - float: left; - line-height: 28px; - margin: 0; + float: left; + line-height: 28px; + margin: 0; } .list-of-tags a { - background: #EEE; - border-radius: 3px; - color: #222; - margin: 2px; - padding: 3px 6px; - text-decoration: none; -} -.list-of-tags a span { - font-size: .8em; - vertical-align: super; + background: #eee; + border-radius: var(--borderRadius); + color: #222; + margin: 2px; + padding: 3px 6px; + text-decoration: none; } .tags-in-article li { - float: none; - line-height: 28px; -} -.tag-title { - font-family: 'Trebuchet MS', Trebuchet, 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, Sans-Serif; -} -.articles-in-tag li { - font: 1.1em/1.6em 'Trebuchet MS', Trebuchet, 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, Sans-Serif; + float: none; + line-height: 28px; } /* Article */ -article p:not(#list-of-translations):not(#post-share-links) a, -article ol a, -blockquote a, -article div.article-content ul:not(.articles-timeline):not(.related-posts-list) a { - border-bottom: thin dashed #A9A9A9; - color: #000; -} -article p a:hover, -article ol a:hover, -article div.article-content ul:not(.articles-timeline) a:hover { - border-bottom: none; - text-decoration: none; - text-shadow: none; -} -.article-content, div.recent-posts p { - font: 1.2em/1.6em 'PT Serif', Georgia, 'Times New Roman', Times, Serif; - text-align: justify; +.article-content, +div.recent-posts p { + text-align: justify; } .article-content { - max-width: 50em; -} -.article-content p, div.recent-posts p { - font-size: inherit; - font-variant: normal; - line-height: 1.6em; - text-transform: none; + max-width: 50em; } .article-content p { - margin: 20px 0; -} -.article-content blockquote { - border-left: 0; - margin: 20px 0 0 2em; - padding: 0 0 0 20px; -} -.article-content blockquote:before { - color: #646464; - content: '\f10d'; - font: 18px FontAwesome; - font-style: normal; - font-weight: normal; - margin-left: -2em; - text-decoration: inherit; - position:absolute; -} -.article-content blockquote { - font-family: 'Helvetica Neue', Helvetica, Arial, Sans-Serif; - font-size: inherit; - font-variant: normal; - line-height: 1.7em; - text-transform: none; - font-weight: 300; - position:relative; + margin: 0 0 20px 0; } .article-content ul:not(.related-posts-list):not(.articles-timeline) { - font-size: inherit; - list-style-type: disc; + font-size: inherit; + list-style-type: disc; } .article-content ul.related-posts-list { - list-style-type: square; + list-style-type: square; } .article-content ol { - font-size: inherit; - list-style-type: decimal; + font-size: inherit; + list-style-type: decimal; } .article-content li { - line-height: 1.7em; - list-style-position: outside; - margin: 1px 0 1px 20px; + line-height: 1.7em; + list-style-position: outside; + margin: 1px 0 1px 20px; } .article-content dl { - font-size: inherit; - list-style-position: outside; - list-style-type: decimal; - margin: 20px 0 20px 20px; + font-size: inherit; + list-style-position: outside; + list-style-type: decimal; + margin: 20px 0 20px 20px; } .article-content dd { - line-height: 1.7em; - margin: 1px 0 1px 20px; - padding: 3px 0; + line-height: 1.7em; + margin: 1px 0 1px 20px; + padding: 3px 0; } .article-content dt { - font-size: inherit; + font-size: inherit; +} +h1, +h2, +h3, +h4, +h5, +h6 { + font-weight: normal; + margin: 10px 0px; } .page-header { - border-bottom: 1px solid #8f8686; - color: #8B0000; - margin: 10px 10px 20px; - padding: 5px; + border-bottom: 2px solid maroon; + color: maroon; + margin: 10px 0 30px 0; } .page-header h1 { - font-size: 3em; - font-weight: normal; + border: none; + line-height: 1em; } ul.articles-timeline { - list-style: none; - margin: 0; - padding-bottom: 30px; + list-style: none; + margin: 0; + padding-bottom: 30px; } ul.articles-timeline .next-article { - float: right; - margin: 0; -} -ul.articles-timeline .previous-article { - float: left; - margin: 0; -} -i.sidebar-social-links { - border-radius: 20%; - border: solid transparent 1px; - color: #A2A2A2; - font-size: 1.3em; - margin: 0; - padding: 1px; - text-align: center; - text-decoration: none; - width: 12%; -} -i.sidebar-social-links:hover { - background-color: #A2A2A2; - color: #fff; -} -i.fa-twitter:hover, i.fa-twitter-square:hover { - background-color: #00ACED; -} -i.fa-facebook:hover, i.fa-facebook-square:hover { - background-color: #3B5998; -} -i.fa-google-plus:hover, i.fa-google-plus-square:hover { - background-color: #D34836; -} -i.fa-adn:hover { - background-color: #49484D; -} -i.fa-envelope:hover { - background-color: #5E9EDA; -} -i.fa-github:hover, i.fa-github-square:hover, i.fa-github-alt:hover { - background-color: #000; -} -i.fa-flickr:hover { - background-color: #FF0084; + float: right; + margin: 0; } -i.fa-youtube:hover, i.fa-youtube-square:hover, i.fa-youtube-play:hover { - background-color: #BC272F; -} -i.fa-linkedin:hover, i.fa-linkedin-square:hover { - background-color: #107FB9; -} -i.fa-gittip:hover { - background-color: #663300; -} -i.fa-rss:hover, i.fa-rss-square:hover { - background-color: #FF6600; -} -i.fa-bitbucket:hover, i.fa-bitbucket-square:hover { - background-color: #205081; -} -i.fa-stack-exchange:hover { - background-color: #3A7BC8; +ul.articles-timeline .previous-article { + float: left; + margin: 0; } ul.multi-parts-list a { - color: black; + color: black; } ul.multi-parts-list a:hover { - text-decoration: none; + text-decoration: none; } ul.multi-parts-list li.active-part { - font-style: italic; + font-style: italic; +} +.table-of-content .toc ul { + margin: 0; + padding: 0 0 0 0.2rem; + list-style-type: none; + list-style: symbols inside none; } -.table-of-content .toc { - font-size: .7em; +.table-of-content .toc > ul > li > ul { + padding-left: 1rem; } .last-updated a { - color: #333; + color: #333; } .last-updated a:hover { - text-decoration: none; + text-decoration: none; } .article-content img { - border: 2px solid #EEE; - padding: 5px; + border: 2px solid #eee; + padding: 5px; } p#post-share-links { - text-align: right; -} -/* Perma link in article */ -h1:hover > a.headerlink, -h2:hover > a.headerlink, -h3:hover > a.headerlink, -h4:hover > a.headerlink, -h5:hover > a.headerlink, -h6:hover > a.headerlink, -dt:hover > a.headerlink { - text-decoration: none; - visibility: visible; -} -a.headerlink { - color: grey; - padding-left: .5em; - visibility: hidden; + text-align: right; } /* Categories */ -.list-of-categories span { - font-size: .7em; - vertical-align: super; +a.category-title-inside-accordion { + text-decoration: none; } -a.list-of-categories { - text-decoration: none; -} -ul.list-articles-category { - list-style: none outside none; - margin: 0 0 0 5px; -} -ul.list-articles-category li time { - color: #8F8F8F; - display: inline-block; - font: .9em 'PT Sans', 'Helvetica Neue', Arial, Sans-Serif; - width: 7em; +ul.list-articles-under-tag-category { + list-style: none outside none; + margin: 0 0 0 5px; } a.category-link { - color: #333; + color: #333; } a.category-link:hover { - text-decoration: none; -} -a.list-of-categories { - font-family: 'Trebuchet MS', Trebuchet, 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, Sans-Serif; - font-size: 1.1em; -} -a.list-of-categories:hover { - background-color: #08c; - border-radius: 4px; - color: #FFF; -} -/* Archives */ -ul.list-all-articles { - list-style: none; - margin: 0; -} -ul.list-all-articles li { - border-bottom: 1px dotted #000; - font-family: 'Trebuchet MS', Trebuchet, 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, Sans-Serif; - font-size: 1.1em; - padding: .3em 0; - overflow: auto; -} -ul.list-all-articles li time { - color: #AAA; - float: right; - font-family: 'PT Sans', 'Helvetica Neue', Arial, Sans-Serif; - font-size: .9em; -} -div.blog-archives h2 { - float: left; - position: relative; - margin:0; -} -div.blog-archives article, div.recent-posts article { - border-bottom: 1px dotted #AAA; + text-decoration: none; } -div.blog-archives article, div.recent-posts article { - font-size: 1.1em; - padding: .3em .2em; - position: relative; - overflow: auto; +a.category-title-inside-accordion:hover, +a:not(.collapsed).accordion-toggle.category-title-inside-accordion { + background-color: #08c; + border-radius: var(--borderRadius); + color: #fff; } -div.blog-archives article { - margin-left: 6em; +div.blog-archives h2 { + float: left; + clear: both; + position: relative; + margin: 0; } -div.blog-archives article.last-entry-of-year { - margin-bottom: 1em; +.proj-desc { + color: var(--mutedTextColor); } -div.blog-archives time, div.recent-posts time { - float: right; - text-align: right; +ul.list-projects li, +div.blog-archives div, +div.recent-posts-article { + border-bottom: 1px dotted var(--mutedTextColor); + overflow: auto; + padding: 0.3rem 0.2rem; } -div.blog-archives time, div.recent-posts time, div.recent-posts section { - color: #8F8F8F; - font: .9em 'PT Sans', 'Helvetica Neue', Arial, Sans-Serif; +ul.list-articles-under-tag-category li { + padding: 0.1rem 0.2rem; } -div.recent-posts section a { - color: inherit; - padding-left: .3em; +div.blog-archives div { + margin-left: rfs(6rem); } -div.recent-posts section a:hover { - border-bottom: 1px dashed; - text-decoration: none; +div.blog-archives div.last-entry-of-year { + margin-bottom: 1em; } -div.recent-posts time { - font-size: inherit; +div.blog-archives time, +div.recent-posts time, +ul.list-articles-under-tag-category li time { + float: right; + text-align: left; } -div.recent-posts-time { - display: inline; +div.blog-archives time, +div.recent-posts time, +ul.list-articles-under-tag-category li time, +div.recent-posts-posted { + color: var(--mutedTextColor); } @media (max-width: 767px) { - div.blog-archives h2 { - float: none; - } - div.blog-archives article { - margin-left: 0; - padding-left: 0; - } - div.recent-posts time { - float: none; - } - div.recent-posts-time { - display: block; - } - ul.list-articles-category li time { - width: 100%; - } + div.blog-archives h2 { + float: none; + } + div.blog-archives div { + margin-left: 0; + } + div.blog-archives article { + margin-left: 0; + padding-left: 0; + } + div.blog-archives time, + div.recent-posts time, + ul.list-articles-under-tag-category li time { + float: none; + display: block; + } } /* MailChimp */ #mc-embed-signup { - font-family: inherit; - font-size: inherit; - margin: 10px 0; + font-family: inherit; + font-size: inherit; + margin: 10px 0; } #mc-embed-signup form { - display: block; - padding: 0; - position: relative; - text-align: left; + display: block; + padding: 0; + position: relative; + text-align: left; } #mc-embed-signup input { - -moz-appearance: none; - -webkit-appearance: none; - border: 1px solid #999; + -moz-appearance: none; + -webkit-appearance: none; + border: 1px solid #999; } #mc-embed-signup input:focus { - border-color: #333; + border-color: #333; } #mc-embed-signup input.email { - display: block; - font-size: .9em; - margin: 0 4% 10px 0; - min-width: 130px; - padding: 8px 0; - text-indent: 5px; - width: 100%; + display: block; + font-size: 0.9em; + margin: 0 4% 10px 0; + min-width: 130px; + padding: 8px 0; + text-indent: 5px; + width: 100%; } #mc-embed-signup input.button { - display: block; - margin: 0 0 10px 0; - min-width: 130px; - width: 100%; + display: block; + margin: 0 0 10px 0; + min-width: 130px; + width: 100%; } -#mc-embed-signup input[type='email'] { - height: 100%; +#mc-embed-signup input[type="email"] { + height: 100%; } #mc-embed-signup .button { - background-color: #EEE; - border-radius: 4px; - border: 1px solid #D3D3D3; - clear: both; - color: #000; - cursor: pointer; - display: inline-block; - font-size: 1em; - font-weight: normal; - height: 32px; - line-height: 32px; - margin: 0 5px 10px 0; - padding: 0; - text-align: center; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - width: auto; -} -#mc-embed-signup .button: hover { - background-color: #DFDFDF; + background-color: #eee; + border-radius: var(--borderRadius); + border: 1px solid #d3d3d3; + clear: both; + color: #000; + cursor: pointer; + display: inline-block; + font-size: 1em; + font-weight: normal; + height: 32px; + line-height: 32px; + margin: 0 5px 10px 0; + padding: 0; + text-align: center; + text-decoration: none; + vertical-align: top; + white-space: nowrap; + width: auto; +} +#mc-embed-signup.button:hover { + background-color: #dfdfdf; } #mc-embed-signup .clear { - clear: none; - display: inline; + clear: none; + display: inline; } /* Index page */ #allposts { - color: #999; - float: right; - font-size: 75%; - font-weight: normal; + color: var(--mutedTextColor); + float: right; + font-size: 75%; + font-weight: normal; } a#allposts:hover { - color: #333; -} -.proj-desc { - color: #999; - font: .9em 'PT Sans', 'Helvetica Neue', Arial, Sans-Serif; + color: #333; } /* reST specific rules*/ .literal { - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - background-color: #f7f7f9; - border-radius: 3px; - border: 1px solid #e1e1e8; - color: #d14; - font-family: Monaco, Menlo, Consolas, "Courier New", monospace; - font-size: 12px; - padding: 2px 4px; - white-space: nowrap; + background-color: #f7f7f9; + border-radius: var(--borderRadius); + border: 1px solid #e1e1e8; + color: #d14; + padding: 2px 4px; + white-space: nowrap; +} +div.line-block div.line-block { + margin-left: 1.5em; } /* Helper CSS classes */ .amp { - font-family: 'Warnock Pro', 'Goudy Old Style', 'Palatino', 'Book Antiqua', Serif; - font-style: italic; + font-family: "Warnock Pro", "Goudy Old Style", "Palatino", "Book Antiqua", + Serif; + font-style: italic; } /* Use following classes to add floating images to your post */ -div.figure, .article-content img { - text-align: center; +div.figure, +.article-content img { + text-align: center; } div.figure img { - width: 100%; + width: 100%; } div.figure p.caption { - color: gray; - font-size: 1.0em; - margin: 0; + color: gray; + font-size: 0.6em; + margin: 0; } div.figure p.caption a { - border: none; - color: gray; + border: none; + color: gray; +} +div.figure.align-right, +.article-content img.align-right { + float: right; + margin-left: 1.5em; +} +div.figure.align-left, +.article-content img.align-left { + float: left; + margin-right: 1.5em; +} +/* Author blurb */ +.author-blurb { + padding: 5px 0; +} +.author-blurb img { + padding: 0; + width: 32px; + height: 32px; +} +/* Github Gist */ +.gist table { + table-layout: initial; +} +/* Table */ +table { + max-width: 100%; + background-color: transparent; + border-collapse: collapse; + border-spacing: 0; + border: 1px solid #bfbfbf; + border-collapse: separate; + *border-collapse: collapse; + border-left: 0; + border-radius: var(--borderRadius); +} + +table th, +table td { + border-left: 1px solid #bfbfbf; + padding-left: 2px; + padding-right: 2px; +} + +table thead:first-child tr:first-child th { + border-top: 0; +} + +table thead:first-child tr:first-child > th:first-child { + border-top-left-radius: var(--borderRadius); } -div.figure.align-right, .article-content img.align-right { - float: right; - margin-left: 1.5em; + +table thead:first-child tr:first-child > th:last-child { + border-top-right-radius: var(--borderRadius); } -div.figure.align-left, .article-content img.align-left { - float: left; - margin-right: 1.5em; + +table tbody:last-child tr:last-child > td:first-child { + border-bottom-left-radius: var(--borderRadius); } +table tbody:last-child tr:last-child > td:last-child { + border-bottom-right-radius: var(--borderRadius); +} + +table tbody > tr:nth-child(odd) > td { + background-color: #ebebeb; +} +.navbar .nav > li > a { + float: none; + padding: 11px 15px 13px; +} +.site-name { + color: var(--mutedTextColor); +} diff --git a/theme/static/css/elegant.prod.9e9d5ce754.css b/theme/static/css/elegant.prod.9e9d5ce754.css new file mode 100644 index 0000000..2bfe6a6 --- /dev/null +++ b/theme/static/css/elegant.prod.9e9d5ce754.css @@ -0,0 +1,36 @@ +applause-button{position:relative;cursor:pointer}applause-button .style-root,applause-button .style-root:after{position:absolute;top:0;left:0;right:0;bottom:0}applause-button .style-root:after{content:" ";display:block;border-radius:50%;border:1px solid}applause-button .style-root:hover:after:not(.clap-limit-exceeded){border-color:inherit}applause-button.loading{opacity:.5}applause-button .shockwave{border-radius:50%}applause-button .shockwave,applause-button svg{position:absolute;top:0;left:0;right:0;bottom:0}applause-button svg{width:60%;height:60%;margin-left:20%;margin-top:20%;opacity:.8;stroke:none;overflow:visible!important}applause-button svg g.flat{visibility:hidden}applause-button.clapped svg g.flat,applause-button svg g.outline{visibility:visible}applause-button.clapped svg g.outline{visibility:hidden}applause-button .count-container{position:absolute;top:-40%;width:100%;color:grey;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}applause-button .count-container .count{margin-left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:1000px;text-align:center}applause-button g.sparkle circle{opacity:0;stroke-width:0}applause-button g.sparkle g:first-child{-webkit-transform:rotate(0deg) translateX(10px);transform:rotate(0deg) translateX(10px)}applause-button g.sparkle g:nth-child(2){-webkit-transform:rotate(72deg) translateX(10px);transform:rotate(72deg) translateX(10px)}applause-button g.sparkle g:nth-child(3){-webkit-transform:rotate(144deg) translateX(10px);transform:rotate(144deg) translateX(10px)}applause-button g.sparkle g:nth-child(4){-webkit-transform:rotate(216deg) translateX(10px);transform:rotate(216deg) translateX(10px)}applause-button g.sparkle g:nth-child(5){-webkit-transform:rotate(288deg) translateX(10px);transform:rotate(288deg) translateX(10px)}applause-button:hover:not(.clapped) .shockwave{-webkit-animation-name:shockwave;animation-name:shockwave;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}applause-button.clap{-webkit-animation-name:pulse;animation-name:pulse;-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-iteration-count:1;animation-iteration-count:1}applause-button.clap .sparkle circle{-webkit-animation-name:explode;animation-name:explode;-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-iteration-count:1;animation-iteration-count:1}applause-button.clap .count{-webkit-animation-name:hideThenShow;animation-name:hideThenShow;-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-iteration-count:1;animation-iteration-count:1}@-webkit-keyframes explode{0%{-webkit-transform:translateX(10px);transform:translateX(10px);opacity:0}20%{opacity:1}50%{opacity:1}to{opacity:0;-webkit-transform:translateX(25px);transform:translateX(25px)}}@keyframes explode{0%{-webkit-transform:translateX(10px);transform:translateX(10px);opacity:0}20%{opacity:1}50%{opacity:1}to{opacity:0;-webkit-transform:translateX(25px);transform:translateX(25px)}}@-webkit-keyframes shockwave{0%{-webkit-transform:scale(1);transform:scale(1);box-shadow:0 0 2px;opacity:1}to{-webkit-transform:scale(1);transform:scale(1);opacity:0;box-shadow:0 0 50px,inset 0 0 10px}}@keyframes shockwave{0%{-webkit-transform:scale(1);transform:scale(1);box-shadow:0 0 2px;opacity:1}to{-webkit-transform:scale(1);transform:scale(1);opacity:0;box-shadow:0 0 50px,inset 0 0 10px}}@-webkit-keyframes pulse{0%{-webkit-transform:scale(1);transform:scale(1)}50%{-webkit-transform:scale(1.1);transform:scale(1.1)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes pulse{0%{-webkit-transform:scale(1);transform:scale(1)}50%{-webkit-transform:scale(1.1);transform:scale(1.1)}to{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes hideThenShow{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}20%{opacity:0;-webkit-transform:translateY(-10px);transform:translateY(-10px)}50%{-webkit-transform:translateY(10px);transform:translateY(10px)}80%{-webkit-transform:translateY(10px);transform:translateY(10px);opacity:0}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes hideThenShow{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}20%{opacity:0;-webkit-transform:translateY(-10px);transform:translateY(-10px)}50%{-webkit-transform:translateY(10px);transform:translateY(10px)}80%{-webkit-transform:translateY(10px);transform:translateY(10px);opacity:0}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}} +/*! PhotoSwipe main CSS by Dmitry Semenov | photoswipe.com | MIT license */.pswp{display:none;position:absolute;width:100%;height:100%;left:0;top:0;overflow:hidden;-ms-touch-action:none;touch-action:none;z-index:1500;-webkit-text-size-adjust:100%;-webkit-backface-visibility:hidden;outline:none}.pswp *{box-sizing:border-box}.pswp img{max-width:none}.pswp--animate_opacity{opacity:.001;will-change:opacity;-webkit-transition:opacity 333ms cubic-bezier(.4,0,.22,1);transition:opacity 333ms cubic-bezier(.4,0,.22,1)}.pswp--open{display:block}.pswp--zoom-allowed .pswp__img{cursor:-webkit-zoom-in;cursor:-moz-zoom-in;cursor:zoom-in}.pswp--zoomed-in .pswp__img{cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.pswp--dragging .pswp__img{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.pswp__bg{background:#000;opacity:0;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-backface-visibility:hidden}.pswp__bg,.pswp__scroll-wrap{position:absolute;left:0;top:0;width:100%;height:100%}.pswp__scroll-wrap{overflow:hidden}.pswp__container,.pswp__zoom-wrap{-ms-touch-action:none;touch-action:none;position:absolute;left:0;right:0;top:0;bottom:0}.pswp__container,.pswp__img{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}.pswp__zoom-wrap{position:absolute;width:100%;-webkit-transform-origin:left top;transform-origin:left top;-webkit-transition:-webkit-transform 333ms cubic-bezier(.4,0,.22,1);transition:-webkit-transform 333ms cubic-bezier(.4,0,.22,1);transition:transform 333ms cubic-bezier(.4,0,.22,1);transition:transform 333ms cubic-bezier(.4,0,.22,1),-webkit-transform 333ms cubic-bezier(.4,0,.22,1)}.pswp__bg{will-change:opacity;-webkit-transition:opacity 333ms cubic-bezier(.4,0,.22,1);transition:opacity 333ms cubic-bezier(.4,0,.22,1)}.pswp--animated-in .pswp__bg,.pswp--animated-in .pswp__zoom-wrap{-webkit-transition:none;transition:none}.pswp__container,.pswp__zoom-wrap{-webkit-backface-visibility:hidden}.pswp__item{right:0;bottom:0;overflow:hidden}.pswp__img,.pswp__item{position:absolute;left:0;top:0}.pswp__img{width:auto;height:auto}.pswp__img--placeholder{-webkit-backface-visibility:hidden}.pswp__img--placeholder--blank{background:#222}.pswp--ie .pswp__img{width:100%!important;height:auto!important;left:0;top:0}.pswp__error-msg{position:absolute;left:0;top:50%;width:100%;text-align:center;font-size:14px;line-height:16px;margin-top:-8px;color:#ccc}.pswp__error-msg a{color:#ccc;text-decoration:underline} +/*! PhotoSwipe Default UI CSS by Dmitry Semenov | photoswipe.com | MIT license */.pswp__button{width:44px;height:44px;position:relative;background:none;cursor:pointer;overflow:visible;-webkit-appearance:none;display:block;border:0;padding:0;margin:0;float:right;opacity:.75;-webkit-transition:opacity .2s;transition:opacity .2s;box-shadow:none}.pswp__button:focus,.pswp__button:hover{opacity:1}.pswp__button:active{outline:none;opacity:.9}.pswp__button::-moz-focus-inner{padding:0;border:0}.pswp__ui--over-close .pswp__button--close{opacity:1}.pswp__button,.pswp__button--arrow--left:before,.pswp__button--arrow--right:before{background:url(default-skin.png) 0 0 no-repeat;background-size:264px 88px;width:44px;height:44px}@media (-webkit-min-device-pixel-ratio:1.1),(-webkit-min-device-pixel-ratio:1.09375),(min-resolution:1.1dppx),(min-resolution:105dpi){.pswp--svg .pswp__button,.pswp--svg .pswp__button--arrow--left:before,.pswp--svg .pswp__button--arrow--right:before{background-image:url(default-skin.svg)}.pswp--svg .pswp__button--arrow--left,.pswp--svg .pswp__button--arrow--right{background:none}}.pswp__button--close{background-position:0 -44px}.pswp__button--share{background-position:-44px -44px}.pswp__button--fs{display:none}.pswp--supports-fs .pswp__button--fs{display:block}.pswp--fs .pswp__button--fs{background-position:-44px 0}.pswp__button--zoom{display:none;background-position:-88px 0}.pswp--zoom-allowed .pswp__button--zoom{display:block}.pswp--zoomed-in .pswp__button--zoom{background-position:-132px 0}.pswp--touch .pswp__button--arrow--left,.pswp--touch .pswp__button--arrow--right{visibility:hidden}.pswp__button--arrow--left,.pswp__button--arrow--right{background:none;top:50%;margin-top:-50px;width:70px;height:100px;position:absolute}.pswp__button--arrow--left{left:0}.pswp__button--arrow--right{right:0}.pswp__button--arrow--left:before,.pswp__button--arrow--right:before{content:"";top:35px;background-color:rgba(0,0,0,.3);height:30px;width:32px;position:absolute}.pswp__button--arrow--left:before{left:6px;background-position:-138px -44px}.pswp__button--arrow--right:before{right:6px;background-position:-94px -44px}.pswp__counter,.pswp__share-modal{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.pswp__share-modal{display:block;background:rgba(0,0,0,.5);width:100%;height:100%;top:0;left:0;padding:10px;position:absolute;z-index:1600;opacity:0;-webkit-transition:opacity .25s ease-out;transition:opacity .25s ease-out;-webkit-backface-visibility:hidden;will-change:opacity}.pswp__share-modal--hidden{display:none}.pswp__share-tooltip{z-index:1620;position:absolute;background:#fff;top:56px;border-radius:2px;display:block;width:auto;right:44px;box-shadow:0 2px 5px rgba(0,0,0,.25);-webkit-transform:translateY(6px);transform:translateY(6px);-webkit-transition:-webkit-transform .25s;transition:-webkit-transform .25s;transition:transform .25s;transition:transform .25s,-webkit-transform .25s;-webkit-backface-visibility:hidden;will-change:transform}.pswp__share-tooltip a{display:block;padding:8px 12px;font-size:14px;line-height:18px}.pswp__share-tooltip a,.pswp__share-tooltip a:hover{color:#000;text-decoration:none}.pswp__share-tooltip a:first-child{border-radius:2px 2px 0 0}.pswp__share-tooltip a:last-child{border-radius:0 0 2px 2px}.pswp__share-modal--fade-in{opacity:1}.pswp__share-modal--fade-in .pswp__share-tooltip{-webkit-transform:translateY(0);transform:translateY(0)}.pswp--touch .pswp__share-tooltip a{padding:16px 12px}a.pswp__share--facebook:before{content:"";display:block;width:0;height:0;position:absolute;top:-12px;right:15px;border:6px solid transparent;border-bottom-color:#fff;-webkit-pointer-events:none;-moz-pointer-events:none;pointer-events:none}a.pswp__share--facebook:hover{background:#3e5c9a;color:#fff}a.pswp__share--facebook:hover:before{border-bottom-color:#3e5c9a}a.pswp__share--twitter:hover{background:#55acee;color:#fff}a.pswp__share--pinterest:hover{background:#ccc;color:#ce272d}a.pswp__share--download:hover{background:#ddd}.pswp__counter{position:absolute;left:0;top:0;height:44px;font-size:13px;line-height:44px;color:#fff;opacity:.75;padding:0 10px}.pswp__caption{position:absolute;left:0;bottom:0;width:100%;min-height:44px}.pswp__caption small{font-size:11px;color:#bbb}.pswp__caption__center{text-align:left;max-width:420px;margin:0 auto;font-size:13px;padding:10px;line-height:20px;color:#ccc}.pswp__caption--empty{display:none}.pswp__caption--fake{visibility:hidden}.pswp__preloader{width:44px;height:44px;position:absolute;top:0;left:50%;margin-left:-22px;opacity:0;-webkit-transition:opacity .25s ease-out;transition:opacity .25s ease-out;will-change:opacity;direction:ltr}.pswp__preloader__icn{width:20px;height:20px;margin:12px}.pswp__preloader--active{opacity:1}.pswp__preloader--active .pswp__preloader__icn{background:url(preloader.gif) 0 0 no-repeat}.pswp--css_animation .pswp__preloader--active{opacity:1}.pswp--css_animation .pswp__preloader--active .pswp__preloader__icn{-webkit-animation:clockwise .5s linear infinite;animation:clockwise .5s linear infinite}.pswp--css_animation .pswp__preloader--active .pswp__preloader__donut{-webkit-animation:donut-rotate 1s cubic-bezier(.4,0,.22,1) infinite;animation:donut-rotate 1s cubic-bezier(.4,0,.22,1) infinite}.pswp--css_animation .pswp__preloader__icn{background:none;opacity:.75;width:14px;height:14px;position:absolute;left:15px;top:15px;margin:0}.pswp--css_animation .pswp__preloader__cut{position:relative;width:7px;height:14px;overflow:hidden}.pswp--css_animation .pswp__preloader__donut{box-sizing:border-box;width:14px;height:14px;border-radius:50%;border-color:#fff #fff transparent transparent;border-style:solid;border-width:2px;position:absolute;top:0;left:0;background:none;margin:0}@media screen and (max-width:1024px){.pswp__preloader{position:relative;left:auto;top:auto;margin:0;float:right}}@-webkit-keyframes clockwise{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes clockwise{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes donut-rotate{0%{-webkit-transform:rotate(0);transform:rotate(0)}50%{-webkit-transform:rotate(-140deg);transform:rotate(-140deg)}to{-webkit-transform:rotate(0);transform:rotate(0)}}@keyframes donut-rotate{0%{-webkit-transform:rotate(0);transform:rotate(0)}50%{-webkit-transform:rotate(-140deg);transform:rotate(-140deg)}to{-webkit-transform:rotate(0);transform:rotate(0)}}.pswp__ui{-webkit-font-smoothing:auto;visibility:visible;opacity:1;z-index:1550}.pswp__top-bar{position:absolute;left:0;top:0;height:44px;width:100%}.pswp--has_mouse .pswp__button--arrow--left,.pswp--has_mouse .pswp__button--arrow--right,.pswp__caption,.pswp__top-bar{-webkit-backface-visibility:hidden;will-change:opacity;-webkit-transition:opacity 333ms cubic-bezier(.4,0,.22,1);transition:opacity 333ms cubic-bezier(.4,0,.22,1)}.pswp--has_mouse .pswp__button--arrow--left,.pswp--has_mouse .pswp__button--arrow--right{visibility:visible}.pswp__caption,.pswp__top-bar{background-color:rgba(0,0,0,.5)}.pswp__ui--fit .pswp__caption,.pswp__ui--fit .pswp__top-bar{background-color:rgba(0,0,0,.3)}.pswp__ui--idle .pswp__button--arrow--left,.pswp__ui--idle .pswp__button--arrow--right,.pswp__ui--idle .pswp__top-bar{opacity:0}.pswp__ui--hidden .pswp__button--arrow--left,.pswp__ui--hidden .pswp__button--arrow--right,.pswp__ui--hidden .pswp__caption,.pswp__ui--hidden .pswp__top-bar{opacity:.001}.pswp__ui--one-slide .pswp__button--arrow--left,.pswp__ui--one-slide .pswp__button--arrow--right,.pswp__ui--one-slide .pswp__counter{display:none}.pswp__element--disabled{display:none!important}.pswp--minimal--dark .pswp__top-bar{background:none} +div.admonition{padding:0;margin-bottom:20px;background-color:#fcf8e3;border:1px solid;border-bottom-left-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}div.admonition p{margin:.5em 1em;padding:0}div.admonition p a{color:inherit!important}div.admonition div.highlight{margin-left:1em;margin-right:1em}div.admonition table.highlighttable{padding-left:1em;padding-right:1em}div.admonition table.highlighttable div.highlight{margin-left:0;margin-right:0}div.admonition p.admonition-title{color:#fff;margin:0;padding:.1em 0 .1em .5em;font-weight:700}div.admonition ol,div.admonition ul{margin:.1em .5em .5em 3em;padding:0}div.danger,div.error{color:#b94a48;background-color:#f2dede}div.danger p.admonition-title,div.error p.admonition-title{background-color:#b94a48}div.attention,div.caution,div.warning{color:#c09853}div.attention p.admonition-title,div.caution p.admonition-title,div.warning p.admonition-title{background-color:#c09853}div.important,div.note{color:#468847;background-color:#dff0d8}div.important p.admonition-title,div.note p.admonition-title{background-color:#468847}div.hint,div.tip{color:#3a87ad;background-color:#d9edf7}div.hint p.admonition-title,div.tip p.admonition-title{background-color:#3a87ad}div.attention p.admonition-title:before,div.caution p.admonition-title:before,div.danger p.admonition-title:before,div.error p.admonition-title:before,div.hint p.admonition-title:before,div.important p.admonition-title:before,div.note p.admonition-title:before,div.tip p.admonition-title:before,div.warning p.admonition-title:before{display:inline-block;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}div.danger p.admonition-title:before,div.error p.admonition-title:before{height:20px;width:23px;background-size:20px 20px;content:"";background-repeat:no-repeat;background-image:url('data:image/svg+xml; utf8, ');vertical-align:-20%}div.attention p.admonition-title:before,div.caution p.admonition-title:before,div.warning p.admonition-title:before{height:20px;width:23px;background-size:20px 20px;content:"";background-repeat:no-repeat;background-image:url('data:image/svg+xml; utf8, ');vertical-align:-20%}div.important p.admonition-title:before,div.note p.admonition-title:before{height:20px;width:23px;background-size:20px 20px;content:"";background-repeat:no-repeat;background-image:url('data:image/svg+xml; utf8, ');vertical-align:-20%}div.hint p.admonition-title:before,div.tip p.admonition-title:before{height:20px;width:23px;background-size:20px 20px;content:"";background-repeat:no-repeat;background-image:url('data:image/svg+xml; utf8, ');vertical-align:-20%} +div.applause_button{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}div.applause_button applause-button{height:50px;width:50px}div.applause_button applause-button div.style-root{fill:maroon!important;stroke:maroon!important;color:maroon!important} +.article-content blockquote{--quotes-margin:13px;background:#fff8dc;border-left:5px solid #daa520;border-radius:var(--border-radius);box-sizing:border-box;margin:1rem auto 2rem;padding:.1rem 1.2rem;position:relative;width:80%}.article-content blockquote:after,.article-content blockquote:before{color:#696969;font-size:4rem;line-height:0;margin:0;padding:0;position:absolute}.article-content blockquote:before{content:open-quote;margin-right:var(--quotes-margin);right:100%;top:30px}.article-content blockquote:after{bottom:0;content:close-quote;left:100%;margin-left:var(--quotes-margin);top:auto}.article-content blockquote p{margin:20px 0} +/*! + * Bootstrap v2.3.2 + * + * Copyright 2013 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world by @mdo and @fat. + */.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:active,a:hover{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{width:auto\9;height:auto;max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img,.google-maps img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button,input[type=button],input[type=checkbox],input[type=radio],input[type=reset],input[type=submit],label,select{cursor:pointer}input[type=search]{box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}}body{font-size:14px;line-height:20px;color:#333;background-color:#fff}a{color:#08c;text-decoration:none}a:focus,a:hover{color:#005580;text-decoration:underline}.img-rounded{border-radius:6px}.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);box-shadow:0 1px 3px rgba(0,0,0,.1)}.img-circle{border-radius:500px}.row{margin-left:-20px;*zoom:1}.row:after,.row:before{display:table;line-height:0;content:""}.row:after{clear:both}[class*=span]{float:left;min-height:1px;margin-left:20px}.container,.navbar-fixed-bottom .container,.navbar-fixed-top .container,.navbar-static-top .container,.span12{width:940px}.span11{width:860px}.span10{width:780px}.span9{width:700px}.span8{width:620px}.span7{width:540px}.span6{width:460px}.span5{width:380px}.span4{width:300px}.span3{width:220px}.span2{width:140px}.span1{width:60px}.offset12{margin-left:980px}.offset11{margin-left:900px}.offset10{margin-left:820px}.offset9{margin-left:740px}.offset8{margin-left:660px}.offset7{margin-left:580px}.offset6{margin-left:500px}.offset5{margin-left:420px}.offset4{margin-left:340px}.offset3{margin-left:260px}.offset2{margin-left:180px}.offset1{margin-left:100px}.row-fluid{width:100%;*zoom:1}.row-fluid:after,.row-fluid:before{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*=span]{display:block;float:left;width:100%;min-height:30px;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;box-sizing:border-box}.row-fluid [class*=span]:first-child{margin-left:0}.row-fluid .controls-row [class*=span]+[class*=span]{margin-left:2.127659574468085%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%}.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%}.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%}.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%}.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%}.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%}.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%}.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%}.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%}.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%}.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%}.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%}.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%}.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%}.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%}.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%}.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%}.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%}.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%}.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%}.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%}.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%}.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%}.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%}.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%}.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%}.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%}.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%}.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%}.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%}.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%}.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%}.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%}.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%}.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%}.row-fluid [class*=span].hide,[class*=span].hide{display:none}.row-fluid [class*=span].pull-right,[class*=span].pull-right{float:right}.container{margin-right:auto;margin-left:auto;*zoom:1}.container:after,.container:before{display:table;line-height:0;content:""}.container:after{clear:both}.container-fluid{padding-right:20px;padding-left:20px;*zoom:1}.container-fluid:after,.container-fluid:before{display:table;line-height:0;content:""}.container-fluid:after{clear:both}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:21px;font-weight:200;line-height:30px}small{font-size:85%}strong{font-weight:700}em{font-style:italic}cite{font-style:normal}.muted{color:#999}a.muted:focus,a.muted:hover{color:grey}.text-warning{color:#c09853}a.text-warning:focus,a.text-warning:hover{color:#a47e3c}.text-error{color:#b94a48}a.text-error:focus,a.text-error:hover{color:#953b39}.text-info{color:#3a87ad}a.text-info:focus,a.text-info:hover{color:#2d6987}.text-success{color:#468847}a.text-success:focus,a.text-success:hover{color:#356635}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}ol,ul{padding:0;margin:0 0 10px 25px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}li{line-height:20px}ol.inline,ol.unstyled,ul.inline,ul.unstyled{margin-left:0;list-style:none}ol.inline>li,ul.inline>li{display:inline-block;*display:inline;padding-right:5px;padding-left:5px;*zoom:1}dl{margin-bottom:20px}dd,dt{line-height:20px}dt{font-weight:700}dd{margin-left:10px}.dl-horizontal{*zoom:1}.dl-horizontal:after,.dl-horizontal:before{display:table;line-height:0;content:""}.dl-horizontal:after{clear:both}.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}hr{margin:20px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}address{display:block;margin-bottom:20px;font-style:normal;line-height:20px}code,pre{padding:0 3px 2px;font-size:12px;color:#333;border-radius:3px}code{padding:2px 4px;color:#d14;white-space:nowrap;background-color:#f7f7f9;border:1px solid #e1e1e8}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap}pre.prettyprint{margin-bottom:20px}pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}form{margin:0 0 20px}fieldset{margin:0}fieldset,legend{padding:0;border:0}legend{display:block;width:100%;margin-bottom:20px;font-size:21px;line-height:40px;color:#333;border-bottom:1px solid #e5e5e5}legend small{font-size:15px;color:#999}button,input,label,select,textarea{font-size:14px;font-weight:400;line-height:20px}button,input,select,textarea{font-family:Helvetica Neue,Helvetica,Arial,sans-serif}label{display:block;margin-bottom:5px}.uneditable-input,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:14px;line-height:20px;color:#555;vertical-align:middle;border-radius:4px}.uneditable-input,input,textarea{width:206px}textarea{height:auto}.uneditable-input,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],textarea{background-color:#fff;border:1px solid #ccc;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border .2s linear,box-shadow .2s linear;transition:border .2s linear,box-shadow .2s linear}.uneditable-input:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,textarea:focus{border-color:rgba(82,168,236,.8);outline:0;outline:thin dotted\9;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.6)}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;*margin-top:0;line-height:normal}input[type=button],input[type=checkbox],input[type=file],input[type=image],input[type=radio],input[type=reset],input[type=submit]{width:auto}input[type=file],select{height:30px;*margin-top:4px;line-height:30px}select{width:220px;background-color:#fff;border:1px solid #ccc}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus,select:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.uneditable-input,.uneditable-textarea{color:#999;cursor:not-allowed;background-color:#fcfcfc;border-color:#ccc;box-shadow:inset 0 1px 2px rgba(0,0,0,.025)}.uneditable-input{overflow:hidden;white-space:nowrap}.uneditable-textarea{width:auto;height:auto}input:-moz-placeholder,textarea:-moz-placeholder{color:#999}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.checkbox,.radio{min-height:20px;padding-left:20px}.checkbox input[type=checkbox],.radio input[type=radio]{float:left;margin-left:-20px}.controls>.checkbox:first-child,.controls>.radio:first-child{padding-top:5px}.checkbox.inline,.radio.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.checkbox.inline+.checkbox.inline,.radio.inline+.radio.inline{margin-left:10px}.input-mini{width:60px}.input-small{width:90px}.input-medium{width:150px}.input-large{width:210px}.input-xlarge{width:270px}.input-xxlarge{width:530px}.row-fluid .uneditable-input[class*=span],.row-fluid input[class*=span],.row-fluid select[class*=span],.row-fluid textarea[class*=span],.uneditable-input[class*=span],input[class*=span],select[class*=span],textarea[class*=span]{float:none;margin-left:0}.input-append .uneditable-input[class*=span],.input-append input[class*=span],.input-prepend .uneditable-input[class*=span],.input-prepend input[class*=span],.row-fluid .input-append [class*=span],.row-fluid .input-prepend [class*=span],.row-fluid .uneditable-input[class*=span],.row-fluid input[class*=span],.row-fluid select[class*=span],.row-fluid textarea[class*=span]{display:inline-block}.uneditable-input,input,textarea{margin-left:0}.controls-row [class*=span]+[class*=span]{margin-left:20px}.uneditable-input.span12,input.span12,textarea.span12{width:926px}.uneditable-input.span11,input.span11,textarea.span11{width:846px}.uneditable-input.span10,input.span10,textarea.span10{width:766px}.uneditable-input.span9,input.span9,textarea.span9{width:686px}.uneditable-input.span8,input.span8,textarea.span8{width:606px}.uneditable-input.span7,input.span7,textarea.span7{width:526px}.uneditable-input.span6,input.span6,textarea.span6{width:446px}.uneditable-input.span5,input.span5,textarea.span5{width:366px}.uneditable-input.span4,input.span4,textarea.span4{width:286px}.uneditable-input.span3,input.span3,textarea.span3{width:206px}.uneditable-input.span2,input.span2,textarea.span2{width:126px}.uneditable-input.span1,input.span1,textarea.span1{width:46px}.controls-row{*zoom:1}.controls-row:after,.controls-row:before{display:table;line-height:0;content:""}.controls-row:after{clear:both}.controls-row [class*=span],.row-fluid .controls-row [class*=span]{float:left}.controls-row .checkbox[class*=span],.controls-row .radio[class*=span]{padding-top:5px}input[disabled],input[readonly],select[disabled],select[readonly],textarea[disabled],textarea[readonly]{cursor:not-allowed;background-color:#eee}input[type=checkbox][disabled],input[type=checkbox][readonly],input[type=radio][disabled],input[type=radio][readonly]{background-color:transparent}.control-group.warning .checkbox,.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853}.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #dbc59e}.control-group.warning .input-append .add-on,.control-group.warning .input-prepend .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.control-group.error .checkbox,.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48}.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #d59392}.control-group.error .input-append .add-on,.control-group.error .input-prepend .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.control-group.success .checkbox,.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847}.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7aba7b}.control-group.success .input-append .add-on,.control-group.success .input-prepend .add-on{color:#468847;background-color:#dff0d8;border-color:#468847}.control-group.info .checkbox,.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad}.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7ab5d3}.control-group.info .input-append .add-on,.control-group.info .input-prepend .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad}input:focus:invalid,select:focus:invalid,textarea:focus:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:invalid:focus,select:focus:invalid:focus,textarea:focus:invalid:focus{border-color:#e9322d;box-shadow:0 0 6px #f8b9b7}.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1}.form-actions:after,.form-actions:before{display:table;line-height:0;content:""}.form-actions:after{clear:both}.help-block,.help-inline{color:#595959}.help-block{display:block;margin-bottom:10px}.help-inline{display:inline-block;*display:inline;padding-left:5px;vertical-align:middle;*zoom:1}.input-append,.input-prepend{display:inline-block;margin-bottom:10px;font-size:0;white-space:nowrap;vertical-align:middle}.input-append .dropdown-menu,.input-append .popover,.input-append .uneditable-input,.input-append input,.input-append select,.input-prepend .dropdown-menu,.input-prepend .popover,.input-prepend .uneditable-input,.input-prepend input,.input-prepend select{font-size:14px}.input-append .uneditable-input,.input-append input,.input-append select,.input-prepend .uneditable-input,.input-prepend input,.input-prepend select{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;border-radius:0 4px 4px 0}.input-append .uneditable-input:focus,.input-append input:focus,.input-append select:focus,.input-prepend .uneditable-input:focus,.input-prepend input:focus,.input-prepend select:focus{z-index:2}.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:400;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#eee;border:1px solid #ccc}.input-append .add-on,.input-append .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .add-on,.input-prepend .btn,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;border-radius:0}.input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546}.input-prepend .add-on,.input-prepend .btn{margin-right:-1px}.input-append .uneditable-input,.input-append input,.input-append select,.input-prepend .add-on:first-child,.input-prepend .btn:first-child{border-radius:4px 0 0 4px}.input-append .uneditable-input+.btn-group .btn:last-child,.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child{border-radius:0 4px 4px 0}.input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px}.input-append .add-on:last-child,.input-append .btn-group:last-child>.dropdown-toggle,.input-append .btn:last-child{border-radius:0 4px 4px 0}.input-prepend.input-append .uneditable-input,.input-prepend.input-append input,.input-prepend.input-append select{border-radius:0}.input-prepend.input-append .uneditable-input+.btn-group .btn,.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn{border-radius:0 4px 4px 0}.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;border-radius:4px 0 0 4px}.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;border-radius:0 4px 4px 0}.input-prepend.input-append .btn-group:first-child{margin-left:0}input.search-query{padding-right:14px;padding-right:4px\9;padding-left:14px;padding-left:4px\9;margin-bottom:0;border-radius:15px}.form-search .input-append .search-query,.form-search .input-prepend .search-query{border-radius:0}.form-search .input-append .search-query{border-radius:14px 0 0 14px}.form-search .input-append .btn,.form-search .input-prepend .search-query{border-radius:0 14px 14px 0}.form-search .input-prepend .btn{border-radius:14px 0 0 14px}.form-horizontal .help-inline,.form-horizontal .input-append,.form-horizontal .input-prepend,.form-horizontal .uneditable-input,.form-horizontal input,.form-horizontal select,.form-horizontal textarea,.form-inline .help-inline,.form-inline .input-append,.form-inline .input-prepend,.form-inline .uneditable-input,.form-inline input,.form-inline select,.form-inline textarea,.form-search .help-inline,.form-search .input-append,.form-search .input-prepend,.form-search .uneditable-input,.form-search input,.form-search select,.form-search textarea{display:inline-block;*display:inline;margin-bottom:0;vertical-align:middle;*zoom:1}.form-horizontal .hide,.form-inline .hide,.form-search .hide{display:none}.form-inline .btn-group,.form-inline label,.form-search .btn-group,.form-search label{display:inline-block}.form-inline .input-append,.form-inline .input-prepend,.form-search .input-append,.form-search .input-prepend{margin-bottom:0}.form-inline .checkbox,.form-inline .radio,.form-search .checkbox,.form-search .radio{padding-left:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio],.form-search .checkbox input[type=checkbox],.form-search .radio input[type=radio]{float:left;margin-right:3px;margin-left:0}.control-group{margin-bottom:10px}legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate}.form-horizontal .control-group{margin-bottom:20px;*zoom:1}.form-horizontal .control-group:after,.form-horizontal .control-group:before{display:table;line-height:0;content:""}.form-horizontal .control-group:after{clear:both}.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right}.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0}.form-horizontal .controls:first-child{*padding-left:180px}.form-horizontal .help-block{margin-bottom:0}.form-horizontal .input-append+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block{margin-top:10px}.form-horizontal .form-actions{padding-left:180px}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.table{width:100%;margin-bottom:20px}.table td,.table th{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #ddd}.table th{font-weight:700}.table thead th{vertical-align:bottom}.table caption+thead tr:first-child td,.table caption+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table thead:first-child tr:first-child td,.table thead:first-child tr:first-child th{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed td,.table-condensed th{padding:4px 5px}.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapse;border-left:0;border-radius:4px}.table-bordered td,.table-bordered th{border-left:1px solid #ddd}.table-bordered caption+tbody tr:first-child td,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+thead tr:first-child th,.table-bordered tbody:first-child tr:first-child td,.table-bordered tbody:first-child tr:first-child th,.table-bordered thead:first-child tr:first-child th{border-top:0}.table-bordered tbody:first-child tr:first-child>td:first-child,.table-bordered tbody:first-child tr:first-child>th:first-child,.table-bordered thead:first-child tr:first-child>th:first-child{border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered tbody:first-child tr:first-child>td:last-child,.table-bordered tbody:first-child tr:first-child>th:last-child,.table-bordered thead:first-child tr:first-child>th:last-child{border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tbody:last-child tr:last-child>th:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>th:first-child,.table-bordered thead:last-child tr:last-child>th:first-child{border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px}.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tbody:last-child tr:last-child>th:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>th:last-child,.table-bordered thead:last-child tr:last-child>th:last-child{border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px}.table-bordered tfoot+tbody:last-child tr:last-child td:first-child{border-bottom-left-radius:0;-moz-border-radius-bottomleft:0}.table-bordered tfoot+tbody:last-child tr:last-child td:last-child{border-bottom-right-radius:0;-moz-border-radius-bottomright:0}.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered caption+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child{border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered caption+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child{border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover tbody tr:hover>td,.table-hover tbody tr:hover>th{background-color:#f5f5f5}.row-fluid table td[class*=span],.row-fluid table th[class*=span],table td[class*=span],table th[class*=span]{display:table-cell;float:none;margin-left:0}.table td.span1,.table th.span1{float:none;width:44px;margin-left:0}.table td.span2,.table th.span2{float:none;width:124px;margin-left:0}.table td.span3,.table th.span3{float:none;width:204px;margin-left:0}.table td.span4,.table th.span4{float:none;width:284px;margin-left:0}.table td.span5,.table th.span5{float:none;width:364px;margin-left:0}.table td.span6,.table th.span6{float:none;width:444px;margin-left:0}.table td.span7,.table th.span7{float:none;width:524px;margin-left:0}.table td.span8,.table th.span8{float:none;width:604px;margin-left:0}.table td.span9,.table th.span9{float:none;width:684px;margin-left:0}.table td.span10,.table th.span10{float:none;width:764px;margin-left:0}.table td.span11,.table th.span11{float:none;width:844px;margin-left:0}.table td.span12,.table th.span12{float:none;width:924px;margin-left:0}.table tbody tr.success>td{background-color:#dff0d8}.table tbody tr.error>td{background-color:#f2dede}.table tbody tr.warning>td{background-color:#fcf8e3}.table tbody tr.info>td{background-color:#d9edf7}.table-hover tbody tr.success:hover>td{background-color:#d0e9c6}.table-hover tbody tr.error:hover>td{background-color:#ebcccc}.table-hover tbody tr.warning:hover>td{background-color:#faf2cc}.table-hover tbody tr.info:hover>td{background-color:#c4e3f3}[class*=" icon-"],[class^=icon-]{display:inline-block;width:14px;height:14px;margin-top:1px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url(../img/glyphicons-halflings.png);background-position:14px 14px;background-repeat:no-repeat}.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-menu>.active>a>[class^=icon-],.dropdown-menu>li>a:focus>[class*=" icon-"],.dropdown-menu>li>a:focus>[class^=icon-],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^=icon-],.dropdown-submenu:focus>a>[class*=" icon-"],.dropdown-submenu:focus>a>[class^=icon-],.dropdown-submenu:hover>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^=icon-],.icon-white,.nav-list>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^=icon-],.nav-pills>.active>a>[class*=" icon-"],.nav-pills>.active>a>[class^=icon-],.navbar-inverse .nav>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^=icon-]{background-image:url(../img/glyphicons-halflings-white.png)}.icon-glass{background-position:0 0}.icon-music{background-position:-24px 0}.icon-search{background-position:-48px 0}.icon-envelope{background-position:-72px 0}.icon-heart{background-position:-96px 0}.icon-star{background-position:-120px 0}.icon-star-empty{background-position:-144px 0}.icon-user{background-position:-168px 0}.icon-film{background-position:-192px 0}.icon-th-large{background-position:-216px 0}.icon-th{background-position:-240px 0}.icon-th-list{background-position:-264px 0}.icon-ok{background-position:-288px 0}.icon-remove{background-position:-312px 0}.icon-zoom-in{background-position:-336px 0}.icon-zoom-out{background-position:-360px 0}.icon-off{background-position:-384px 0}.icon-signal{background-position:-408px 0}.icon-cog{background-position:-432px 0}.icon-trash{background-position:-456px 0}.icon-home{background-position:0 -24px}.icon-file{background-position:-24px -24px}.icon-time{background-position:-48px -24px}.icon-road{background-position:-72px -24px}.icon-download-alt{background-position:-96px -24px}.icon-download{background-position:-120px -24px}.icon-upload{background-position:-144px -24px}.icon-inbox{background-position:-168px -24px}.icon-play-circle{background-position:-192px -24px}.icon-repeat{background-position:-216px -24px}.icon-refresh{background-position:-240px -24px}.icon-list-alt{background-position:-264px -24px}.icon-lock{background-position:-287px -24px}.icon-flag{background-position:-312px -24px}.icon-headphones{background-position:-336px -24px}.icon-volume-off{background-position:-360px -24px}.icon-volume-down{background-position:-384px -24px}.icon-volume-up{background-position:-408px -24px}.icon-qrcode{background-position:-432px -24px}.icon-barcode{background-position:-456px -24px}.icon-tag{background-position:0 -48px}.icon-tags{background-position:-25px -48px}.icon-book{background-position:-48px -48px}.icon-bookmark{background-position:-72px -48px}.icon-print{background-position:-96px -48px}.icon-camera{background-position:-120px -48px}.icon-font{background-position:-144px -48px}.icon-bold{background-position:-167px -48px}.icon-italic{background-position:-192px -48px}.icon-text-height{background-position:-216px -48px}.icon-text-width{background-position:-240px -48px}.icon-align-left{background-position:-264px -48px}.icon-align-center{background-position:-288px -48px}.icon-align-right{background-position:-312px -48px}.icon-align-justify{background-position:-336px -48px}.icon-list{background-position:-360px -48px}.icon-indent-left{background-position:-384px -48px}.icon-indent-right{background-position:-408px -48px}.icon-facetime-video{background-position:-432px -48px}.icon-picture{background-position:-456px -48px}.icon-pencil{background-position:0 -72px}.icon-map-marker{background-position:-24px -72px}.icon-adjust{background-position:-48px -72px}.icon-tint{background-position:-72px -72px}.icon-edit{background-position:-96px -72px}.icon-share{background-position:-120px -72px}.icon-check{background-position:-144px -72px}.icon-move{background-position:-168px -72px}.icon-step-backward{background-position:-192px -72px}.icon-fast-backward{background-position:-216px -72px}.icon-backward{background-position:-240px -72px}.icon-play{background-position:-264px -72px}.icon-pause{background-position:-288px -72px}.icon-stop{background-position:-312px -72px}.icon-forward{background-position:-336px -72px}.icon-fast-forward{background-position:-360px -72px}.icon-step-forward{background-position:-384px -72px}.icon-eject{background-position:-408px -72px}.icon-chevron-left{background-position:-432px -72px}.icon-chevron-right{background-position:-456px -72px}.icon-plus-sign{background-position:0 -96px}.icon-minus-sign{background-position:-24px -96px}.icon-remove-sign{background-position:-48px -96px}.icon-ok-sign{background-position:-72px -96px}.icon-question-sign{background-position:-96px -96px}.icon-info-sign{background-position:-120px -96px}.icon-screenshot{background-position:-144px -96px}.icon-remove-circle{background-position:-168px -96px}.icon-ok-circle{background-position:-192px -96px}.icon-ban-circle{background-position:-216px -96px}.icon-arrow-left{background-position:-240px -96px}.icon-arrow-right{background-position:-264px -96px}.icon-arrow-up{background-position:-289px -96px}.icon-arrow-down{background-position:-312px -96px}.icon-share-alt{background-position:-336px -96px}.icon-resize-full{background-position:-360px -96px}.icon-resize-small{background-position:-384px -96px}.icon-plus{background-position:-408px -96px}.icon-minus{background-position:-433px -96px}.icon-asterisk{background-position:-456px -96px}.icon-exclamation-sign{background-position:0 -120px}.icon-gift{background-position:-24px -120px}.icon-leaf{background-position:-48px -120px}.icon-fire{background-position:-72px -120px}.icon-eye-open{background-position:-96px -120px}.icon-eye-close{background-position:-120px -120px}.icon-warning-sign{background-position:-144px -120px}.icon-plane{background-position:-168px -120px}.icon-calendar{background-position:-192px -120px}.icon-random{width:16px;background-position:-216px -120px}.icon-comment{background-position:-240px -120px}.icon-magnet{background-position:-264px -120px}.icon-chevron-up{background-position:-288px -120px}.icon-chevron-down{background-position:-313px -119px}.icon-retweet{background-position:-336px -120px}.icon-shopping-cart{background-position:-360px -120px}.icon-folder-close{width:16px;background-position:-384px -120px}.icon-folder-open{width:16px;background-position:-408px -120px}.icon-resize-vertical{background-position:-432px -119px}.icon-resize-horizontal{background-position:-456px -118px}.icon-hdd{background-position:0 -144px}.icon-bullhorn{background-position:-24px -144px}.icon-bell{background-position:-48px -144px}.icon-certificate{background-position:-72px -144px}.icon-thumbs-up{background-position:-96px -144px}.icon-thumbs-down{background-position:-120px -144px}.icon-hand-right{background-position:-144px -144px}.icon-hand-left{background-position:-168px -144px}.icon-hand-up{background-position:-192px -144px}.icon-hand-down{background-position:-216px -144px}.icon-circle-arrow-right{background-position:-240px -144px}.icon-circle-arrow-left{background-position:-264px -144px}.icon-circle-arrow-up{background-position:-288px -144px}.icon-circle-arrow-down{background-position:-312px -144px}.icon-globe{background-position:-336px -144px}.icon-wrench{background-position:-360px -144px}.icon-tasks{background-position:-384px -144px}.icon-filter{background-position:-408px -144px}.icon-briefcase{background-position:-432px -144px}.icon-fullscreen{background-position:-456px -144px}.dropdown,.dropup{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);*border-right-width:2px;*border-bottom-width:2px;border-radius:6px;box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:20px;color:#333;white-space:nowrap}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover,.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover,.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-webkit-gradient(linear,left top,left bottom,from(#08c),to(#0077b3));background-image:linear-gradient(180deg,#08c,#0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff0088cc",endColorstr="#ff0077b3",GradientType=0)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#999}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:default;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open{*z-index:1000}.open>.dropdown-menu{display:block}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;border-radius:0 6px 6px 6px}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;border-radius:5px 5px 5px 0}.dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;border-color:transparent transparent transparent #ccc;border-style:solid;border-width:5px 0 5px 5px;content:" "}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;border-radius:6px 0 6px 6px}.dropdown .dropdown-menu .nav-header{padding-right:20px;padding-left:20px}.typeahead{z-index:1051;margin-top:2px;border-radius:4px}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-large{padding:24px;border-radius:6px}.well-small{padding:9px;border-radius:3px}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:700;line-height:20px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.btn{display:inline-block;*display:inline;padding:4px 12px;margin-bottom:0;*margin-left:.3em;font-size:14px;line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px hsla(0,0%,100%,.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e6e6e6));background-image:linear-gradient(180deg,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #ccc;*border:0;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) #b3b3b3;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffffffff",endColorstr="#ffe6e6e6",GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);*zoom:1;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.2),0 1px 2px rgba(0,0,0,.05)}.btn.active,.btn.disabled,.btn:active,.btn:focus,.btn:hover,.btn[disabled]{color:#333;background-color:#e6e6e6;*background-color:#d9d9d9}.btn.active,.btn:active{background-color:#ccc\9}.btn:first-child{*margin-left:0}.btn:focus,.btn:hover{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;transition:background-position .1s linear}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.active,.btn:active{background-image:none;outline:0;box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05)}.btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);box-shadow:none}.btn-large{padding:11px 19px;font-size:17.5px;border-radius:6px}.btn-large [class*=" icon-"],.btn-large [class^=icon-]{margin-top:4px}.btn-small{padding:2px 10px;font-size:11.9px;border-radius:3px}.btn-small [class*=" icon-"],.btn-small [class^=icon-]{margin-top:0}.btn-mini [class*=" icon-"],.btn-mini [class^=icon-]{margin-top:-1px}.btn-mini{padding:0 6px;font-size:10.5px;border-radius:3px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0;box-sizing:border-box}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.btn-danger.active,.btn-info.active,.btn-inverse.active,.btn-primary.active,.btn-success.active,.btn-warning.active{color:hsla(0,0%,100%,.75)}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#006dcc;*background-color:#04c;background-image:-webkit-gradient(linear,left top,left bottom,from(#08c),to(#04c));background-image:linear-gradient(180deg,#08c,#04c);background-repeat:repeat-x;border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff0088cc",endColorstr="#ff0044cc",GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary.active,.btn-primary.disabled,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.btn-primary[disabled]{color:#fff;background-color:#04c;*background-color:#003bb3}.btn-primary.active,.btn-primary:active{background-color:#039\9}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#faa732;*background-color:#f89406;background-image:-webkit-gradient(linear,left top,left bottom,from(#fbb450),to(#f89406));background-image:linear-gradient(180deg,#fbb450,#f89406);background-repeat:repeat-x;border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#fffbb450",endColorstr="#fff89406",GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning.active,.btn-warning.disabled,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.btn-warning[disabled]{color:#fff;background-color:#f89406;*background-color:#df8505}.btn-warning.active,.btn-warning:active{background-color:#c67605\9}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#da4f49;*background-color:#bd362f;background-image:-webkit-gradient(linear,left top,left bottom,from(#ee5f5b),to(#bd362f));background-image:linear-gradient(180deg,#ee5f5b,#bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffee5f5b",endColorstr="#ffbd362f",GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger.active,.btn-danger.disabled,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.btn-danger[disabled]{color:#fff;background-color:#bd362f;*background-color:#a9302a}.btn-danger.active,.btn-danger:active{background-color:#942a25\9}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#5bb75b;*background-color:#51a351;background-image:-webkit-gradient(linear,left top,left bottom,from(#62c462),to(#51a351));background-image:linear-gradient(180deg,#62c462,#51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff62c462",endColorstr="#ff51a351",GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success.active,.btn-success.disabled,.btn-success:active,.btn-success:focus,.btn-success:hover,.btn-success[disabled]{color:#fff;background-color:#51a351;*background-color:#499249}.btn-success.active,.btn-success:active{background-color:#408140\9}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#49afcd;*background-color:#2f96b4;background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2f96b4));background-image:linear-gradient(180deg,#5bc0de,#2f96b4);background-repeat:repeat-x;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff5bc0de",endColorstr="#ff2f96b4",GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info.active,.btn-info.disabled,.btn-info:active,.btn-info:focus,.btn-info:hover,.btn-info[disabled]{color:#fff;background-color:#2f96b4;*background-color:#2a85a0}.btn-info.active,.btn-info:active{background-color:#24748c\9}.btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#363636;*background-color:#222;background-image:-webkit-gradient(linear,left top,left bottom,from(#444),to(#222));background-image:linear-gradient(180deg,#444,#222);background-repeat:repeat-x;border-color:#222 #222 #000;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff444444",endColorstr="#ff222222",GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-inverse.active,.btn-inverse.disabled,.btn-inverse:active,.btn-inverse:focus,.btn-inverse:hover,.btn-inverse[disabled]{color:#fff;background-color:#222;*background-color:#151515}.btn-inverse.active,.btn-inverse:active{background-color:#080808\9}button.btn,input[type=submit].btn{*padding-top:3px;*padding-bottom:3px}button.btn::-moz-focus-inner,input[type=submit].btn::-moz-focus-inner{padding:0;border:0}button.btn.btn-large,input[type=submit].btn.btn-large{*padding-top:7px;*padding-bottom:7px}button.btn.btn-small,input[type=submit].btn.btn-small{*padding-top:3px;*padding-bottom:3px}button.btn.btn-mini,input[type=submit].btn.btn-mini{*padding-top:1px;*padding-bottom:1px}.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;box-shadow:none}.btn-link{color:#08c;cursor:pointer;border-color:transparent;border-radius:0}.btn-link:focus,.btn-link:hover{color:#005580;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover{color:#333;text-decoration:none}.btn-group{position:relative;display:inline-block;*display:inline;*margin-left:.3em;font-size:0;white-space:nowrap;vertical-align:middle;*zoom:1}.btn-group:first-child{*margin-left:0}.btn-group+.btn-group{margin-left:5px}.btn-toolbar{margin-top:10px;margin-bottom:10px;font-size:0}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn+.btn-group,.btn-toolbar>.btn-group+.btn{margin-left:5px}.btn-group>.btn{position:relative;border-radius:0}.btn-group>.btn+.btn{margin-left:-1px}.btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:14px}.btn-group>.btn-mini{font-size:10.5px}.btn-group>.btn-small{font-size:11.9px}.btn-group>.btn-large{font-size:17.5px}.btn-group>.btn:first-child{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{border-top-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.btn-group>.btn.large:first-child{margin-left:0;border-bottom-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{border-top-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{*padding-top:5px;padding-right:8px;*padding-bottom:5px;padding-left:8px;box-shadow:inset 1px 0 0 hsla(0,0%,100%,.125),inset 0 1px 0 hsla(0,0%,100%,.2),0 1px 2px rgba(0,0,0,.05)}.btn-group>.btn-mini+.dropdown-toggle{*padding-top:2px;padding-right:5px;*padding-bottom:2px;padding-left:5px}.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px}.btn-group>.btn-large+.dropdown-toggle{*padding-top:7px;padding-right:12px;*padding-bottom:7px;padding-left:12px}.btn-group.open .dropdown-toggle{background-image:none;box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05)}.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6}.btn-group.open .btn-primary.dropdown-toggle{background-color:#04c}.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406}.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f}.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351}.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4}.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222}.btn .caret{margin-top:8px;margin-left:0}.btn-large .caret{margin-top:6px;border-top-width:5px;border-right-width:5px;border-left-width:5px}.btn-mini .caret,.btn-small .caret{margin-top:8px}.dropup .btn-large .caret{border-bottom-width:5px}.btn-danger .caret,.btn-info .caret,.btn-inverse .caret,.btn-primary .caret,.btn-success .caret,.btn-warning .caret{border-top-color:#fff;border-bottom-color:#fff}.btn-group-vertical{display:inline-block;*display:inline;*zoom:1}.btn-group-vertical>.btn{display:block;float:none;max-width:100%;border-radius:0}.btn-group-vertical>.btn+.btn{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child{border-radius:4px 4px 0 0}.btn-group-vertical>.btn:last-child{border-radius:0 0 4px 4px}.btn-group-vertical>.btn-large:first-child{border-radius:6px 6px 0 0}.btn-group-vertical>.btn-large:last-child{border-radius:0 0 6px 6px}.alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 hsla(0,0%,100%,.5);background-color:#fcf8e3;border:1px solid #fbeed5;border-radius:4px}.alert,.alert h4{color:#c09853}.alert h4{margin:0}.alert .close{position:relative;top:-2px;right:-21px;line-height:20px}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-success h4{color:#468847}.alert-danger,.alert-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-danger h4,.alert-error h4{color:#b94a48}.alert-info{background-color:#d9edf7;border-color:#bce8f1}.alert-info,.alert-info h4{color:#3a87ad}.alert-block{padding-top:14px;padding-bottom:14px}.alert-block>p,.alert-block>ul{margin-bottom:0}.alert-block p+p{margin-top:5px}.nav{margin-bottom:20px;margin-left:0;list-style:none}.nav>li>a{display:block}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li>a>img{max-width:none}.nav>.pull-right{float:right}.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:700;line-height:20px;color:#999;text-shadow:0 1px 0 hsla(0,0%,100%,.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-right:15px;padding-left:15px;margin-bottom:0}.nav-list .nav-header,.nav-list>li>a{margin-right:-15px;margin-left:-15px;text-shadow:0 1px 0 hsla(0,0%,100%,.5)}.nav-list>li>a{padding:3px 15px}.nav-list>.active>a,.nav-list>.active>a:focus,.nav-list>.active>a:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.2);background-color:#08c}.nav-list [class*=" icon-"],.nav-list [class^=icon-]{margin-right:2px}.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.nav-pills,.nav-tabs{*zoom:1}.nav-pills:after,.nav-pills:before,.nav-tabs:after,.nav-tabs:before{display:table;line-height:0;content:""}.nav-pills:after,.nav-tabs:after{clear:both}.nav-pills>li,.nav-tabs>li{float:left}.nav-pills>li>a,.nav-tabs>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:focus,.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:focus,.nav-tabs>.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid;border-color:#ddd #ddd transparent}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;border-radius:5px}.nav-pills>.active>a,.nav-pills>.active>a:focus,.nav-pills>.active>a:hover{color:#fff;background-color:#08c}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{border-top-right-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px}.nav-tabs.nav-stacked>li:last-child>a{border-bottom-right-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-moz-border-radius-bottomleft:4px}.nav-tabs.nav-stacked>li>a:focus,.nav-tabs.nav-stacked>li>a:hover{z-index:2;border-color:#ddd}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-menu{border-radius:0 0 6px 6px}.nav-pills .dropdown-menu{border-radius:6px}.nav .dropdown-toggle .caret{margin-top:6px;border-top-color:#08c;border-bottom-color:#08c}.nav .dropdown-toggle:focus .caret,.nav .dropdown-toggle:hover .caret{border-top-color:#005580;border-bottom-color:#005580}.nav-tabs .dropdown-toggle .caret{margin-top:8px}.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.nav>.dropdown.active>a:focus,.nav>.dropdown.active>a:hover{cursor:pointer}.nav-pills .open .dropdown-toggle,.nav-tabs .open .dropdown-toggle,.nav>li.dropdown.open.active>a:focus,.nav>li.dropdown.open.active>a:hover{color:#fff;background-color:#999;border-color:#999}.nav li.dropdown.open.active .caret,.nav li.dropdown.open .caret,.nav li.dropdown.open a:focus .caret,.nav li.dropdown.open a:hover .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:focus,.tabs-stacked .open>a:hover{border-color:#999}.tabbable{*zoom:1}.tabbable:after,.tabbable:before{display:table;line-height:0;content:""}.tabbable:after{clear:both}.tab-content{overflow:auto}.tabs-below>.nav-tabs,.tabs-left>.nav-tabs,.tabs-right>.nav-tabs{border-bottom:0}.pill-content>.pill-pane,.tab-content>.tab-pane{display:none}.pill-content>.active,.tab-content>.active{display:block}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a{border-radius:0 0 4px 4px}.tabs-below>.nav-tabs>li>a:focus,.tabs-below>.nav-tabs>li>a:hover{border-top-color:#ddd;border-bottom-color:transparent}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:focus,.tabs-below>.nav-tabs>.active>a:hover{border-color:transparent #ddd #ddd}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-tabs>li>a{margin-right:-1px;border-radius:4px 0 0 4px}.tabs-left>.nav-tabs>li>a:focus,.tabs-left>.nav-tabs>li>a:hover{border-color:#eee #ddd #eee #eee}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:focus,.tabs-left>.nav-tabs .active>a:hover{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right>.nav-tabs>li>a{margin-left:-1px;border-radius:0 4px 4px 0}.tabs-right>.nav-tabs>li>a:focus,.tabs-right>.nav-tabs>li>a:hover{border-color:#eee #eee #eee #ddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:focus,.tabs-right>.nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}.nav>.disabled>a{color:#999}.nav>.disabled>a:focus,.nav>.disabled>a:hover{text-decoration:none;cursor:default;background-color:transparent}.navbar{*position:relative;*z-index:2;margin-bottom:20px;overflow:visible}.navbar-inner{min-height:40px;padding-right:20px;padding-left:20px;background-color:#fafafa;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f2f2f2));background-image:linear-gradient(180deg,#fff,#f2f2f2);background-repeat:repeat-x;border:1px solid #d4d4d4;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffffffff",endColorstr="#fff2f2f2",GradientType=0);*zoom:1;box-shadow:0 1px 4px rgba(0,0,0,.065)}.navbar-inner:after,.navbar-inner:before{display:table;line-height:0;content:""}.navbar-inner:after{clear:both}.navbar .container{width:auto}.nav-collapse.collapse{height:auto;overflow:visible}.navbar .brand{display:block;float:left;padding:10px 20px;margin-left:-20px;font-size:20px;font-weight:200;color:#777;text-shadow:0 1px 0 #fff}.navbar .brand:focus,.navbar .brand:hover{text-decoration:none}.navbar-text{margin-bottom:0;line-height:40px;color:#777}.navbar-link{color:#777}.navbar-link:focus,.navbar-link:hover{color:#333}.navbar .divider-vertical{height:40px;margin:0 9px;border-right:1px solid #fff;border-left:1px solid #f2f2f2}.navbar .btn,.navbar .btn-group{margin-top:5px}.navbar .btn-group .btn,.navbar .input-append .btn,.navbar .input-append .btn-group,.navbar .input-prepend .btn,.navbar .input-prepend .btn-group{margin-top:0}.navbar-form{margin-bottom:0;*zoom:1}.navbar-form:after,.navbar-form:before{display:table;line-height:0;content:""}.navbar-form:after{clear:both}.navbar-form .checkbox,.navbar-form .radio,.navbar-form input,.navbar-form select{margin-top:5px}.navbar-form .btn,.navbar-form input,.navbar-form select{display:inline-block;margin-bottom:0}.navbar-form input[type=checkbox],.navbar-form input[type=image],.navbar-form input[type=radio]{margin-top:3px}.navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}.navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0}.navbar-search .search-query{padding:4px 14px;margin-bottom:0;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:13px;font-weight:400;line-height:1;border-radius:15px}.navbar-static-top{position:static;margin-bottom:0}.navbar-static-top .navbar-inner{border-radius:0}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px}.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0}.navbar-fixed-bottom .navbar-inner,.navbar-fixed-top .navbar-inner{padding-right:0;padding-left:0;border-radius:0}.navbar-fixed-bottom .container,.navbar-fixed-top .container,.navbar-static-top .container{width:940px}.navbar-fixed-top{top:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{box-shadow:0 1px 10px rgba(0,0,0,.1)}.navbar-fixed-bottom{bottom:0}.navbar-fixed-bottom .navbar-inner{box-shadow:0 -1px 10px rgba(0,0,0,.1)}.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}.navbar .nav.pull-right{float:right;margin-right:0}.navbar .nav>li{float:left}.navbar .nav>li>a{color:#777;text-decoration:none;text-shadow:0 1px 0 #fff}.navbar .nav .dropdown-toggle .caret{margin-top:8px}.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{color:#333;text-decoration:none;background-color:transparent}.navbar .nav>.active>a,.navbar .nav>.active>a:focus,.navbar .nav>.active>a:hover{color:#555;text-decoration:none;background-color:#e5e5e5;box-shadow:inset 0 3px 8px rgba(0,0,0,.125)}.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-right:5px;margin-left:5px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#ededed;*background-color:#e5e5e5;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#e5e5e5));background-image:linear-gradient(180deg,#f2f2f2,#e5e5e5);background-repeat:repeat-x;border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#fff2f2f2",endColorstr="#ffe5e5e5",GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);box-shadow:inset 0 1px 0 hsla(0,0%,100%,.1),0 1px 0 hsla(0,0%,100%,.075)}.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar:active,.navbar .btn-navbar:focus,.navbar .btn-navbar:hover,.navbar .btn-navbar[disabled]{color:#fff;background-color:#e5e5e5;*background-color:#d9d9d9}.navbar .btn-navbar.active,.navbar .btn-navbar:active{background-color:#ccc\9}.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;border-radius:1px;box-shadow:0 1px 0 rgba(0,0,0,.25)}.btn-navbar .icon-bar+.icon-bar{margin-top:3px}.navbar .nav>li>.dropdown-menu:before{position:absolute;top:-7px;left:9px;display:inline-block;border-right:7px solid transparent;border-left:7px solid transparent;border-bottom:7px solid rgba(0,0,0,.2);content:""}.navbar .nav>li>.dropdown-menu:after{position:absolute;top:-6px;left:10px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:""}.navbar-fixed-bottom .nav>li>.dropdown-menu:before{top:auto;bottom:-7px;border-bottom:0;border-top:7px solid rgba(0,0,0,.2)}.navbar-fixed-bottom .nav>li>.dropdown-menu:after{top:auto;bottom:-6px;border-top:6px solid #fff;border-bottom:0}.navbar .nav li.dropdown>a:focus .caret,.navbar .nav li.dropdown>a:hover .caret{border-top-color:#333;border-bottom-color:#333}.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle,.navbar .nav li.dropdown.open>.dropdown-toggle{color:#555;background-color:#e5e5e5}.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777;border-bottom-color:#777}.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open>.dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.navbar .nav>li>.dropdown-menu.pull-right,.navbar .pull-right>li>.dropdown-menu{right:0;left:auto}.navbar .nav>li>.dropdown-menu.pull-right:before,.navbar .pull-right>li>.dropdown-menu:before{right:12px;left:auto}.navbar .nav>li>.dropdown-menu.pull-right:after,.navbar .pull-right>li>.dropdown-menu:after{right:13px;left:auto}.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu,.navbar .pull-right>li>.dropdown-menu .dropdown-menu{right:100%;left:auto;margin-right:-1px;margin-left:0;border-radius:6px 0 6px 6px}.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-webkit-gradient(linear,left top,left bottom,from(#222),to(#111));background-image:linear-gradient(180deg,#222,#111);background-repeat:repeat-x;border-color:#252525;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff222222",endColorstr="#ff111111",GradientType=0)}.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-inverse .brand:focus,.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{color:#fff}.navbar-inverse .brand,.navbar-inverse .navbar-text{color:#999}.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:focus,.navbar-inverse .nav .active>a:hover{color:#fff;background-color:#111}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:focus,.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .divider-vertical{border-right-color:#222;border-left-color:#111}.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open>.dropdown-toggle{color:#fff;background-color:#111}.navbar-inverse .nav li.dropdown>a:focus .caret,.navbar-inverse .nav li.dropdown>a:hover .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-search .search-query{color:#fff;background-color:#515151;border-color:#111;box-shadow:inset 0 1px 2px rgba(0,0,0,.1),0 1px 0 hsla(0,0%,100%,.15);-webkit-transition:none;transition:none}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query.focused,.navbar-inverse .navbar-search .search-query:focus{padding:5px 15px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;outline:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.navbar-inverse .btn-navbar{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#0e0e0e;*background-color:#040404;background-image:-webkit-gradient(linear,left top,left bottom,from(#151515),to(#040404));background-image:linear-gradient(180deg,#151515,#040404);background-repeat:repeat-x;border-color:#040404 #040404 #000;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff151515",endColorstr="#ff040404",GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar[disabled]{color:#fff;background-color:#040404;*background-color:#000}.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar:active{background-color:#000\9}.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block;*display:inline;text-shadow:0 1px 0 #fff;*zoom:1}.breadcrumb>li>.divider{padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{margin:20px 0}.pagination ul{display:inline-block;*display:inline;margin-bottom:0;margin-left:0;border-radius:4px;*zoom:1;box-shadow:0 1px 2px rgba(0,0,0,.05)}.pagination ul>li{display:inline}.pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#fff;border:1px solid #ddd;border-left-width:0}.pagination ul>.active>a,.pagination ul>.active>span,.pagination ul>li>a:focus,.pagination ul>li>a:hover{background-color:#f5f5f5}.pagination ul>.active>a,.pagination ul>.active>span{color:#999;cursor:default}.pagination ul>.disabled>a,.pagination ul>.disabled>a:focus,.pagination ul>.disabled>a:hover,.pagination ul>.disabled>span{color:#999;cursor:default;background-color:transparent}.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;border-bottom-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.pagination-centered{text-align:center}.pagination-right{text-align:right}.pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:17.5px}.pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.pagination-mini ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>a,.pagination-small ul>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-moz-border-radius-topleft:3px}.pagination-mini ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>a,.pagination-small ul>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px}.pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.9px}.pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:10.5px}.pager{margin:20px 0;text-align:center;list-style:none;*zoom:1}.pager:after,.pager:before{display:table;line-height:0;content:""}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#f5f5f5}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#999;cursor:default;background-color:#fff}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80)}.modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.3);*border:1px solid #999;border-radius:6px;outline:none;box-shadow:0 3px 7px rgba(0,0,0,.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.modal.fade{top:-25%;-webkit-transition:opacity .3s linear,top .3s ease-out;transition:opacity .3s linear,top .3s ease-out}.modal.fade.in{top:10%}.modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}.modal-header h3{margin:0;line-height:30px}.modal-body{position:relative;max-height:400px;padding:15px;overflow-y:auto}.modal-footer,.modal-form{margin-bottom:0}.modal-footer{padding:14px 15px 15px;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;border-radius:0 0 6px 6px;*zoom:1;box-shadow:inset 0 1px 0 #fff}.modal-footer:after,.modal-footer:before{display:table;line-height:0;content:""}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.tooltip{position:absolute;z-index:1030;display:block;font-size:11px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-title:empty{display:none}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0}.thumbnails{margin-left:-20px;list-style:none;*zoom:1}.thumbnails:after,.thumbnails:before{display:table;line-height:0;content:""}.thumbnails:after{clear:both}.row-fluid .thumbnails{margin-left:0}.thumbnails>li{float:left;margin-bottom:20px;margin-left:20px}.thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;border-radius:4px;box-shadow:0 1px 3px rgba(0,0,0,.055);-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}a.thumbnail:focus,a.thumbnail:hover{border-color:#08c;box-shadow:0 1px 4px rgba(0,105,214,.25)}.thumbnail>img{display:block;max-width:100%;margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#555}.media,.media-body{overflow:hidden;*overflow:visible;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{margin-left:0;list-style:none}.badge,.label{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:700;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);white-space:nowrap;vertical-align:baseline;background-color:#999}.label{border-radius:3px}.badge{padding-right:9px;padding-left:9px;border-radius:9px}.badge:empty,.label:empty{display:none}a.badge:focus,a.badge:hover,a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.badge-important,.label-important{background-color:#b94a48}.badge-important[href],.label-important[href]{background-color:#953b39}.badge-warning,.label-warning{background-color:#f89406}.badge-warning[href],.label-warning[href]{background-color:#c67605}.badge-success,.label-success{background-color:#468847}.badge-success[href],.label-success[href]{background-color:#356635}.badge-info,.label-info{background-color:#3a87ad}.badge-info[href],.label-info[href]{background-color:#2d6987}.badge-inverse,.label-inverse{background-color:#333}.badge-inverse[href],.label-inverse[href]{background-color:#1a1a1a}.btn .badge,.btn .label{position:relative;top:-1px}.btn-mini .badge,.btn-mini .label{top:0}@-webkit-keyframes progress-bar-stripes{0%{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{0%{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f7f7f7;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#f9f9f9));background-image:linear-gradient(180deg,#f5f5f5,#f9f9f9);border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#fff5f5f5",endColorstr="#fff9f9f9",GradientType=0);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress,.progress .bar{background-repeat:repeat-x}.progress .bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#0e90d2;background-image:-webkit-gradient(linear,left top,left bottom,from(#149bdf),to(#0480be));background-image:linear-gradient(180deg,#149bdf,#0480be);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff149bdf",endColorstr="#ff0480be",GradientType=0);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-sizing:border-box;-webkit-transition:width .6s ease;transition:width .6s ease}.progress .bar+.bar{box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15)}.progress-striped .bar{background-color:#149bdf;background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-webkit-gradient(linear,left top,left bottom,from(#ee5f5b),to(#c43c35));background-image:linear-gradient(180deg,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffee5f5b",endColorstr="#ffc43c35",GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent)}.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-webkit-gradient(linear,left top,left bottom,from(#62c462),to(#57a957));background-image:linear-gradient(180deg,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff62c462",endColorstr="#ff57a957",GradientType=0)}.progress-striped .bar-success,.progress-success.progress-striped .bar{background-color:#62c462;background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent)}.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#339bb9));background-image:linear-gradient(180deg,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff5bc0de",endColorstr="#ff339bb9",GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent)}.progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:-webkit-gradient(linear,left top,left bottom,from(#fbb450),to(#f89406));background-image:linear-gradient(180deg,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#fffbb450",endColorstr="#fff89406",GradientType=0)}.progress-striped .bar-warning,.progress-warning.progress-striped .bar{background-color:#fbb450;background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent)}.accordion{margin-bottom:20px}.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;border-radius:4px}.accordion-heading{border-bottom:0}.accordion-heading .accordion-toggle{display:block;padding:8px 15px}.accordion-toggle{cursor:pointer}.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5}.carousel{position:relative;margin-bottom:20px;line-height:1}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:left .6s ease-in-out;transition:left .6s ease-in-out}.carousel-inner>.item>a>img,.carousel-inner>.item>img{display:block;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-align:center;background:#222;border:3px solid #fff;border-radius:23px;opacity:.5;filter:alpha(opacity=50)}.carousel-control.right{right:15px;left:auto}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-indicators{position:absolute;top:15px;right:15px;z-index:5;margin:0;list-style:none}.carousel-indicators li{display:block;float:left;width:10px;height:10px;margin-left:5px;text-indent:-999px;background-color:#ccc;background-color:hsla(0,0%,100%,.25);border-radius:5px}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:0;bottom:0;left:0;padding:15px;background:#333;background:rgba(0,0,0,.75)}.carousel-caption h4,.carousel-caption p{line-height:20px;color:#fff}.carousel-caption h4{margin:0 0 5px}.carousel-caption p{margin-bottom:0}.hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#eee;border-radius:6px}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;color:inherit}.hero-unit li{line-height:30px}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden}.affix{position:fixed} +/*! + * Bootstrap Responsive v2.3.2 + * + * Copyright 2013 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world by @mdo and @fat. + */.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;box-sizing:border-box}@-ms-viewport{width:device-width}.hidden{display:none;visibility:hidden}.hidden-desktop,.visible-phone,.visible-tablet{display:none!important}.visible-desktop{display:inherit!important}@media (min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-tablet{display:inherit!important}.hidden-tablet{display:none!important}}@media (max-width:767px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-phone{display:inherit!important}.hidden-phone{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:inherit!important}.hidden-print{display:none!important}}@media (min-width:1200px){.row{margin-left:-30px;*zoom:1}.row:after,.row:before{display:table;line-height:0;content:""}.row:after{clear:both}[class*=span]{float:left;min-height:1px;margin-left:30px}.container,.navbar-fixed-bottom .container,.navbar-fixed-top .container,.navbar-static-top .container,.span12{width:1170px}.span11{width:1070px}.span10{width:970px}.span9{width:870px}.span8{width:770px}.span7{width:670px}.span6{width:570px}.span5{width:470px}.span4{width:370px}.span3{width:270px}.span2{width:170px}.span1{width:70px}.offset12{margin-left:1230px}.offset11{margin-left:1130px}.offset10{margin-left:1030px}.offset9{margin-left:930px}.offset8{margin-left:830px}.offset7{margin-left:730px}.offset6{margin-left:630px}.offset5{margin-left:530px}.offset4{margin-left:430px}.offset3{margin-left:330px}.offset2{margin-left:230px}.offset1{margin-left:130px}.row-fluid{width:100%;*zoom:1}.row-fluid:after,.row-fluid:before{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*=span]{display:block;float:left;width:100%;min-height:30px;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;box-sizing:border-box}.row-fluid [class*=span]:first-child{margin-left:0}.row-fluid .controls-row [class*=span]+[class*=span]{margin-left:2.564102564102564%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%}.row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%}.row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%}.row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%}.row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%}.row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%}.row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%}.row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%}.row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%}.row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%}.row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%}.row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%}.row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%}.row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%}.row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%}.row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%}.row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%}.row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%}.row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%}.row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%}.row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%}.row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%}.row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%}.row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%}.row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%}.row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%}.row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%}.row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%}.row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%}.row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%}.row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%}.row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%}.row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%}.row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%}.row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%}.uneditable-input,input,textarea{margin-left:0}.controls-row [class*=span]+[class*=span]{margin-left:30px}.uneditable-input.span12,input.span12,textarea.span12{width:1156px}.uneditable-input.span11,input.span11,textarea.span11{width:1056px}.uneditable-input.span10,input.span10,textarea.span10{width:956px}.uneditable-input.span9,input.span9,textarea.span9{width:856px}.uneditable-input.span8,input.span8,textarea.span8{width:756px}.uneditable-input.span7,input.span7,textarea.span7{width:656px}.uneditable-input.span6,input.span6,textarea.span6{width:556px}.uneditable-input.span5,input.span5,textarea.span5{width:456px}.uneditable-input.span4,input.span4,textarea.span4{width:356px}.uneditable-input.span3,input.span3,textarea.span3{width:256px}.uneditable-input.span2,input.span2,textarea.span2{width:156px}.uneditable-input.span1,input.span1,textarea.span1{width:56px}.thumbnails{margin-left:-30px}.thumbnails>li{margin-left:30px}.row-fluid .thumbnails{margin-left:0}}@media (min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1}.row:after,.row:before{display:table;line-height:0;content:""}.row:after{clear:both}[class*=span]{float:left;min-height:1px;margin-left:20px}.container,.navbar-fixed-bottom .container,.navbar-fixed-top .container,.navbar-static-top .container,.span12{width:724px}.span11{width:662px}.span10{width:600px}.span9{width:538px}.span8{width:476px}.span7{width:414px}.span6{width:352px}.span5{width:290px}.span4{width:228px}.span3{width:166px}.span2{width:104px}.span1{width:42px}.offset12{margin-left:764px}.offset11{margin-left:702px}.offset10{margin-left:640px}.offset9{margin-left:578px}.offset8{margin-left:516px}.offset7{margin-left:454px}.offset6{margin-left:392px}.offset5{margin-left:330px}.offset4{margin-left:268px}.offset3{margin-left:206px}.offset2{margin-left:144px}.offset1{margin-left:82px}.row-fluid{width:100%;*zoom:1}.row-fluid:after,.row-fluid:before{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*=span]{display:block;float:left;width:100%;min-height:30px;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;box-sizing:border-box}.row-fluid [class*=span]:first-child{margin-left:0}.row-fluid .controls-row [class*=span]+[class*=span]{margin-left:2.7624309392265194%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%}.row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%}.row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%}.row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%}.row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%}.row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%}.row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%}.row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%}.row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%}.row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%}.row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%}.row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%}.row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%}.row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%}.row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%}.row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%}.row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%}.row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%}.row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%}.row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%}.row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%}.row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%}.row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%}.row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%}.row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%}.row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%}.row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%}.row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%}.row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%}.row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%}.row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%}.row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%}.row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%}.row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%}.row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%}.uneditable-input,input,textarea{margin-left:0}.controls-row [class*=span]+[class*=span]{margin-left:20px}.uneditable-input.span12,input.span12,textarea.span12{width:710px}.uneditable-input.span11,input.span11,textarea.span11{width:648px}.uneditable-input.span10,input.span10,textarea.span10{width:586px}.uneditable-input.span9,input.span9,textarea.span9{width:524px}.uneditable-input.span8,input.span8,textarea.span8{width:462px}.uneditable-input.span7,input.span7,textarea.span7{width:400px}.uneditable-input.span6,input.span6,textarea.span6{width:338px}.uneditable-input.span5,input.span5,textarea.span5{width:276px}.uneditable-input.span4,input.span4,textarea.span4{width:214px}.uneditable-input.span3,input.span3,textarea.span3{width:152px}.uneditable-input.span2,input.span2,textarea.span2{width:90px}.uneditable-input.span1,input.span1,textarea.span1{width:28px}}@media (max-width:767px){body{padding-right:20px;padding-left:20px}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{margin-right:-20px;margin-left:-20px}.container-fluid{padding:0}.dl-horizontal dt{float:none;width:auto;clear:none;text-align:left}.dl-horizontal dd{margin-left:0}.container{width:auto}.row-fluid{width:100%}.row,.thumbnails{margin-left:0}.thumbnails>li{float:none;margin-left:0}.row-fluid [class*=span],.uneditable-input[class*=span],[class*=span]{display:block;float:none;width:100%;margin-left:0;box-sizing:border-box}.row-fluid .span12,.span12{width:100%;box-sizing:border-box}.row-fluid [class*=offset]:first-child{margin-left:0}.input-large,.input-xlarge,.input-xxlarge,.uneditable-input,input[class*=span],select[class*=span],textarea[class*=span]{display:block;width:100%;min-height:30px;box-sizing:border-box}.input-append input,.input-append input[class*=span],.input-prepend input,.input-prepend input[class*=span]{display:inline-block;width:auto}.controls-row [class*=span]+[class*=span]{margin-left:0}.modal{position:fixed;top:20px;right:20px;left:20px;width:auto;margin:0}.modal.fade{top:-100px}.modal.fade.in{top:20px}}@media (max-width:480px){.nav-collapse{-webkit-transform:translateZ(0)}.page-header h1 small{display:block;line-height:20px}input[type=checkbox],input[type=radio]{border:1px solid #ccc}.form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left}.form-horizontal .controls{margin-left:0}.form-horizontal .control-list{padding-top:0}.form-horizontal .form-actions{padding-right:10px;padding-left:10px}.media .pull-left,.media .pull-right{display:block;float:none;margin-bottom:10px}.media-object{margin-right:0;margin-left:0}.modal{top:10px;right:10px;left:10px}.modal-header .close{padding:10px;margin:-10px}.carousel-caption{position:static}}@media (max-width:979px){body{padding-top:0}.navbar-fixed-bottom,.navbar-fixed-top{position:static}.navbar-fixed-top{margin-bottom:20px}.navbar-fixed-bottom{margin-top:20px}.navbar-fixed-bottom .navbar-inner,.navbar-fixed-top .navbar-inner{padding:5px}.navbar .container{width:auto;padding:0}.navbar .brand{padding-right:10px;padding-left:10px;margin:0 0 0 -5px}.nav-collapse{clear:both}.nav-collapse .nav{float:none;margin:0 0 10px}.nav-collapse .nav>li{float:none}.nav-collapse .nav>li>a{margin-bottom:2px}.nav-collapse .nav>.divider-vertical{display:none}.nav-collapse .nav .nav-header{color:#777;text-shadow:none}.nav-collapse .dropdown-menu a,.nav-collapse .nav>li>a{padding:9px 15px;font-weight:700;color:#777;border-radius:3px}.nav-collapse .btn{padding:4px 10px;font-weight:400;border-radius:4px}.nav-collapse .dropdown-menu li+li a{margin-bottom:2px}.nav-collapse .dropdown-menu a:focus,.nav-collapse .dropdown-menu a:hover,.nav-collapse .nav>li>a:focus,.nav-collapse .nav>li>a:hover{background-color:#f2f2f2}.navbar-inverse .nav-collapse .dropdown-menu a,.navbar-inverse .nav-collapse .nav>li>a{color:#999}.navbar-inverse .nav-collapse .dropdown-menu a:focus,.navbar-inverse .nav-collapse .dropdown-menu a:hover,.navbar-inverse .nav-collapse .nav>li>a:focus,.navbar-inverse .nav-collapse .nav>li>a:hover{background-color:#111}.nav-collapse.in .btn-group{padding:0;margin-top:5px}.nav-collapse .dropdown-menu{position:static;top:auto;left:auto;display:none;float:none;max-width:none;padding:0;margin:0 15px;background-color:transparent;border:none;border-radius:0;box-shadow:none}.nav-collapse .open>.dropdown-menu{display:block}.nav-collapse .dropdown-menu .divider,.nav-collapse .dropdown-menu:after,.nav-collapse .dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after,.nav-collapse .nav>li>.dropdown-menu:before{display:none}.nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.1),0 1px 0 hsla(0,0%,100%,.1)}.navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111;border-bottom-color:#111}.navbar .nav-collapse .nav.pull-right{float:none;margin-left:0}.nav-collapse,.nav-collapse.collapse{height:0;overflow:hidden}.navbar .btn-navbar{display:block}.navbar-static .navbar-inner{padding-right:10px;padding-left:10px}}@media (min-width:980px){.nav-collapse.collapse{height:auto!important;overflow:visible!important}} +.codecopy{position:relative;overflow:visible}.codecopy button.codecopy-btn{font-size:.9rem;box-shadow:none;min-height:0;position:absolute;z-index:1;right:0;top:0;background-color:#fe8019;padding:.2rem;border:none;border-top-right-radius:var(--borderRadius);border-bottom-left-radius:var(--borderRadius)}.codecopy button.codecopy-btn:focus,.codecopy button.codecopy-btn:hover{box-shadow:none}figure.code>div.highlight:not(:first-child)>div.codecopy>button.codecopy-btn{border-top-right-radius:0} +.highlight span.hll span{background-color:#000;display:inline-block;width:100%}div.highlight{margin-bottom:20px;border-radius:var(--borderRadius)}td.code div.highlight{border-radius:0 var(--borderRadius) var(--borderRadius) 0}pre{overflow:auto;white-space:pre;word-break:normal;word-wrap:normal;color:#ebdbb2}figure.code{margin:0;padding:0}figure.code figcaption{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:var(--borderRadius) var(--borderRadius) 0 0;background-color:#544c50;color:#ebdbb2;padding:1px 9.5px;font-family:var(--sansFontFamily);font-size:1.1rem}figure.code figcaption span.liquid-tags-code-title{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}figure.code figcaption span.liquid-tags-code-filename{font-family:var(--monoFontFamily);color:#fe8019}figure.code figcaption a{color:#b8bb26;text-transform:capitalize;position:relative;margin-left:30px}figure.code figcaption a:before{height:.9rem;width:.9rem;top:.35rem;content:url("data:image/svg+xml;charset=utf-8,%3Csvg image-rendering='optimizeQuality' shape-rendering='geometricPrecision' text-rendering='geometricPrecision' viewBox='0 0 294 452.5' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%23b8bb26'%3E%3Cpath d='M126 0h42v185h62l-83 111-83-111h62z'/%3E%3Cpath d='M294 257v105H0V257h34v71h226v-71z'/%3E%3C/g%3E%3C/svg%3E");margin:0;padding:0 4px 0 0;right:100%;position:absolute}figure.code div.highlight:not(:first-child){border-radius:0 0 var(--borderRadius) var(--borderRadius)}table{table-layout:fixed;width:100%}td{vertical-align:top}@media (max-width:979px){.linenos{display:none!important}}.linenos{width:30px}.linenos div pre{text-align:right;overflow:hidden}td.code{width:100%}.linenodiv pre{border-radius:var(--borderRadius) 0 0 var(--borderRadius);color:#ebdbb2;background-color:#282828}table.highlighttable,table.highlighttable td{border:none}table.highlighttable tbody>tr:nth-child(odd)>td{background-color:transparent} + +:root{--borderRadius:4px;--mutedTextColor:#696969}body,html{height:100%}body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}div#content{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}footer{-ms-flex-line-pack:center;align-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-top:1px solid rgba(0,0,0,.2);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-negative:0;flex-shrink:0;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin:15px 0 0;min-height:40px;padding:0 3px}footer div{margin:3px 0}footer div:first-child{margin-right:auto}footer div#fpowered{margin-left:auto;margin-right:unset}:lang(zh){font-family:Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,Helvetica,Arial,sans-serif}a{color:#3875d7}hr{border-width:3px}.top-menu li a{font-weight:700}#comment-message,#post-share-links:not(a){color:#6f6f6f;text-shadow:1px 1px 3px rgba(50,50,50,.15)}#post-share-links a{text-shadow:0 0}.comment-count{font-family:Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif;font-size:.9em}#comment_thread{padding-left:10px;padding-right:10px}.list-of-tags,ul.list-projects{list-style:none;margin:0;overflow:hidden}.list-of-tags li{float:left;line-height:28px;margin:0}.list-of-tags a{background:#eee;border-radius:4px;border-radius:var(--borderRadius);color:#222;margin:2px;padding:3px 6px;text-decoration:none}.tags-in-article li{float:none;line-height:28px}.article-content,div.recent-posts p{text-align:justify}.article-content{max-width:50em}.article-content p{margin:0 0 20px}.article-content ul:not(.related-posts-list):not(.articles-timeline){font-size:inherit;list-style-type:disc}.article-content ul.related-posts-list{list-style-type:square}.article-content ol{font-size:inherit;list-style-type:decimal}.article-content li{line-height:1.7em;list-style-position:outside;margin:1px 0 1px 20px}.article-content dl{font-size:inherit;list-style-position:outside;list-style-type:decimal;margin:20px 0 20px 20px}.article-content dd{line-height:1.7em;margin:1px 0 1px 20px;padding:3px 0}.article-content dt{font-size:inherit}h1,h2,h3,h4,h5,h6{font-weight:400;margin:10px 0}.page-header{border-bottom:2px solid maroon;color:maroon;margin:10px 0 30px}.page-header h1{border:none;line-height:1em}ul.articles-timeline{list-style:none;margin:0;padding-bottom:30px}ul.articles-timeline .next-article{float:right;margin:0}ul.articles-timeline .previous-article{float:left;margin:0}ul.multi-parts-list a{color:#000}ul.multi-parts-list a:hover{text-decoration:none}ul.multi-parts-list li.active-part{font-style:italic}.table-of-content .toc ul{margin:0;padding:0 0 0 .2rem;list-style-type:none;list-style:symbols inside none}.table-of-content .toc>ul>li>ul{padding-left:1rem}.last-updated a{color:#333}.last-updated a:hover{text-decoration:none}.article-content img{border:2px solid #eee;padding:5px}p#post-share-links{text-align:right}a.category-title-inside-accordion{text-decoration:none}ul.list-articles-under-tag-category{list-style:none outside none;margin:0 0 0 5px}a.category-link{color:#333}a.category-link:hover{text-decoration:none}a.category-title-inside-accordion:hover,a:not(.collapsed).accordion-toggle.category-title-inside-accordion{background-color:#08c;border-radius:4px;border-radius:var(--borderRadius);color:#fff}div.blog-archives h2{float:left;clear:both;position:relative;margin:0}.proj-desc{color:#696969;color:var(--mutedTextColor)}div.blog-archives div,div.recent-posts-article,ul.list-projects li{border-bottom:1px dotted #696969;border-bottom:1px dotted var(--mutedTextColor);overflow:auto;padding:.3rem .2rem}ul.list-articles-under-tag-category li{padding:.1rem .2rem}div.blog-archives div{margin-left:calc(1.725rem + 5.7vw)}@media (min-width:1200px){div.blog-archives div{margin-left:6rem}}div.blog-archives div.last-entry-of-year{margin-bottom:1em}div.blog-archives time,div.recent-posts time,ul.list-articles-under-tag-category li time{float:right;text-align:left}div.blog-archives time,div.recent-posts-posted,div.recent-posts time,ul.list-articles-under-tag-category li time{color:#696969;color:var(--mutedTextColor)}@media (max-width:767px){div.blog-archives h2{float:none}div.blog-archives div{margin-left:0}div.blog-archives article{margin-left:0;padding-left:0}div.blog-archives time,div.recent-posts time,ul.list-articles-under-tag-category li time{float:none;display:block}}#mc-embed-signup{font-family:inherit;font-size:inherit;margin:10px 0}#mc-embed-signup form{display:block;padding:0;position:relative;text-align:left}#mc-embed-signup input{-moz-appearance:none;-webkit-appearance:none;border:1px solid #999}#mc-embed-signup input:focus{border-color:#333}#mc-embed-signup input.email{display:block;font-size:.9em;margin:0 4% 10px 0;min-width:130px;padding:8px 0;text-indent:5px;width:100%}#mc-embed-signup input.button{display:block;margin:0 0 10px;min-width:130px;width:100%}#mc-embed-signup input[type=email]{height:100%}#mc-embed-signup .button{background-color:#eee;border-radius:4px;border-radius:var(--borderRadius);border:1px solid #d3d3d3;clear:both;color:#000;cursor:pointer;display:inline-block;font-size:1em;font-weight:400;height:32px;line-height:32px;margin:0 5px 10px 0;padding:0;text-align:center;text-decoration:none;vertical-align:top;white-space:nowrap;width:auto}#mc-embed-signup.button:hover{background-color:#dfdfdf}#mc-embed-signup .clear{clear:none;display:inline}#allposts{color:#696969;color:var(--mutedTextColor);float:right;font-size:75%;font-weight:400}a#allposts:hover{color:#333}.literal{background-color:#f7f7f9;border-radius:4px;border-radius:var(--borderRadius);border:1px solid #e1e1e8;color:#d14;padding:2px 4px;white-space:nowrap}div.line-block div.line-block{margin-left:1.5em}.amp{font-family:Warnock Pro,Goudy Old Style,Palatino,Book Antiqua,Serif;font-style:italic}.article-content img,div.figure{text-align:center}div.figure img{width:100%}div.figure p.caption{color:grey;font-size:.6em;margin:0}div.figure p.caption a{border:none;color:grey}.article-content img.align-right,div.figure.align-right{float:right;margin-left:1.5em}.article-content img.align-left,div.figure.align-left{float:left;margin-right:1.5em}.author-blurb{padding:5px 0}.author-blurb img{padding:0;width:32px;height:32px}.gist table{table-layout:auto}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0;border:1px solid #bfbfbf;border-collapse:separate;*border-collapse:collapse;border-left:0;border-radius:4px;border-radius:var(--borderRadius)}table td,table th{border-left:1px solid #bfbfbf;padding-left:2px;padding-right:2px}table thead:first-child tr:first-child th{border-top:0}table thead:first-child tr:first-child>th:first-child{border-top-left-radius:4px;border-top-left-radius:var(--borderRadius)}table thead:first-child tr:first-child>th:last-child{border-top-right-radius:4px;border-top-right-radius:var(--borderRadius)}table tbody:last-child tr:last-child>td:first-child{border-bottom-left-radius:4px;border-bottom-left-radius:var(--borderRadius)}table tbody:last-child tr:last-child>td:last-child{border-bottom-right-radius:4px;border-bottom-right-radius:var(--borderRadius)}table tbody>tr:nth-child(odd)>td{background-color:#ebebeb}.navbar .nav>li>a{float:none;padding:11px 15px 13px}.site-name{color:#696969;color:var(--mutedTextColor)} +div.elegant-gallery{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:center;align-content:center;margin:0;padding:0;font-size:0}div.elegant-gallery figure{margin:0;padding:0;max-width:100%;border:1px solid #d3d3d3}div.elegant-gallery figure figcaption{display:none}div.elegant-gallery figure img{max-width:100%;border:none;padding:0;margin:0} +article div.article-content ul:not(.articles-timeline):not(.related-posts-list) a,article ol a:not(.ampl),article p:not(#list-of-translations):not(#post-share-links) a:not(.ampl),blockquote a:not(.ampl){color:#000;display:inline-block;position:relative}article div.article-content ul:not(.articles-timeline):not(.related-posts-list) a:after,article ol a:not(.ampl):after,article p:not(#list-of-translations):not(#post-share-links) a:not(.ampl):after,blockquote a:not(.ampl):after{position:absolute;top:100%;left:0;width:100%;height:1px;background:silver;content:"";opacity:1;-webkit-transition:opacity .3s,-webkit-transform .3s;transition:opacity .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s;transition:opacity .3s,transform .3s,-webkit-transform .3s;-webkit-transform:translateY(0);transform:translateY(0)}article div.article-content ul:not(.articles-timeline):not(.related-posts-list) a:hover,article ol a:not(.ampl):hover,article p:not(#list-of-translations):not(#post-share-links) a:not(.ampl):hover,blockquote a:not(.ampl):hover{color:#4169e1;text-decoration:none;-webkit-transition:color .1s;transition:color .1s}article div.article-content ul:not(.articles-timeline):not(.related-posts-list) a:hover:after,article ol a:not(.ampl):hover:after,article p:not(#list-of-translations):not(#post-share-links) a:not(.ampl):hover:after,blockquote a:not(.ampl):hover:after{opacity:0;-webkit-transform:translateY(5px);transform:translateY(5px)}article div.article-content ul:not(.articles-timeline):not(.related-posts-list) a:focus,article ol a:not(.ampl):focus,article p:not(#list-of-translations):not(#post-share-links) a:not(.ampl):focus,blockquote a:not(.ampl):focus{text-decoration:none}div.recent-posts-posted a{color:inherit;padding-left:.3em}div.recent-posts-posted a:hover{border-bottom:1px dashed;text-decoration:none}div.recent-posts-posted a:focus{text-decoration:none}#lunr-search-result>div.lunr-search-result-item>h4>a,a.ampl{color:#4169e1;display:inline-block;position:relative}#lunr-search-result>div.lunr-search-result-item>h4>a:focus,a.ampl:focus{text-decoration:none}#lunr-search-result>div.lunr-search-result-item>h4>a:hover,a.ampl:hover{color:#1e90ff;text-decoration:none;-webkit-transition:color .1s;transition:color .1s}#lunr-search-result>div.lunr-search-result-item>h4>a:hover:after,a.ampl:hover:after{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}#lunr-search-result>div.lunr-search-result-item>h4>a:after,a.ampl:after{position:absolute;top:100%;left:0;width:100%;height:2px;background:#1e90ff;content:"";opacity:0;-webkit-transition:opacity .3s,-webkit-transform .3s;transition:opacity .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s;transition:opacity .3s,transform .3s,-webkit-transform .3s;-webkit-transform:translateY(5px);transform:translateY(5px)} +dt:hover>a.headerlink,h1:hover>a.headerlink,h2:hover>a.headerlink,h3:hover>a.headerlink,h4:hover>a.headerlink,h5:hover>a.headerlink,h6:hover>a.headerlink{opacity:1;text-decoration:none;visibility:visible}a.headerlink{content:url('data:image/svg+xml;utf8,');display:inline-block;margin-left:5px;opacity:0;-webkit-transition:visibility 0s,opacity .2s ease-in;transition:visibility 0s,opacity .2s ease-in;visibility:hidden;width:20px} +.highlight{background:#282828;color:#ebdbb2;background-color:#282828}.highlight .c{color:#928374;font-style:italic;background-color:#282828}.highlight .err,.highlight .esc,.highlight .g{color:#ebdbb2;background-color:#282828}.highlight .k{color:#fe8019;background-color:#282828}.highlight .l,.highlight .n{color:#ebdbb2;background-color:#282828}.highlight .o{color:#fe8019;background-color:#282828}.highlight .p,.highlight .x{color:#ebdbb2;background-color:#282828}.highlight .ch,.highlight .cm{color:#928374;font-style:italic;background-color:#282828}.highlight .cp{color:#8ec07c;background-color:#282828}.highlight .c1,.highlight .cs{color:#928374;font-style:italic;background-color:#282828}.highlight .gd{color:#282828;background-color:#fb4934}.highlight .ge{color:#83a598;text-decoration:underline;background-color:#282828}.highlight .gr{color:#ebdbb2;font-weight:700;background-color:#fb4934}.highlight .gh{color:#b8bb26;font-weight:700;background-color:#282828}.highlight .gi{color:#282828;background-color:#b8bb26}.highlight .go{color:#504945;background-color:#282828}.highlight .gp,.highlight .gs{color:#ebdbb2;background-color:#282828}.highlight .gu{color:#b8bb26;font-weight:700;background-color:#282828}.highlight .gt{color:#ebdbb2;font-weight:700;background-color:#fb4934}.highlight .kc,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr{color:#fe8019;background-color:#282828}.highlight .kt{color:#fabd2f;background-color:#282828}.highlight .ld{color:#ebdbb2;background-color:#282828}.highlight .m{color:#d3869b;background-color:#282828}.highlight .na,.highlight .s{color:#b8bb26;background-color:#282828}.highlight .na{font-weight:700}.highlight .nb{color:#fabd2f;background-color:#282828}.highlight .nc{color:#ebdbb2;background-color:#282828}.highlight .no{color:#d3869b;background-color:#282828}.highlight .nd{color:#ebdbb2;background-color:#282828}.highlight .ni{color:#fabd2f;background-color:#282828}.highlight .ne{color:#fb4934;background-color:#282828}.highlight .nf{color:#fabd2f;background-color:#282828}.highlight .nl{color:#fb4934;background-color:#282828}.highlight .nn,.highlight .nx,.highlight .py{color:#ebdbb2;background-color:#282828}.highlight .nt{color:#fb4934;background-color:#282828}.highlight .nv{color:#ebdbb2;background-color:#282828}.highlight .ow{color:#fe8019;background-color:#282828}.highlight .w{color:#ebdbb2;background-color:#282828}.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#d3869b;background-color:#282828}.highlight .s1,.highlight .s2,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .se,.highlight .sh,.highlight .si,.highlight .sr,.highlight .sx{color:#b8bb26;background-color:#282828}.highlight .ss{color:#83a598;background-color:#282828}.highlight .bp{color:#fabd2f;background-color:#282828}.highlight .vc,.highlight .vg,.highlight .vi{color:#ebdbb2;background-color:#282828}.highlight .il{color:#d3869b;background-color:#282828}.highlight .cpf{color:#b8bb26;background-color:#282828} +#lunr-search-result div.lunr-search-result-item{margin:0 0 20px}#lunr-search-result p.lunr-result-fail,#lunr-search-result p.lunr-search-result-item-body{font-family:var(--serifFontFamily);font-size:1rem;line-height:1.6;text-transform:none;margin:10px 0 0}#lunr-search-result p.lunr-result-fail{color:maroon;text-align:center;font-size:1.125rem} +div#sidebar-social-link a svg{-webkit-filter:saturate(0) brightness(.7);filter:saturate(0) brightness(.7);height:20px;width:20px;margin-right:3px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;z-index:0;position:relative}div#sidebar-social-link a{text-decoration:none}div#sidebar-social-link a svg:hover{-webkit-filter:none;filter:none;-webkit-transform:scale(2.5);transform:scale(2.5);z-index:1} +section#article-sidebar{float:right;font-size:.9em} +@font-face{font-family:"PT Serif";font-style:italic;font-weight:400;src:local("PT Serif Italic"),local(PTSerif-Italic),url(//fonts.gstatic.com/s/ptserif/v11/EJRTQgYoZZY2vCFuvAFT_rO1dg.eot#) format("eot"),url(//fonts.gstatic.com/s/ptserif/v11/EJRTQgYoZZY2vCFuvAFT_r21cg.woff2) format("woff2"),url(//fonts.gstatic.com/s/ptserif/v11/EJRTQgYoZZY2vCFuvAFT_rO1dA.woff) format("woff")}@font-face{font-family:"PT Serif";font-style:italic;font-weight:700;src:local("PT Serif Bold Italic"),local(PTSerif-BoldItalic),url(//fonts.gstatic.com/s/ptserif/v11/EJRQQgYoZZY2vCFuvAFT9gaQZyffpA.eot#) format("eot"),url(//fonts.gstatic.com/s/ptserif/v11/EJRQQgYoZZY2vCFuvAFT9gaQZynfoA.woff2) format("woff2"),url(//fonts.gstatic.com/s/ptserif/v11/EJRQQgYoZZY2vCFuvAFT9gaQZyffpg.woff) format("woff")}@font-face{font-family:"PT Serif";font-style:normal;font-weight:400;src:local("PT Serif"),local(PTSerif-Regular),url(//fonts.gstatic.com/s/ptserif/v11/EJRVQgYoZZY2vCFuvAFYzrs.eot#) format("eot"),url(//fonts.gstatic.com/s/ptserif/v11/EJRVQgYoZZY2vCFuvAFWzr8.woff2) format("woff2"),url(//fonts.gstatic.com/s/ptserif/v11/EJRVQgYoZZY2vCFuvAFYzrk.woff) format("woff")}@font-face{font-family:"PT Serif";font-style:normal;font-weight:700;src:local("PT Serif Bold"),local(PTSerif-Bold),url(//fonts.gstatic.com/s/ptserif/v11/EJRSQgYoZZY2vCFuvAnt66qcVy8.eot#) format("eot"),url(//fonts.gstatic.com/s/ptserif/v11/EJRSQgYoZZY2vCFuvAnt66qSVys.woff2) format("woff2"),url(//fonts.gstatic.com/s/ptserif/v11/EJRSQgYoZZY2vCFuvAnt66qcVy0.woff) format("woff")}@font-face{font-family:PT Mono;font-style:normal;font-weight:400;src:local("PT Mono"),local(PTMono-Regular),url(//fonts.gstatic.com/s/ptmono/v7/9oRONYoBnWILk-9AnCEzNw.eot#) format("eot"),url(//fonts.gstatic.com/s/ptmono/v7/9oRONYoBnWILk-9AnC8zMw.woff2) format("woff2"),url(//fonts.gstatic.com/s/ptmono/v7/9oRONYoBnWILk-9AnCEzNQ.woff) format("woff")}@font-face{font-family:"PT Serif Caption";font-style:italic;font-weight:400;src:local("PT Serif Caption Italic"),local(PTSerif-CaptionItalic),url(//fonts.gstatic.com/s/ptserifcaption/v11/ieVj2ZhbGCW-JoW6S34pSDpqYKU019eLAQM5.eot#) format("eot"),url(//fonts.gstatic.com/s/ptserifcaption/v11/ieVj2ZhbGCW-JoW6S34pSDpqYKU019eLDwM9.woff2) format("woff2"),url(//fonts.gstatic.com/s/ptserifcaption/v11/ieVj2ZhbGCW-JoW6S34pSDpqYKU019eLAQM7.woff) format("woff")}@font-face{font-family:"PT Serif Caption";font-style:normal;font-weight:400;src:local("PT Serif Caption"),local(PTSerif-Caption),url(//fonts.gstatic.com/s/ptserifcaption/v11/ieVl2ZhbGCW-JoW6S34pSDpqYKU019y7CQ.eot#) format("eot"),url(//fonts.gstatic.com/s/ptserifcaption/v11/ieVl2ZhbGCW-JoW6S34pSDpqYKU019K7DQ.woff2) format("woff2"),url(//fonts.gstatic.com/s/ptserifcaption/v11/ieVl2ZhbGCW-JoW6S34pSDpqYKU019y7Cw.woff) format("woff")}@font-face{font-family:PT Sans;font-style:italic;font-weight:400;src:local("PT Sans Italic"),local(PTSans-Italic),url(//fonts.gstatic.com/s/ptsans/v11/jizYRExUiTo99u79D0e0ycmM.eot#) format("eot"),url(//fonts.gstatic.com/s/ptsans/v11/jizYRExUiTo99u79D0e0x8mI.woff2) format("woff2"),url(//fonts.gstatic.com/s/ptsans/v11/jizYRExUiTo99u79D0e0ycmO.woff) format("woff")}@font-face{font-family:PT Sans;font-style:italic;font-weight:700;src:local("PT Sans Bold Italic"),local(PTSans-BoldItalic),url(//fonts.gstatic.com/s/ptsans/v11/jizdRExUiTo99u79D0e8fOydIRUZ.eot#) format("eot"),url(//fonts.gstatic.com/s/ptsans/v11/jizdRExUiTo99u79D0e8fOydLxUd.woff2) format("woff2"),url(//fonts.gstatic.com/s/ptsans/v11/jizdRExUiTo99u79D0e8fOydIRUb.woff) format("woff")}@font-face{font-family:PT Sans;font-style:normal;font-weight:400;src:local("PT Sans"),local(PTSans-Regular),url(//fonts.gstatic.com/s/ptsans/v11/jizaRExUiTo99u79D0yEwQ.eot#) format("eot"),url(//fonts.gstatic.com/s/ptsans/v11/jizaRExUiTo99u79D0KExQ.woff2) format("woff2"),url(//fonts.gstatic.com/s/ptsans/v11/jizaRExUiTo99u79D0yEww.woff) format("woff")}@font-face{font-family:PT Sans;font-style:normal;font-weight:700;src:local("PT Sans Bold"),local(PTSans-Bold),url(//fonts.gstatic.com/s/ptsans/v11/jizfRExUiTo99u79B_mh0OCtKQ.eot#) format("eot"),url(//fonts.gstatic.com/s/ptsans/v11/jizfRExUiTo99u79B_mh0O6tLQ.woff2) format("woff2"),url(//fonts.gstatic.com/s/ptsans/v11/jizfRExUiTo99u79B_mh0OCtKw.woff) format("woff")}:root{--headingBorderBottomWidth:1px;--headingBorderBottomStyle:solid;--headingOthersLineHeight:1.3rem;--headingOthersH4FontSize:1.1rem;--sansFontFamily:"PT Sans","Helvetica Neue",Helvetica,Arial,sans-serif;--monoFontFamily:"PT Mono",Monaco,Menlo,Consolas,"Courier New",monospace;--serifFontFamily:"PT Serif",Georgia,"Times New Roman",Times,serif;--serifHeadingFontFamily:"PT Serif Caption",Baskerville,Garamond,Georgia,"DejaVu Serif","Times New Roman",Times,serif}body{margin:0;font-family:PT Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-family:var(--sansFontFamily)}.page-header,h1,h2,h3,h4,h5,h6{font-weight:400;text-align:left}.page-header small,h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-style:italic}header.page-header h1{font-family:"PT Serif Caption",Baskerville,Garamond,Georgia,"DejaVu Serif",Times New Roman,Times,serif;font-family:var(--serifHeadingFontFamily)}.list-of-tags,.tag-title,a.category-title-inside-accordion,h1,h2,h3,h4,h5,h6,ul.list-articles-under-tag-category li time{font-family:PT Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-family:var(--sansFontFamily)}h1{font-size:calc(1.365rem + 1.38vw)}@media (min-width:1200px){h1{font-size:2.4rem}}h2{font-size:calc(1.345rem + 1.14vw)}@media (min-width:1200px){h2{font-size:2.2rem}}h3{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){h3{font-size:2rem}}h4{font-size:calc(1.305rem + .66vw)}@media (min-width:1200px){h4{font-size:1.8rem}}h5{font-size:calc(1.285rem + .42vw)}@media (min-width:1200px){h5{font-size:1.6rem}}h6{font-size:calc(1.265rem + .18vw)}@media (min-width:1200px){h6{font-size:1.4rem}}h1,h2,h3{line-height:1.3em;border-bottom:1px solid #d3d3d3;border-bottom:var(--headingBorderBottomWidth) var(--headingBorderBottomStyle) #d3d3d3}h1 code,h2 code,h3 code{font-size:80%}h1 small,h2 small,h3 small{font-size:70%}h4,h5,h6{line-height:1.1em}h4 code,h4 small,h5 code,h5 small,h6 code,h6 small{font-size:80%}h1 a,h1 a:hover,h1 small,h2 a,h2 a:hover,h2 small,h3 a,h3 a:hover,h3 small,h4 a,h4 a:hover,h4 small,h5 a,h5 a:hover,h5 small,h6 a,h6 a:hover,h6 small{color:inherit;text-decoration:none}small.subtitle{font-style:italic}div.blog-archives h2,h1#my-projects,h1#recent-posts{border:none}h1#recent-posts,nav h4,section#article-sidebar h4{line-height:1.3rem;line-height:var(--headingOthersLineHeight)}nav h4,section#article-sidebar h4{font-size:1.1rem;font-size:var(--headingOthersH4FontSize)}.literal,.site-name,code,pre{font-family:PT Mono,Monaco,Menlo,Consolas,Courier New,monospace;font-family:var(--monoFontFamily)}.literal,code,pre{font-size:.9rem}.brand .site-name{font-size:calc(1.275rem + .3vw);vertical-align:middle}@media (min-width:1200px){.brand .site-name{font-size:1.5rem}}.article-content,div.recent-posts p{font-size:1.125rem;font-family:"PT Serif",Georgia,Times New Roman,Times,serif;font-family:var(--serifFontFamily);font-weight:400;line-height:1.6;text-transform:none}blockquote p{font-family:PT Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-family:var(--sansFontFamily);font-weight:400}a.category-title-inside-accordion{font-size:1.1rem}.author-name{font-weight:700;font-feature-settings:"c2sc";font-variant:small-caps}.author-blurb{font-style:italic}div.blog-archives div,div.recent-posts-article,ul.list-articles-under-tag-category li,ul.list-projects li{font-family:PT Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-family:var(--sansFontFamily);font-size:.963rem}.proj-desc,.table-of-content .toc,div.blog-archives time,div.recent-posts-posted,div.recent-posts time,footer,ul.list-articles-under-tag-category li time{font-family:PT Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-family:var(--sansFontFamily);font-size:.8rem}span.superscript{font-size:.67rem;vertical-align:super}.navbar .nav>li>a{font-size:1rem} \ No newline at end of file diff --git a/theme/static/css/gallery.css b/theme/static/css/gallery.css new file mode 100644 index 0000000..c45e28a --- /dev/null +++ b/theme/static/css/gallery.css @@ -0,0 +1,29 @@ +div.elegant-gallery { + display: flex; + flex-wrap: nowrap; + flex-direction: row; + justify-content: center; + align-items: center; + align-content: center; + margin: 0; + padding: 0; + font-size: 0; + + & figure { + margin: 0; + padding: 0; + max-width: 100%; + border: 1px solid lightgray; + + & figcaption { + display: none; + } + + & img { + max-width: 100%; + border: none; + padding: 0; + margin: 0; + } + } +} diff --git a/theme/static/css/links.css b/theme/static/css/links.css new file mode 100644 index 0000000..b4225b6 --- /dev/null +++ b/theme/static/css/links.css @@ -0,0 +1,76 @@ +article p:not(#list-of-translations):not(#post-share-links) a:not(.ampl), +article ol a:not(.ampl), +blockquote a:not(.ampl), +article + div.article-content + ul:not(.articles-timeline):not(.related-posts-list) + a { + color: black; + display: inline-block; + position: relative; + &:after { + position: absolute; + top: 100%; + left: 0; + width: 100%; + height: 1px; + background: silver; + content: ""; + opacity: 1; + transition: opacity 0.3s, transform 0.3s; + transform: translateY(0px); + } + &:hover { + color: royalblue; + text-decoration: none; + transition: color 0.1s; + &:after { + opacity: 0; + transform: translateY(5px); + } + } + &:focus { + text-decoration: none; + } +} +div.recent-posts-posted a { + color: inherit; + padding-left: 0.3em; + &:hover { + border-bottom: 1px dashed; + text-decoration: none; + } + &:focus { + text-decoration: none; + } +} +#lunr-search-result > div.lunr-search-result-item > h4 > a, +a.ampl { + color: royalblue; + display: inline-block; + position: relative; + &:focus { + text-decoration: none; + } + &:hover { + color: dodgerblue; + text-decoration: none; + transition: color 0.1s; + &:after { + opacity: 1; + transform: translateY(0px); + } + } + &:after { + position: absolute; + top: 100%; + left: 0; + width: 100%; + height: 2px; + background: dodgerblue; + content: ""; + opacity: 0; + transition: opacity 0.3s, transform 0.3s; + transform: translateY(5px); + } +} diff --git a/theme/static/css/permalink.css b/theme/static/css/permalink.css new file mode 100644 index 0000000..cc644bc --- /dev/null +++ b/theme/static/css/permalink.css @@ -0,0 +1,20 @@ +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink { + opacity: 1; + text-decoration: none; + visibility: visible; +} +a.headerlink { + content: url('data:image/svg+xml;utf8,'); + display: inline-block; + margin-left: 5px; + opacity: 0; + transition: visibility 0s, opacity 0.2s ease-in; + visibility: hidden; + width: 20px; +} diff --git a/theme/static/css/preloader.gif b/theme/static/css/preloader.gif new file mode 100644 index 0000000000000000000000000000000000000000..b8faa697c58d574f24ad1295e75f0d5acd807f5e GIT binary patch literal 866 zcmZ?wbhEHb6k!ly_{_o3-rjC+Zyz2WuCA_r{`~pv+qci3KR-V||NsC04A_9;e{Mh5 zkYH!W09PYD17=2`8pWS1tn3UN3_2k7AY&a^f(1@`u68|kN2-anp`@o>g(G~Sn2@7~ zvrSHk@6L6-E23jkXGSe|W^B}1J~?m6<|idKEbm%BM24;D%DJ|N(R9l~ccCqU+Q+*; zC5ucI@C@nw^6r%q!X8EjMg}1uWMJ_VIH~Eq&?0*FO2eyaf-K)^A9_r?%$cNpd!OXZ zyRr-qE*mIV$)11C{jT81{0Z$J3}?0<))hG5vRG1UYSC0B7N*W^r@l5FO#1Xzrq1ia zTn=1T^n$F=WVos(%8F{m-NFaLj%Zde9n3X=TfxLgq!o+{fL6S;ys9S2hHAxJg$Kcb zXjU{H=yiZw!NyFa73aYLC2&=Zkpb0;Sb+zV6Va?_KDagjZUqMmkyf;Ve38j;h?fCw1rHl`E7%!y z;3 li > a { + font-size: rfs(1rem); +} diff --git a/theme/static/js/copy-to-clipboard.js b/theme/static/js/copy-to-clipboard.js new file mode 100644 index 0000000..d2bdc9d --- /dev/null +++ b/theme/static/js/copy-to-clipboard.js @@ -0,0 +1,52 @@ +const copyToClipboardDefaultText = { + innerText: "Copy", + ariaLabel: "Copy to clipboard" +}; +const copyToClipboardSuccessText = { + innerText: "Copied!", + ariaLabel: "Copied to clipboard" +}; + +// Get all pre. But ignore line numbers section +document.querySelectorAll("div.highlight pre").forEach(snippet => { + // create div.codecopy + const wrapper = document.createElement("div"); + wrapper.classList.add("codecopy"); + + // Wrap code inside div.codecopy + const parent = snippet.parentNode; + parent.replaceChild(wrapper, snippet); + wrapper.appendChild(snippet); + + // Create button + const button = ` + `; + + // Add button to div.codecopy + wrapper.insertAdjacentHTML("afterbegin", button); +}); + +// Add copy to clipboard functionality +const clipboard = new ClipboardJS(".codecopy-btn", { + target: trigger => { + return trigger.parentNode; + } +}); + +// Show message on success +clipboard.on("success", e => { + e.trigger.innerText = copyToClipboardSuccessText.innerText; + e.trigger.setAttribute("aria-label", copyToClipboardSuccessText.ariaLabel); + e.clearSelection(); + + // Reset button text + setTimeout(() => { + e.trigger.innerText = copyToClipboardDefaultText.innerText; + e.trigger.setAttribute("aria-label", copyToClipboardDefaultText.ariaLabel); + }, 400); +}); diff --git a/theme/static/js/elegant.prod.9e9d5ce754.js b/theme/static/js/elegant.prod.9e9d5ce754.js new file mode 100644 index 0000000..cd25019 --- /dev/null +++ b/theme/static/js/elegant.prod.9e9d5ce754.js @@ -0,0 +1,78 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t():"function"==typeof define&&define.amd?define(t):t()}(0,(function(){"use strict";var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},n=function(){function e(e,t){for(var n=0;n>0),g="addEventListener",v="attached",x="Callback",b="detached",w="extends",T="attributeChanged"+x,E="connected"+x,C="disconnected"+x,L="created"+x,S="ADDITION",k="REMOVAL",I="DOMAttrModified",M="DOMContentLoaded",O="<",_="=",A=/^[A-Z][A-Z0-9]*(?:-[A-Z0-9]+)+$/,P=["ANNOTATION-XML","COLOR-PROFILE","FONT-FACE","FONT-FACE-SRC","FONT-FACE-URI","FONT-FACE-FORMAT","FONT-FACE-NAME","MISSING-GLYPH"],D=[],F=[],R="",N=r.documentElement,Q=D.indexOf||function(e){for(var t=this.length;t--&&this[t]!==e;);return t},H=i.prototype,j=H.hasOwnProperty,z=H.isPrototypeOf,B=i.defineProperty,Z=[],V=i.getOwnPropertyDescriptor,U=i.getOwnPropertyNames,q=i.getPrototypeOf,W=i.setPrototypeOf,K=!!i.__proto__,$="__dreCEv1",G=t.customElements,Y=!/^force/.test(n.type)&&!!(G&&G.define&&G.get&&G.whenDefined),X=i.create||i,J=t.Map||function(){var e,t=[],n=[];return{get:function(e){return n[Q.call(t,e)]},set:function(r,i){(e=Q.call(t,r))<0?n[t.push(r)-1]=i:n[e]=i}}},ee=t.Promise||function(e){var t=[],n=!1,r={catch:function(){return r},then:function(e){return t.push(e),n&&setTimeout(i,1),r}};function i(e){for(n=!0;t.length;)t.shift()(e)}return e(i),r},te=!1,ne=X(null),re=X(null),ie=new J,oe=function(e){return e.toLowerCase()},ae=i.create||function e(t){return t?(e.prototype=t,new e):this},se=W||(K?function(e,t){return e.__proto__=t,e}:U&&V?function(){function e(e,t){for(var n,r=U(t),i=0,o=r.length;i1)&&Ke(this)}}}),de(a,T,{value:function(e){-1
",new le((function(e,t){if(e[0]&&"childList"==e[0].type&&!e[0].removedNodes[0].childNodes.length){var n=(h=V(ue,"innerHTML"))&&h.set;n&&B(ue,"innerHTML",{set:function(e){for(;this.lastChild;)this.removeChild(this.lastChild);n.call(this,e)}})}t.disconnect(),h=null})).observe(h,{childList:!0,subtree:!0}),h.innerHTML=""),Se||(W||K?(p=function(e,t){z.call(t,e)||ze(e,t)},f=ze):f=p=function(e,t){e[y]||(e[y]=i(!0),ze(e,t))},ce?(Me=!1,function(){var e=V(ue,g),t=e.value,n=function(e){var t=new CustomEvent(I,{bubbles:!0});t.attrName=e,t.prevValue=ge.call(this,e),t.newValue=null,t[k]=t.attrChange=2,xe.call(this,e),ye.call(this,t)},r=function(e,t){var n=ve.call(this,e),r=n&&ge.call(this,e),i=new CustomEvent(I,{bubbles:!0});be.call(this,e,t),i.attrName=e,i.prevValue=n?r:null,i.newValue=t,n?i.MODIFICATION=i.attrChange=1:i[S]=i.attrChange=0,ye.call(this,i)},i=function(e){var t,n=e.currentTarget,r=n[y],i=e.propertyName;r.hasOwnProperty(i)&&(r=r[i],(t=new CustomEvent(I,{bubbles:!0})).attrName=r.name,t.prevValue=r.value||null,t.newValue=r.value=n[i]||null,null==t.prevValue?t[S]=t.attrChange=0:t.MODIFICATION=t.attrChange=1,ye.call(n,t))};e.value=function(e,o,a){e===I&&this[T]&&this.setAttribute!==r&&(this[y]={className:{name:"class",value:this.className}},this.setAttribute=r,this.removeAttribute=n,t.call(this,"propertychange",i)),t.call(this,e,o,a)},B(ue,g,e)}()):le||(N[g](I,Ce),N.setAttribute(y,1),N.removeAttribute(y),Me&&(s=function(e){var t,n,r;if(this===e.target){for(r in t=this[y],this[y]=n=u(this),n){if(!(r in t))return l(0,this,r,t[r],n[r],S);if(n[r]!==t[r])return l(1,this,r,t[r],n[r],"MODIFICATION")}for(r in t)if(!(r in n))return l(2,this,r,t[r],n[r],k)}},l=function(e,t,n,r,i,o){var a={attrChange:e,currentTarget:t,attrName:n,prevValue:r,newValue:i};a[o]=e,Ne(a)},u=function(e){for(var t,n,r={},i=e.attributes,o=0,a=i.length;o\n
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n '+(5,new Array(5).fill(void 0)).map((function(e){return''})).join("")+"\n \n \n \n ",this._styleRootElement=this.querySelector(".style-root"),this._countElement=this.querySelector(".count"),this._updateRootColor(),this._totalClaps=0;var t,n,r,i,a=void 0;this._initialClapCount=new Promise((function(e){return a=e})),this._bufferedClaps=0,this._updateClaps=(t=function(){if(e._totalClaps<10){var t=Math.min(e._bufferedClaps,10-e._totalClaps);n=e.api,r=t,i=e.url,fetch(n+"/update-claps"+(i?"?url="+i:""),{method:"POST",headers:{"Content-Type":"text/plain"},body:JSON.stringify(r+",3.3.0")}).then((function(e){return e.text()})),e._totalClaps+=t,e._bufferedClaps=0}var n,r,i},2e3,n=null,function(){var e=this,r=arguments;clearTimeout(n),n=setTimeout((function(){return t.apply(e,r)}),2e3)}),this.addEventListener("mousedown",(function(t){if(0===t.button&&(e.classList.add("clapped"),!e.classList.contains("clap-limit-exceeded"))){var n,r,i=Number(e._countElement.innerHTML.replace(",",""))+1;e.dispatchEvent(new CustomEvent("clapped",{bubbles:!0,detail:{clapCount:i}})),r="clap",(n=e).classList.remove(r),setTimeout((function(){n.classList.add(r)}),100),setTimeout((function(){n.classList.remove(r)}),1e3),e._bufferedClaps++,e._updateClaps(),setTimeout((function(){e._countElement.innerHTML=o(i)}),250),e.multiclap?e._bufferedClaps+e._totalClaps>=10&&e.classList.add("clap-limit-exceeded"):e.classList.add("clap-limit-exceeded")}})),(r=this.api,i=this.url,fetch(r+"/get-claps"+(i?"?url="+i:""),{headers:{"Content-Type":"text/plain"}}).then((function(e){return e.text()}))).then((function(t){e.classList.remove("loading");var n=Number(t);a(n),n>0&&(e._countElement.innerHTML=o(n))})),this._connected=!0}}},{key:"attributeChangedCallback",value:function(e,t,n){this._updateRootColor()}},{key:"_updateRootColor",value:function(){if(this._styleRootElement){var e=this.getAttribute("color")||"green",t=this._styleRootElement.style;t.fill=e,t.stroke=e,t.color=e}}},{key:"initialClapCount",get:function(){return this._initialClapCount}},{key:"color",get:function(){return this.getAttribute("color")},set:function(e){e?this.setAttribute("color",e):this.removeAttribute("color"),this._updateRootColor()}},{key:"api",set:function(e){e?this.setAttribute("api",e):this.removeAttribute("api")},get:function(){return this.getAttribute("api")||"https://api.applause-button.com"}},{key:"url",set:function(e){e?this.setAttribute("url",e):this.removeAttribute("url"),this._updateRootColor()},get:function(){return this.getAttribute("url")}},{key:"multiclap",get:function(){return"true"===this.getAttribute("multiclap")},set:function(e){e?this.setAttribute("multiclap",e?"true":"false"):this.removeAttribute("multiclap")}}],[{key:"observedAttributes",get:function(){return["color"]}}]),s}();customElements.define("applause-button",s)})), +/*! PhotoSwipe - v4.1.3 - 2019-01-08 + * http://photoswipe.com + * Copyright (c) 2019 Dmitry Semenov; */ +function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.PhotoSwipe=t()}(this,(function(){"use strict";return function(e,t,n,r){var i={features:null,bind:function(e,t,n,r){var i=(r?"remove":"add")+"EventListener";t=t.split(" ");for(var o=0;o0&&(o=parseInt(o[1],10))>=1&&o<8&&(n.isOldIOSPhone=!0)}var a=r.match(/Android\s([0-9\.]*)/),s=a?a[1]:0;(s=parseFloat(s))>=1&&(s<4.4&&(n.isOldAndroid=!0),n.androidVersion=s),n.isMobileOpera=/opera mini|opera mobi/i.test(r)}for(var l,u,c=["transform","perspective","animationName"],d=["","webkit","Moz","ms","O"],p=0;p<4;p++){t=d[p];for(var f=0;f<3;f++)l=c[f],u=t+(t?l.charAt(0).toUpperCase()+l.slice(1):l),!n[l]&&u in e&&(n[l]=u);t&&!n.raf&&(t=t.toLowerCase(),n.raf=window[t+"RequestAnimationFrame"],n.raf&&(n.caf=window[t+"CancelAnimationFrame"]||window[t+"CancelRequestAnimationFrame"]))}if(!n.raf){var h=0;n.raf=function(e){var t=(new Date).getTime(),n=Math.max(0,16-(t-h)),r=window.setTimeout((function(){e(t+n)}),n);return h=t+n,r},n.caf=function(e){clearTimeout(e)}}return n.svg=!!document.createElementNS&&!!document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect,i.features=n,n}};i.detectFeatures(),i.features.oldIE&&(i.bind=function(e,t,n,r){t=t.split(" ");for(var i,o=(r?"detach":"attach")+"Event",a=function(){n.handleEvent.call(n)},s=0;st-1?e-t:e<0?t+e:e},Ee={},Ce=function(e,t){return Ee[e]||(Ee[e]=[]),Ee[e].push(t)},Le=function(e){var t=Ee[e];if(t){var n=Array.prototype.slice.call(arguments);n.shift();for(var r=0;ro.currItem.fitRatio?be||(Gt(o.currItem,!1,!0),be=!0):be&&(Gt(o.currItem),be=!1)),Ie(te,de.x,de.y,y))},Oe=function(e){e.container&&Ie(e.container.style,e.initialPosition.x,e.initialPosition.y,e.initialZoomLevel,e)},_e=function(e,t){t[I]=v+e+"px, 0px"+x},Ae=function(e,t){if(!a.loop&&t){var n=c+(me.x*fe-e)/me.x,r=Math.round(e-ct.x);(n<0&&r>0||n>=zt()-1&&r<0)&&(e=ct.x+r*a.mainScrollEndFriction)}ct.x=e,_e(e,d)},Pe=function(e,t){var n=dt[e]-he[e];return ce[e]+ue[e]+n-n*(t/g)},De=function(e,t){e.x=t.x,e.y=t.y,t.id&&(e.id=t.id)},Fe=function(e){e.x=Math.round(e.x),e.y=Math.round(e.y)},Re=null,Ne=function(){Re&&(i.unbind(document,"mousemove",Ne),i.addClass(e,"pswp--has_mouse"),a.mouseUsed=!0,Le("mouseUsed")),Re=setTimeout((function(){Re=null}),100)},Qe=function(e,t){var n=qt(o.currItem,pe,e);return t&&(ee=n),n},He=function(e){return e||(e=o.currItem),e.initialZoomLevel},je=function(e){return e||(e=o.currItem),e.w>0?a.maxSpreadZoom:1},ze=function(e,t,n,r){return r===o.currItem.initialZoomLevel?(n[e]=o.currItem.initialPosition[e],!0):(n[e]=Pe(e,r),n[e]>t.min[e]?(n[e]=t.min[e],!0):n[e]=r)return We(e),o(n),void(a&&a());o((n-t)*i(s/r)+t),Ue[e].raf=_(u)}};u()},Ye={shout:Le,listen:Ce,viewportSize:pe,options:a,isMainScrollAnimating:function(){return ne},getZoomLevel:function(){return y},getCurrentIndex:function(){return c},isDragging:function(){return U},isZooming:function(){return X},setScrollOffset:function(e,t){he.x=e,R=he.y=t,Le("updateScrollOffset",he)},applyZoomPan:function(e,t,n,r){de.x=t,de.y=n,y=e,Me(r)},init:function(){if(!s&&!l){var n;o.framework=i,o.template=e,o.bg=i.getChildByClass(e,"pswp__bg"),P=e.className,s=!0,N=i.detectFeatures(),_=N.raf,A=N.caf,I=N.transform,F=N.oldIE,o.scrollWrap=i.getChildByClass(e,"pswp__scroll-wrap"),o.container=i.getChildByClass(o.scrollWrap,"pswp__container"),d=o.container.style,o.itemHolders=T=[{el:o.container.children[0],wrap:0,index:-1},{el:o.container.children[1],wrap:0,index:-1},{el:o.container.children[2],wrap:0,index:-1}],T[0].el.style.display=T[2].el.style.display="none",function(){if(I){var t=N.perspective&&!O;return v="translate"+(t?"3d(":"("),void(x=N.perspective?", 0px)":")")}I="left",i.addClass(e,"pswp--ie"),_e=function(e,t){t.left=e+"px"},Oe=function(e){var t=e.fitRatio>1?1:e.fitRatio,n=e.container.style,r=t*e.w,i=t*e.h;n.width=r+"px",n.height=i+"px",n.left=e.initialPosition.x+"px",n.top=e.initialPosition.y+"px"},Me=function(){if(te){var e=te,t=o.currItem,n=t.fitRatio>1?1:t.fitRatio,r=n*t.w,i=n*t.h;e.width=r+"px",e.height=i+"px",e.left=de.x+"px",e.top=de.y+"px"}}}(),m={resize:o.updateSize,orientationchange:function(){clearTimeout(Q),Q=setTimeout((function(){pe.x!==o.scrollWrap.clientWidth&&o.updateSize()}),500)},scroll:Ve,keydown:Be,click:Ze};var r=N.isOldIOSPhone||N.isOldAndroid||N.isMobileOpera;for(N.animationName&&N.transform&&!r||(a.showAnimationDuration=a.hideAnimationDuration=0),n=0;n=zt())&&(c=0),o.currItem=jt(c),(N.isOldIOSPhone||N.isOldAndroid)&&(ge=!1),e.setAttribute("aria-hidden","false"),a.modal&&(ge?e.style.position="fixed":(e.style.position="absolute",e.style.top=i.getScrollY()+"px")),void 0===R&&(Le("initialLayout"),R=D=i.getScrollY());var u="pswp--open ";for(a.mainClass&&(u+=a.mainClass+" "),a.showHideOpacity&&(u+="pswp--animate_opacity "),u+=O?"pswp--touch":"pswp--notouch",u+=N.animationName?" pswp--css_animation":"",u+=N.svg?" pswp--svg":"",i.addClass(e,u),o.updateSize(),p=-1,ye=null,n=0;n<3;n++)_e((n+p)*me.x,T[n].el.style);F||i.bind(o.scrollWrap,h,o),Ce("initialZoomInEnd",(function(){o.setContent(T[0],c-1),o.setContent(T[2],c+1),T[0].el.style.display=T[2].el.style.display="block",a.focus&&e.focus(),i.bind(document,"keydown",o),N.transform&&i.bind(o.scrollWrap,"click",o),a.mouseUsed||i.bind(document,"mousemove",Ne),i.bind(window,"resize scroll orientationchange",o),Le("bindEvents")})),o.setContent(T[1],c),o.updateCurrItem(),Le("afterInit"),ge||(b=setInterval((function(){qe||U||X||y!==o.currItem.initialZoomLevel||o.updateSize()}),1e3)),i.addClass(e,"pswp--visible")}},close:function(){s&&(s=!1,l=!0,Le("close"),i.unbind(window,"resize scroll orientationchange",o),i.unbind(window,"scroll",m.scroll),i.unbind(document,"keydown",o),i.unbind(document,"mousemove",Ne),N.transform&&i.unbind(o.scrollWrap,"click",o),U&&i.unbind(window,f,o),clearTimeout(Q),Le("unbindEvents"),Bt(o.currItem,null,!0,o.destroy))},destroy:function(){Le("destroy"),Rt&&clearTimeout(Rt),e.setAttribute("aria-hidden","true"),e.className=P,b&&clearInterval(b),i.unbind(o.scrollWrap,h,o),i.unbind(window,"scroll",o),ht(),$e(),Ee=null},panTo:function(e,t,n){n||(e>ee.min.x?e=ee.min.x:eee.min.y?t=ee.min.y:t=3&&(p+=ye+(ye>0?-3:3),n=3);for(var r=0;r0?(t=T.shift(),T[2]=t,p++,_e((p+2)*me.x,t.el.style),o.setContent(t,c-n+r+1+1)):(t=T.pop(),T.unshift(t),p--,_e(p*me.x,t.el.style),o.setContent(t,c+n-r-1-1));if(te&&1===Math.abs(ye)){var i=jt(E);i.initialZoomLevel!==y&&(qt(i,pe),Gt(i),Oe(i))}ye=0,o.updateCurrZoomItem(),E=c,Le("afterChange")}}},updateSize:function(t){if(!ge&&a.modal){var n=i.getScrollY();if(R!==n&&(e.style.top=n+"px",R=n),!t&&xe.x===window.innerWidth&&xe.y===window.innerHeight)return;xe.x=window.innerWidth,xe.y=window.innerHeight,e.style.height=xe.y+"px"}if(pe.x=o.scrollWrap.clientWidth,pe.y=o.scrollWrap.clientHeight,Ve(),me.x=pe.x+Math.round(pe.x*a.spacing),me.y=pe.y,Ae(me.x*fe),Le("beforeResize"),void 0!==p){for(var r,s,l,u=0;u<3;u++)r=T[u],_e((u+p)*me.x,r.el.style),l=c+u-1,a.loop&&zt()>2&&(l=Te(l)),(s=jt(l))&&(w||s.needsUpdate||!s.bounds)?(o.cleanSlide(s),o.setContent(r,l),1===u&&(o.currItem=s,o.updateCurrZoomItem(!0)),s.needsUpdate=!1):-1===r.index&&l>=0&&o.setContent(r,l),s&&s.container&&(qt(s,pe),Gt(s),Oe(s));w=!1}g=y=o.currItem.initialZoomLevel,(ee=o.currItem.bounds)&&(de.x=ee.center.x,de.y=ee.center.y,Me(!0)),Le("resize")},zoomTo:function(e,t,n,r,o){t&&(g=y,dt.x=Math.abs(t.x)-de.x,dt.y=Math.abs(t.y)-de.y,De(ce,de));var a=Qe(e,!1),s={};ze("x",a,s,e),ze("y",a,s,e);var l=y,u=de.x,c=de.y;Fe(s);var d=function(t){1===t?(y=e,de.x=s.x,de.y=s.y):(y=(e-l)*t+l,de.x=(s.x-u)*t+u,de.y=(s.y-c)*t+c),o&&o(t),Me(1===t)};n?Ge("customZoomTo",0,1,n,r||i.easing.sine.inOut,d):d(1)}},Xe={},Je={},et={},tt={},nt={},rt=[],it={},ot=[],at={},st=0,lt={x:0,y:0},ut=0,ct={x:0,y:0},dt={x:0,y:0},pt={x:0,y:0},ft=function(e,t){return at.x=Math.abs(e.x-t.x),at.y=Math.abs(e.y-t.y),Math.sqrt(at.x*at.x+at.y*at.y)},ht=function(){$&&(A($),$=null)},mt=function(){U&&($=_(mt),Mt())},yt=function(e,t){return!(!e||e===document)&&(!(e.getAttribute("class")&&e.getAttribute("class").indexOf("pswp__scroll-wrap")>-1)&&(t(e)?e:yt(e.parentNode,t)))},gt={},vt=function(e,t){return gt.prevent=!yt(e.target,a.isClickableElement),Le("preventDragEvent",e,t,gt),gt.prevent},xt=function(e,t){return t.x=e.pageX,t.y=e.pageY,t.id=e.identifier,t},bt=function(e,t,n){n.x=.5*(e.x+t.x),n.y=.5*(e.y+t.y)},wt=function(){var e=de.y-o.currItem.initialPosition.y;return 1-Math.abs(e/(pe.y/2))},Tt={},Et={},Ct=[],Lt=function(e){for(;Ct.length>0;)Ct.pop();return M?(le=0,rt.forEach((function(e){0===le?Ct[0]=e:1===le&&(Ct[1]=e),le++}))):e.type.indexOf("touch")>-1?e.touches&&e.touches.length>0&&(Ct[0]=xt(e.touches[0],Tt),e.touches.length>1&&(Ct[1]=xt(e.touches[1],Et))):(Tt.x=e.pageX,Tt.y=e.pageY,Tt.id="",Ct[0]=Tt),Ct},St=function(e,t){var n,r,i,s,l=de[e]+t[e],u=t[e]>0,c=ct.x+t.x,d=ct.x-it.x;if(n=l>ee.min[e]||lee.min[e]&&(n=a.panEndFriction,ee.min[e]-l,r=ee.min[e]-ce[e]),(r<=0||d<0)&&zt()>1?(s=c,d<0&&c>it.x&&(s=it.x)):ee.min.x!==ee.max.x&&(i=l)):(l0)&&zt()>1?(s=c,d>0&&co.currItem.fitRatio&&(de[e]+=t[e]*n)},kt=function(e){if(!("mousedown"===e.type&&e.button>0))if(Ht)e.preventDefault();else if(!V||"mousedown"!==e.type){if(vt(e,!0)&&e.preventDefault(),Le("pointerDown"),M){var t=i.arraySearch(rt,e.pointerId,"id");t<0&&(t=rt.length),rt[t]={x:e.pageX,y:e.pageY,id:e.pointerId}}var n=Lt(e),r=n.length;Y=null,$e(),U&&1!==r||(U=ie=!0,i.bind(window,f,o),B=se=oe=Z=G=K=q=W=!1,re=null,Le("firstTouchStart",n),De(ce,de),ue.x=ue.y=0,De(tt,n[0]),De(nt,tt),it.x=me.x*fe,ot=[{x:tt.x,y:tt.y}],j=H=Se(),Qe(y,!0),ht(),mt()),!X&&r>1&&!ne&&!G&&(g=y,W=!1,X=q=!0,ue.y=ue.x=0,De(ce,de),De(Xe,n[0]),De(Je,n[1]),bt(Xe,Je,pt),dt.x=Math.abs(pt.x)-de.x,dt.y=Math.abs(pt.y)-de.y,J=ft(Xe,Je))}},It=function(e){if(e.preventDefault(),M){var t=i.arraySearch(rt,e.pointerId,"id");if(t>-1){var n=rt[t];n.x=e.pageX,n.y=e.pageY}}if(U){var r=Lt(e);if(re||K||X)Y=r;else if(ct.x!==me.x*fe)re="h";else{var o=Math.abs(r[0].x-tt.x)-Math.abs(r[0].y-tt.y);Math.abs(o)>=10&&(re=o>0?"h":"v",Y=r)}}},Mt=function(){if(Y){var e=Y.length;if(0!==e)if(De(Xe,Y[0]),et.x=Xe.x-tt.x,et.y=Xe.y-tt.y,X&&e>1){if(tt.x=Xe.x,tt.y=Xe.y,!et.x&&!et.y&&function(e,t){return e.x===t.x&&e.y===t.y}(Y[1],Je))return;De(Je,Y[1]),W||(W=!0,Le("zoomGestureStarted"));var t=ft(Xe,Je),n=Dt(t);n>o.currItem.initialZoomLevel+o.currItem.initialZoomLevel/15&&(se=!0);var r=1,i=He(),s=je();if(n1&&(r=1),n=i-r*(i/3);else n>s&&((r=(n-s)/(6*i))>1&&(r=1),n=s+r*i);r<0&&(r=0),t,bt(Xe,Je,lt),ue.x+=lt.x-pt.x,ue.y+=lt.y-pt.y,De(pt,lt),de.x=Pe("x",n),de.y=Pe("y",n),B=n>y,y=n,Me()}else{if(!re)return;if(ie&&(ie=!1,Math.abs(et.x)>=10&&(et.x-=Y[0].x-nt.x),Math.abs(et.y)>=10&&(et.y-=Y[0].y-nt.y)),tt.x=Xe.x,tt.y=Xe.y,0===et.x&&0===et.y)return;if("v"===re&&a.closeOnVerticalDrag&&"fit"===a.scaleMode&&y===o.currItem.initialZoomLevel){ue.y+=et.y,de.y+=et.y;var u=wt();return Z=!0,Le("onVerticalDrag",u),ke(u),void Me()}!function(e,t,n){if(e-j>50){var r=ot.length>2?ot.shift():{};r.x=t,r.y=n,ot.push(r),j=e}}(Se(),Xe.x,Xe.y),K=!0,ee=o.currItem.bounds,St("x",et)||(St("y",et),Fe(de),Me())}}},Ot=function(e){if(N.isOldAndroid){if(V&&"mouseup"===e.type)return;e.type.indexOf("touch")>-1&&(clearTimeout(V),V=setTimeout((function(){V=0}),600))}var t;if(Le("pointerUp"),vt(e,!1)&&e.preventDefault(),M){var n=i.arraySearch(rt,e.pointerId,"id");if(n>-1)if(t=rt.splice(n,1)[0],navigator.msPointerEnabled){t.type={4:"mouse",2:"touch",3:"pen"}[e.pointerType],t.type||(t.type=e.pointerType||"mouse")}else t.type=e.pointerType||"mouse"}var r,s=Lt(e),l=s.length;if("mouseup"===e.type&&(l=0),2===l)return Y=null,!0;1===l&&De(nt,s[0]),0!==l||re||ne||(t||("mouseup"===e.type?t={x:e.pageX,y:e.pageY,type:"mouse"}:e.changedTouches&&e.changedTouches[0]&&(t={x:e.changedTouches[0].pageX,y:e.changedTouches[0].pageY,type:"touch"})),Le("touchRelease",e,t));var u=-1;if(0===l&&(U=!1,i.unbind(window,f,o),ht(),X?u=0:-1!==ut&&(u=Se()-ut)),ut=1===l?Se():-1,r=-1!==u&&u<150?"zoom":"swipe",X&&l<2&&(X=!1,1===l&&(r="zoomPointerUp"),Le("zoomGestureEnded")),Y=null,K||W||ne||Z)if($e(),z||(z=_t()),z.calculateSwipeSpeed("x"),Z){if(wt()o.currItem.fitRatio&&At(z):Ft())}},_t=function(){var e,t,n={lastFlickOffset:{},lastFlickDist:{},lastFlickSpeed:{},slowDownRatio:{},slowDownRatioReverse:{},speedDecelerationRatio:{},speedDecelerationRatioAbs:{},distanceOffset:{},backAnimDestination:{},backAnimStarted:{},calculateSwipeSpeed:function(r){ot.length>1?(e=Se()-j+50,t=ot[ot.length-2][r]):(e=Se()-H,t=nt[r]),n.lastFlickOffset[r]=tt[r]-t,n.lastFlickDist[r]=Math.abs(n.lastFlickOffset[r]),n.lastFlickDist[r]>20?n.lastFlickSpeed[r]=n.lastFlickOffset[r]/e:n.lastFlickSpeed[r]=0,Math.abs(n.lastFlickSpeed[r])<.1&&(n.lastFlickSpeed[r]=0),n.slowDownRatio[r]=.95,n.slowDownRatioReverse[r]=1-n.slowDownRatio[r],n.speedDecelerationRatio[r]=1},calculateOverBoundsAnimOffset:function(e,t){n.backAnimStarted[e]||(de[e]>ee.min[e]?n.backAnimDestination[e]=ee.min[e]:de[e]30&&(u||t.lastFlickOffset.x>20)?r=-1:l<-30&&(u||t.lastFlickOffset.x<-20)&&(r=1)}r&&((c+=r)<0?(c=a.loop?zt()-1:0,s=!0):c>=zt()&&(c=a.loop?0:zt()-1,s=!0),s&&!a.loop||(ye+=r,fe-=r,n=!0));var d,p=me.x*fe,f=Math.abs(p-ct.x);return n||p>ct.x==t.lastFlickSpeed.x>0?(d=Math.abs(t.lastFlickSpeed.x)>0?f/Math.abs(t.lastFlickSpeed.x):333,d=Math.min(d,400),d=Math.max(d,250)):d=333,st===c&&(n=!1),ne=!0,Le("mainScrollAnimStart"),Ge("mainScroll",ct.x,p,d,i.easing.cubic.out,Ae,(function(){$e(),ne=!1,st=-1,(n||st!==c)&&o.updateCurrItem(),Le("mainScrollAnimComplete")})),n&&o.updateCurrItem(!0),n},Dt=function(e){return 1/J*e*g},Ft=function(){var e=y,t=He(),n=je();yn&&(e=n);var r,a=ae;return oe&&!B&&!se&&y1||navigator.msMaxTouchPoints>1),o.likelyTouchDevice=O,m[C]=kt,m[L]=It,m[S]=Ot,k&&(m[k]=m[S]),N.touch&&(h+=" mousedown",f+=" mousemove mouseup",m.mousedown=m[C],m.mousemove=m[L],m.mouseup=m[S]),O||(a.allowPanToNext=!1)}}});var Rt,Nt,Qt,Ht,jt,zt,Bt=function(t,n,r,s){var l;Rt&&clearTimeout(Rt),Ht=!0,Qt=!0,t.initialLayout?(l=t.initialLayout,t.initialLayout=null):l=a.getThumbBoundsFn&&a.getThumbBoundsFn(c);var d=r?a.hideAnimationDuration:a.showAnimationDuration,p=function(){We("initialZoom"),r?(o.template.removeAttribute("style"),o.bg.removeAttribute("style")):(ke(1),n&&(n.style.display="block"),i.addClass(e,"pswp--animated-in"),Le("initialZoom"+(r?"OutEnd":"InEnd"))),s&&s(),Ht=!1};if(!d||!l||void 0===l.x)return Le("initialZoom"+(r?"Out":"In")),y=t.initialZoomLevel,De(de,t.initialPosition),Me(),e.style.opacity=r?0:1,ke(1),void(d?setTimeout((function(){p()}),d):p());var f,h;f=u,h=!o.currItem.src||o.currItem.loadError||a.showHideOpacity,t.miniImg&&(t.miniImg.style.webkitBackfaceVisibility="hidden"),r||(y=l.w/t.w,de.x=l.x,de.y=l.y-D,o[h?"template":"bg"].style.opacity=.001,Me()),Ke("initialZoom"),r&&!f&&i.removeClass(e,"pswp--animated-in"),h&&(r?i[(f?"remove":"add")+"Class"](e,"pswp--animate_opacity"):setTimeout((function(){i.addClass(e,"pswp--animate_opacity")}),30)),Rt=setTimeout((function(){if(Le("initialZoom"+(r?"Out":"In")),r){var n=l.w/t.w,o={x:de.x,y:de.y},a=y,s=ae,u=function(t){1===t?(y=n,de.x=l.x,de.y=l.y-R):(y=(n-a)*t+a,de.x=(l.x-o.x)*t+o.x,de.y=(l.y-R-o.y)*t+o.y),Me(),h?e.style.opacity=1-t:ke(s-t*s)};f?Ge("initialZoom",0,1,d,i.easing.cubic.out,u,p):(u(1),Rt=setTimeout(p,d+20))}else y=t.initialZoomLevel,De(de,t.initialPosition),Me(),ke(1),h?e.style.opacity=1:ke(1),Rt=setTimeout(p,d+20)}),r?25:90)},Zt={},Vt=[],Ut={index:0,errorMsg:'
The image could not be loaded.
',forceProgressiveLoading:!1,preload:[1,1],getNumItemsFn:function(){return Nt.length}},qt=function(e,t,n){if(e.src&&!e.loadError){var r=!n;if(r&&(e.vGap||(e.vGap={top:0,bottom:0}),Le("parseVerticalMargin",e)),Zt.x=t.x,Zt.y=t.y-e.vGap.top-e.vGap.bottom,r){var i=Zt.x/e.w,o=Zt.y/e.h;e.fitRatio=i1&&(n=1),e.initialZoomLevel=n,e.bounds||(e.bounds={center:{x:0,y:0},max:{x:0,y:0},min:{x:0,y:0}})}if(!n)return;return function(e,t,n){var r=e.bounds;r.center.x=Math.round((Zt.x-t)/2),r.center.y=Math.round((Zt.y-n)/2)+e.vGap.top,r.max.x=t>Zt.x?Math.round(Zt.x-t):r.center.x,r.max.y=n>Zt.y?Math.round(Zt.y-n)+e.vGap.top:r.center.y,r.min.x=t>Zt.x?0:r.center.x,r.min.y=n>Zt.y?e.vGap.top:r.center.y}(e,e.w*n,e.h*n),r&&n===e.initialZoomLevel&&(e.initialPosition=e.bounds.center),e.bounds}return e.w=e.h=0,e.initialZoomLevel=e.fitRatio=1,e.bounds={center:{x:0,y:0},max:{x:0,y:0},min:{x:0,y:0}},e.initialPosition=e.bounds.center,e.bounds},Wt=function(e,t,n,r,i,a){t.loadError||r&&(t.imageAppended=!0,Gt(t,r,t===o.currItem&&be),n.appendChild(r),a&&setTimeout((function(){t&&t.loaded&&t.placeholder&&(t.placeholder.style.display="none",t.placeholder=null)}),500))},Kt=function(e){e.loading=!0,e.loaded=!1;var t=e.img=i.createEl("pswp__img","img"),n=function(){e.loading=!1,e.loaded=!0,e.loadComplete?e.loadComplete(e):e.img=null,t.onload=t.onerror=null,t=null};return t.onload=n,t.onerror=function(){e.loadError=!0,n()},t.src=e.src,t},$t=function(e,t){if(e.src&&e.loadError&&e.container)return t&&(e.container.innerHTML=""),e.container.innerHTML=a.errorMsg.replace("%url%",e.src),!0},Gt=function(e,t,n){if(e.src){t||(t=e.container.lastChild);var r=n?e.w:Math.round(e.w*e.fitRatio),i=n?e.h:Math.round(e.h*e.fitRatio);e.placeholder&&!e.loaded&&(e.placeholder.style.width=r+"px",e.placeholder.style.height=i+"px"),t.style.width=r+"px",t.style.height=i+"px"}},Yt=function(){if(Vt.length){for(var e,t=0;t=0,i=Math.min(n[0],zt()),s=Math.min(n[1],zt());for(t=1;t<=(r?s:i);t++)o.lazyLoadItem(c+t);for(t=1;t<=(r?i:s);t++)o.lazyLoadItem(c-t)})),Ce("initialLayout",(function(){o.currItem.initialLayout=a.getThumbBoundsFn&&a.getThumbBoundsFn(c)})),Ce("mainScrollAnimComplete",Yt),Ce("initialZoomInEnd",Yt),Ce("destroy",(function(){for(var e,t=0;t=0&&(void 0!==Nt[e]&&Nt[e])},allowProgressiveImg:function(){return a.forceProgressiveLoading||!O||a.mouseUsed||screen.width>1200},setContent:function(e,t){a.loop&&(t=Te(t));var n=o.getItemAt(e.index);n&&(n.container=null);var r,l=o.getItemAt(t);if(l){Le("gettingData",t,l),e.index=t,e.item=l;var u=l.container=i.createEl("pswp__zoom-wrap");if(!l.src&&l.html&&(l.html.tagName?u.appendChild(l.html):u.innerHTML=l.html),$t(l),qt(l,pe),!l.src||l.loadError||l.loaded)l.src&&!l.loadError&&((r=i.createEl("pswp__img","img")).style.opacity=1,r.src=l.src,Gt(l,r),Wt(0,l,u,r));else{if(l.loadComplete=function(n){if(s){if(e&&e.index===t){if($t(n,!0))return n.loadComplete=n.img=null,qt(n,pe),Oe(n),void(e.index===c&&o.updateCurrZoomItem());n.imageAppended?!Ht&&n.placeholder&&(n.placeholder.style.display="none",n.placeholder=null):N.transform&&(ne||Ht)?Vt.push({item:n,baseDiv:u,img:n.img,index:t,holder:e,clearPlaceholder:!0}):Wt(0,n,u,n.img,0,!0)}n.loadComplete=null,n.img=null,Le("imageLoadComplete",t,n)}},i.features.transform){var d="pswp__img pswp__img--placeholder";d+=l.msrc?"":" pswp__img--placeholder--blank";var p=i.createEl(d,l.msrc?"img":"");l.msrc&&(p.src=l.msrc),Gt(l,p),u.appendChild(p),l.placeholder=p}l.loading||Kt(l),o.allowProgressiveImg()&&(!Qt&&N.transform?Vt.push({item:l,baseDiv:u,img:l.img,index:t,holder:e}):Wt(0,l,u,l.img,0,!0))}Qt||t!==c?Oe(l):(te=u.style,Bt(l,r||l.img)),e.el.innerHTML="",e.el.appendChild(u)}else e.el.innerHTML=""},cleanSlide:function(e){e.img&&(e.img.onload=e.img.onerror=null),e.loaded=e.loading=e.img=e.imageAppended=!1}}});var Xt,Jt,en={},tn=function(e,t,n){var r=document.createEvent("CustomEvent"),i={origEvent:e,target:e.target,releasePoint:t,pointerType:n||"touch"};r.initCustomEvent("pswpTap",!0,!0,i),e.target.dispatchEvent(r)};we("Tap",{publicMethods:{initTap:function(){Ce("firstTouchStart",o.onTapStart),Ce("touchRelease",o.onTapRelease),Ce("destroy",(function(){en={},Xt=null}))},onTapStart:function(e){e.length>1&&(clearTimeout(Xt),Xt=null)},onTapRelease:function(e,t){var n,r;if(t&&(!K&&!q&&!qe)){var o=t;if(Xt&&(clearTimeout(Xt),Xt=null,n=o,r=en,Math.abs(n.x-r.x)<25&&Math.abs(n.y-r.y)<25))return void Le("doubleTap",o);if("mouse"===t.type)return void tn(e,t,"mouse");if("BUTTON"===e.target.tagName.toUpperCase()||i.hasClass(e.target,"pswp__single-tap"))return void tn(e,t);De(en,o),Xt=setTimeout((function(){tn(e,t),Xt=null}),300)}}}}),we("DesktopZoom",{publicMethods:{initDesktopZoom:function(){F||(O?Ce("mouseUsed",(function(){o.setupDesktopZoom()})):o.setupDesktopZoom(!0))},setupDesktopZoom:function(t){Jt={};var n="wheel mousewheel DOMMouseScroll";Ce("bindEvents",(function(){i.bind(e,n,o.handleMouseWheel)})),Ce("unbindEvents",(function(){Jt&&i.unbind(e,n,o.handleMouseWheel)})),o.mouseZoomedIn=!1;var r,a=function(){o.mouseZoomedIn&&(i.removeClass(e,"pswp--zoomed-in"),o.mouseZoomedIn=!1),y<1?i.addClass(e,"pswp--zoom-allowed"):i.removeClass(e,"pswp--zoom-allowed"),s()},s=function(){r&&(i.removeClass(e,"pswp--dragging"),r=!1)};Ce("resize",a),Ce("afterChange",a),Ce("pointerDown",(function(){o.mouseZoomedIn&&(r=!0,i.addClass(e,"pswp--dragging"))})),Ce("pointerUp",s),t||a()},handleMouseWheel:function(e){if(y<=o.currItem.fitRatio)return a.modal&&(!a.closeOnScroll||qe||U?e.preventDefault():I&&Math.abs(e.deltaY)>2&&(u=!0,o.close())),!0;if(e.stopPropagation(),Jt.x=0,"deltaX"in e)1===e.deltaMode?(Jt.x=18*e.deltaX,Jt.y=18*e.deltaY):(Jt.x=e.deltaX,Jt.y=e.deltaY);else if("wheelDelta"in e)e.wheelDeltaX&&(Jt.x=-.16*e.wheelDeltaX),e.wheelDeltaY?Jt.y=-.16*e.wheelDeltaY:Jt.y=-.16*e.wheelDelta;else{if(!("detail"in e))return;Jt.y=e.detail}Qe(y,!0);var t=de.x-Jt.x,n=de.y-Jt.y;(a.modal||t<=ee.min.x&&t>=ee.max.x&&n<=ee.min.y&&n>=ee.max.y)&&e.preventDefault(),o.panTo(t,n)},toggleDesktopZoom:function(t){t=t||{x:pe.x/2+he.x,y:pe.y/2+he.y};var n=a.getDoubleTapZoom(!0,o.currItem),r=y===n;o.mouseZoomedIn=!r,o.zoomTo(r?o.currItem.initialZoomLevel:n,t,333),i[(r?"remove":"add")+"Class"](e,"pswp--zoomed-in")}}});var nn,rn,on,an,sn,ln,un,cn,dn,pn,fn,hn,mn={history:!0,galleryUID:1},yn=function(){return fn.hash.substring(1)},gn=function(){nn&&clearTimeout(nn),on&&clearTimeout(on)},vn=function(){var e=yn(),t={};if(e.length<5)return t;var n,r=e.split("&");for(n=0;n-1&&"&"===(un=un.substring(0,t)).slice(-1)&&(un=un.slice(0,-1)),setTimeout((function(){s&&i.bind(window,"hashchange",o.onHashChange)}),40)}},onHashChange:function(){if(yn()===un)return dn=!0,void o.close();an||(sn=!0,o.goTo(vn().pid),sn=!1)},updateURL:function(){gn(),sn||(cn?nn=setTimeout(xn,800):xn())}}}),i.extend(o,Ye)}})), +/*! PhotoSwipe Default UI - 4.1.3 - 2019-01-08 + * http://photoswipe.com + * Copyright (c) 2019 Dmitry Semenov; */ +function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.PhotoSwipeUI_Default=t()}(this,(function(){"use strict";return function(e,t){var n,r,i,o,a,s,l,u,c,d,p,f,h,m,y,g,v,x,b=this,w=!1,T=!0,E=!0,C={barsSize:{top:44,bottom:"auto"},closeElClasses:["item","caption","zoom-wrap","ui","top-bar"],timeToIdle:4e3,timeToIdleOutside:1e3,loadingIndicatorDelay:1e3,addCaptionHTMLFn:function(e,t){return e.title?(t.children[0].innerHTML=e.title,!0):(t.children[0].innerHTML="",!1)},closeEl:!0,captionEl:!0,fullscreenEl:!0,zoomEl:!0,shareEl:!0,counterEl:!0,arrowEl:!0,preloaderEl:!0,tapToClose:!1,tapToToggleControls:!0,clickToCloseNonZoomable:!0,shareButtons:[{id:"facebook",label:"Share on Facebook",url:"https://www.facebook.com/sharer/sharer.php?u={{url}}"},{id:"twitter",label:"Tweet",url:"https://twitter.com/intent/tweet?text={{text}}&url={{url}}"},{id:"pinterest",label:"Pin it",url:"http://www.pinterest.com/pin/create/button/?url={{url}}&media={{image_url}}&description={{text}}"},{id:"download",label:"Download image",url:"{{raw_image_url}}",download:!0}],getImageURLForShare:function(){return e.currItem.src||""},getPageURLForShare:function(){return window.location.href},getTextForShare:function(){return e.currItem.title||""},indexIndicatorSep:" / ",fitControlsWidth:1200},L=function(e){if(g)return!0;e=e||window.event,y.timeToIdle&&y.mouseUsed&&!c&&D();for(var n,r,i=(e.target||e.srcElement).getAttribute("class")||"",o=0;o-1&&(n.onTap(),r=!0);if(r){e.stopPropagation&&e.stopPropagation(),g=!0;var a=t.features.isOldAndroid?600:30;setTimeout((function(){g=!1}),a)}},S=function(e,n,r){t[(r?"add":"remove")+"Class"](e,"pswp__"+n)},k=function(){var e=1===y.getNumItemsFn();e!==m&&(S(r,"ui--one-slide",e),m=e)},I=function(){S(l,"share-modal--hidden",E)},M=function(){return(E=!E)?(t.removeClass(l,"pswp__share-modal--fade-in"),setTimeout((function(){E&&I()}),300)):(I(),setTimeout((function(){E||t.addClass(l,"pswp__share-modal--fade-in")}),30)),E||_(),!1},O=function(t){var n=(t=t||window.event).target||t.srcElement;return e.shout("shareLinkClick",t,n),!!n.href&&(!!n.hasAttribute("download")||(window.open(n.href,"pswp_share","scrollbars=yes,resizable=yes,toolbar=no,location=yes,width=550,height=420,top=100,left="+(window.screen?Math.round(screen.width/2-275):100)),E||M(),!1))},_=function(){for(var e,t,n,r,i="",o=0;o