From 3e2e00c253ad676ce3f46a2221e0b7469e960269 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jordi=20Pujol-Ahull=C3=B3?= Date: Thu, 14 Jul 2016 21:14:01 +0200 Subject: [PATCH] adding gitlab89 slided for gdg tarragona summer edition 2016. --- gitlab89/.gitignore | 13 + gitlab89/.travis.yml | 5 + gitlab89/CONTRIBUTING.md | 23 + gitlab89/Gruntfile.js | 176 + gitlab89/LICENSE | 19 + gitlab89/README.md | 36 + gitlab89/bower.json | 27 + gitlab89/css/print/paper.css | 202 + gitlab89/css/print/pdf.css | 160 + gitlab89/css/reveal.css | 1298 +++++ gitlab89/css/reveal.scss | 1379 +++++ gitlab89/css/theme/README.md | 21 + gitlab89/css/theme/beige.css | 290 + gitlab89/css/theme/black.css | 286 + gitlab89/css/theme/blood.css | 309 ++ gitlab89/css/theme/league.css | 292 + gitlab89/css/theme/moon.css | 290 + gitlab89/css/theme/night.css | 284 + gitlab89/css/theme/serif.css | 286 + gitlab89/css/theme/simple.css | 286 + gitlab89/css/theme/sky.css | 293 ++ gitlab89/css/theme/solarized.css | 290 + gitlab89/css/theme/source/beige.scss | 39 + gitlab89/css/theme/source/black.scss | 49 + gitlab89/css/theme/source/blood.scss | 79 + gitlab89/css/theme/source/league.scss | 34 + gitlab89/css/theme/source/moon.scss | 57 + gitlab89/css/theme/source/night.scss | 35 + gitlab89/css/theme/source/serif.scss | 35 + gitlab89/css/theme/source/simple.scss | 38 + gitlab89/css/theme/source/sky.scss | 46 + gitlab89/css/theme/source/solarized.scss | 63 + gitlab89/css/theme/source/white.scss | 49 + gitlab89/css/theme/template/mixins.scss | 29 + gitlab89/css/theme/template/settings.scss | 43 + gitlab89/css/theme/template/theme.scss | 345 ++ gitlab89/css/theme/white.css | 286 + gitlab89/images/dashing.png | Bin 0 -> 205915 bytes gitlab89/images/gitlab-stack-overflow.png | Bin 0 -> 26963 bytes .../images/gitlabcirunner-installation.png | Bin 0 -> 23640 bytes gitlab89/images/project-builds-section.png | Bin 0 -> 92445 bytes gitlab89/index.html | 77 + gitlab89/js/reveal.js | 4677 +++++++++++++++++ gitlab89/lib/css/zenburn.css | 115 + gitlab89/lib/font/league-gothic/LICENSE | 2 + .../lib/font/league-gothic/league-gothic.css | 10 + .../lib/font/league-gothic/league-gothic.eot | Bin 0 -> 25696 bytes .../lib/font/league-gothic/league-gothic.ttf | Bin 0 -> 64256 bytes .../lib/font/league-gothic/league-gothic.woff | Bin 0 -> 30764 bytes gitlab89/lib/font/source-sans-pro/LICENSE | 45 + .../source-sans-pro-italic.eot | Bin 0 -> 75720 bytes .../source-sans-pro-italic.ttf | Bin 0 -> 238084 bytes .../source-sans-pro-italic.woff | Bin 0 -> 98556 bytes .../source-sans-pro-regular.eot | Bin 0 -> 88070 bytes .../source-sans-pro-regular.ttf | Bin 0 -> 288008 bytes .../source-sans-pro-regular.woff | Bin 0 -> 114324 bytes .../source-sans-pro-semibold.eot | Bin 0 -> 89897 bytes .../source-sans-pro-semibold.ttf | Bin 0 -> 284640 bytes .../source-sans-pro-semibold.woff | Bin 0 -> 115648 bytes .../source-sans-pro-semibolditalic.eot | Bin 0 -> 75706 bytes .../source-sans-pro-semibolditalic.ttf | Bin 0 -> 240944 bytes .../source-sans-pro-semibolditalic.woff | Bin 0 -> 98816 bytes .../font/source-sans-pro/source-sans-pro.css | 39 + gitlab89/lib/js/classList.js | 2 + gitlab89/lib/js/head.min.js | 8 + gitlab89/lib/js/html5shiv.js | 7 + gitlab89/package.json | 45 + gitlab89/plugin/highlight/highlight.js | 32 + gitlab89/plugin/markdown/example.html | 129 + gitlab89/plugin/markdown/example.md | 31 + gitlab89/plugin/markdown/markdown.js | 402 ++ gitlab89/plugin/markdown/marked.js | 6 + gitlab89/plugin/math/math.js | 67 + gitlab89/plugin/multiplex/client.js | 13 + gitlab89/plugin/multiplex/index.js | 56 + gitlab89/plugin/multiplex/master.js | 31 + gitlab89/plugin/notes-server/client.js | 65 + gitlab89/plugin/notes-server/index.js | 68 + gitlab89/plugin/notes-server/notes.html | 407 ++ gitlab89/plugin/notes/notes.html | 407 ++ gitlab89/plugin/notes/notes.js | 127 + gitlab89/plugin/print-pdf/print-pdf.js | 48 + gitlab89/plugin/search/search.js | 196 + gitlab89/plugin/zoom-js/zoom.js | 278 + gitlab89/slides.md | 272 + gitlab89/test/examples/assets/image1.png | Bin 0 -> 21991 bytes gitlab89/test/examples/assets/image2.png | Bin 0 -> 10237 bytes gitlab89/test/examples/barebones.html | 41 + gitlab89/test/examples/embedded-media.html | 49 + gitlab89/test/examples/math.html | 185 + gitlab89/test/examples/slide-backgrounds.html | 144 + gitlab89/test/examples/slide-transitions.html | 101 + gitlab89/test/qunit-1.12.0.css | 244 + gitlab89/test/qunit-1.12.0.js | 2212 ++++++++ .../test-markdown-element-attributes.html | 134 + .../test/test-markdown-element-attributes.js | 46 + .../test/test-markdown-slide-attributes.html | 128 + .../test/test-markdown-slide-attributes.js | 47 + gitlab89/test/test-markdown.html | 52 + gitlab89/test/test-markdown.js | 15 + gitlab89/test/test-pdf.html | 83 + gitlab89/test/test-pdf.js | 15 + gitlab89/test/test.html | 86 + gitlab89/test/test.js | 597 +++ 104 files changed, 19333 insertions(+) create mode 100644 gitlab89/.gitignore create mode 100644 gitlab89/.travis.yml create mode 100644 gitlab89/CONTRIBUTING.md create mode 100644 gitlab89/Gruntfile.js create mode 100644 gitlab89/LICENSE create mode 100644 gitlab89/README.md create mode 100644 gitlab89/bower.json create mode 100644 gitlab89/css/print/paper.css create mode 100644 gitlab89/css/print/pdf.css create mode 100644 gitlab89/css/reveal.css create mode 100644 gitlab89/css/reveal.scss create mode 100644 gitlab89/css/theme/README.md create mode 100644 gitlab89/css/theme/beige.css create mode 100644 gitlab89/css/theme/black.css create mode 100644 gitlab89/css/theme/blood.css create mode 100644 gitlab89/css/theme/league.css create mode 100644 gitlab89/css/theme/moon.css create mode 100644 gitlab89/css/theme/night.css create mode 100644 gitlab89/css/theme/serif.css create mode 100644 gitlab89/css/theme/simple.css create mode 100644 gitlab89/css/theme/sky.css create mode 100644 gitlab89/css/theme/solarized.css create mode 100644 gitlab89/css/theme/source/beige.scss create mode 100644 gitlab89/css/theme/source/black.scss create mode 100644 gitlab89/css/theme/source/blood.scss create mode 100644 gitlab89/css/theme/source/league.scss create mode 100644 gitlab89/css/theme/source/moon.scss create mode 100644 gitlab89/css/theme/source/night.scss create mode 100644 gitlab89/css/theme/source/serif.scss create mode 100644 gitlab89/css/theme/source/simple.scss create mode 100644 gitlab89/css/theme/source/sky.scss create mode 100644 gitlab89/css/theme/source/solarized.scss create mode 100644 gitlab89/css/theme/source/white.scss create mode 100644 gitlab89/css/theme/template/mixins.scss create mode 100644 gitlab89/css/theme/template/settings.scss create mode 100644 gitlab89/css/theme/template/theme.scss create mode 100644 gitlab89/css/theme/white.css create mode 100644 gitlab89/images/dashing.png create mode 100644 gitlab89/images/gitlab-stack-overflow.png create mode 100644 gitlab89/images/gitlabcirunner-installation.png create mode 100644 gitlab89/images/project-builds-section.png create mode 100644 gitlab89/index.html create mode 100644 gitlab89/js/reveal.js create mode 100644 gitlab89/lib/css/zenburn.css create mode 100644 gitlab89/lib/font/league-gothic/LICENSE create mode 100644 gitlab89/lib/font/league-gothic/league-gothic.css create mode 100755 gitlab89/lib/font/league-gothic/league-gothic.eot create mode 100755 gitlab89/lib/font/league-gothic/league-gothic.ttf create mode 100755 gitlab89/lib/font/league-gothic/league-gothic.woff create mode 100644 gitlab89/lib/font/source-sans-pro/LICENSE create mode 100755 gitlab89/lib/font/source-sans-pro/source-sans-pro-italic.eot create mode 100755 gitlab89/lib/font/source-sans-pro/source-sans-pro-italic.ttf create mode 100755 gitlab89/lib/font/source-sans-pro/source-sans-pro-italic.woff create mode 100755 gitlab89/lib/font/source-sans-pro/source-sans-pro-regular.eot create mode 100755 gitlab89/lib/font/source-sans-pro/source-sans-pro-regular.ttf create mode 100755 gitlab89/lib/font/source-sans-pro/source-sans-pro-regular.woff create mode 100755 gitlab89/lib/font/source-sans-pro/source-sans-pro-semibold.eot create mode 100755 gitlab89/lib/font/source-sans-pro/source-sans-pro-semibold.ttf create mode 100755 gitlab89/lib/font/source-sans-pro/source-sans-pro-semibold.woff create mode 100755 gitlab89/lib/font/source-sans-pro/source-sans-pro-semibolditalic.eot create mode 100755 gitlab89/lib/font/source-sans-pro/source-sans-pro-semibolditalic.ttf create mode 100755 gitlab89/lib/font/source-sans-pro/source-sans-pro-semibolditalic.woff create mode 100644 gitlab89/lib/font/source-sans-pro/source-sans-pro.css create mode 100644 gitlab89/lib/js/classList.js create mode 100644 gitlab89/lib/js/head.min.js create mode 100644 gitlab89/lib/js/html5shiv.js create mode 100644 gitlab89/package.json create mode 100644 gitlab89/plugin/highlight/highlight.js create mode 100644 gitlab89/plugin/markdown/example.html create mode 100644 gitlab89/plugin/markdown/example.md create mode 100755 gitlab89/plugin/markdown/markdown.js create mode 100644 gitlab89/plugin/markdown/marked.js create mode 100755 gitlab89/plugin/math/math.js create mode 100644 gitlab89/plugin/multiplex/client.js create mode 100644 gitlab89/plugin/multiplex/index.js create mode 100644 gitlab89/plugin/multiplex/master.js create mode 100644 gitlab89/plugin/notes-server/client.js create mode 100644 gitlab89/plugin/notes-server/index.js create mode 100644 gitlab89/plugin/notes-server/notes.html create mode 100644 gitlab89/plugin/notes/notes.html create mode 100644 gitlab89/plugin/notes/notes.js create mode 100644 gitlab89/plugin/print-pdf/print-pdf.js create mode 100644 gitlab89/plugin/search/search.js create mode 100644 gitlab89/plugin/zoom-js/zoom.js create mode 100644 gitlab89/slides.md create mode 100644 gitlab89/test/examples/assets/image1.png create mode 100644 gitlab89/test/examples/assets/image2.png create mode 100644 gitlab89/test/examples/barebones.html create mode 100644 gitlab89/test/examples/embedded-media.html create mode 100644 gitlab89/test/examples/math.html create mode 100644 gitlab89/test/examples/slide-backgrounds.html create mode 100644 gitlab89/test/examples/slide-transitions.html create mode 100644 gitlab89/test/qunit-1.12.0.css create mode 100644 gitlab89/test/qunit-1.12.0.js create mode 100644 gitlab89/test/test-markdown-element-attributes.html create mode 100644 gitlab89/test/test-markdown-element-attributes.js create mode 100644 gitlab89/test/test-markdown-slide-attributes.html create mode 100644 gitlab89/test/test-markdown-slide-attributes.js create mode 100644 gitlab89/test/test-markdown.html create mode 100644 gitlab89/test/test-markdown.js create mode 100644 gitlab89/test/test-pdf.html create mode 100644 gitlab89/test/test-pdf.js create mode 100644 gitlab89/test/test.html create mode 100644 gitlab89/test/test.js diff --git a/gitlab89/.gitignore b/gitlab89/.gitignore new file mode 100644 index 0000000..e7b4f21 --- /dev/null +++ b/gitlab89/.gitignore @@ -0,0 +1,13 @@ +.idea/ +*.iml +*.iws +*.eml +out/ +.DS_Store +.svn +log/*.log +tmp/** +node_modules/ +.sass-cache +css/reveal.min.css +js/reveal.min.js \ No newline at end of file diff --git a/gitlab89/.travis.yml b/gitlab89/.travis.yml new file mode 100644 index 0000000..264c6ec --- /dev/null +++ b/gitlab89/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +node_js: + - 4.1.1 +before_script: + - npm install -g grunt-cli \ No newline at end of file diff --git a/gitlab89/CONTRIBUTING.md b/gitlab89/CONTRIBUTING.md new file mode 100644 index 0000000..c2091e8 --- /dev/null +++ b/gitlab89/CONTRIBUTING.md @@ -0,0 +1,23 @@ +## Contributing + +Please keep the [issue tracker](http://github.com/hakimel/reveal.js/issues) limited to **bug reports**, **feature requests** and **pull requests**. + + +### Personal Support +If you have personal support or setup questions the best place to ask those are [StackOverflow](http://stackoverflow.com/questions/tagged/reveal.js). + + +### Bug Reports +When reporting a bug make sure to include information about which browser and operating system you are on as well as the necessary steps to reproduce the issue. If possible please include a link to a sample presentation where the bug can be tested. + + +### Pull Requests +- Should follow the coding style of the file you work in, most importantly: + - Tabs to indent + - Single-quoted strings +- Should be made towards the **dev branch** +- Should be submitted from a feature/topic branch (not your master) + + +### Plugins +Please do not submit plugins as pull requests. They should be maintained in their own separate repository. More information here: https://github.com/hakimel/reveal.js/wiki/Plugin-Guidelines diff --git a/gitlab89/Gruntfile.js b/gitlab89/Gruntfile.js new file mode 100644 index 0000000..675adff --- /dev/null +++ b/gitlab89/Gruntfile.js @@ -0,0 +1,176 @@ +/* global module:false */ +module.exports = function(grunt) { + var port = grunt.option('port') || 8000; + var base = grunt.option('base') || '.'; + + // Project configuration + grunt.initConfig({ + pkg: grunt.file.readJSON('package.json'), + meta: { + banner: + '/*!\n' + + ' * reveal.js <%= pkg.version %> (<%= grunt.template.today("yyyy-mm-dd, HH:MM") %>)\n' + + ' * http://lab.hakim.se/reveal-js\n' + + ' * MIT licensed\n' + + ' *\n' + + ' * Copyright (C) 2016 Hakim El Hattab, http://hakim.se\n' + + ' */' + }, + + qunit: { + files: [ 'test/*.html' ] + }, + + uglify: { + options: { + banner: '<%= meta.banner %>\n' + }, + build: { + src: 'js/reveal.js', + dest: 'js/reveal.min.js' + } + }, + + sass: { + core: { + files: { + 'css/reveal.css': 'css/reveal.scss', + } + }, + themes: { + files: [ + { + expand: true, + cwd: 'css/theme/source', + src: ['*.scss'], + dest: 'css/theme', + ext: '.css' + } + ] + } + }, + + autoprefixer: { + dist: { + src: 'css/reveal.css' + } + }, + + cssmin: { + compress: { + files: { + 'css/reveal.min.css': [ 'css/reveal.css' ] + } + } + }, + + jshint: { + options: { + curly: false, + eqeqeq: true, + immed: true, + latedef: true, + newcap: true, + noarg: true, + sub: true, + undef: true, + eqnull: true, + browser: true, + expr: true, + globals: { + head: false, + module: false, + console: false, + unescape: false, + define: false, + exports: false + } + }, + files: [ 'Gruntfile.js', 'js/reveal.js' ] + }, + + connect: { + server: { + options: { + port: port, + base: base, + livereload: true, + open: true + } + } + }, + + zip: { + 'reveal-js-presentation.zip': [ + 'index.html', + 'css/**', + 'js/**', + 'lib/**', + 'images/**', + 'plugin/**', + '**.md' + ] + }, + + watch: { + options: { + livereload: true + }, + js: { + files: [ 'Gruntfile.js', 'js/reveal.js' ], + tasks: 'js' + }, + theme: { + files: [ 'css/theme/source/*.scss', 'css/theme/template/*.scss' ], + tasks: 'css-themes' + }, + css: { + files: [ 'css/reveal.scss' ], + tasks: 'css-core' + }, + html: { + files: [ 'index.html'] + }, + markdown: { + files: [ './*.md' ] + } + } + + }); + + // Dependencies + grunt.loadNpmTasks( 'grunt-contrib-qunit' ); + grunt.loadNpmTasks( 'grunt-contrib-jshint' ); + grunt.loadNpmTasks( 'grunt-contrib-cssmin' ); + grunt.loadNpmTasks( 'grunt-contrib-uglify' ); + grunt.loadNpmTasks( 'grunt-contrib-watch' ); + grunt.loadNpmTasks( 'grunt-sass' ); + grunt.loadNpmTasks( 'grunt-contrib-connect' ); + grunt.loadNpmTasks( 'grunt-autoprefixer' ); + grunt.loadNpmTasks( 'grunt-zip' ); + + // Default task + grunt.registerTask( 'default', [ 'css', 'js' ] ); + + // JS task + grunt.registerTask( 'js', [ 'jshint', 'uglify', 'qunit' ] ); + + // Theme CSS + grunt.registerTask( 'css-themes', [ 'sass:themes' ] ); + + // Core framework CSS + grunt.registerTask( 'css-core', [ 'sass:core', 'autoprefixer', 'cssmin' ] ); + + // All CSS + grunt.registerTask( 'css', [ 'sass', 'autoprefixer', 'cssmin' ] ); + + // Package presentation to archive + grunt.registerTask( 'package', [ 'default', 'zip' ] ); + + // Serve presentation locally + grunt.registerTask( 'serve', [ 'connect', 'watch' ] ); + + // Run tests + grunt.registerTask( 'test', [ 'jshint', 'qunit' ] ); + +}; diff --git a/gitlab89/LICENSE b/gitlab89/LICENSE new file mode 100644 index 0000000..faadd00 --- /dev/null +++ b/gitlab89/LICENSE @@ -0,0 +1,19 @@ +Copyright (C) 2016 Hakim El Hattab, http://hakim.se + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/gitlab89/README.md b/gitlab89/README.md new file mode 100644 index 0000000..9cf9e00 --- /dev/null +++ b/gitlab89/README.md @@ -0,0 +1,36 @@ +# Gitlab slides + +These slides were prepared for the [Tarragona Developer Meetup](http://www.meetup.com/Tarragona-Developers-Meetup/events/229781981/) to present [Gitlab](http://www.gitlab.com). + +Gitlab is a project management tool (like github), but with continious integration included, all-in-one. + +[View them online at github.io!](http://jpahullo.github.io/slides/gitlab/) + +# Slides technology + +These slides were elaborated with [reveal.js](https://github.com/hakimel/reveal.js), +a framework for easily creating beautiful presentations using HTML. +[Check out the live demo](http://lab.hakim.se/reveal-js/). + +To preview content you can clone this project and simply follow these steps: + +1. Serve the presentation and monitor source files for changes + ```sh + $ grunt serve + ``` + +2. Open to view your presentation + + You can change the port by using `grunt serve --port 8001`. + + +## Folder Structure +- **css/** Core styles without which the project does not function +- **js/** Like above but for JavaScript +- **plugin/** Components that have been developed as extensions to reveal.js +- **lib/** All other third party assets (JavaScript, CSS, fonts) + + +# License + +Free to use diff --git a/gitlab89/bower.json b/gitlab89/bower.json new file mode 100644 index 0000000..5561820 --- /dev/null +++ b/gitlab89/bower.json @@ -0,0 +1,27 @@ +{ + "name": "reveal.js", + "version": "3.2.0", + "main": [ + "js/reveal.js", + "css/reveal.css" + ], + "homepage": "http://lab.hakim.se/reveal-js/", + "license": "MIT", + "description": "The HTML Presentation Framework", + "authors": [ + "Hakim El Hattab " + ], + "dependencies": { + "headjs": "~1.0.3" + }, + "repository": { + "type": "git", + "url": "git://github.com/hakimel/reveal.js.git" + }, + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test" + ] +} \ No newline at end of file diff --git a/gitlab89/css/print/paper.css b/gitlab89/css/print/paper.css new file mode 100644 index 0000000..6588f48 --- /dev/null +++ b/gitlab89/css/print/paper.css @@ -0,0 +1,202 @@ +/* Default Print Stylesheet Template + by Rob Glazebrook of CSSnewbie.com + Last Updated: June 4, 2008 + + Feel free (nay, compelled) to edit, append, and + manipulate this file as you see fit. */ + + +@media print { + + /* SECTION 1: Set default width, margin, float, and + background. This prevents elements from extending + beyond the edge of the printed page, and prevents + unnecessary background images from printing */ + html { + background: #fff; + width: auto; + height: auto; + overflow: visible; + } + body { + background: #fff; + font-size: 20pt; + width: auto; + height: auto; + border: 0; + margin: 0 5%; + padding: 0; + overflow: visible; + float: none !important; + } + + /* SECTION 2: Remove any elements not needed in print. + This would include navigation, ads, sidebars, etc. */ + .nestedarrow, + .controls, + .fork-reveal, + .share-reveal, + .state-background, + .reveal .progress, + .reveal .backgrounds { + display: none !important; + } + + /* SECTION 3: Set body font face, size, and color. + Consider using a serif font for readability. */ + body, p, td, li, div { + font-size: 20pt!important; + font-family: Georgia, "Times New Roman", Times, serif !important; + color: #000; + } + + /* SECTION 4: Set heading font face, sizes, and color. + Differentiate your headings from your body text. + Perhaps use a large sans-serif for distinction. */ + h1,h2,h3,h4,h5,h6 { + color: #000!important; + height: auto; + line-height: normal; + font-family: Georgia, "Times New Roman", Times, serif !important; + text-shadow: 0 0 0 #000 !important; + text-align: left; + letter-spacing: normal; + } + /* Need to reduce the size of the fonts for printing */ + h1 { font-size: 28pt !important; } + h2 { font-size: 24pt !important; } + h3 { font-size: 22pt !important; } + h4 { font-size: 22pt !important; font-variant: small-caps; } + h5 { font-size: 21pt !important; } + h6 { font-size: 20pt !important; font-style: italic; } + + /* SECTION 5: Make hyperlinks more usable. + Ensure links are underlined, and consider appending + the URL to the end of the link for usability. */ + a:link, + a:visited { + color: #000 !important; + font-weight: bold; + text-decoration: underline; + } + /* + .reveal a:link:after, + .reveal a:visited:after { + content: " (" attr(href) ") "; + color: #222 !important; + font-size: 90%; + } + */ + + + /* SECTION 6: more reveal.js specific additions by @skypanther */ + ul, ol, div, p { + visibility: visible; + position: static; + width: auto; + height: auto; + display: block; + overflow: visible; + margin: 0; + text-align: left !important; + } + .reveal pre, + .reveal table { + margin-left: 0; + margin-right: 0; + } + .reveal pre code { + padding: 20px; + border: 1px solid #ddd; + } + .reveal blockquote { + margin: 20px 0; + } + .reveal .slides { + position: static !important; + width: auto !important; + height: auto !important; + + left: 0 !important; + top: 0 !important; + margin-left: 0 !important; + margin-top: 0 !important; + padding: 0 !important; + zoom: 1 !important; + + overflow: visible !important; + display: block !important; + + text-align: left !important; + -webkit-perspective: none; + -moz-perspective: none; + -ms-perspective: none; + perspective: none; + + -webkit-perspective-origin: 50% 50%; + -moz-perspective-origin: 50% 50%; + -ms-perspective-origin: 50% 50%; + perspective-origin: 50% 50%; + } + .reveal .slides section { + visibility: visible !important; + position: static !important; + width: auto !important; + height: auto !important; + display: block !important; + overflow: visible !important; + + left: 0 !important; + top: 0 !important; + margin-left: 0 !important; + margin-top: 0 !important; + padding: 60px 20px !important; + z-index: auto !important; + + opacity: 1 !important; + + page-break-after: always !important; + + -webkit-transform-style: flat !important; + -moz-transform-style: flat !important; + -ms-transform-style: flat !important; + transform-style: flat !important; + + -webkit-transform: none !important; + -moz-transform: none !important; + -ms-transform: none !important; + transform: none !important; + + -webkit-transition: none !important; + -moz-transition: none !important; + -ms-transition: none !important; + transition: none !important; + } + .reveal .slides section.stack { + padding: 0 !important; + } + .reveal section:last-of-type { + page-break-after: avoid !important; + } + .reveal section .fragment { + opacity: 1 !important; + visibility: visible !important; + + -webkit-transform: none !important; + -moz-transform: none !important; + -ms-transform: none !important; + transform: none !important; + } + .reveal section img { + display: block; + margin: 15px 0px; + background: rgba(255,255,255,1); + border: 1px solid #666; + box-shadow: none; + } + + .reveal section small { + font-size: 0.8em; + } + +} \ No newline at end of file diff --git a/gitlab89/css/print/pdf.css b/gitlab89/css/print/pdf.css new file mode 100644 index 0000000..9ed90d6 --- /dev/null +++ b/gitlab89/css/print/pdf.css @@ -0,0 +1,160 @@ +/** + * This stylesheet is used to print reveal.js + * presentations to PDF. + * + * https://github.com/hakimel/reveal.js#pdf-export + */ + +* { + -webkit-print-color-adjust: exact; +} + +body { + margin: 0 auto !important; + border: 0; + padding: 0; + float: none !important; + overflow: visible; +} + +html { + width: 100%; + height: 100%; + overflow: visible; +} + +/* Remove any elements not needed in print. */ +.nestedarrow, +.reveal .controls, +.reveal .progress, +.reveal .playback, +.reveal.overview, +.fork-reveal, +.share-reveal, +.state-background { + display: none !important; +} + +h1, h2, h3, h4, h5, h6 { + text-shadow: 0 0 0 #000 !important; +} + +.reveal pre code { + overflow: hidden !important; + font-family: Courier, 'Courier New', monospace !important; +} + +ul, ol, div, p { + visibility: visible; + position: static; + width: auto; + height: auto; + display: block; + overflow: visible; + margin: auto; +} +.reveal { + width: auto !important; + height: auto !important; + overflow: hidden !important; +} +.reveal .slides { + position: static; + width: 100%; + height: auto; + + left: auto; + top: auto; + margin: 0 !important; + padding: 0 !important; + + overflow: visible; + display: block; + + -webkit-perspective: none; + -moz-perspective: none; + -ms-perspective: none; + perspective: none; + + -webkit-perspective-origin: 50% 50%; /* there isn't a none/auto value but 50-50 is the default */ + -moz-perspective-origin: 50% 50%; + -ms-perspective-origin: 50% 50%; + perspective-origin: 50% 50%; +} + +.reveal .slides section { + page-break-after: always !important; + + visibility: visible !important; + position: relative !important; + display: block !important; + position: relative !important; + + margin: 0 !important; + padding: 0 !important; + box-sizing: border-box !important; + min-height: 1px; + + opacity: 1 !important; + + -webkit-transform-style: flat !important; + -moz-transform-style: flat !important; + -ms-transform-style: flat !important; + transform-style: flat !important; + + -webkit-transform: none !important; + -moz-transform: none !important; + -ms-transform: none !important; + transform: none !important; +} + +.reveal section.stack { + margin: 0 !important; + padding: 0 !important; + page-break-after: avoid !important; + height: auto !important; + min-height: auto !important; +} + +.reveal img { + box-shadow: none; +} + +.reveal .roll { + overflow: visible; + line-height: 1em; +} + +/* Slide backgrounds are placed inside of their slide when exporting to PDF */ +.reveal section .slide-background { + display: block !important; + position: absolute; + top: 0; + left: 0; + width: 100%; + z-index: -1; +} + +/* All elements should be above the slide-background */ +.reveal section>* { + position: relative; + z-index: 1; +} + +/* Display slide speaker notes when 'showNotes' is enabled */ +.reveal .speaker-notes-pdf { + display: block; + width: 100%; + max-height: none; + left: auto; + top: auto; + z-index: 100; +} + +/* Display slide numbers when 'slideNumber' is enabled */ +.reveal .slide-number-pdf { + display: block; + position: absolute; + font-size: 14px; +} + diff --git a/gitlab89/css/reveal.css b/gitlab89/css/reveal.css new file mode 100644 index 0000000..3af5b81 --- /dev/null +++ b/gitlab89/css/reveal.css @@ -0,0 +1,1298 @@ +/*! + * reveal.js + * http://lab.hakim.se/reveal-js + * MIT licensed + * + * Copyright (C) 2016 Hakim El Hattab, http://hakim.se + */ +/********************************************* + * RESET STYLES + *********************************************/ +html, body, .reveal div, .reveal span, .reveal applet, .reveal object, .reveal iframe, +.reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6, .reveal p, .reveal blockquote, .reveal pre, +.reveal a, .reveal abbr, .reveal acronym, .reveal address, .reveal big, .reveal cite, .reveal code, +.reveal del, .reveal dfn, .reveal em, .reveal img, .reveal ins, .reveal kbd, .reveal q, .reveal s, .reveal samp, +.reveal small, .reveal strike, .reveal strong, .reveal sub, .reveal sup, .reveal tt, .reveal var, +.reveal b, .reveal u, .reveal center, +.reveal dl, .reveal dt, .reveal dd, .reveal ol, .reveal ul, .reveal li, +.reveal fieldset, .reveal form, .reveal label, .reveal legend, +.reveal table, .reveal caption, .reveal tbody, .reveal tfoot, .reveal thead, .reveal tr, .reveal th, .reveal td, +.reveal article, .reveal aside, .reveal canvas, .reveal details, .reveal embed, +.reveal figure, .reveal figcaption, .reveal footer, .reveal header, .reveal hgroup, +.reveal menu, .reveal nav, .reveal output, .reveal ruby, .reveal section, .reveal summary, +.reveal time, .reveal mark, .reveal audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; } + +.reveal article, .reveal aside, .reveal details, .reveal figcaption, .reveal figure, +.reveal footer, .reveal header, .reveal hgroup, .reveal menu, .reveal nav, .reveal section { + display: block; } + +/********************************************* + * GLOBAL STYLES + *********************************************/ +html, +body { + width: 100%; + height: 100%; + overflow: hidden; } + +body { + position: relative; + line-height: 1; + background-color: #fff; + color: #000; } + +html:-webkit-full-screen-ancestor { + background-color: inherit; } + +html:-moz-full-screen-ancestor { + background-color: inherit; } + +/********************************************* + * VIEW FRAGMENTS + *********************************************/ +.reveal .slides section .fragment { + opacity: 0; + visibility: hidden; + -webkit-transition: all .2s ease; + transition: all .2s ease; } + .reveal .slides section .fragment.visible { + opacity: 1; + visibility: visible; } + +.reveal .slides section .fragment.grow { + opacity: 1; + visibility: visible; } + .reveal .slides section .fragment.grow.visible { + -webkit-transform: scale(1.3); + transform: scale(1.3); } + +.reveal .slides section .fragment.shrink { + opacity: 1; + visibility: visible; } + .reveal .slides section .fragment.shrink.visible { + -webkit-transform: scale(0.7); + transform: scale(0.7); } + +.reveal .slides section .fragment.zoom-in { + -webkit-transform: scale(0.1); + transform: scale(0.1); } + .reveal .slides section .fragment.zoom-in.visible { + -webkit-transform: none; + transform: none; } + +.reveal .slides section .fragment.fade-out { + opacity: 1; + visibility: visible; } + .reveal .slides section .fragment.fade-out.visible { + opacity: 0; + visibility: hidden; } + +.reveal .slides section .fragment.semi-fade-out { + opacity: 1; + visibility: visible; } + .reveal .slides section .fragment.semi-fade-out.visible { + opacity: 0.5; + visibility: visible; } + +.reveal .slides section .fragment.strike { + opacity: 1; + visibility: visible; } + .reveal .slides section .fragment.strike.visible { + text-decoration: line-through; } + +.reveal .slides section .fragment.current-visible { + opacity: 0; + visibility: hidden; } + .reveal .slides section .fragment.current-visible.current-fragment { + opacity: 1; + visibility: visible; } + +.reveal .slides section .fragment.highlight-red, +.reveal .slides section .fragment.highlight-current-red, +.reveal .slides section .fragment.highlight-green, +.reveal .slides section .fragment.highlight-current-green, +.reveal .slides section .fragment.highlight-blue, +.reveal .slides section .fragment.highlight-current-blue { + opacity: 1; + visibility: visible; } + +.reveal .slides section .fragment.highlight-red.visible { + color: #ff2c2d; } + +.reveal .slides section .fragment.highlight-green.visible { + color: #17ff2e; } + +.reveal .slides section .fragment.highlight-blue.visible { + color: #1b91ff; } + +.reveal .slides section .fragment.highlight-current-red.current-fragment { + color: #ff2c2d; } + +.reveal .slides section .fragment.highlight-current-green.current-fragment { + color: #17ff2e; } + +.reveal .slides section .fragment.highlight-current-blue.current-fragment { + color: #1b91ff; } + +/********************************************* + * DEFAULT ELEMENT STYLES + *********************************************/ +/* Fixes issue in Chrome where italic fonts did not appear when printing to PDF */ +.reveal:after { + content: ''; + font-style: italic; } + +.reveal iframe { + z-index: 1; } + +/** Prevents layering issues in certain browser/transition combinations */ +.reveal a { + position: relative; } + +.reveal .stretch { + max-width: none; + max-height: none; } + +.reveal pre.stretch code { + height: 100%; + max-height: 100%; + box-sizing: border-box; } + +/********************************************* + * CONTROLS + *********************************************/ +.reveal .controls { + display: none; + position: fixed; + width: 110px; + height: 110px; + z-index: 30; + right: 10px; + bottom: 10px; + -webkit-user-select: none; } + +.reveal .controls button { + padding: 0; + position: absolute; + opacity: 0.05; + width: 0; + height: 0; + background-color: transparent; + border: 12px solid transparent; + -webkit-transform: scale(0.9999); + transform: scale(0.9999); + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + -webkit-appearance: none; + -webkit-tap-highlight-color: transparent; } + +.reveal .controls .enabled { + opacity: 0.7; + cursor: pointer; } + +.reveal .controls .enabled:active { + margin-top: 1px; } + +.reveal .controls .navigate-left { + top: 42px; + border-right-width: 22px; + border-right-color: #000; } + +.reveal .controls .navigate-left.fragmented { + opacity: 0.3; } + +.reveal .controls .navigate-right { + left: 74px; + top: 42px; + border-left-width: 22px; + border-left-color: #000; } + +.reveal .controls .navigate-right.fragmented { + opacity: 0.3; } + +.reveal .controls .navigate-up { + left: 42px; + border-bottom-width: 22px; + border-bottom-color: #000; } + +.reveal .controls .navigate-up.fragmented { + opacity: 0.3; } + +.reveal .controls .navigate-down { + left: 42px; + top: 74px; + border-top-width: 22px; + border-top-color: #000; } + +.reveal .controls .navigate-down.fragmented { + opacity: 0.3; } + +/********************************************* + * PROGRESS BAR + *********************************************/ +.reveal .progress { + position: fixed; + display: none; + height: 3px; + width: 100%; + bottom: 0; + left: 0; + z-index: 10; + background-color: rgba(0, 0, 0, 0.2); } + +.reveal .progress:after { + content: ''; + display: block; + position: absolute; + height: 20px; + width: 100%; + top: -20px; } + +.reveal .progress span { + display: block; + height: 100%; + width: 0px; + background-color: #000; + -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } + +/********************************************* + * SLIDE NUMBER + *********************************************/ +.reveal .slide-number { + position: fixed; + display: block; + right: 8px; + bottom: 8px; + z-index: 31; + font-family: Helvetica, sans-serif; + font-size: 12px; + line-height: 1; + color: #fff; + background-color: rgba(0, 0, 0, 0.4); + padding: 5px; } + +.reveal .slide-number-delimiter { + margin: 0 3px; } + +/********************************************* + * SLIDES + *********************************************/ +.reveal { + position: relative; + width: 100%; + height: 100%; + overflow: hidden; + -ms-touch-action: none; + touch-action: none; } + +.reveal .slides { + position: absolute; + width: 100%; + height: 100%; + top: 0; + right: 0; + bottom: 0; + left: 0; + margin: auto; + overflow: visible; + z-index: 1; + text-align: center; + -webkit-perspective: 600px; + perspective: 600px; + -webkit-perspective-origin: 50% 40%; + perspective-origin: 50% 40%; } + +.reveal .slides > section { + -ms-perspective: 600px; } + +.reveal .slides > section, +.reveal .slides > section > section { + display: none; + position: absolute; + width: 100%; + padding: 20px 0px; + z-index: 10; + -webkit-transform-style: preserve-3d; + transform-style: preserve-3d; + -webkit-transition: -webkit-transform-origin 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985), -webkit-transform 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985), visibility 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985), opacity 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + transition: transform-origin 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985), transform 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985), visibility 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985), opacity 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } + +/* Global transition speed settings */ +.reveal[data-transition-speed="fast"] .slides section { + -webkit-transition-duration: 400ms; + transition-duration: 400ms; } + +.reveal[data-transition-speed="slow"] .slides section { + -webkit-transition-duration: 1200ms; + transition-duration: 1200ms; } + +/* Slide-specific transition speed overrides */ +.reveal .slides section[data-transition-speed="fast"] { + -webkit-transition-duration: 400ms; + transition-duration: 400ms; } + +.reveal .slides section[data-transition-speed="slow"] { + -webkit-transition-duration: 1200ms; + transition-duration: 1200ms; } + +.reveal .slides > section.stack { + padding-top: 0; + padding-bottom: 0; } + +.reveal .slides > section.present, +.reveal .slides > section > section.present { + display: block; + z-index: 11; + opacity: 1; } + +.reveal.center, +.reveal.center .slides, +.reveal.center .slides section { + min-height: 0 !important; } + +/* Don't allow interaction with invisible slides */ +.reveal .slides > section.future, +.reveal .slides > section > section.future, +.reveal .slides > section.past, +.reveal .slides > section > section.past { + pointer-events: none; } + +.reveal.overview .slides > section, +.reveal.overview .slides > section > section { + pointer-events: auto; } + +.reveal .slides > section.past, +.reveal .slides > section.future, +.reveal .slides > section > section.past, +.reveal .slides > section > section.future { + opacity: 0; } + +/********************************************* + * Mixins for readability of transitions + *********************************************/ +/********************************************* + * SLIDE TRANSITION + * Aliased 'linear' for backwards compatibility + *********************************************/ +.reveal.slide section { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; } + +.reveal .slides > section[data-transition=slide].past, +.reveal .slides > section[data-transition~=slide-out].past, +.reveal.slide .slides > section:not([data-transition]).past { + -webkit-transform: translate(-150%, 0); + transform: translate(-150%, 0); } + +.reveal .slides > section[data-transition=slide].future, +.reveal .slides > section[data-transition~=slide-in].future, +.reveal.slide .slides > section:not([data-transition]).future { + -webkit-transform: translate(150%, 0); + transform: translate(150%, 0); } + +.reveal .slides > section > section[data-transition=slide].past, +.reveal .slides > section > section[data-transition~=slide-out].past, +.reveal.slide .slides > section > section:not([data-transition]).past { + -webkit-transform: translate(0, -150%); + transform: translate(0, -150%); } + +.reveal .slides > section > section[data-transition=slide].future, +.reveal .slides > section > section[data-transition~=slide-in].future, +.reveal.slide .slides > section > section:not([data-transition]).future { + -webkit-transform: translate(0, 150%); + transform: translate(0, 150%); } + +.reveal.linear section { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; } + +.reveal .slides > section[data-transition=linear].past, +.reveal .slides > section[data-transition~=linear-out].past, +.reveal.linear .slides > section:not([data-transition]).past { + -webkit-transform: translate(-150%, 0); + transform: translate(-150%, 0); } + +.reveal .slides > section[data-transition=linear].future, +.reveal .slides > section[data-transition~=linear-in].future, +.reveal.linear .slides > section:not([data-transition]).future { + -webkit-transform: translate(150%, 0); + transform: translate(150%, 0); } + +.reveal .slides > section > section[data-transition=linear].past, +.reveal .slides > section > section[data-transition~=linear-out].past, +.reveal.linear .slides > section > section:not([data-transition]).past { + -webkit-transform: translate(0, -150%); + transform: translate(0, -150%); } + +.reveal .slides > section > section[data-transition=linear].future, +.reveal .slides > section > section[data-transition~=linear-in].future, +.reveal.linear .slides > section > section:not([data-transition]).future { + -webkit-transform: translate(0, 150%); + transform: translate(0, 150%); } + +/********************************************* + * CONVEX TRANSITION + * Aliased 'default' for backwards compatibility + *********************************************/ +.reveal .slides > section[data-transition=default].past, +.reveal .slides > section[data-transition~=default-out].past, +.reveal.default .slides > section:not([data-transition]).past { + -webkit-transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0); } + +.reveal .slides > section[data-transition=default].future, +.reveal .slides > section[data-transition~=default-in].future, +.reveal.default .slides > section:not([data-transition]).future { + -webkit-transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0); } + +.reveal .slides > section > section[data-transition=default].past, +.reveal .slides > section > section[data-transition~=default-out].past, +.reveal.default .slides > section > section:not([data-transition]).past { + -webkit-transform: translate3d(0, -300px, 0) rotateX(70deg) translate3d(0, -300px, 0); + transform: translate3d(0, -300px, 0) rotateX(70deg) translate3d(0, -300px, 0); } + +.reveal .slides > section > section[data-transition=default].future, +.reveal .slides > section > section[data-transition~=default-in].future, +.reveal.default .slides > section > section:not([data-transition]).future { + -webkit-transform: translate3d(0, 300px, 0) rotateX(-70deg) translate3d(0, 300px, 0); + transform: translate3d(0, 300px, 0) rotateX(-70deg) translate3d(0, 300px, 0); } + +.reveal .slides > section[data-transition=convex].past, +.reveal .slides > section[data-transition~=convex-out].past, +.reveal.convex .slides > section:not([data-transition]).past { + -webkit-transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0); } + +.reveal .slides > section[data-transition=convex].future, +.reveal .slides > section[data-transition~=convex-in].future, +.reveal.convex .slides > section:not([data-transition]).future { + -webkit-transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0); } + +.reveal .slides > section > section[data-transition=convex].past, +.reveal .slides > section > section[data-transition~=convex-out].past, +.reveal.convex .slides > section > section:not([data-transition]).past { + -webkit-transform: translate3d(0, -300px, 0) rotateX(70deg) translate3d(0, -300px, 0); + transform: translate3d(0, -300px, 0) rotateX(70deg) translate3d(0, -300px, 0); } + +.reveal .slides > section > section[data-transition=convex].future, +.reveal .slides > section > section[data-transition~=convex-in].future, +.reveal.convex .slides > section > section:not([data-transition]).future { + -webkit-transform: translate3d(0, 300px, 0) rotateX(-70deg) translate3d(0, 300px, 0); + transform: translate3d(0, 300px, 0) rotateX(-70deg) translate3d(0, 300px, 0); } + +/********************************************* + * CONCAVE TRANSITION + *********************************************/ +.reveal .slides > section[data-transition=concave].past, +.reveal .slides > section[data-transition~=concave-out].past, +.reveal.concave .slides > section:not([data-transition]).past { + -webkit-transform: translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0); } + +.reveal .slides > section[data-transition=concave].future, +.reveal .slides > section[data-transition~=concave-in].future, +.reveal.concave .slides > section:not([data-transition]).future { + -webkit-transform: translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0); } + +.reveal .slides > section > section[data-transition=concave].past, +.reveal .slides > section > section[data-transition~=concave-out].past, +.reveal.concave .slides > section > section:not([data-transition]).past { + -webkit-transform: translate3d(0, -80%, 0) rotateX(-70deg) translate3d(0, -80%, 0); + transform: translate3d(0, -80%, 0) rotateX(-70deg) translate3d(0, -80%, 0); } + +.reveal .slides > section > section[data-transition=concave].future, +.reveal .slides > section > section[data-transition~=concave-in].future, +.reveal.concave .slides > section > section:not([data-transition]).future { + -webkit-transform: translate3d(0, 80%, 0) rotateX(70deg) translate3d(0, 80%, 0); + transform: translate3d(0, 80%, 0) rotateX(70deg) translate3d(0, 80%, 0); } + +/********************************************* + * ZOOM TRANSITION + *********************************************/ +.reveal .slides section[data-transition=zoom], +.reveal.zoom .slides section:not([data-transition]) { + -webkit-transition-timing-function: ease; + transition-timing-function: ease; } + +.reveal .slides > section[data-transition=zoom].past, +.reveal .slides > section[data-transition~=zoom-out].past, +.reveal.zoom .slides > section:not([data-transition]).past { + visibility: hidden; + -webkit-transform: scale(16); + transform: scale(16); } + +.reveal .slides > section[data-transition=zoom].future, +.reveal .slides > section[data-transition~=zoom-in].future, +.reveal.zoom .slides > section:not([data-transition]).future { + visibility: hidden; + -webkit-transform: scale(0.2); + transform: scale(0.2); } + +.reveal .slides > section > section[data-transition=zoom].past, +.reveal .slides > section > section[data-transition~=zoom-out].past, +.reveal.zoom .slides > section > section:not([data-transition]).past { + -webkit-transform: translate(0, -150%); + transform: translate(0, -150%); } + +.reveal .slides > section > section[data-transition=zoom].future, +.reveal .slides > section > section[data-transition~=zoom-in].future, +.reveal.zoom .slides > section > section:not([data-transition]).future { + -webkit-transform: translate(0, 150%); + transform: translate(0, 150%); } + +/********************************************* + * CUBE TRANSITION + *********************************************/ +.reveal.cube .slides { + -webkit-perspective: 1300px; + perspective: 1300px; } + +.reveal.cube .slides section { + padding: 30px; + min-height: 700px; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + box-sizing: border-box; } + +.reveal.center.cube .slides section { + min-height: 0; } + +.reveal.cube .slides section:not(.stack):before { + content: ''; + position: absolute; + display: block; + width: 100%; + height: 100%; + left: 0; + top: 0; + background: rgba(0, 0, 0, 0.1); + border-radius: 4px; + -webkit-transform: translateZ(-20px); + transform: translateZ(-20px); } + +.reveal.cube .slides section:not(.stack):after { + content: ''; + position: absolute; + display: block; + width: 90%; + height: 30px; + left: 5%; + bottom: 0; + background: none; + z-index: 1; + border-radius: 4px; + box-shadow: 0px 95px 25px rgba(0, 0, 0, 0.2); + -webkit-transform: translateZ(-90px) rotateX(65deg); + transform: translateZ(-90px) rotateX(65deg); } + +.reveal.cube .slides > section.stack { + padding: 0; + background: none; } + +.reveal.cube .slides > section.past { + -webkit-transform-origin: 100% 0%; + transform-origin: 100% 0%; + -webkit-transform: translate3d(-100%, 0, 0) rotateY(-90deg); + transform: translate3d(-100%, 0, 0) rotateY(-90deg); } + +.reveal.cube .slides > section.future { + -webkit-transform-origin: 0% 0%; + transform-origin: 0% 0%; + -webkit-transform: translate3d(100%, 0, 0) rotateY(90deg); + transform: translate3d(100%, 0, 0) rotateY(90deg); } + +.reveal.cube .slides > section > section.past { + -webkit-transform-origin: 0% 100%; + transform-origin: 0% 100%; + -webkit-transform: translate3d(0, -100%, 0) rotateX(90deg); + transform: translate3d(0, -100%, 0) rotateX(90deg); } + +.reveal.cube .slides > section > section.future { + -webkit-transform-origin: 0% 0%; + transform-origin: 0% 0%; + -webkit-transform: translate3d(0, 100%, 0) rotateX(-90deg); + transform: translate3d(0, 100%, 0) rotateX(-90deg); } + +/********************************************* + * PAGE TRANSITION + *********************************************/ +.reveal.page .slides { + -webkit-perspective-origin: 0% 50%; + perspective-origin: 0% 50%; + -webkit-perspective: 3000px; + perspective: 3000px; } + +.reveal.page .slides section { + padding: 30px; + min-height: 700px; + box-sizing: border-box; } + +.reveal.page .slides section.past { + z-index: 12; } + +.reveal.page .slides section:not(.stack):before { + content: ''; + position: absolute; + display: block; + width: 100%; + height: 100%; + left: 0; + top: 0; + background: rgba(0, 0, 0, 0.1); + -webkit-transform: translateZ(-20px); + transform: translateZ(-20px); } + +.reveal.page .slides section:not(.stack):after { + content: ''; + position: absolute; + display: block; + width: 90%; + height: 30px; + left: 5%; + bottom: 0; + background: none; + z-index: 1; + border-radius: 4px; + box-shadow: 0px 95px 25px rgba(0, 0, 0, 0.2); + -webkit-transform: translateZ(-90px) rotateX(65deg); } + +.reveal.page .slides > section.stack { + padding: 0; + background: none; } + +.reveal.page .slides > section.past { + -webkit-transform-origin: 0% 0%; + transform-origin: 0% 0%; + -webkit-transform: translate3d(-40%, 0, 0) rotateY(-80deg); + transform: translate3d(-40%, 0, 0) rotateY(-80deg); } + +.reveal.page .slides > section.future { + -webkit-transform-origin: 100% 0%; + transform-origin: 100% 0%; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + +.reveal.page .slides > section > section.past { + -webkit-transform-origin: 0% 0%; + transform-origin: 0% 0%; + -webkit-transform: translate3d(0, -40%, 0) rotateX(80deg); + transform: translate3d(0, -40%, 0) rotateX(80deg); } + +.reveal.page .slides > section > section.future { + -webkit-transform-origin: 0% 100%; + transform-origin: 0% 100%; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + +/********************************************* + * FADE TRANSITION + *********************************************/ +.reveal .slides section[data-transition=fade], +.reveal.fade .slides section:not([data-transition]), +.reveal.fade .slides > section > section:not([data-transition]) { + -webkit-transform: none; + transform: none; + -webkit-transition: opacity 0.5s; + transition: opacity 0.5s; } + +.reveal.fade.overview .slides section, +.reveal.fade.overview .slides > section > section { + -webkit-transition: none; + transition: none; } + +/********************************************* + * NO TRANSITION + *********************************************/ +.reveal .slides section[data-transition=none], +.reveal.none .slides section:not([data-transition]) { + -webkit-transform: none; + transform: none; + -webkit-transition: none; + transition: none; } + +/********************************************* + * PAUSED MODE + *********************************************/ +.reveal .pause-overlay { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: black; + visibility: hidden; + opacity: 0; + z-index: 100; + -webkit-transition: all 1s ease; + transition: all 1s ease; } + +.reveal.paused .pause-overlay { + visibility: visible; + opacity: 1; } + +/********************************************* + * FALLBACK + *********************************************/ +.no-transforms { + overflow-y: auto; } + +.no-transforms .reveal .slides { + position: relative; + width: 80%; + height: auto !important; + top: 0; + left: 50%; + margin: 0; + text-align: center; } + +.no-transforms .reveal .controls, +.no-transforms .reveal .progress { + display: none !important; } + +.no-transforms .reveal .slides section { + display: block !important; + opacity: 1 !important; + position: relative !important; + height: auto; + min-height: 0; + top: 0; + left: -50%; + margin: 70px 0; + -webkit-transform: none; + transform: none; } + +.no-transforms .reveal .slides section section { + left: 0; } + +.reveal .no-transition, +.reveal .no-transition * { + -webkit-transition: none !important; + transition: none !important; } + +/********************************************* + * PER-SLIDE BACKGROUNDS + *********************************************/ +.reveal .backgrounds { + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + -webkit-perspective: 600px; + perspective: 600px; } + +.reveal .slide-background { + display: none; + position: absolute; + width: 100%; + height: 100%; + opacity: 0; + visibility: hidden; + background-color: transparent; + background-position: 50% 50%; + background-repeat: no-repeat; + background-size: cover; + -webkit-transition: all 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + transition: all 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } + +.reveal .slide-background.stack { + display: block; } + +.reveal .slide-background.present { + opacity: 1; + visibility: visible; } + +.print-pdf .reveal .slide-background { + opacity: 1 !important; + visibility: visible !important; } + +/* Video backgrounds */ +.reveal .slide-background video { + position: absolute; + width: 100%; + height: 100%; + max-width: none; + max-height: none; + top: 0; + left: 0; } + +/* Immediate transition style */ +.reveal[data-background-transition=none] > .backgrounds .slide-background, +.reveal > .backgrounds .slide-background[data-background-transition=none] { + -webkit-transition: none; + transition: none; } + +/* Slide */ +.reveal[data-background-transition=slide] > .backgrounds .slide-background, +.reveal > .backgrounds .slide-background[data-background-transition=slide] { + opacity: 1; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; } + +.reveal[data-background-transition=slide] > .backgrounds .slide-background.past, +.reveal > .backgrounds .slide-background.past[data-background-transition=slide] { + -webkit-transform: translate(-100%, 0); + transform: translate(-100%, 0); } + +.reveal[data-background-transition=slide] > .backgrounds .slide-background.future, +.reveal > .backgrounds .slide-background.future[data-background-transition=slide] { + -webkit-transform: translate(100%, 0); + transform: translate(100%, 0); } + +.reveal[data-background-transition=slide] > .backgrounds .slide-background > .slide-background.past, +.reveal > .backgrounds .slide-background > .slide-background.past[data-background-transition=slide] { + -webkit-transform: translate(0, -100%); + transform: translate(0, -100%); } + +.reveal[data-background-transition=slide] > .backgrounds .slide-background > .slide-background.future, +.reveal > .backgrounds .slide-background > .slide-background.future[data-background-transition=slide] { + -webkit-transform: translate(0, 100%); + transform: translate(0, 100%); } + +/* Convex */ +.reveal[data-background-transition=convex] > .backgrounds .slide-background.past, +.reveal > .backgrounds .slide-background.past[data-background-transition=convex] { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0); } + +.reveal[data-background-transition=convex] > .backgrounds .slide-background.future, +.reveal > .backgrounds .slide-background.future[data-background-transition=convex] { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0); } + +.reveal[data-background-transition=convex] > .backgrounds .slide-background > .slide-background.past, +.reveal > .backgrounds .slide-background > .slide-background.past[data-background-transition=convex] { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0) rotateX(90deg) translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0) rotateX(90deg) translate3d(0, -100%, 0); } + +.reveal[data-background-transition=convex] > .backgrounds .slide-background > .slide-background.future, +.reveal > .backgrounds .slide-background > .slide-background.future[data-background-transition=convex] { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0) rotateX(-90deg) translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0) rotateX(-90deg) translate3d(0, 100%, 0); } + +/* Concave */ +.reveal[data-background-transition=concave] > .backgrounds .slide-background.past, +.reveal > .backgrounds .slide-background.past[data-background-transition=concave] { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0); } + +.reveal[data-background-transition=concave] > .backgrounds .slide-background.future, +.reveal > .backgrounds .slide-background.future[data-background-transition=concave] { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0); } + +.reveal[data-background-transition=concave] > .backgrounds .slide-background > .slide-background.past, +.reveal > .backgrounds .slide-background > .slide-background.past[data-background-transition=concave] { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0) rotateX(-90deg) translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0) rotateX(-90deg) translate3d(0, -100%, 0); } + +.reveal[data-background-transition=concave] > .backgrounds .slide-background > .slide-background.future, +.reveal > .backgrounds .slide-background > .slide-background.future[data-background-transition=concave] { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0) rotateX(90deg) translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0) rotateX(90deg) translate3d(0, 100%, 0); } + +/* Zoom */ +.reveal[data-background-transition=zoom] > .backgrounds .slide-background, +.reveal > .backgrounds .slide-background[data-background-transition=zoom] { + -webkit-transition-timing-function: ease; + transition-timing-function: ease; } + +.reveal[data-background-transition=zoom] > .backgrounds .slide-background.past, +.reveal > .backgrounds .slide-background.past[data-background-transition=zoom] { + opacity: 0; + visibility: hidden; + -webkit-transform: scale(16); + transform: scale(16); } + +.reveal[data-background-transition=zoom] > .backgrounds .slide-background.future, +.reveal > .backgrounds .slide-background.future[data-background-transition=zoom] { + opacity: 0; + visibility: hidden; + -webkit-transform: scale(0.2); + transform: scale(0.2); } + +.reveal[data-background-transition=zoom] > .backgrounds .slide-background > .slide-background.past, +.reveal > .backgrounds .slide-background > .slide-background.past[data-background-transition=zoom] { + opacity: 0; + visibility: hidden; + -webkit-transform: scale(16); + transform: scale(16); } + +.reveal[data-background-transition=zoom] > .backgrounds .slide-background > .slide-background.future, +.reveal > .backgrounds .slide-background > .slide-background.future[data-background-transition=zoom] { + opacity: 0; + visibility: hidden; + -webkit-transform: scale(0.2); + transform: scale(0.2); } + +/* Global transition speed settings */ +.reveal[data-transition-speed="fast"] > .backgrounds .slide-background { + -webkit-transition-duration: 400ms; + transition-duration: 400ms; } + +.reveal[data-transition-speed="slow"] > .backgrounds .slide-background { + -webkit-transition-duration: 1200ms; + transition-duration: 1200ms; } + +/********************************************* + * OVERVIEW + *********************************************/ +.reveal.overview { + -webkit-perspective-origin: 50% 50%; + perspective-origin: 50% 50%; + -webkit-perspective: 700px; + perspective: 700px; } + .reveal.overview .slides section { + height: 700px; + opacity: 1 !important; + overflow: hidden; + visibility: visible !important; + cursor: pointer; + box-sizing: border-box; } + .reveal.overview .slides section:hover, + .reveal.overview .slides section.present { + outline: 10px solid rgba(150, 150, 150, 0.4); + outline-offset: 10px; } + .reveal.overview .slides section .fragment { + opacity: 1; + -webkit-transition: none; + transition: none; } + .reveal.overview .slides section:after, + .reveal.overview .slides section:before { + display: none !important; } + .reveal.overview .slides > section.stack { + padding: 0; + top: 0 !important; + background: none; + outline: none; + overflow: visible; } + .reveal.overview .backgrounds { + -webkit-perspective: inherit; + perspective: inherit; } + .reveal.overview .backgrounds .slide-background { + opacity: 1; + visibility: visible; + outline: 10px solid rgba(150, 150, 150, 0.1); + outline-offset: 10px; } + +.reveal.overview .slides section, +.reveal.overview-deactivating .slides section { + -webkit-transition: none; + transition: none; } + +.reveal.overview .backgrounds .slide-background, +.reveal.overview-deactivating .backgrounds .slide-background { + -webkit-transition: none; + transition: none; } + +.reveal.overview-animated .slides { + -webkit-transition: -webkit-transform 0.4s ease; + transition: transform 0.4s ease; } + +/********************************************* + * RTL SUPPORT + *********************************************/ +.reveal.rtl .slides, +.reveal.rtl .slides h1, +.reveal.rtl .slides h2, +.reveal.rtl .slides h3, +.reveal.rtl .slides h4, +.reveal.rtl .slides h5, +.reveal.rtl .slides h6 { + direction: rtl; + font-family: sans-serif; } + +.reveal.rtl pre, +.reveal.rtl code { + direction: ltr; } + +.reveal.rtl ol, +.reveal.rtl ul { + text-align: right; } + +.reveal.rtl .progress span { + float: right; } + +/********************************************* + * PARALLAX BACKGROUND + *********************************************/ +.reveal.has-parallax-background .backgrounds { + -webkit-transition: all 0.8s ease; + transition: all 0.8s ease; } + +/* Global transition speed settings */ +.reveal.has-parallax-background[data-transition-speed="fast"] .backgrounds { + -webkit-transition-duration: 400ms; + transition-duration: 400ms; } + +.reveal.has-parallax-background[data-transition-speed="slow"] .backgrounds { + -webkit-transition-duration: 1200ms; + transition-duration: 1200ms; } + +/********************************************* + * LINK PREVIEW OVERLAY + *********************************************/ +.reveal .overlay { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 1000; + background: rgba(0, 0, 0, 0.9); + opacity: 0; + visibility: hidden; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; } + +.reveal .overlay.visible { + opacity: 1; + visibility: visible; } + +.reveal .overlay .spinner { + position: absolute; + display: block; + top: 50%; + left: 50%; + width: 32px; + height: 32px; + margin: -16px 0 0 -16px; + z-index: 10; + background-image: url(data:image/gif;base64,R0lGODlhIAAgAPMAAJmZmf%2F%2F%2F6%2Bvr8nJybW1tcDAwOjo6Nvb26ioqKOjo7Ozs%2FLy8vz8%2FAAAAAAAAAAAACH%2FC05FVFNDQVBFMi4wAwEAAAAh%2FhpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh%2BQQJCgAAACwAAAAAIAAgAAAE5xDISWlhperN52JLhSSdRgwVo1ICQZRUsiwHpTJT4iowNS8vyW2icCF6k8HMMBkCEDskxTBDAZwuAkkqIfxIQyhBQBFvAQSDITM5VDW6XNE4KagNh6Bgwe60smQUB3d4Rz1ZBApnFASDd0hihh12BkE9kjAJVlycXIg7CQIFA6SlnJ87paqbSKiKoqusnbMdmDC2tXQlkUhziYtyWTxIfy6BE8WJt5YJvpJivxNaGmLHT0VnOgSYf0dZXS7APdpB309RnHOG5gDqXGLDaC457D1zZ%2FV%2FnmOM82XiHRLYKhKP1oZmADdEAAAh%2BQQJCgAAACwAAAAAIAAgAAAE6hDISWlZpOrNp1lGNRSdRpDUolIGw5RUYhhHukqFu8DsrEyqnWThGvAmhVlteBvojpTDDBUEIFwMFBRAmBkSgOrBFZogCASwBDEY%2FCZSg7GSE0gSCjQBMVG023xWBhklAnoEdhQEfyNqMIcKjhRsjEdnezB%2BA4k8gTwJhFuiW4dokXiloUepBAp5qaKpp6%2BHo7aWW54wl7obvEe0kRuoplCGepwSx2jJvqHEmGt6whJpGpfJCHmOoNHKaHx61WiSR92E4lbFoq%2BB6QDtuetcaBPnW6%2BO7wDHpIiK9SaVK5GgV543tzjgGcghAgAh%2BQQJCgAAACwAAAAAIAAgAAAE7hDISSkxpOrN5zFHNWRdhSiVoVLHspRUMoyUakyEe8PTPCATW9A14E0UvuAKMNAZKYUZCiBMuBakSQKG8G2FzUWox2AUtAQFcBKlVQoLgQReZhQlCIJesQXI5B0CBnUMOxMCenoCfTCEWBsJColTMANldx15BGs8B5wlCZ9Po6OJkwmRpnqkqnuSrayqfKmqpLajoiW5HJq7FL1Gr2mMMcKUMIiJgIemy7xZtJsTmsM4xHiKv5KMCXqfyUCJEonXPN2rAOIAmsfB3uPoAK%2B%2BG%2Bw48edZPK%2BM6hLJpQg484enXIdQFSS1u6UhksENEQAAIfkECQoAAAAsAAAAACAAIAAABOcQyEmpGKLqzWcZRVUQnZYg1aBSh2GUVEIQ2aQOE%2BG%2BcD4ntpWkZQj1JIiZIogDFFyHI0UxQwFugMSOFIPJftfVAEoZLBbcLEFhlQiqGp1Vd140AUklUN3eCA51C1EWMzMCezCBBmkxVIVHBWd3HHl9JQOIJSdSnJ0TDKChCwUJjoWMPaGqDKannasMo6WnM562R5YluZRwur0wpgqZE7NKUm%2BFNRPIhjBJxKZteWuIBMN4zRMIVIhffcgojwCF117i4nlLnY5ztRLsnOk%2BaV%2BoJY7V7m76PdkS4trKcdg0Zc0tTcKkRAAAIfkECQoAAAAsAAAAACAAIAAABO4QyEkpKqjqzScpRaVkXZWQEximw1BSCUEIlDohrft6cpKCk5xid5MNJTaAIkekKGQkWyKHkvhKsR7ARmitkAYDYRIbUQRQjWBwJRzChi9CRlBcY1UN4g0%2FVNB0AlcvcAYHRyZPdEQFYV8ccwR5HWxEJ02YmRMLnJ1xCYp0Y5idpQuhopmmC2KgojKasUQDk5BNAwwMOh2RtRq5uQuPZKGIJQIGwAwGf6I0JXMpC8C7kXWDBINFMxS4DKMAWVWAGYsAdNqW5uaRxkSKJOZKaU3tPOBZ4DuK2LATgJhkPJMgTwKCdFjyPHEnKxFCDhEAACH5BAkKAAAALAAAAAAgACAAAATzEMhJaVKp6s2nIkolIJ2WkBShpkVRWqqQrhLSEu9MZJKK9y1ZrqYK9WiClmvoUaF8gIQSNeF1Er4MNFn4SRSDARWroAIETg1iVwuHjYB1kYc1mwruwXKC9gmsJXliGxc%2BXiUCby9ydh1sOSdMkpMTBpaXBzsfhoc5l58Gm5yToAaZhaOUqjkDgCWNHAULCwOLaTmzswadEqggQwgHuQsHIoZCHQMMQgQGubVEcxOPFAcMDAYUA85eWARmfSRQCdcMe0zeP1AAygwLlJtPNAAL19DARdPzBOWSm1brJBi45soRAWQAAkrQIykShQ9wVhHCwCQCACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiRMDjI0Fd30%2FiI2UA5GSS5UDj2l6NoqgOgN4gksEBgYFf0FDqKgHnyZ9OX8HrgYHdHpcHQULXAS2qKpENRg7eAMLC7kTBaixUYFkKAzWAAnLC7FLVxLWDBLKCwaKTULgEwbLA4hJtOkSBNqITT3xEgfLpBtzE%2FjiuL04RGEBgwWhShRgQExHBAAh%2BQQJCgAAACwAAAAAIAAgAAAE7xDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfZiCqGk5dTESJeaOAlClzsJsqwiJwiqnFrb2nS9kmIcgEsjQydLiIlHehhpejaIjzh9eomSjZR%2BipslWIRLAgMDOR2DOqKogTB9pCUJBagDBXR6XB0EBkIIsaRsGGMMAxoDBgYHTKJiUYEGDAzHC9EACcUGkIgFzgwZ0QsSBcXHiQvOwgDdEwfFs0sDzt4S6BK4xYjkDOzn0unFeBzOBijIm1Dgmg5YFQwsCMjp1oJ8LyIAACH5BAkKAAAALAAAAAAgACAAAATwEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GGl6NoiPOH16iZKNlH6KmyWFOggHhEEvAwwMA0N9GBsEC6amhnVcEwavDAazGwIDaH1ipaYLBUTCGgQDA8NdHz0FpqgTBwsLqAbWAAnIA4FWKdMLGdYGEgraigbT0OITBcg5QwPT4xLrROZL6AuQAPUS7bxLpoWidY0JtxLHKhwwMJBTHgPKdEQAACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GAULDJCRiXo1CpGXDJOUjY%2BYip9DhToJA4RBLwMLCwVDfRgbBAaqqoZ1XBMHswsHtxtFaH1iqaoGNgAIxRpbFAgfPQSqpbgGBqUD1wBXeCYp1AYZ19JJOYgH1KwA4UBvQwXUBxPqVD9L3sbp2BNk2xvvFPJd%2BMFCN6HAAIKgNggY0KtEBAAh%2BQQJCgAAACwAAAAAIAAgAAAE6BDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfYIDMaAFdTESJeaEDAIMxYFqrOUaNW4E4ObYcCXaiBVEgULe0NJaxxtYksjh2NLkZISgDgJhHthkpU4mW6blRiYmZOlh4JWkDqILwUGBnE6TYEbCgevr0N1gH4At7gHiRpFaLNrrq8HNgAJA70AWxQIH1%2BvsYMDAzZQPC9VCNkDWUhGkuE5PxJNwiUK4UfLzOlD4WvzAHaoG9nxPi5d%2BjYUqfAhhykOFwJWiAAAIfkECQoAAAAsAAAAACAAIAAABPAQyElpUqnqzaciSoVkXVUMFaFSwlpOCcMYlErAavhOMnNLNo8KsZsMZItJEIDIFSkLGQoQTNhIsFehRww2CQLKF0tYGKYSg%2BygsZIuNqJksKgbfgIGepNo2cIUB3V1B3IvNiBYNQaDSTtfhhx0CwVPI0UJe0%2Bbm4g5VgcGoqOcnjmjqDSdnhgEoamcsZuXO1aWQy8KAwOAuTYYGwi7w5h%2BKr0SJ8MFihpNbx%2B4Erq7BYBuzsdiH1jCAzoSfl0rVirNbRXlBBlLX%2BBP0XJLAPGzTkAuAOqb0WT5AH7OcdCm5B8TgRwSRKIHQtaLCwg1RAAAOwAAAAAAAAAAAA%3D%3D); + visibility: visible; + opacity: 0.6; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; } + +.reveal .overlay header { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 40px; + z-index: 2; + border-bottom: 1px solid #222; } + +.reveal .overlay header a { + display: inline-block; + width: 40px; + height: 40px; + padding: 0 10px; + float: right; + opacity: 0.6; + box-sizing: border-box; } + +.reveal .overlay header a:hover { + opacity: 1; } + +.reveal .overlay header a .icon { + display: inline-block; + width: 20px; + height: 20px; + background-position: 50% 50%; + background-size: 100%; + background-repeat: no-repeat; } + +.reveal .overlay header a.close .icon { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABkklEQVRYR8WX4VHDMAxG6wnoJrABZQPYBCaBTWAD2g1gE5gg6OOsXuxIlr40d81dfrSJ9V4c2VLK7spHuTJ/5wpM07QXuXc5X0opX2tEJcadjHuV80li/FgxTIEK/5QBCICBD6xEhSMGHgQPgBgLiYVAB1dpSqKDawxTohFw4JSEA3clzgIBPCURwE2JucBR7rhPJJv5OpJwDX+SfDjgx1wACQeJG1aChP9K/IMmdZ8DtESV1WyP3Bt4MwM6sj4NMxMYiqUWHQu4KYA/SYkIjOsm3BXYWMKFDwU2khjCQ4ELJUJ4SmClRArOCmSXGuKma0fYD5CbzHxFpCSGAhfAVSSUGDUk2BWZaff2g6GE15BsBQ9nwmpIGDiyHQddwNTMKkbZaf9fajXQca1EX44puJZUsnY0ObGmITE3GVLCbEhQUjGVt146j6oasWN+49Vph2w1pZ5EansNZqKBm1txbU57iRRcZ86RWMDdWtBJUHBHwoQPi1GV+JCbntmvok7iTX4/Up9mgyTc/FJYDTcndgH/AA5A/CHsyEkVAAAAAElFTkSuQmCC); } + +.reveal .overlay header a.external .icon { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAcElEQVRYR+2WSQoAIQwEzf8f7XiOMkUQxUPlGkM3hVmiQfQR9GYnH1SsAQlI4DiBqkCMoNb9y2e90IAEJPAcgdznU9+engMaeJ7Azh5Y1U67gAho4DqBqmB1buAf0MB1AlVBek83ZPkmJMGc1wAR+AAqod/B97TRpQAAAABJRU5ErkJggg==); } + +.reveal .overlay .viewport { + position: absolute; + top: 40px; + right: 0; + bottom: 0; + left: 0; } + +.reveal .overlay.overlay-preview .viewport iframe { + width: 100%; + height: 100%; + max-width: 100%; + max-height: 100%; + border: 0; + opacity: 0; + visibility: hidden; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; } + +.reveal .overlay.overlay-preview.loaded .viewport iframe { + opacity: 1; + visibility: visible; } + +.reveal .overlay.overlay-preview.loaded .spinner { + opacity: 0; + visibility: hidden; + -webkit-transform: scale(0.2); + transform: scale(0.2); } + +.reveal .overlay.overlay-help .viewport { + overflow: auto; + color: #fff; } + +.reveal .overlay.overlay-help .viewport .viewport-inner { + width: 600px; + margin: 0 auto; + padding: 60px; + text-align: center; + letter-spacing: normal; } + +.reveal .overlay.overlay-help .viewport .viewport-inner .title { + font-size: 20px; } + +.reveal .overlay.overlay-help .viewport .viewport-inner table { + border: 1px solid #fff; + border-collapse: collapse; + font-size: 14px; } + +.reveal .overlay.overlay-help .viewport .viewport-inner table th, +.reveal .overlay.overlay-help .viewport .viewport-inner table td { + width: 200px; + padding: 10px; + border: 1px solid #fff; + vertical-align: middle; } + +.reveal .overlay.overlay-help .viewport .viewport-inner table th { + padding-top: 20px; + padding-bottom: 20px; } + +/********************************************* + * PLAYBACK COMPONENT + *********************************************/ +.reveal .playback { + position: fixed; + left: 15px; + bottom: 20px; + z-index: 30; + cursor: pointer; + -webkit-transition: all 400ms ease; + transition: all 400ms ease; } + +.reveal.overview .playback { + opacity: 0; + visibility: hidden; } + +/********************************************* + * ROLLING LINKS + *********************************************/ +.reveal .roll { + display: inline-block; + line-height: 1.2; + overflow: hidden; + vertical-align: top; + -webkit-perspective: 400px; + perspective: 400px; + -webkit-perspective-origin: 50% 50%; + perspective-origin: 50% 50%; } + +.reveal .roll:hover { + background: none; + text-shadow: none; } + +.reveal .roll span { + display: block; + position: relative; + padding: 0 2px; + pointer-events: none; + -webkit-transition: all 400ms ease; + transition: all 400ms ease; + -webkit-transform-origin: 50% 0%; + transform-origin: 50% 0%; + -webkit-transform-style: preserve-3d; + transform-style: preserve-3d; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; } + +.reveal .roll:hover span { + background: rgba(0, 0, 0, 0.5); + -webkit-transform: translate3d(0px, 0px, -45px) rotateX(90deg); + transform: translate3d(0px, 0px, -45px) rotateX(90deg); } + +.reveal .roll span:after { + content: attr(data-title); + display: block; + position: absolute; + left: 0; + top: 0; + padding: 0 2px; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transform-origin: 50% 0%; + transform-origin: 50% 0%; + -webkit-transform: translate3d(0px, 110%, 0px) rotateX(-90deg); + transform: translate3d(0px, 110%, 0px) rotateX(-90deg); } + +/********************************************* + * SPEAKER NOTES + *********************************************/ +.reveal aside.notes { + display: none; } + +.reveal .speaker-notes { + display: none; + position: absolute; + width: 70%; + max-height: 15%; + left: 15%; + bottom: 26px; + padding: 10px; + z-index: 1; + font-size: 18px; + line-height: 1.4; + color: #fff; + background-color: rgba(0, 0, 0, 0.5); + overflow: auto; + box-sizing: border-box; + text-align: left; + font-family: Helvetica, sans-serif; + -webkit-overflow-scrolling: touch; } + +.reveal .speaker-notes.visible:not(:empty) { + display: block; } + +@media screen and (max-width: 1024px) { + .reveal .speaker-notes { + font-size: 14px; } } + +@media screen and (max-width: 600px) { + .reveal .speaker-notes { + width: 90%; + left: 5%; } } + +/********************************************* + * ZOOM PLUGIN + *********************************************/ +.zoomed .reveal *, +.zoomed .reveal *:before, +.zoomed .reveal *:after { + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; } + +.zoomed .reveal .progress, +.zoomed .reveal .controls { + opacity: 0; } + +.zoomed .reveal .roll span { + background: none; } + +.zoomed .reveal .roll span:after { + visibility: hidden; } diff --git a/gitlab89/css/reveal.scss b/gitlab89/css/reveal.scss new file mode 100644 index 0000000..eb600ac --- /dev/null +++ b/gitlab89/css/reveal.scss @@ -0,0 +1,1379 @@ +/*! + * reveal.js + * http://lab.hakim.se/reveal-js + * MIT licensed + * + * Copyright (C) 2016 Hakim El Hattab, http://hakim.se + */ + + +/********************************************* + * RESET STYLES + *********************************************/ + +html, body, .reveal div, .reveal span, .reveal applet, .reveal object, .reveal iframe, +.reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6, .reveal p, .reveal blockquote, .reveal pre, +.reveal a, .reveal abbr, .reveal acronym, .reveal address, .reveal big, .reveal cite, .reveal code, +.reveal del, .reveal dfn, .reveal em, .reveal img, .reveal ins, .reveal kbd, .reveal q, .reveal s, .reveal samp, +.reveal small, .reveal strike, .reveal strong, .reveal sub, .reveal sup, .reveal tt, .reveal var, +.reveal b, .reveal u, .reveal center, +.reveal dl, .reveal dt, .reveal dd, .reveal ol, .reveal ul, .reveal li, +.reveal fieldset, .reveal form, .reveal label, .reveal legend, +.reveal table, .reveal caption, .reveal tbody, .reveal tfoot, .reveal thead, .reveal tr, .reveal th, .reveal td, +.reveal article, .reveal aside, .reveal canvas, .reveal details, .reveal embed, +.reveal figure, .reveal figcaption, .reveal footer, .reveal header, .reveal hgroup, +.reveal menu, .reveal nav, .reveal output, .reveal ruby, .reveal section, .reveal summary, +.reveal time, .reveal mark, .reveal audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} + +.reveal article, .reveal aside, .reveal details, .reveal figcaption, .reveal figure, +.reveal footer, .reveal header, .reveal hgroup, .reveal menu, .reveal nav, .reveal section { + display: block; +} + + +/********************************************* + * GLOBAL STYLES + *********************************************/ + +html, +body { + width: 100%; + height: 100%; + overflow: hidden; +} + +body { + position: relative; + line-height: 1; + + background-color: #fff; + color: #000; +} + +// Ensures that the main background color matches the +// theme in fullscreen mode +html:-webkit-full-screen-ancestor { + background-color: inherit; +} +html:-moz-full-screen-ancestor { + background-color: inherit; +} + + +/********************************************* + * VIEW FRAGMENTS + *********************************************/ + +.reveal .slides section .fragment { + opacity: 0; + visibility: hidden; + transition: all .2s ease; + + &.visible { + opacity: 1; + visibility: visible; + } +} + +.reveal .slides section .fragment.grow { + opacity: 1; + visibility: visible; + + &.visible { + transform: scale( 1.3 ); + } +} + +.reveal .slides section .fragment.shrink { + opacity: 1; + visibility: visible; + + &.visible { + transform: scale( 0.7 ); + } +} + +.reveal .slides section .fragment.zoom-in { + transform: scale( 0.1 ); + + &.visible { + transform: none; + } +} + +.reveal .slides section .fragment.fade-out { + opacity: 1; + visibility: visible; + + &.visible { + opacity: 0; + visibility: hidden; + } +} + +.reveal .slides section .fragment.semi-fade-out { + opacity: 1; + visibility: visible; + + &.visible { + opacity: 0.5; + visibility: visible; + } +} + +.reveal .slides section .fragment.strike { + opacity: 1; + visibility: visible; + + &.visible { + text-decoration: line-through; + } +} + +.reveal .slides section .fragment.current-visible { + opacity: 0; + visibility: hidden; + + &.current-fragment { + opacity: 1; + visibility: visible; + } +} + +.reveal .slides section .fragment.highlight-red, +.reveal .slides section .fragment.highlight-current-red, +.reveal .slides section .fragment.highlight-green, +.reveal .slides section .fragment.highlight-current-green, +.reveal .slides section .fragment.highlight-blue, +.reveal .slides section .fragment.highlight-current-blue { + opacity: 1; + visibility: visible; +} + .reveal .slides section .fragment.highlight-red.visible { + color: #ff2c2d + } + .reveal .slides section .fragment.highlight-green.visible { + color: #17ff2e; + } + .reveal .slides section .fragment.highlight-blue.visible { + color: #1b91ff; + } + +.reveal .slides section .fragment.highlight-current-red.current-fragment { + color: #ff2c2d +} +.reveal .slides section .fragment.highlight-current-green.current-fragment { + color: #17ff2e; +} +.reveal .slides section .fragment.highlight-current-blue.current-fragment { + color: #1b91ff; +} + + +/********************************************* + * DEFAULT ELEMENT STYLES + *********************************************/ + +/* Fixes issue in Chrome where italic fonts did not appear when printing to PDF */ +.reveal:after { + content: ''; + font-style: italic; +} + +.reveal iframe { + z-index: 1; +} + +/** Prevents layering issues in certain browser/transition combinations */ +.reveal a { + position: relative; +} + +.reveal .stretch { + max-width: none; + max-height: none; +} + +.reveal pre.stretch code { + height: 100%; + max-height: 100%; + box-sizing: border-box; +} + + +/********************************************* + * CONTROLS + *********************************************/ + +.reveal .controls { + display: none; + position: fixed; + width: 110px; + height: 110px; + z-index: 30; + right: 10px; + bottom: 10px; + + -webkit-user-select: none; +} + +.reveal .controls button { + padding: 0; + position: absolute; + opacity: 0.05; + width: 0; + height: 0; + background-color: transparent; + border: 12px solid transparent; + transform: scale(.9999); + transition: all 0.2s ease; + -webkit-appearance: none; + -webkit-tap-highlight-color: rgba( 0, 0, 0, 0 ); +} + +.reveal .controls .enabled { + opacity: 0.7; + cursor: pointer; +} + +.reveal .controls .enabled:active { + margin-top: 1px; +} + + .reveal .controls .navigate-left { + top: 42px; + + border-right-width: 22px; + border-right-color: #000; + } + .reveal .controls .navigate-left.fragmented { + opacity: 0.3; + } + + .reveal .controls .navigate-right { + left: 74px; + top: 42px; + + border-left-width: 22px; + border-left-color: #000; + } + .reveal .controls .navigate-right.fragmented { + opacity: 0.3; + } + + .reveal .controls .navigate-up { + left: 42px; + + border-bottom-width: 22px; + border-bottom-color: #000; + } + .reveal .controls .navigate-up.fragmented { + opacity: 0.3; + } + + .reveal .controls .navigate-down { + left: 42px; + top: 74px; + + border-top-width: 22px; + border-top-color: #000; + } + .reveal .controls .navigate-down.fragmented { + opacity: 0.3; + } + + +/********************************************* + * PROGRESS BAR + *********************************************/ + +.reveal .progress { + position: fixed; + display: none; + height: 3px; + width: 100%; + bottom: 0; + left: 0; + z-index: 10; + + background-color: rgba( 0, 0, 0, 0.2 ); +} + .reveal .progress:after { + content: ''; + display: block; + position: absolute; + height: 20px; + width: 100%; + top: -20px; + } + .reveal .progress span { + display: block; + height: 100%; + width: 0px; + + background-color: #000; + transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985); + } + +/********************************************* + * SLIDE NUMBER + *********************************************/ + +.reveal .slide-number { + position: fixed; + display: block; + right: 8px; + bottom: 8px; + z-index: 31; + font-family: Helvetica, sans-serif; + font-size: 12px; + line-height: 1; + color: #fff; + background-color: rgba( 0, 0, 0, 0.4 ); + padding: 5px; +} + +.reveal .slide-number-delimiter { + margin: 0 3px; +} + +/********************************************* + * SLIDES + *********************************************/ + +.reveal { + position: relative; + width: 100%; + height: 100%; + overflow: hidden; + touch-action: none; +} + +.reveal .slides { + position: absolute; + width: 100%; + height: 100%; + top: 0; + right: 0; + bottom: 0; + left: 0; + margin: auto; + + overflow: visible; + z-index: 1; + text-align: center; + perspective: 600px; + perspective-origin: 50% 40%; +} + +.reveal .slides>section { + -ms-perspective: 600px; +} + +.reveal .slides>section, +.reveal .slides>section>section { + display: none; + position: absolute; + width: 100%; + padding: 20px 0px; + + z-index: 10; + transform-style: preserve-3d; + transition: transform-origin 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985), + transform 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985), + visibility 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985), + opacity 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985); +} + +/* Global transition speed settings */ +.reveal[data-transition-speed="fast"] .slides section { + transition-duration: 400ms; +} +.reveal[data-transition-speed="slow"] .slides section { + transition-duration: 1200ms; +} + +/* Slide-specific transition speed overrides */ +.reveal .slides section[data-transition-speed="fast"] { + transition-duration: 400ms; +} +.reveal .slides section[data-transition-speed="slow"] { + transition-duration: 1200ms; +} + +.reveal .slides>section.stack { + padding-top: 0; + padding-bottom: 0; +} + +.reveal .slides>section.present, +.reveal .slides>section>section.present { + display: block; + z-index: 11; + opacity: 1; +} + +.reveal.center, +.reveal.center .slides, +.reveal.center .slides section { + min-height: 0 !important; +} + +/* Don't allow interaction with invisible slides */ +.reveal .slides>section.future, +.reveal .slides>section>section.future, +.reveal .slides>section.past, +.reveal .slides>section>section.past { + pointer-events: none; +} + +.reveal.overview .slides>section, +.reveal.overview .slides>section>section { + pointer-events: auto; +} + +.reveal .slides>section.past, +.reveal .slides>section.future, +.reveal .slides>section>section.past, +.reveal .slides>section>section.future { + opacity: 0; +} + + +/********************************************* + * Mixins for readability of transitions + *********************************************/ + +@mixin transition-global($style) { + .reveal .slides section[data-transition=#{$style}], + .reveal.#{$style} .slides section:not([data-transition]) { + @content; + } +} +@mixin transition-horizontal-past($style) { + .reveal .slides>section[data-transition=#{$style}].past, + .reveal .slides>section[data-transition~=#{$style}-out].past, + .reveal.#{$style} .slides>section:not([data-transition]).past { + @content; + } +} +@mixin transition-horizontal-future($style) { + .reveal .slides>section[data-transition=#{$style}].future, + .reveal .slides>section[data-transition~=#{$style}-in].future, + .reveal.#{$style} .slides>section:not([data-transition]).future { + @content; + } +} + +@mixin transition-vertical-past($style) { + .reveal .slides>section>section[data-transition=#{$style}].past, + .reveal .slides>section>section[data-transition~=#{$style}-out].past, + .reveal.#{$style} .slides>section>section:not([data-transition]).past { + @content; + } +} +@mixin transition-vertical-future($style) { + .reveal .slides>section>section[data-transition=#{$style}].future, + .reveal .slides>section>section[data-transition~=#{$style}-in].future, + .reveal.#{$style} .slides>section>section:not([data-transition]).future { + @content; + } +} + +/********************************************* + * SLIDE TRANSITION + * Aliased 'linear' for backwards compatibility + *********************************************/ + +@each $stylename in slide, linear { + .reveal.#{$stylename} section { + backface-visibility: hidden; + } + @include transition-horizontal-past(#{$stylename}) { + transform: translate(-150%, 0); + } + @include transition-horizontal-future(#{$stylename}) { + transform: translate(150%, 0); + } + @include transition-vertical-past(#{$stylename}) { + transform: translate(0, -150%); + } + @include transition-vertical-future(#{$stylename}) { + transform: translate(0, 150%); + } +} + +/********************************************* + * CONVEX TRANSITION + * Aliased 'default' for backwards compatibility + *********************************************/ + +@each $stylename in default, convex { + @include transition-horizontal-past(#{$stylename}) { + transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0); + } + @include transition-horizontal-future(#{$stylename}) { + transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0); + } + @include transition-vertical-past(#{$stylename}) { + transform: translate3d(0, -300px, 0) rotateX(70deg) translate3d(0, -300px, 0); + } + @include transition-vertical-future(#{$stylename}) { + transform: translate3d(0, 300px, 0) rotateX(-70deg) translate3d(0, 300px, 0); + } +} + +/********************************************* + * CONCAVE TRANSITION + *********************************************/ + +@include transition-horizontal-past(concave) { + transform: translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0); +} +@include transition-horizontal-future(concave) { + transform: translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0); +} +@include transition-vertical-past(concave) { + transform: translate3d(0, -80%, 0) rotateX(-70deg) translate3d(0, -80%, 0); +} +@include transition-vertical-future(concave) { + transform: translate3d(0, 80%, 0) rotateX(70deg) translate3d(0, 80%, 0); +} + + +/********************************************* + * ZOOM TRANSITION + *********************************************/ + +@include transition-global(zoom) { + transition-timing-function: ease; +} +@include transition-horizontal-past(zoom) { + visibility: hidden; + transform: scale(16); +} +@include transition-horizontal-future(zoom) { + visibility: hidden; + transform: scale(0.2); +} +@include transition-vertical-past(zoom) { + transform: translate(0, -150%); +} +@include transition-vertical-future(zoom) { + transform: translate(0, 150%); +} + + +/********************************************* + * CUBE TRANSITION + *********************************************/ + +.reveal.cube .slides { + perspective: 1300px; +} + +.reveal.cube .slides section { + padding: 30px; + min-height: 700px; + backface-visibility: hidden; + box-sizing: border-box; +} + .reveal.center.cube .slides section { + min-height: 0; + } + .reveal.cube .slides section:not(.stack):before { + content: ''; + position: absolute; + display: block; + width: 100%; + height: 100%; + left: 0; + top: 0; + background: rgba(0,0,0,0.1); + border-radius: 4px; + transform: translateZ( -20px ); + } + .reveal.cube .slides section:not(.stack):after { + content: ''; + position: absolute; + display: block; + width: 90%; + height: 30px; + left: 5%; + bottom: 0; + background: none; + z-index: 1; + + border-radius: 4px; + box-shadow: 0px 95px 25px rgba(0,0,0,0.2); + transform: translateZ(-90px) rotateX( 65deg ); + } + +.reveal.cube .slides>section.stack { + padding: 0; + background: none; +} + +.reveal.cube .slides>section.past { + transform-origin: 100% 0%; + transform: translate3d(-100%, 0, 0) rotateY(-90deg); +} + +.reveal.cube .slides>section.future { + transform-origin: 0% 0%; + transform: translate3d(100%, 0, 0) rotateY(90deg); +} + +.reveal.cube .slides>section>section.past { + transform-origin: 0% 100%; + transform: translate3d(0, -100%, 0) rotateX(90deg); +} + +.reveal.cube .slides>section>section.future { + transform-origin: 0% 0%; + transform: translate3d(0, 100%, 0) rotateX(-90deg); +} + + +/********************************************* + * PAGE TRANSITION + *********************************************/ + +.reveal.page .slides { + perspective-origin: 0% 50%; + perspective: 3000px; +} + +.reveal.page .slides section { + padding: 30px; + min-height: 700px; + box-sizing: border-box; +} + .reveal.page .slides section.past { + z-index: 12; + } + .reveal.page .slides section:not(.stack):before { + content: ''; + position: absolute; + display: block; + width: 100%; + height: 100%; + left: 0; + top: 0; + background: rgba(0,0,0,0.1); + transform: translateZ( -20px ); + } + .reveal.page .slides section:not(.stack):after { + content: ''; + position: absolute; + display: block; + width: 90%; + height: 30px; + left: 5%; + bottom: 0; + background: none; + z-index: 1; + + border-radius: 4px; + box-shadow: 0px 95px 25px rgba(0,0,0,0.2); + + -webkit-transform: translateZ(-90px) rotateX( 65deg ); + } + +.reveal.page .slides>section.stack { + padding: 0; + background: none; +} + +.reveal.page .slides>section.past { + transform-origin: 0% 0%; + transform: translate3d(-40%, 0, 0) rotateY(-80deg); +} + +.reveal.page .slides>section.future { + transform-origin: 100% 0%; + transform: translate3d(0, 0, 0); +} + +.reveal.page .slides>section>section.past { + transform-origin: 0% 0%; + transform: translate3d(0, -40%, 0) rotateX(80deg); +} + +.reveal.page .slides>section>section.future { + transform-origin: 0% 100%; + transform: translate3d(0, 0, 0); +} + + +/********************************************* + * FADE TRANSITION + *********************************************/ + +.reveal .slides section[data-transition=fade], +.reveal.fade .slides section:not([data-transition]), +.reveal.fade .slides>section>section:not([data-transition]) { + transform: none; + transition: opacity 0.5s; +} + + +.reveal.fade.overview .slides section, +.reveal.fade.overview .slides>section>section { + transition: none; +} + + +/********************************************* + * NO TRANSITION + *********************************************/ + +@include transition-global(none) { + transform: none; + transition: none; +} + + +/********************************************* + * PAUSED MODE + *********************************************/ + +.reveal .pause-overlay { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: black; + visibility: hidden; + opacity: 0; + z-index: 100; + transition: all 1s ease; +} +.reveal.paused .pause-overlay { + visibility: visible; + opacity: 1; +} + + +/********************************************* + * FALLBACK + *********************************************/ + +.no-transforms { + overflow-y: auto; +} + +.no-transforms .reveal .slides { + position: relative; + width: 80%; + height: auto !important; + top: 0; + left: 50%; + margin: 0; + text-align: center; +} + +.no-transforms .reveal .controls, +.no-transforms .reveal .progress { + display: none !important; +} + +.no-transforms .reveal .slides section { + display: block !important; + opacity: 1 !important; + position: relative !important; + height: auto; + min-height: 0; + top: 0; + left: -50%; + margin: 70px 0; + transform: none; +} + +.no-transforms .reveal .slides section section { + left: 0; +} + +.reveal .no-transition, +.reveal .no-transition * { + transition: none !important; +} + + +/********************************************* + * PER-SLIDE BACKGROUNDS + *********************************************/ + +.reveal .backgrounds { + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + perspective: 600px; +} + .reveal .slide-background { + display: none; + position: absolute; + width: 100%; + height: 100%; + opacity: 0; + visibility: hidden; + + background-color: rgba( 0, 0, 0, 0 ); + background-position: 50% 50%; + background-repeat: no-repeat; + background-size: cover; + + transition: all 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985); + } + + .reveal .slide-background.stack { + display: block; + } + + .reveal .slide-background.present { + opacity: 1; + visibility: visible; + } + + .print-pdf .reveal .slide-background { + opacity: 1 !important; + visibility: visible !important; + } + +/* Video backgrounds */ +.reveal .slide-background video { + position: absolute; + width: 100%; + height: 100%; + max-width: none; + max-height: none; + top: 0; + left: 0; +} + +/* Immediate transition style */ +.reveal[data-background-transition=none]>.backgrounds .slide-background, +.reveal>.backgrounds .slide-background[data-background-transition=none] { + transition: none; +} + +/* Slide */ +.reveal[data-background-transition=slide]>.backgrounds .slide-background, +.reveal>.backgrounds .slide-background[data-background-transition=slide] { + opacity: 1; + backface-visibility: hidden; +} + .reveal[data-background-transition=slide]>.backgrounds .slide-background.past, + .reveal>.backgrounds .slide-background.past[data-background-transition=slide] { + transform: translate(-100%, 0); + } + .reveal[data-background-transition=slide]>.backgrounds .slide-background.future, + .reveal>.backgrounds .slide-background.future[data-background-transition=slide] { + transform: translate(100%, 0); + } + + .reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.past, + .reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=slide] { + transform: translate(0, -100%); + } + .reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.future, + .reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=slide] { + transform: translate(0, 100%); + } + + +/* Convex */ +.reveal[data-background-transition=convex]>.backgrounds .slide-background.past, +.reveal>.backgrounds .slide-background.past[data-background-transition=convex] { + opacity: 0; + transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0); +} +.reveal[data-background-transition=convex]>.backgrounds .slide-background.future, +.reveal>.backgrounds .slide-background.future[data-background-transition=convex] { + opacity: 0; + transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0); +} + +.reveal[data-background-transition=convex]>.backgrounds .slide-background>.slide-background.past, +.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=convex] { + opacity: 0; + transform: translate3d(0, -100%, 0) rotateX(90deg) translate3d(0, -100%, 0); +} +.reveal[data-background-transition=convex]>.backgrounds .slide-background>.slide-background.future, +.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=convex] { + opacity: 0; + transform: translate3d(0, 100%, 0) rotateX(-90deg) translate3d(0, 100%, 0); +} + + +/* Concave */ +.reveal[data-background-transition=concave]>.backgrounds .slide-background.past, +.reveal>.backgrounds .slide-background.past[data-background-transition=concave] { + opacity: 0; + transform: translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0); +} +.reveal[data-background-transition=concave]>.backgrounds .slide-background.future, +.reveal>.backgrounds .slide-background.future[data-background-transition=concave] { + opacity: 0; + transform: translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0); +} + +.reveal[data-background-transition=concave]>.backgrounds .slide-background>.slide-background.past, +.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=concave] { + opacity: 0; + transform: translate3d(0, -100%, 0) rotateX(-90deg) translate3d(0, -100%, 0); +} +.reveal[data-background-transition=concave]>.backgrounds .slide-background>.slide-background.future, +.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=concave] { + opacity: 0; + transform: translate3d(0, 100%, 0) rotateX(90deg) translate3d(0, 100%, 0); +} + +/* Zoom */ +.reveal[data-background-transition=zoom]>.backgrounds .slide-background, +.reveal>.backgrounds .slide-background[data-background-transition=zoom] { + transition-timing-function: ease; +} + +.reveal[data-background-transition=zoom]>.backgrounds .slide-background.past, +.reveal>.backgrounds .slide-background.past[data-background-transition=zoom] { + opacity: 0; + visibility: hidden; + transform: scale(16); +} +.reveal[data-background-transition=zoom]>.backgrounds .slide-background.future, +.reveal>.backgrounds .slide-background.future[data-background-transition=zoom] { + opacity: 0; + visibility: hidden; + transform: scale(0.2); +} + +.reveal[data-background-transition=zoom]>.backgrounds .slide-background>.slide-background.past, +.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=zoom] { + opacity: 0; + visibility: hidden; + transform: scale(16); +} +.reveal[data-background-transition=zoom]>.backgrounds .slide-background>.slide-background.future, +.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=zoom] { + opacity: 0; + visibility: hidden; + transform: scale(0.2); +} + + +/* Global transition speed settings */ +.reveal[data-transition-speed="fast"]>.backgrounds .slide-background { + transition-duration: 400ms; +} +.reveal[data-transition-speed="slow"]>.backgrounds .slide-background { + transition-duration: 1200ms; +} + + +/********************************************* + * OVERVIEW + *********************************************/ + +.reveal.overview { + perspective-origin: 50% 50%; + perspective: 700px; + + .slides section { + height: 700px; + opacity: 1 !important; + overflow: hidden; + visibility: visible !important; + cursor: pointer; + box-sizing: border-box; + } + .slides section:hover, + .slides section.present { + outline: 10px solid rgba(150,150,150,0.4); + outline-offset: 10px; + } + .slides section .fragment { + opacity: 1; + transition: none; + } + .slides section:after, + .slides section:before { + display: none !important; + } + .slides>section.stack { + padding: 0; + top: 0 !important; + background: none; + outline: none; + overflow: visible; + } + + .backgrounds { + perspective: inherit; + } + + .backgrounds .slide-background { + opacity: 1; + visibility: visible; + + // This can't be applied to the slide itself in Safari + outline: 10px solid rgba(150,150,150,0.1); + outline-offset: 10px; + } +} + +// Disable transitions transitions while we're activating +// or deactivating the overview mode. +.reveal.overview .slides section, +.reveal.overview-deactivating .slides section { + transition: none; +} + +.reveal.overview .backgrounds .slide-background, +.reveal.overview-deactivating .backgrounds .slide-background { + transition: none; +} + +.reveal.overview-animated .slides { + transition: transform 0.4s ease; +} + + +/********************************************* + * RTL SUPPORT + *********************************************/ + +.reveal.rtl .slides, +.reveal.rtl .slides h1, +.reveal.rtl .slides h2, +.reveal.rtl .slides h3, +.reveal.rtl .slides h4, +.reveal.rtl .slides h5, +.reveal.rtl .slides h6 { + direction: rtl; + font-family: sans-serif; +} + +.reveal.rtl pre, +.reveal.rtl code { + direction: ltr; +} + +.reveal.rtl ol, +.reveal.rtl ul { + text-align: right; +} + +.reveal.rtl .progress span { + float: right +} + +/********************************************* + * PARALLAX BACKGROUND + *********************************************/ + +.reveal.has-parallax-background .backgrounds { + transition: all 0.8s ease; +} + +/* Global transition speed settings */ +.reveal.has-parallax-background[data-transition-speed="fast"] .backgrounds { + transition-duration: 400ms; +} +.reveal.has-parallax-background[data-transition-speed="slow"] .backgrounds { + transition-duration: 1200ms; +} + + +/********************************************* + * LINK PREVIEW OVERLAY + *********************************************/ + +.reveal .overlay { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 1000; + background: rgba( 0, 0, 0, 0.9 ); + opacity: 0; + visibility: hidden; + transition: all 0.3s ease; +} + .reveal .overlay.visible { + opacity: 1; + visibility: visible; + } + + .reveal .overlay .spinner { + position: absolute; + display: block; + top: 50%; + left: 50%; + width: 32px; + height: 32px; + margin: -16px 0 0 -16px; + z-index: 10; + background-image: url(data:image/gif;base64,R0lGODlhIAAgAPMAAJmZmf%2F%2F%2F6%2Bvr8nJybW1tcDAwOjo6Nvb26ioqKOjo7Ozs%2FLy8vz8%2FAAAAAAAAAAAACH%2FC05FVFNDQVBFMi4wAwEAAAAh%2FhpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh%2BQQJCgAAACwAAAAAIAAgAAAE5xDISWlhperN52JLhSSdRgwVo1ICQZRUsiwHpTJT4iowNS8vyW2icCF6k8HMMBkCEDskxTBDAZwuAkkqIfxIQyhBQBFvAQSDITM5VDW6XNE4KagNh6Bgwe60smQUB3d4Rz1ZBApnFASDd0hihh12BkE9kjAJVlycXIg7CQIFA6SlnJ87paqbSKiKoqusnbMdmDC2tXQlkUhziYtyWTxIfy6BE8WJt5YJvpJivxNaGmLHT0VnOgSYf0dZXS7APdpB309RnHOG5gDqXGLDaC457D1zZ%2FV%2FnmOM82XiHRLYKhKP1oZmADdEAAAh%2BQQJCgAAACwAAAAAIAAgAAAE6hDISWlZpOrNp1lGNRSdRpDUolIGw5RUYhhHukqFu8DsrEyqnWThGvAmhVlteBvojpTDDBUEIFwMFBRAmBkSgOrBFZogCASwBDEY%2FCZSg7GSE0gSCjQBMVG023xWBhklAnoEdhQEfyNqMIcKjhRsjEdnezB%2BA4k8gTwJhFuiW4dokXiloUepBAp5qaKpp6%2BHo7aWW54wl7obvEe0kRuoplCGepwSx2jJvqHEmGt6whJpGpfJCHmOoNHKaHx61WiSR92E4lbFoq%2BB6QDtuetcaBPnW6%2BO7wDHpIiK9SaVK5GgV543tzjgGcghAgAh%2BQQJCgAAACwAAAAAIAAgAAAE7hDISSkxpOrN5zFHNWRdhSiVoVLHspRUMoyUakyEe8PTPCATW9A14E0UvuAKMNAZKYUZCiBMuBakSQKG8G2FzUWox2AUtAQFcBKlVQoLgQReZhQlCIJesQXI5B0CBnUMOxMCenoCfTCEWBsJColTMANldx15BGs8B5wlCZ9Po6OJkwmRpnqkqnuSrayqfKmqpLajoiW5HJq7FL1Gr2mMMcKUMIiJgIemy7xZtJsTmsM4xHiKv5KMCXqfyUCJEonXPN2rAOIAmsfB3uPoAK%2B%2BG%2Bw48edZPK%2BM6hLJpQg484enXIdQFSS1u6UhksENEQAAIfkECQoAAAAsAAAAACAAIAAABOcQyEmpGKLqzWcZRVUQnZYg1aBSh2GUVEIQ2aQOE%2BG%2BcD4ntpWkZQj1JIiZIogDFFyHI0UxQwFugMSOFIPJftfVAEoZLBbcLEFhlQiqGp1Vd140AUklUN3eCA51C1EWMzMCezCBBmkxVIVHBWd3HHl9JQOIJSdSnJ0TDKChCwUJjoWMPaGqDKannasMo6WnM562R5YluZRwur0wpgqZE7NKUm%2BFNRPIhjBJxKZteWuIBMN4zRMIVIhffcgojwCF117i4nlLnY5ztRLsnOk%2BaV%2BoJY7V7m76PdkS4trKcdg0Zc0tTcKkRAAAIfkECQoAAAAsAAAAACAAIAAABO4QyEkpKqjqzScpRaVkXZWQEximw1BSCUEIlDohrft6cpKCk5xid5MNJTaAIkekKGQkWyKHkvhKsR7ARmitkAYDYRIbUQRQjWBwJRzChi9CRlBcY1UN4g0%2FVNB0AlcvcAYHRyZPdEQFYV8ccwR5HWxEJ02YmRMLnJ1xCYp0Y5idpQuhopmmC2KgojKasUQDk5BNAwwMOh2RtRq5uQuPZKGIJQIGwAwGf6I0JXMpC8C7kXWDBINFMxS4DKMAWVWAGYsAdNqW5uaRxkSKJOZKaU3tPOBZ4DuK2LATgJhkPJMgTwKCdFjyPHEnKxFCDhEAACH5BAkKAAAALAAAAAAgACAAAATzEMhJaVKp6s2nIkolIJ2WkBShpkVRWqqQrhLSEu9MZJKK9y1ZrqYK9WiClmvoUaF8gIQSNeF1Er4MNFn4SRSDARWroAIETg1iVwuHjYB1kYc1mwruwXKC9gmsJXliGxc%2BXiUCby9ydh1sOSdMkpMTBpaXBzsfhoc5l58Gm5yToAaZhaOUqjkDgCWNHAULCwOLaTmzswadEqggQwgHuQsHIoZCHQMMQgQGubVEcxOPFAcMDAYUA85eWARmfSRQCdcMe0zeP1AAygwLlJtPNAAL19DARdPzBOWSm1brJBi45soRAWQAAkrQIykShQ9wVhHCwCQCACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiRMDjI0Fd30%2FiI2UA5GSS5UDj2l6NoqgOgN4gksEBgYFf0FDqKgHnyZ9OX8HrgYHdHpcHQULXAS2qKpENRg7eAMLC7kTBaixUYFkKAzWAAnLC7FLVxLWDBLKCwaKTULgEwbLA4hJtOkSBNqITT3xEgfLpBtzE%2FjiuL04RGEBgwWhShRgQExHBAAh%2BQQJCgAAACwAAAAAIAAgAAAE7xDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfZiCqGk5dTESJeaOAlClzsJsqwiJwiqnFrb2nS9kmIcgEsjQydLiIlHehhpejaIjzh9eomSjZR%2BipslWIRLAgMDOR2DOqKogTB9pCUJBagDBXR6XB0EBkIIsaRsGGMMAxoDBgYHTKJiUYEGDAzHC9EACcUGkIgFzgwZ0QsSBcXHiQvOwgDdEwfFs0sDzt4S6BK4xYjkDOzn0unFeBzOBijIm1Dgmg5YFQwsCMjp1oJ8LyIAACH5BAkKAAAALAAAAAAgACAAAATwEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GGl6NoiPOH16iZKNlH6KmyWFOggHhEEvAwwMA0N9GBsEC6amhnVcEwavDAazGwIDaH1ipaYLBUTCGgQDA8NdHz0FpqgTBwsLqAbWAAnIA4FWKdMLGdYGEgraigbT0OITBcg5QwPT4xLrROZL6AuQAPUS7bxLpoWidY0JtxLHKhwwMJBTHgPKdEQAACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GAULDJCRiXo1CpGXDJOUjY%2BYip9DhToJA4RBLwMLCwVDfRgbBAaqqoZ1XBMHswsHtxtFaH1iqaoGNgAIxRpbFAgfPQSqpbgGBqUD1wBXeCYp1AYZ19JJOYgH1KwA4UBvQwXUBxPqVD9L3sbp2BNk2xvvFPJd%2BMFCN6HAAIKgNggY0KtEBAAh%2BQQJCgAAACwAAAAAIAAgAAAE6BDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfYIDMaAFdTESJeaEDAIMxYFqrOUaNW4E4ObYcCXaiBVEgULe0NJaxxtYksjh2NLkZISgDgJhHthkpU4mW6blRiYmZOlh4JWkDqILwUGBnE6TYEbCgevr0N1gH4At7gHiRpFaLNrrq8HNgAJA70AWxQIH1%2BvsYMDAzZQPC9VCNkDWUhGkuE5PxJNwiUK4UfLzOlD4WvzAHaoG9nxPi5d%2BjYUqfAhhykOFwJWiAAAIfkECQoAAAAsAAAAACAAIAAABPAQyElpUqnqzaciSoVkXVUMFaFSwlpOCcMYlErAavhOMnNLNo8KsZsMZItJEIDIFSkLGQoQTNhIsFehRww2CQLKF0tYGKYSg%2BygsZIuNqJksKgbfgIGepNo2cIUB3V1B3IvNiBYNQaDSTtfhhx0CwVPI0UJe0%2Bbm4g5VgcGoqOcnjmjqDSdnhgEoamcsZuXO1aWQy8KAwOAuTYYGwi7w5h%2BKr0SJ8MFihpNbx%2B4Erq7BYBuzsdiH1jCAzoSfl0rVirNbRXlBBlLX%2BBP0XJLAPGzTkAuAOqb0WT5AH7OcdCm5B8TgRwSRKIHQtaLCwg1RAAAOwAAAAAAAAAAAA%3D%3D); + + visibility: visible; + opacity: 0.6; + transition: all 0.3s ease; + } + + .reveal .overlay header { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 40px; + z-index: 2; + border-bottom: 1px solid #222; + } + .reveal .overlay header a { + display: inline-block; + width: 40px; + height: 40px; + padding: 0 10px; + float: right; + opacity: 0.6; + + box-sizing: border-box; + } + .reveal .overlay header a:hover { + opacity: 1; + } + .reveal .overlay header a .icon { + display: inline-block; + width: 20px; + height: 20px; + + background-position: 50% 50%; + background-size: 100%; + background-repeat: no-repeat; + } + .reveal .overlay header a.close .icon { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABkklEQVRYR8WX4VHDMAxG6wnoJrABZQPYBCaBTWAD2g1gE5gg6OOsXuxIlr40d81dfrSJ9V4c2VLK7spHuTJ/5wpM07QXuXc5X0opX2tEJcadjHuV80li/FgxTIEK/5QBCICBD6xEhSMGHgQPgBgLiYVAB1dpSqKDawxTohFw4JSEA3clzgIBPCURwE2JucBR7rhPJJv5OpJwDX+SfDjgx1wACQeJG1aChP9K/IMmdZ8DtESV1WyP3Bt4MwM6sj4NMxMYiqUWHQu4KYA/SYkIjOsm3BXYWMKFDwU2khjCQ4ELJUJ4SmClRArOCmSXGuKma0fYD5CbzHxFpCSGAhfAVSSUGDUk2BWZaff2g6GE15BsBQ9nwmpIGDiyHQddwNTMKkbZaf9fajXQca1EX44puJZUsnY0ObGmITE3GVLCbEhQUjGVt146j6oasWN+49Vph2w1pZ5EansNZqKBm1txbU57iRRcZ86RWMDdWtBJUHBHwoQPi1GV+JCbntmvok7iTX4/Up9mgyTc/FJYDTcndgH/AA5A/CHsyEkVAAAAAElFTkSuQmCC); + } + .reveal .overlay header a.external .icon { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAcElEQVRYR+2WSQoAIQwEzf8f7XiOMkUQxUPlGkM3hVmiQfQR9GYnH1SsAQlI4DiBqkCMoNb9y2e90IAEJPAcgdznU9+engMaeJ7Azh5Y1U67gAho4DqBqmB1buAf0MB1AlVBek83ZPkmJMGc1wAR+AAqod/B97TRpQAAAABJRU5ErkJggg==); + } + + .reveal .overlay .viewport { + position: absolute; + top: 40px; + right: 0; + bottom: 0; + left: 0; + } + + .reveal .overlay.overlay-preview .viewport iframe { + width: 100%; + height: 100%; + max-width: 100%; + max-height: 100%; + border: 0; + + opacity: 0; + visibility: hidden; + transition: all 0.3s ease; + } + + .reveal .overlay.overlay-preview.loaded .viewport iframe { + opacity: 1; + visibility: visible; + } + + .reveal .overlay.overlay-preview.loaded .spinner { + opacity: 0; + visibility: hidden; + transform: scale(0.2); + } + + .reveal .overlay.overlay-help .viewport { + overflow: auto; + color: #fff; + } + + .reveal .overlay.overlay-help .viewport .viewport-inner { + width: 600px; + margin: 0 auto; + padding: 60px; + text-align: center; + letter-spacing: normal; + } + + .reveal .overlay.overlay-help .viewport .viewport-inner .title { + font-size: 20px; + } + + .reveal .overlay.overlay-help .viewport .viewport-inner table { + border: 1px solid #fff; + border-collapse: collapse; + font-size: 14px; + } + + .reveal .overlay.overlay-help .viewport .viewport-inner table th, + .reveal .overlay.overlay-help .viewport .viewport-inner table td { + width: 200px; + padding: 10px; + border: 1px solid #fff; + vertical-align: middle; + } + + .reveal .overlay.overlay-help .viewport .viewport-inner table th { + padding-top: 20px; + padding-bottom: 20px; + } + + + +/********************************************* + * PLAYBACK COMPONENT + *********************************************/ + +.reveal .playback { + position: fixed; + left: 15px; + bottom: 20px; + z-index: 30; + cursor: pointer; + transition: all 400ms ease; +} + +.reveal.overview .playback { + opacity: 0; + visibility: hidden; +} + + +/********************************************* + * ROLLING LINKS + *********************************************/ + +.reveal .roll { + display: inline-block; + line-height: 1.2; + overflow: hidden; + + vertical-align: top; + perspective: 400px; + perspective-origin: 50% 50%; +} + .reveal .roll:hover { + background: none; + text-shadow: none; + } +.reveal .roll span { + display: block; + position: relative; + padding: 0 2px; + + pointer-events: none; + transition: all 400ms ease; + transform-origin: 50% 0%; + transform-style: preserve-3d; + backface-visibility: hidden; +} + .reveal .roll:hover span { + background: rgba(0,0,0,0.5); + transform: translate3d( 0px, 0px, -45px ) rotateX( 90deg ); + } +.reveal .roll span:after { + content: attr(data-title); + + display: block; + position: absolute; + left: 0; + top: 0; + padding: 0 2px; + backface-visibility: hidden; + transform-origin: 50% 0%; + transform: translate3d( 0px, 110%, 0px ) rotateX( -90deg ); +} + + +/********************************************* + * SPEAKER NOTES + *********************************************/ + +// Hide on-page notes +.reveal aside.notes { + display: none; +} + +// An interface element that can optionally be used to show the +// speaker notes to all viewers, on top of the presentation +.reveal .speaker-notes { + display: none; + position: absolute; + width: 70%; + max-height: 15%; + left: 15%; + bottom: 26px; + padding: 10px; + z-index: 1; + font-size: 18px; + line-height: 1.4; + color: #fff; + background-color: rgba(0,0,0,0.5); + overflow: auto; + box-sizing: border-box; + text-align: left; + font-family: Helvetica, sans-serif; + -webkit-overflow-scrolling: touch; +} + +.reveal .speaker-notes.visible:not(:empty) { + display: block; +} + +@media screen and (max-width: 1024px) { + .reveal .speaker-notes { + font-size: 14px; + } +} + +@media screen and (max-width: 600px) { + .reveal .speaker-notes { + width: 90%; + left: 5%; + } +} + + +/********************************************* + * ZOOM PLUGIN + *********************************************/ + +.zoomed .reveal *, +.zoomed .reveal *:before, +.zoomed .reveal *:after { + backface-visibility: visible !important; +} + +.zoomed .reveal .progress, +.zoomed .reveal .controls { + opacity: 0; +} + +.zoomed .reveal .roll span { + background: none; +} + +.zoomed .reveal .roll span:after { + visibility: hidden; +} + + diff --git a/gitlab89/css/theme/README.md b/gitlab89/css/theme/README.md new file mode 100644 index 0000000..5a6c8fa --- /dev/null +++ b/gitlab89/css/theme/README.md @@ -0,0 +1,21 @@ +## Dependencies + +Themes are written using Sass to keep things modular and reduce the need for repeated selectors across files. Make sure that you have the reveal.js development environment including the Grunt dependencies installed before proceding: https://github.com/hakimel/reveal.js#full-setup + +## Creating a Theme + +To create your own theme, start by duplicating a ```.scss``` file in [/css/theme/source](https://github.com/hakimel/reveal.js/blob/master/css/theme/source). It will be automatically compiled by Grunt from Sass to CSS (see the [Gruntfile](https://github.com/hakimel/reveal.js/blob/master/Gruntfile.js)) when you run `grunt css-themes`. + +Each theme file does four things in the following order: + +1. **Include [/css/theme/template/mixins.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/mixins.scss)** +Shared utility functions. + +2. **Include [/css/theme/template/settings.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/settings.scss)** +Declares a set of custom variables that the template file (step 4) expects. Can be overridden in step 3. + +3. **Override** +This is where you override the default theme. Either by specifying variables (see [settings.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/settings.scss) for reference) or by adding any selectors and styles you please. + +4. **Include [/css/theme/template/theme.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/theme.scss)** +The template theme file which will generate final CSS output based on the currently defined variables. diff --git a/gitlab89/css/theme/beige.css b/gitlab89/css/theme/beige.css new file mode 100644 index 0000000..9d29bd5 --- /dev/null +++ b/gitlab89/css/theme/beige.css @@ -0,0 +1,290 @@ +/** + * Beige theme for reveal.js. + * + * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se + */ +@import url(../../lib/font/league-gothic/league-gothic.css); +@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); +/********************************************* + * GLOBAL STYLES + *********************************************/ +body { + background: #f7f2d3; + background: -moz-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%); + background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, white), color-stop(100%, #f7f2d3)); + background: -webkit-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%); + background: -o-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%); + background: -ms-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%); + background: radial-gradient(center, circle cover, white 0%, #f7f2d3 100%); + background-color: #f7f3de; } + +.reveal { + font-family: "Lato", sans-serif; + font-size: 36px; + font-weight: normal; + color: #333; } + +::selection { + color: #fff; + background: rgba(79, 64, 28, 0.99); + text-shadow: none; } + +.reveal .slides > section, +.reveal .slides > section > section { + line-height: 1.3; + font-weight: inherit; } + +/********************************************* + * HEADERS + *********************************************/ +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + margin: 0 0 20px 0; + color: #333; + font-family: "League Gothic", Impact, sans-serif; + font-weight: normal; + line-height: 1.2; + letter-spacing: normal; + text-transform: uppercase; + text-shadow: none; + word-wrap: break-word; } + +.reveal h1 { + font-size: 3.77em; } + +.reveal h2 { + font-size: 2.11em; } + +.reveal h3 { + font-size: 1.55em; } + +.reveal h4 { + font-size: 1em; } + +.reveal h1 { + text-shadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2), 0 5px 10px rgba(0, 0, 0, 0.25), 0 20px 20px rgba(0, 0, 0, 0.15); } + +/********************************************* + * OTHER + *********************************************/ +.reveal p { + margin: 20px 0; + line-height: 1.3; } + +/* Ensure certain elements are never larger than the slide itself */ +.reveal img, +.reveal video, +.reveal iframe { + max-width: 95%; + max-height: 95%; } + +.reveal strong, +.reveal b { + font-weight: bold; } + +.reveal em { + font-style: italic; } + +.reveal ol, +.reveal dl, +.reveal ul { + display: inline-block; + text-align: left; + margin: 0 0 0 1em; } + +.reveal ol { + list-style-type: decimal; } + +.reveal ul { + list-style-type: disc; } + +.reveal ul ul { + list-style-type: square; } + +.reveal ul ul ul { + list-style-type: circle; } + +.reveal ul ul, +.reveal ul ol, +.reveal ol ol, +.reveal ol ul { + display: block; + margin-left: 40px; } + +.reveal dt { + font-weight: bold; } + +.reveal dd { + margin-left: 40px; } + +.reveal q, +.reveal blockquote { + quotes: none; } + +.reveal blockquote { + display: block; + position: relative; + width: 70%; + margin: 20px auto; + padding: 5px; + font-style: italic; + background: rgba(255, 255, 255, 0.05); + box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } + +.reveal blockquote p:first-child, +.reveal blockquote p:last-child { + display: inline-block; } + +.reveal q { + font-style: italic; } + +.reveal pre { + display: block; + position: relative; + width: 90%; + margin: 20px auto; + text-align: left; + font-size: 0.55em; + font-family: monospace; + line-height: 1.2em; + word-wrap: break-word; + box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); } + +.reveal code { + font-family: monospace; } + +.reveal pre code { + display: block; + padding: 5px; + overflow: auto; + max-height: 400px; + word-wrap: normal; } + +.reveal table { + margin: auto; + border-collapse: collapse; + border-spacing: 0; } + +.reveal table th { + font-weight: bold; } + +.reveal table th, +.reveal table td { + text-align: left; + padding: 0.2em 0.5em 0.2em 0.5em; + border-bottom: 1px solid; } + +.reveal table th[align="center"], +.reveal table td[align="center"] { + text-align: center; } + +.reveal table th[align="right"], +.reveal table td[align="right"] { + text-align: right; } + +.reveal table tr:last-child td { + border-bottom: none; } + +.reveal sup { + vertical-align: super; } + +.reveal sub { + vertical-align: sub; } + +.reveal small { + display: inline-block; + font-size: 0.6em; + line-height: 1.2em; + vertical-align: top; } + +.reveal small * { + vertical-align: top; } + +/********************************************* + * LINKS + *********************************************/ +.reveal a { + color: #8b743d; + text-decoration: none; + -webkit-transition: color .15s ease; + -moz-transition: color .15s ease; + transition: color .15s ease; } + +.reveal a:hover { + color: #c0a86e; + text-shadow: none; + border: none; } + +.reveal .roll span:after { + color: #fff; + background: #564826; } + +/********************************************* + * IMAGES + *********************************************/ +.reveal section img { + margin: 15px 0px; + background: rgba(255, 255, 255, 0.12); + border: 4px solid #333; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } + +.reveal section img.plain { + border: 0; + box-shadow: none; } + +.reveal a img { + -webkit-transition: all .15s linear; + -moz-transition: all .15s linear; + transition: all .15s linear; } + +.reveal a:hover img { + background: rgba(255, 255, 255, 0.2); + border-color: #8b743d; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } + +/********************************************* + * NAVIGATION CONTROLS + *********************************************/ +.reveal .controls .navigate-left, +.reveal .controls .navigate-left.enabled { + border-right-color: #8b743d; } + +.reveal .controls .navigate-right, +.reveal .controls .navigate-right.enabled { + border-left-color: #8b743d; } + +.reveal .controls .navigate-up, +.reveal .controls .navigate-up.enabled { + border-bottom-color: #8b743d; } + +.reveal .controls .navigate-down, +.reveal .controls .navigate-down.enabled { + border-top-color: #8b743d; } + +.reveal .controls .navigate-left.enabled:hover { + border-right-color: #c0a86e; } + +.reveal .controls .navigate-right.enabled:hover { + border-left-color: #c0a86e; } + +.reveal .controls .navigate-up.enabled:hover { + border-bottom-color: #c0a86e; } + +.reveal .controls .navigate-down.enabled:hover { + border-top-color: #c0a86e; } + +/********************************************* + * PROGRESS BAR + *********************************************/ +.reveal .progress { + background: rgba(0, 0, 0, 0.2); } + +.reveal .progress span { + background: #8b743d; + -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } diff --git a/gitlab89/css/theme/black.css b/gitlab89/css/theme/black.css new file mode 100644 index 0000000..f0a265f --- /dev/null +++ b/gitlab89/css/theme/black.css @@ -0,0 +1,286 @@ +/** + * Black theme for reveal.js. This is the opposite of the 'white' theme. + * + * By Hakim El Hattab, http://hakim.se + */ +@import url(../../lib/font/source-sans-pro/source-sans-pro.css); +section.has-light-background, section.has-light-background h1, section.has-light-background h2, section.has-light-background h3, section.has-light-background h4, section.has-light-background h5, section.has-light-background h6 { + color: #222; } + +/********************************************* + * GLOBAL STYLES + *********************************************/ +body { + background: #222; + background-color: #222; } + +.reveal { + font-family: "Source Sans Pro", Helvetica, sans-serif; + font-size: 38px; + font-weight: normal; + color: #fff; } + +::selection { + color: #fff; + background: #bee4fd; + text-shadow: none; } + +.reveal .slides > section, +.reveal .slides > section > section { + line-height: 1.3; + font-weight: inherit; } + +/********************************************* + * HEADERS + *********************************************/ +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + margin: 0 0 20px 0; + color: #fff; + font-family: "Source Sans Pro", Helvetica, sans-serif; + font-weight: 600; + line-height: 1.2; + letter-spacing: normal; + text-transform: uppercase; + text-shadow: none; + word-wrap: break-word; } + +.reveal h1 { + font-size: 2.5em; } + +.reveal h2 { + font-size: 1.6em; } + +.reveal h3 { + font-size: 1.3em; } + +.reveal h4 { + font-size: 1em; } + +.reveal h1 { + text-shadow: none; } + +/********************************************* + * OTHER + *********************************************/ +.reveal p { + margin: 20px 0; + line-height: 1.3; } + +/* Ensure certain elements are never larger than the slide itself */ +.reveal img, +.reveal video, +.reveal iframe { + max-width: 95%; + max-height: 95%; } + +.reveal strong, +.reveal b { + font-weight: bold; } + +.reveal em { + font-style: italic; } + +.reveal ol, +.reveal dl, +.reveal ul { + display: inline-block; + text-align: left; + margin: 0 0 0 1em; } + +.reveal ol { + list-style-type: decimal; } + +.reveal ul { + list-style-type: disc; } + +.reveal ul ul { + list-style-type: square; } + +.reveal ul ul ul { + list-style-type: circle; } + +.reveal ul ul, +.reveal ul ol, +.reveal ol ol, +.reveal ol ul { + display: block; + margin-left: 40px; } + +.reveal dt { + font-weight: bold; } + +.reveal dd { + margin-left: 40px; } + +.reveal q, +.reveal blockquote { + quotes: none; } + +.reveal blockquote { + display: block; + position: relative; + width: 70%; + margin: 20px auto; + padding: 5px; + font-style: italic; + background: rgba(255, 255, 255, 0.05); + box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } + +.reveal blockquote p:first-child, +.reveal blockquote p:last-child { + display: inline-block; } + +.reveal q { + font-style: italic; } + +.reveal pre { + display: block; + position: relative; + width: 90%; + margin: 20px auto; + text-align: left; + font-size: 0.55em; + font-family: monospace; + line-height: 1.2em; + word-wrap: break-word; + box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); } + +.reveal code { + font-family: monospace; } + +.reveal pre code { + display: block; + padding: 5px; + overflow: auto; + max-height: 400px; + word-wrap: normal; } + +.reveal table { + margin: auto; + border-collapse: collapse; + border-spacing: 0; } + +.reveal table th { + font-weight: bold; } + +.reveal table th, +.reveal table td { + text-align: left; + padding: 0.2em 0.5em 0.2em 0.5em; + border-bottom: 1px solid; } + +.reveal table th[align="center"], +.reveal table td[align="center"] { + text-align: center; } + +.reveal table th[align="right"], +.reveal table td[align="right"] { + text-align: right; } + +.reveal table tr:last-child td { + border-bottom: none; } + +.reveal sup { + vertical-align: super; } + +.reveal sub { + vertical-align: sub; } + +.reveal small { + display: inline-block; + font-size: 0.6em; + line-height: 1.2em; + vertical-align: top; } + +.reveal small * { + vertical-align: top; } + +/********************************************* + * LINKS + *********************************************/ +.reveal a { + color: #42affa; + text-decoration: none; + -webkit-transition: color .15s ease; + -moz-transition: color .15s ease; + transition: color .15s ease; } + +.reveal a:hover { + color: #8dcffc; + text-shadow: none; + border: none; } + +.reveal .roll span:after { + color: #fff; + background: #068de9; } + +/********************************************* + * IMAGES + *********************************************/ +.reveal section img { + margin: 15px 0px; + background: rgba(255, 255, 255, 0.12); + border: 4px solid #fff; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } + +.reveal section img.plain { + border: 0; + box-shadow: none; } + +.reveal a img { + -webkit-transition: all .15s linear; + -moz-transition: all .15s linear; + transition: all .15s linear; } + +.reveal a:hover img { + background: rgba(255, 255, 255, 0.2); + border-color: #42affa; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } + +/********************************************* + * NAVIGATION CONTROLS + *********************************************/ +.reveal .controls .navigate-left, +.reveal .controls .navigate-left.enabled { + border-right-color: #42affa; } + +.reveal .controls .navigate-right, +.reveal .controls .navigate-right.enabled { + border-left-color: #42affa; } + +.reveal .controls .navigate-up, +.reveal .controls .navigate-up.enabled { + border-bottom-color: #42affa; } + +.reveal .controls .navigate-down, +.reveal .controls .navigate-down.enabled { + border-top-color: #42affa; } + +.reveal .controls .navigate-left.enabled:hover { + border-right-color: #8dcffc; } + +.reveal .controls .navigate-right.enabled:hover { + border-left-color: #8dcffc; } + +.reveal .controls .navigate-up.enabled:hover { + border-bottom-color: #8dcffc; } + +.reveal .controls .navigate-down.enabled:hover { + border-top-color: #8dcffc; } + +/********************************************* + * PROGRESS BAR + *********************************************/ +.reveal .progress { + background: rgba(0, 0, 0, 0.2); } + +.reveal .progress span { + background: #42affa; + -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } diff --git a/gitlab89/css/theme/blood.css b/gitlab89/css/theme/blood.css new file mode 100644 index 0000000..0d44848 --- /dev/null +++ b/gitlab89/css/theme/blood.css @@ -0,0 +1,309 @@ +/** + * Blood theme for reveal.js + * Author: Walther http://github.com/Walther + * + * Designed to be used with highlight.js theme + * "monokai_sublime.css" available from + * https://github.com/isagalaev/highlight.js/ + * + * For other themes, change $codeBackground accordingly. + * + */ +@import url(https://fonts.googleapis.com/css?family=Ubuntu:300,700,300italic,700italic); +/********************************************* + * GLOBAL STYLES + *********************************************/ +body { + background: #222; + background-color: #222; } + +.reveal { + font-family: Ubuntu, "sans-serif"; + font-size: 36px; + font-weight: normal; + color: #eee; } + +::selection { + color: #fff; + background: #a23; + text-shadow: none; } + +.reveal .slides > section, +.reveal .slides > section > section { + line-height: 1.3; + font-weight: inherit; } + +/********************************************* + * HEADERS + *********************************************/ +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + margin: 0 0 20px 0; + color: #eee; + font-family: Ubuntu, "sans-serif"; + font-weight: normal; + line-height: 1.2; + letter-spacing: normal; + text-transform: uppercase; + text-shadow: 2px 2px 2px #222; + word-wrap: break-word; } + +.reveal h1 { + font-size: 3.77em; } + +.reveal h2 { + font-size: 2.11em; } + +.reveal h3 { + font-size: 1.55em; } + +.reveal h4 { + font-size: 1em; } + +.reveal h1 { + text-shadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2), 0 5px 10px rgba(0, 0, 0, 0.25), 0 20px 20px rgba(0, 0, 0, 0.15); } + +/********************************************* + * OTHER + *********************************************/ +.reveal p { + margin: 20px 0; + line-height: 1.3; } + +/* Ensure certain elements are never larger than the slide itself */ +.reveal img, +.reveal video, +.reveal iframe { + max-width: 95%; + max-height: 95%; } + +.reveal strong, +.reveal b { + font-weight: bold; } + +.reveal em { + font-style: italic; } + +.reveal ol, +.reveal dl, +.reveal ul { + display: inline-block; + text-align: left; + margin: 0 0 0 1em; } + +.reveal ol { + list-style-type: decimal; } + +.reveal ul { + list-style-type: disc; } + +.reveal ul ul { + list-style-type: square; } + +.reveal ul ul ul { + list-style-type: circle; } + +.reveal ul ul, +.reveal ul ol, +.reveal ol ol, +.reveal ol ul { + display: block; + margin-left: 40px; } + +.reveal dt { + font-weight: bold; } + +.reveal dd { + margin-left: 40px; } + +.reveal q, +.reveal blockquote { + quotes: none; } + +.reveal blockquote { + display: block; + position: relative; + width: 70%; + margin: 20px auto; + padding: 5px; + font-style: italic; + background: rgba(255, 255, 255, 0.05); + box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } + +.reveal blockquote p:first-child, +.reveal blockquote p:last-child { + display: inline-block; } + +.reveal q { + font-style: italic; } + +.reveal pre { + display: block; + position: relative; + width: 90%; + margin: 20px auto; + text-align: left; + font-size: 0.55em; + font-family: monospace; + line-height: 1.2em; + word-wrap: break-word; + box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); } + +.reveal code { + font-family: monospace; } + +.reveal pre code { + display: block; + padding: 5px; + overflow: auto; + max-height: 400px; + word-wrap: normal; } + +.reveal table { + margin: auto; + border-collapse: collapse; + border-spacing: 0; } + +.reveal table th { + font-weight: bold; } + +.reveal table th, +.reveal table td { + text-align: left; + padding: 0.2em 0.5em 0.2em 0.5em; + border-bottom: 1px solid; } + +.reveal table th[align="center"], +.reveal table td[align="center"] { + text-align: center; } + +.reveal table th[align="right"], +.reveal table td[align="right"] { + text-align: right; } + +.reveal table tr:last-child td { + border-bottom: none; } + +.reveal sup { + vertical-align: super; } + +.reveal sub { + vertical-align: sub; } + +.reveal small { + display: inline-block; + font-size: 0.6em; + line-height: 1.2em; + vertical-align: top; } + +.reveal small * { + vertical-align: top; } + +/********************************************* + * LINKS + *********************************************/ +.reveal a { + color: #a23; + text-decoration: none; + -webkit-transition: color .15s ease; + -moz-transition: color .15s ease; + transition: color .15s ease; } + +.reveal a:hover { + color: #dd5566; + text-shadow: none; + border: none; } + +.reveal .roll span:after { + color: #fff; + background: #6a1520; } + +/********************************************* + * IMAGES + *********************************************/ +.reveal section img { + margin: 15px 0px; + background: rgba(255, 255, 255, 0.12); + border: 4px solid #eee; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } + +.reveal section img.plain { + border: 0; + box-shadow: none; } + +.reveal a img { + -webkit-transition: all .15s linear; + -moz-transition: all .15s linear; + transition: all .15s linear; } + +.reveal a:hover img { + background: rgba(255, 255, 255, 0.2); + border-color: #a23; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } + +/********************************************* + * NAVIGATION CONTROLS + *********************************************/ +.reveal .controls .navigate-left, +.reveal .controls .navigate-left.enabled { + border-right-color: #a23; } + +.reveal .controls .navigate-right, +.reveal .controls .navigate-right.enabled { + border-left-color: #a23; } + +.reveal .controls .navigate-up, +.reveal .controls .navigate-up.enabled { + border-bottom-color: #a23; } + +.reveal .controls .navigate-down, +.reveal .controls .navigate-down.enabled { + border-top-color: #a23; } + +.reveal .controls .navigate-left.enabled:hover { + border-right-color: #dd5566; } + +.reveal .controls .navigate-right.enabled:hover { + border-left-color: #dd5566; } + +.reveal .controls .navigate-up.enabled:hover { + border-bottom-color: #dd5566; } + +.reveal .controls .navigate-down.enabled:hover { + border-top-color: #dd5566; } + +/********************************************* + * PROGRESS BAR + *********************************************/ +.reveal .progress { + background: rgba(0, 0, 0, 0.2); } + +.reveal .progress span { + background: #a23; + -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } + +.reveal p { + font-weight: 300; + text-shadow: 1px 1px #222; } + +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + font-weight: 700; } + +.reveal p code { + background-color: #23241f; + display: inline-block; + border-radius: 7px; } + +.reveal small code { + vertical-align: baseline; } diff --git a/gitlab89/css/theme/league.css b/gitlab89/css/theme/league.css new file mode 100644 index 0000000..1f7ad4c --- /dev/null +++ b/gitlab89/css/theme/league.css @@ -0,0 +1,292 @@ +/** + * League theme for reveal.js. + * + * This was the default theme pre-3.0.0. + * + * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se + */ +@import url(../../lib/font/league-gothic/league-gothic.css); +@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); +/********************************************* + * GLOBAL STYLES + *********************************************/ +body { + background: #1c1e20; + background: -moz-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%); + background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, #555a5f), color-stop(100%, #1c1e20)); + background: -webkit-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%); + background: -o-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%); + background: -ms-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%); + background: radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%); + background-color: #2b2b2b; } + +.reveal { + font-family: "Lato", sans-serif; + font-size: 36px; + font-weight: normal; + color: #eee; } + +::selection { + color: #fff; + background: #FF5E99; + text-shadow: none; } + +.reveal .slides > section, +.reveal .slides > section > section { + line-height: 1.3; + font-weight: inherit; } + +/********************************************* + * HEADERS + *********************************************/ +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + margin: 0 0 20px 0; + color: #eee; + font-family: "League Gothic", Impact, sans-serif; + font-weight: normal; + line-height: 1.2; + letter-spacing: normal; + text-transform: uppercase; + text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2); + word-wrap: break-word; } + +.reveal h1 { + font-size: 3.77em; } + +.reveal h2 { + font-size: 2.11em; } + +.reveal h3 { + font-size: 1.55em; } + +.reveal h4 { + font-size: 1em; } + +.reveal h1 { + text-shadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2), 0 5px 10px rgba(0, 0, 0, 0.25), 0 20px 20px rgba(0, 0, 0, 0.15); } + +/********************************************* + * OTHER + *********************************************/ +.reveal p { + margin: 20px 0; + line-height: 1.3; } + +/* Ensure certain elements are never larger than the slide itself */ +.reveal img, +.reveal video, +.reveal iframe { + max-width: 95%; + max-height: 95%; } + +.reveal strong, +.reveal b { + font-weight: bold; } + +.reveal em { + font-style: italic; } + +.reveal ol, +.reveal dl, +.reveal ul { + display: inline-block; + text-align: left; + margin: 0 0 0 1em; } + +.reveal ol { + list-style-type: decimal; } + +.reveal ul { + list-style-type: disc; } + +.reveal ul ul { + list-style-type: square; } + +.reveal ul ul ul { + list-style-type: circle; } + +.reveal ul ul, +.reveal ul ol, +.reveal ol ol, +.reveal ol ul { + display: block; + margin-left: 40px; } + +.reveal dt { + font-weight: bold; } + +.reveal dd { + margin-left: 40px; } + +.reveal q, +.reveal blockquote { + quotes: none; } + +.reveal blockquote { + display: block; + position: relative; + width: 70%; + margin: 20px auto; + padding: 5px; + font-style: italic; + background: rgba(255, 255, 255, 0.05); + box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } + +.reveal blockquote p:first-child, +.reveal blockquote p:last-child { + display: inline-block; } + +.reveal q { + font-style: italic; } + +.reveal pre { + display: block; + position: relative; + width: 90%; + margin: 20px auto; + text-align: left; + font-size: 0.55em; + font-family: monospace; + line-height: 1.2em; + word-wrap: break-word; + box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); } + +.reveal code { + font-family: monospace; } + +.reveal pre code { + display: block; + padding: 5px; + overflow: auto; + max-height: 400px; + word-wrap: normal; } + +.reveal table { + margin: auto; + border-collapse: collapse; + border-spacing: 0; } + +.reveal table th { + font-weight: bold; } + +.reveal table th, +.reveal table td { + text-align: left; + padding: 0.2em 0.5em 0.2em 0.5em; + border-bottom: 1px solid; } + +.reveal table th[align="center"], +.reveal table td[align="center"] { + text-align: center; } + +.reveal table th[align="right"], +.reveal table td[align="right"] { + text-align: right; } + +.reveal table tr:last-child td { + border-bottom: none; } + +.reveal sup { + vertical-align: super; } + +.reveal sub { + vertical-align: sub; } + +.reveal small { + display: inline-block; + font-size: 0.6em; + line-height: 1.2em; + vertical-align: top; } + +.reveal small * { + vertical-align: top; } + +/********************************************* + * LINKS + *********************************************/ +.reveal a { + color: #13DAEC; + text-decoration: none; + -webkit-transition: color .15s ease; + -moz-transition: color .15s ease; + transition: color .15s ease; } + +.reveal a:hover { + color: #71e9f4; + text-shadow: none; + border: none; } + +.reveal .roll span:after { + color: #fff; + background: #0d99a5; } + +/********************************************* + * IMAGES + *********************************************/ +.reveal section img { + margin: 15px 0px; + background: rgba(255, 255, 255, 0.12); + border: 4px solid #eee; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } + +.reveal section img.plain { + border: 0; + box-shadow: none; } + +.reveal a img { + -webkit-transition: all .15s linear; + -moz-transition: all .15s linear; + transition: all .15s linear; } + +.reveal a:hover img { + background: rgba(255, 255, 255, 0.2); + border-color: #13DAEC; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } + +/********************************************* + * NAVIGATION CONTROLS + *********************************************/ +.reveal .controls .navigate-left, +.reveal .controls .navigate-left.enabled { + border-right-color: #13DAEC; } + +.reveal .controls .navigate-right, +.reveal .controls .navigate-right.enabled { + border-left-color: #13DAEC; } + +.reveal .controls .navigate-up, +.reveal .controls .navigate-up.enabled { + border-bottom-color: #13DAEC; } + +.reveal .controls .navigate-down, +.reveal .controls .navigate-down.enabled { + border-top-color: #13DAEC; } + +.reveal .controls .navigate-left.enabled:hover { + border-right-color: #71e9f4; } + +.reveal .controls .navigate-right.enabled:hover { + border-left-color: #71e9f4; } + +.reveal .controls .navigate-up.enabled:hover { + border-bottom-color: #71e9f4; } + +.reveal .controls .navigate-down.enabled:hover { + border-top-color: #71e9f4; } + +/********************************************* + * PROGRESS BAR + *********************************************/ +.reveal .progress { + background: rgba(0, 0, 0, 0.2); } + +.reveal .progress span { + background: #13DAEC; + -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } diff --git a/gitlab89/css/theme/moon.css b/gitlab89/css/theme/moon.css new file mode 100644 index 0000000..4e5532a --- /dev/null +++ b/gitlab89/css/theme/moon.css @@ -0,0 +1,290 @@ +/** + * Solarized Dark theme for reveal.js. + * Author: Achim Staebler + */ +@import url(../../lib/font/league-gothic/league-gothic.css); +@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); +/** + * Solarized colors by Ethan Schoonover + */ +html * { + color-profile: sRGB; + rendering-intent: auto; } + +/********************************************* + * GLOBAL STYLES + *********************************************/ +body { + background: #002b36; + background-color: #002b36; } + +.reveal { + font-family: "Lato", sans-serif; + font-size: 36px; + font-weight: normal; + color: #93a1a1; } + +::selection { + color: #fff; + background: #d33682; + text-shadow: none; } + +.reveal .slides > section, +.reveal .slides > section > section { + line-height: 1.3; + font-weight: inherit; } + +/********************************************* + * HEADERS + *********************************************/ +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + margin: 0 0 20px 0; + color: #eee8d5; + font-family: "League Gothic", Impact, sans-serif; + font-weight: normal; + line-height: 1.2; + letter-spacing: normal; + text-transform: uppercase; + text-shadow: none; + word-wrap: break-word; } + +.reveal h1 { + font-size: 3.77em; } + +.reveal h2 { + font-size: 2.11em; } + +.reveal h3 { + font-size: 1.55em; } + +.reveal h4 { + font-size: 1em; } + +.reveal h1 { + text-shadow: none; } + +/********************************************* + * OTHER + *********************************************/ +.reveal p { + margin: 20px 0; + line-height: 1.3; } + +/* Ensure certain elements are never larger than the slide itself */ +.reveal img, +.reveal video, +.reveal iframe { + max-width: 95%; + max-height: 95%; } + +.reveal strong, +.reveal b { + font-weight: bold; } + +.reveal em { + font-style: italic; } + +.reveal ol, +.reveal dl, +.reveal ul { + display: inline-block; + text-align: left; + margin: 0 0 0 1em; } + +.reveal ol { + list-style-type: decimal; } + +.reveal ul { + list-style-type: disc; } + +.reveal ul ul { + list-style-type: square; } + +.reveal ul ul ul { + list-style-type: circle; } + +.reveal ul ul, +.reveal ul ol, +.reveal ol ol, +.reveal ol ul { + display: block; + margin-left: 40px; } + +.reveal dt { + font-weight: bold; } + +.reveal dd { + margin-left: 40px; } + +.reveal q, +.reveal blockquote { + quotes: none; } + +.reveal blockquote { + display: block; + position: relative; + width: 70%; + margin: 20px auto; + padding: 5px; + font-style: italic; + background: rgba(255, 255, 255, 0.05); + box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } + +.reveal blockquote p:first-child, +.reveal blockquote p:last-child { + display: inline-block; } + +.reveal q { + font-style: italic; } + +.reveal pre { + display: block; + position: relative; + width: 90%; + margin: 20px auto; + text-align: left; + font-size: 0.55em; + font-family: monospace; + line-height: 1.2em; + word-wrap: break-word; + box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); } + +.reveal code { + font-family: monospace; } + +.reveal pre code { + display: block; + padding: 5px; + overflow: auto; + max-height: 400px; + word-wrap: normal; } + +.reveal table { + margin: auto; + border-collapse: collapse; + border-spacing: 0; } + +.reveal table th { + font-weight: bold; } + +.reveal table th, +.reveal table td { + text-align: left; + padding: 0.2em 0.5em 0.2em 0.5em; + border-bottom: 1px solid; } + +.reveal table th[align="center"], +.reveal table td[align="center"] { + text-align: center; } + +.reveal table th[align="right"], +.reveal table td[align="right"] { + text-align: right; } + +.reveal table tr:last-child td { + border-bottom: none; } + +.reveal sup { + vertical-align: super; } + +.reveal sub { + vertical-align: sub; } + +.reveal small { + display: inline-block; + font-size: 0.6em; + line-height: 1.2em; + vertical-align: top; } + +.reveal small * { + vertical-align: top; } + +/********************************************* + * LINKS + *********************************************/ +.reveal a { + color: #268bd2; + text-decoration: none; + -webkit-transition: color .15s ease; + -moz-transition: color .15s ease; + transition: color .15s ease; } + +.reveal a:hover { + color: #78b9e6; + text-shadow: none; + border: none; } + +.reveal .roll span:after { + color: #fff; + background: #1a6091; } + +/********************************************* + * IMAGES + *********************************************/ +.reveal section img { + margin: 15px 0px; + background: rgba(255, 255, 255, 0.12); + border: 4px solid #93a1a1; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } + +.reveal section img.plain { + border: 0; + box-shadow: none; } + +.reveal a img { + -webkit-transition: all .15s linear; + -moz-transition: all .15s linear; + transition: all .15s linear; } + +.reveal a:hover img { + background: rgba(255, 255, 255, 0.2); + border-color: #268bd2; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } + +/********************************************* + * NAVIGATION CONTROLS + *********************************************/ +.reveal .controls .navigate-left, +.reveal .controls .navigate-left.enabled { + border-right-color: #268bd2; } + +.reveal .controls .navigate-right, +.reveal .controls .navigate-right.enabled { + border-left-color: #268bd2; } + +.reveal .controls .navigate-up, +.reveal .controls .navigate-up.enabled { + border-bottom-color: #268bd2; } + +.reveal .controls .navigate-down, +.reveal .controls .navigate-down.enabled { + border-top-color: #268bd2; } + +.reveal .controls .navigate-left.enabled:hover { + border-right-color: #78b9e6; } + +.reveal .controls .navigate-right.enabled:hover { + border-left-color: #78b9e6; } + +.reveal .controls .navigate-up.enabled:hover { + border-bottom-color: #78b9e6; } + +.reveal .controls .navigate-down.enabled:hover { + border-top-color: #78b9e6; } + +/********************************************* + * PROGRESS BAR + *********************************************/ +.reveal .progress { + background: rgba(0, 0, 0, 0.2); } + +.reveal .progress span { + background: #268bd2; + -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } diff --git a/gitlab89/css/theme/night.css b/gitlab89/css/theme/night.css new file mode 100644 index 0000000..d2fc296 --- /dev/null +++ b/gitlab89/css/theme/night.css @@ -0,0 +1,284 @@ +/** + * Black theme for reveal.js. + * + * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se + */ +@import url(https://fonts.googleapis.com/css?family=Montserrat:700); +@import url(https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic,700italic); +/********************************************* + * GLOBAL STYLES + *********************************************/ +body { + background: #111; + background-color: #111; } + +.reveal { + font-family: "Open Sans", sans-serif; + font-size: 30px; + font-weight: normal; + color: #eee; } + +::selection { + color: #fff; + background: #e7ad52; + text-shadow: none; } + +.reveal .slides > section, +.reveal .slides > section > section { + line-height: 1.3; + font-weight: inherit; } + +/********************************************* + * HEADERS + *********************************************/ +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + margin: 0 0 20px 0; + color: #eee; + font-family: "Montserrat", Impact, sans-serif; + font-weight: normal; + line-height: 1.2; + letter-spacing: -0.03em; + text-transform: none; + text-shadow: none; + word-wrap: break-word; } + +.reveal h1 { + font-size: 3.77em; } + +.reveal h2 { + font-size: 2.11em; } + +.reveal h3 { + font-size: 1.55em; } + +.reveal h4 { + font-size: 1em; } + +.reveal h1 { + text-shadow: none; } + +/********************************************* + * OTHER + *********************************************/ +.reveal p { + margin: 20px 0; + line-height: 1.3; } + +/* Ensure certain elements are never larger than the slide itself */ +.reveal img, +.reveal video, +.reveal iframe { + max-width: 95%; + max-height: 95%; } + +.reveal strong, +.reveal b { + font-weight: bold; } + +.reveal em { + font-style: italic; } + +.reveal ol, +.reveal dl, +.reveal ul { + display: inline-block; + text-align: left; + margin: 0 0 0 1em; } + +.reveal ol { + list-style-type: decimal; } + +.reveal ul { + list-style-type: disc; } + +.reveal ul ul { + list-style-type: square; } + +.reveal ul ul ul { + list-style-type: circle; } + +.reveal ul ul, +.reveal ul ol, +.reveal ol ol, +.reveal ol ul { + display: block; + margin-left: 40px; } + +.reveal dt { + font-weight: bold; } + +.reveal dd { + margin-left: 40px; } + +.reveal q, +.reveal blockquote { + quotes: none; } + +.reveal blockquote { + display: block; + position: relative; + width: 70%; + margin: 20px auto; + padding: 5px; + font-style: italic; + background: rgba(255, 255, 255, 0.05); + box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } + +.reveal blockquote p:first-child, +.reveal blockquote p:last-child { + display: inline-block; } + +.reveal q { + font-style: italic; } + +.reveal pre { + display: block; + position: relative; + width: 90%; + margin: 20px auto; + text-align: left; + font-size: 0.55em; + font-family: monospace; + line-height: 1.2em; + word-wrap: break-word; + box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); } + +.reveal code { + font-family: monospace; } + +.reveal pre code { + display: block; + padding: 5px; + overflow: auto; + max-height: 400px; + word-wrap: normal; } + +.reveal table { + margin: auto; + border-collapse: collapse; + border-spacing: 0; } + +.reveal table th { + font-weight: bold; } + +.reveal table th, +.reveal table td { + text-align: left; + padding: 0.2em 0.5em 0.2em 0.5em; + border-bottom: 1px solid; } + +.reveal table th[align="center"], +.reveal table td[align="center"] { + text-align: center; } + +.reveal table th[align="right"], +.reveal table td[align="right"] { + text-align: right; } + +.reveal table tr:last-child td { + border-bottom: none; } + +.reveal sup { + vertical-align: super; } + +.reveal sub { + vertical-align: sub; } + +.reveal small { + display: inline-block; + font-size: 0.6em; + line-height: 1.2em; + vertical-align: top; } + +.reveal small * { + vertical-align: top; } + +/********************************************* + * LINKS + *********************************************/ +.reveal a { + color: #e7ad52; + text-decoration: none; + -webkit-transition: color .15s ease; + -moz-transition: color .15s ease; + transition: color .15s ease; } + +.reveal a:hover { + color: #f3d7ac; + text-shadow: none; + border: none; } + +.reveal .roll span:after { + color: #fff; + background: #d08a1d; } + +/********************************************* + * IMAGES + *********************************************/ +.reveal section img { + margin: 15px 0px; + background: rgba(255, 255, 255, 0.12); + border: 4px solid #eee; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } + +.reveal section img.plain { + border: 0; + box-shadow: none; } + +.reveal a img { + -webkit-transition: all .15s linear; + -moz-transition: all .15s linear; + transition: all .15s linear; } + +.reveal a:hover img { + background: rgba(255, 255, 255, 0.2); + border-color: #e7ad52; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } + +/********************************************* + * NAVIGATION CONTROLS + *********************************************/ +.reveal .controls .navigate-left, +.reveal .controls .navigate-left.enabled { + border-right-color: #e7ad52; } + +.reveal .controls .navigate-right, +.reveal .controls .navigate-right.enabled { + border-left-color: #e7ad52; } + +.reveal .controls .navigate-up, +.reveal .controls .navigate-up.enabled { + border-bottom-color: #e7ad52; } + +.reveal .controls .navigate-down, +.reveal .controls .navigate-down.enabled { + border-top-color: #e7ad52; } + +.reveal .controls .navigate-left.enabled:hover { + border-right-color: #f3d7ac; } + +.reveal .controls .navigate-right.enabled:hover { + border-left-color: #f3d7ac; } + +.reveal .controls .navigate-up.enabled:hover { + border-bottom-color: #f3d7ac; } + +.reveal .controls .navigate-down.enabled:hover { + border-top-color: #f3d7ac; } + +/********************************************* + * PROGRESS BAR + *********************************************/ +.reveal .progress { + background: rgba(0, 0, 0, 0.2); } + +.reveal .progress span { + background: #e7ad52; + -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } diff --git a/gitlab89/css/theme/serif.css b/gitlab89/css/theme/serif.css new file mode 100644 index 0000000..7d5c35e --- /dev/null +++ b/gitlab89/css/theme/serif.css @@ -0,0 +1,286 @@ +/** + * A simple theme for reveal.js presentations, similar + * to the default theme. The accent color is brown. + * + * This theme is Copyright (C) 2012-2013 Owen Versteeg, http://owenversteeg.com - it is MIT licensed. + */ +.reveal a { + line-height: 1.3em; } + +/********************************************* + * GLOBAL STYLES + *********************************************/ +body { + background: #F0F1EB; + background-color: #F0F1EB; } + +.reveal { + font-family: "Palatino Linotype", "Book Antiqua", Palatino, FreeSerif, serif; + font-size: 36px; + font-weight: normal; + color: #000; } + +::selection { + color: #fff; + background: #26351C; + text-shadow: none; } + +.reveal .slides > section, +.reveal .slides > section > section { + line-height: 1.3; + font-weight: inherit; } + +/********************************************* + * HEADERS + *********************************************/ +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + margin: 0 0 20px 0; + color: #383D3D; + font-family: "Palatino Linotype", "Book Antiqua", Palatino, FreeSerif, serif; + font-weight: normal; + line-height: 1.2; + letter-spacing: normal; + text-transform: none; + text-shadow: none; + word-wrap: break-word; } + +.reveal h1 { + font-size: 3.77em; } + +.reveal h2 { + font-size: 2.11em; } + +.reveal h3 { + font-size: 1.55em; } + +.reveal h4 { + font-size: 1em; } + +.reveal h1 { + text-shadow: none; } + +/********************************************* + * OTHER + *********************************************/ +.reveal p { + margin: 20px 0; + line-height: 1.3; } + +/* Ensure certain elements are never larger than the slide itself */ +.reveal img, +.reveal video, +.reveal iframe { + max-width: 95%; + max-height: 95%; } + +.reveal strong, +.reveal b { + font-weight: bold; } + +.reveal em { + font-style: italic; } + +.reveal ol, +.reveal dl, +.reveal ul { + display: inline-block; + text-align: left; + margin: 0 0 0 1em; } + +.reveal ol { + list-style-type: decimal; } + +.reveal ul { + list-style-type: disc; } + +.reveal ul ul { + list-style-type: square; } + +.reveal ul ul ul { + list-style-type: circle; } + +.reveal ul ul, +.reveal ul ol, +.reveal ol ol, +.reveal ol ul { + display: block; + margin-left: 40px; } + +.reveal dt { + font-weight: bold; } + +.reveal dd { + margin-left: 40px; } + +.reveal q, +.reveal blockquote { + quotes: none; } + +.reveal blockquote { + display: block; + position: relative; + width: 70%; + margin: 20px auto; + padding: 5px; + font-style: italic; + background: rgba(255, 255, 255, 0.05); + box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } + +.reveal blockquote p:first-child, +.reveal blockquote p:last-child { + display: inline-block; } + +.reveal q { + font-style: italic; } + +.reveal pre { + display: block; + position: relative; + width: 90%; + margin: 20px auto; + text-align: left; + font-size: 0.55em; + font-family: monospace; + line-height: 1.2em; + word-wrap: break-word; + box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); } + +.reveal code { + font-family: monospace; } + +.reveal pre code { + display: block; + padding: 5px; + overflow: auto; + max-height: 400px; + word-wrap: normal; } + +.reveal table { + margin: auto; + border-collapse: collapse; + border-spacing: 0; } + +.reveal table th { + font-weight: bold; } + +.reveal table th, +.reveal table td { + text-align: left; + padding: 0.2em 0.5em 0.2em 0.5em; + border-bottom: 1px solid; } + +.reveal table th[align="center"], +.reveal table td[align="center"] { + text-align: center; } + +.reveal table th[align="right"], +.reveal table td[align="right"] { + text-align: right; } + +.reveal table tr:last-child td { + border-bottom: none; } + +.reveal sup { + vertical-align: super; } + +.reveal sub { + vertical-align: sub; } + +.reveal small { + display: inline-block; + font-size: 0.6em; + line-height: 1.2em; + vertical-align: top; } + +.reveal small * { + vertical-align: top; } + +/********************************************* + * LINKS + *********************************************/ +.reveal a { + color: #51483D; + text-decoration: none; + -webkit-transition: color .15s ease; + -moz-transition: color .15s ease; + transition: color .15s ease; } + +.reveal a:hover { + color: #8b7c69; + text-shadow: none; + border: none; } + +.reveal .roll span:after { + color: #fff; + background: #25211c; } + +/********************************************* + * IMAGES + *********************************************/ +.reveal section img { + margin: 15px 0px; + background: rgba(255, 255, 255, 0.12); + border: 4px solid #000; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } + +.reveal section img.plain { + border: 0; + box-shadow: none; } + +.reveal a img { + -webkit-transition: all .15s linear; + -moz-transition: all .15s linear; + transition: all .15s linear; } + +.reveal a:hover img { + background: rgba(255, 255, 255, 0.2); + border-color: #51483D; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } + +/********************************************* + * NAVIGATION CONTROLS + *********************************************/ +.reveal .controls .navigate-left, +.reveal .controls .navigate-left.enabled { + border-right-color: #51483D; } + +.reveal .controls .navigate-right, +.reveal .controls .navigate-right.enabled { + border-left-color: #51483D; } + +.reveal .controls .navigate-up, +.reveal .controls .navigate-up.enabled { + border-bottom-color: #51483D; } + +.reveal .controls .navigate-down, +.reveal .controls .navigate-down.enabled { + border-top-color: #51483D; } + +.reveal .controls .navigate-left.enabled:hover { + border-right-color: #8b7c69; } + +.reveal .controls .navigate-right.enabled:hover { + border-left-color: #8b7c69; } + +.reveal .controls .navigate-up.enabled:hover { + border-bottom-color: #8b7c69; } + +.reveal .controls .navigate-down.enabled:hover { + border-top-color: #8b7c69; } + +/********************************************* + * PROGRESS BAR + *********************************************/ +.reveal .progress { + background: rgba(0, 0, 0, 0.2); } + +.reveal .progress span { + background: #51483D; + -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } diff --git a/gitlab89/css/theme/simple.css b/gitlab89/css/theme/simple.css new file mode 100644 index 0000000..9123043 --- /dev/null +++ b/gitlab89/css/theme/simple.css @@ -0,0 +1,286 @@ +/** + * A simple theme for reveal.js presentations, similar + * to the default theme. The accent color is darkblue. + * + * This theme is Copyright (C) 2012 Owen Versteeg, https://github.com/StereotypicalApps. It is MIT licensed. + * reveal.js is Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se + */ +@import url(https://fonts.googleapis.com/css?family=News+Cycle:400,700); +@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); +/********************************************* + * GLOBAL STYLES + *********************************************/ +body { + background: #fff; + background-color: #fff; } + +.reveal { + font-family: "Lato", sans-serif; + font-size: 36px; + font-weight: normal; + color: #000; } + +::selection { + color: #fff; + background: rgba(0, 0, 0, 0.99); + text-shadow: none; } + +.reveal .slides > section, +.reveal .slides > section > section { + line-height: 1.3; + font-weight: inherit; } + +/********************************************* + * HEADERS + *********************************************/ +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + margin: 0 0 20px 0; + color: #000; + font-family: "News Cycle", Impact, sans-serif; + font-weight: normal; + line-height: 1.2; + letter-spacing: normal; + text-transform: none; + text-shadow: none; + word-wrap: break-word; } + +.reveal h1 { + font-size: 3.77em; } + +.reveal h2 { + font-size: 2.11em; } + +.reveal h3 { + font-size: 1.55em; } + +.reveal h4 { + font-size: 1em; } + +.reveal h1 { + text-shadow: none; } + +/********************************************* + * OTHER + *********************************************/ +.reveal p { + margin: 20px 0; + line-height: 1.3; } + +/* Ensure certain elements are never larger than the slide itself */ +.reveal img, +.reveal video, +.reveal iframe { + max-width: 95%; + max-height: 95%; } + +.reveal strong, +.reveal b { + font-weight: bold; } + +.reveal em { + font-style: italic; } + +.reveal ol, +.reveal dl, +.reveal ul { + display: inline-block; + text-align: left; + margin: 0 0 0 1em; } + +.reveal ol { + list-style-type: decimal; } + +.reveal ul { + list-style-type: disc; } + +.reveal ul ul { + list-style-type: square; } + +.reveal ul ul ul { + list-style-type: circle; } + +.reveal ul ul, +.reveal ul ol, +.reveal ol ol, +.reveal ol ul { + display: block; + margin-left: 40px; } + +.reveal dt { + font-weight: bold; } + +.reveal dd { + margin-left: 40px; } + +.reveal q, +.reveal blockquote { + quotes: none; } + +.reveal blockquote { + display: block; + position: relative; + width: 70%; + margin: 20px auto; + padding: 5px; + font-style: italic; + background: rgba(255, 255, 255, 0.05); + box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } + +.reveal blockquote p:first-child, +.reveal blockquote p:last-child { + display: inline-block; } + +.reveal q { + font-style: italic; } + +.reveal pre { + display: block; + position: relative; + width: 90%; + margin: 20px auto; + text-align: left; + font-size: 0.55em; + font-family: monospace; + line-height: 1.2em; + word-wrap: break-word; + box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); } + +.reveal code { + font-family: monospace; } + +.reveal pre code { + display: block; + padding: 5px; + overflow: auto; + max-height: 400px; + word-wrap: normal; } + +.reveal table { + margin: auto; + border-collapse: collapse; + border-spacing: 0; } + +.reveal table th { + font-weight: bold; } + +.reveal table th, +.reveal table td { + text-align: left; + padding: 0.2em 0.5em 0.2em 0.5em; + border-bottom: 1px solid; } + +.reveal table th[align="center"], +.reveal table td[align="center"] { + text-align: center; } + +.reveal table th[align="right"], +.reveal table td[align="right"] { + text-align: right; } + +.reveal table tr:last-child td { + border-bottom: none; } + +.reveal sup { + vertical-align: super; } + +.reveal sub { + vertical-align: sub; } + +.reveal small { + display: inline-block; + font-size: 0.6em; + line-height: 1.2em; + vertical-align: top; } + +.reveal small * { + vertical-align: top; } + +/********************************************* + * LINKS + *********************************************/ +.reveal a { + color: #00008B; + text-decoration: none; + -webkit-transition: color .15s ease; + -moz-transition: color .15s ease; + transition: color .15s ease; } + +.reveal a:hover { + color: #0000f1; + text-shadow: none; + border: none; } + +.reveal .roll span:after { + color: #fff; + background: #00003f; } + +/********************************************* + * IMAGES + *********************************************/ +.reveal section img { + margin: 15px 0px; + background: rgba(255, 255, 255, 0.12); + border: 4px solid #000; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } + +.reveal section img.plain { + border: 0; + box-shadow: none; } + +.reveal a img { + -webkit-transition: all .15s linear; + -moz-transition: all .15s linear; + transition: all .15s linear; } + +.reveal a:hover img { + background: rgba(255, 255, 255, 0.2); + border-color: #00008B; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } + +/********************************************* + * NAVIGATION CONTROLS + *********************************************/ +.reveal .controls .navigate-left, +.reveal .controls .navigate-left.enabled { + border-right-color: #00008B; } + +.reveal .controls .navigate-right, +.reveal .controls .navigate-right.enabled { + border-left-color: #00008B; } + +.reveal .controls .navigate-up, +.reveal .controls .navigate-up.enabled { + border-bottom-color: #00008B; } + +.reveal .controls .navigate-down, +.reveal .controls .navigate-down.enabled { + border-top-color: #00008B; } + +.reveal .controls .navigate-left.enabled:hover { + border-right-color: #0000f1; } + +.reveal .controls .navigate-right.enabled:hover { + border-left-color: #0000f1; } + +.reveal .controls .navigate-up.enabled:hover { + border-bottom-color: #0000f1; } + +.reveal .controls .navigate-down.enabled:hover { + border-top-color: #0000f1; } + +/********************************************* + * PROGRESS BAR + *********************************************/ +.reveal .progress { + background: rgba(0, 0, 0, 0.2); } + +.reveal .progress span { + background: #00008B; + -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } diff --git a/gitlab89/css/theme/sky.css b/gitlab89/css/theme/sky.css new file mode 100644 index 0000000..2b1e439 --- /dev/null +++ b/gitlab89/css/theme/sky.css @@ -0,0 +1,293 @@ +/** + * Sky theme for reveal.js. + * + * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se + */ +@import url(https://fonts.googleapis.com/css?family=Quicksand:400,700,400italic,700italic); +@import url(https://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700); +.reveal a { + line-height: 1.3em; } + +/********************************************* + * GLOBAL STYLES + *********************************************/ +body { + background: #add9e4; + background: -moz-radial-gradient(center, circle cover, #f7fbfc 0%, #add9e4 100%); + background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, #f7fbfc), color-stop(100%, #add9e4)); + background: -webkit-radial-gradient(center, circle cover, #f7fbfc 0%, #add9e4 100%); + background: -o-radial-gradient(center, circle cover, #f7fbfc 0%, #add9e4 100%); + background: -ms-radial-gradient(center, circle cover, #f7fbfc 0%, #add9e4 100%); + background: radial-gradient(center, circle cover, #f7fbfc 0%, #add9e4 100%); + background-color: #f7fbfc; } + +.reveal { + font-family: "Open Sans", sans-serif; + font-size: 36px; + font-weight: normal; + color: #333; } + +::selection { + color: #fff; + background: #134674; + text-shadow: none; } + +.reveal .slides > section, +.reveal .slides > section > section { + line-height: 1.3; + font-weight: inherit; } + +/********************************************* + * HEADERS + *********************************************/ +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + margin: 0 0 20px 0; + color: #333; + font-family: "Quicksand", sans-serif; + font-weight: normal; + line-height: 1.2; + letter-spacing: -0.08em; + text-transform: uppercase; + text-shadow: none; + word-wrap: break-word; } + +.reveal h1 { + font-size: 3.77em; } + +.reveal h2 { + font-size: 2.11em; } + +.reveal h3 { + font-size: 1.55em; } + +.reveal h4 { + font-size: 1em; } + +.reveal h1 { + text-shadow: none; } + +/********************************************* + * OTHER + *********************************************/ +.reveal p { + margin: 20px 0; + line-height: 1.3; } + +/* Ensure certain elements are never larger than the slide itself */ +.reveal img, +.reveal video, +.reveal iframe { + max-width: 95%; + max-height: 95%; } + +.reveal strong, +.reveal b { + font-weight: bold; } + +.reveal em { + font-style: italic; } + +.reveal ol, +.reveal dl, +.reveal ul { + display: inline-block; + text-align: left; + margin: 0 0 0 1em; } + +.reveal ol { + list-style-type: decimal; } + +.reveal ul { + list-style-type: disc; } + +.reveal ul ul { + list-style-type: square; } + +.reveal ul ul ul { + list-style-type: circle; } + +.reveal ul ul, +.reveal ul ol, +.reveal ol ol, +.reveal ol ul { + display: block; + margin-left: 40px; } + +.reveal dt { + font-weight: bold; } + +.reveal dd { + margin-left: 40px; } + +.reveal q, +.reveal blockquote { + quotes: none; } + +.reveal blockquote { + display: block; + position: relative; + width: 70%; + margin: 20px auto; + padding: 5px; + font-style: italic; + background: rgba(255, 255, 255, 0.05); + box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } + +.reveal blockquote p:first-child, +.reveal blockquote p:last-child { + display: inline-block; } + +.reveal q { + font-style: italic; } + +.reveal pre { + display: block; + position: relative; + width: 90%; + margin: 20px auto; + text-align: left; + font-size: 0.55em; + font-family: monospace; + line-height: 1.2em; + word-wrap: break-word; + box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); } + +.reveal code { + font-family: monospace; } + +.reveal pre code { + display: block; + padding: 5px; + overflow: auto; + max-height: 400px; + word-wrap: normal; } + +.reveal table { + margin: auto; + border-collapse: collapse; + border-spacing: 0; } + +.reveal table th { + font-weight: bold; } + +.reveal table th, +.reveal table td { + text-align: left; + padding: 0.2em 0.5em 0.2em 0.5em; + border-bottom: 1px solid; } + +.reveal table th[align="center"], +.reveal table td[align="center"] { + text-align: center; } + +.reveal table th[align="right"], +.reveal table td[align="right"] { + text-align: right; } + +.reveal table tr:last-child td { + border-bottom: none; } + +.reveal sup { + vertical-align: super; } + +.reveal sub { + vertical-align: sub; } + +.reveal small { + display: inline-block; + font-size: 0.6em; + line-height: 1.2em; + vertical-align: top; } + +.reveal small * { + vertical-align: top; } + +/********************************************* + * LINKS + *********************************************/ +.reveal a { + color: #3b759e; + text-decoration: none; + -webkit-transition: color .15s ease; + -moz-transition: color .15s ease; + transition: color .15s ease; } + +.reveal a:hover { + color: #74a7cb; + text-shadow: none; + border: none; } + +.reveal .roll span:after { + color: #fff; + background: #264c66; } + +/********************************************* + * IMAGES + *********************************************/ +.reveal section img { + margin: 15px 0px; + background: rgba(255, 255, 255, 0.12); + border: 4px solid #333; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } + +.reveal section img.plain { + border: 0; + box-shadow: none; } + +.reveal a img { + -webkit-transition: all .15s linear; + -moz-transition: all .15s linear; + transition: all .15s linear; } + +.reveal a:hover img { + background: rgba(255, 255, 255, 0.2); + border-color: #3b759e; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } + +/********************************************* + * NAVIGATION CONTROLS + *********************************************/ +.reveal .controls .navigate-left, +.reveal .controls .navigate-left.enabled { + border-right-color: #3b759e; } + +.reveal .controls .navigate-right, +.reveal .controls .navigate-right.enabled { + border-left-color: #3b759e; } + +.reveal .controls .navigate-up, +.reveal .controls .navigate-up.enabled { + border-bottom-color: #3b759e; } + +.reveal .controls .navigate-down, +.reveal .controls .navigate-down.enabled { + border-top-color: #3b759e; } + +.reveal .controls .navigate-left.enabled:hover { + border-right-color: #74a7cb; } + +.reveal .controls .navigate-right.enabled:hover { + border-left-color: #74a7cb; } + +.reveal .controls .navigate-up.enabled:hover { + border-bottom-color: #74a7cb; } + +.reveal .controls .navigate-down.enabled:hover { + border-top-color: #74a7cb; } + +/********************************************* + * PROGRESS BAR + *********************************************/ +.reveal .progress { + background: rgba(0, 0, 0, 0.2); } + +.reveal .progress span { + background: #3b759e; + -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } diff --git a/gitlab89/css/theme/solarized.css b/gitlab89/css/theme/solarized.css new file mode 100644 index 0000000..9a17ca8 --- /dev/null +++ b/gitlab89/css/theme/solarized.css @@ -0,0 +1,290 @@ +/** + * Solarized Light theme for reveal.js. + * Author: Achim Staebler + */ +@import url(../../lib/font/league-gothic/league-gothic.css); +@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); +/** + * Solarized colors by Ethan Schoonover + */ +html * { + color-profile: sRGB; + rendering-intent: auto; } + +/********************************************* + * GLOBAL STYLES + *********************************************/ +body { + background: #fdf6e3; + background-color: #fdf6e3; } + +.reveal { + font-family: "Lato", sans-serif; + font-size: 36px; + font-weight: normal; + color: #657b83; } + +::selection { + color: #fff; + background: #d33682; + text-shadow: none; } + +.reveal .slides > section, +.reveal .slides > section > section { + line-height: 1.3; + font-weight: inherit; } + +/********************************************* + * HEADERS + *********************************************/ +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + margin: 0 0 20px 0; + color: #586e75; + font-family: "League Gothic", Impact, sans-serif; + font-weight: normal; + line-height: 1.2; + letter-spacing: normal; + text-transform: uppercase; + text-shadow: none; + word-wrap: break-word; } + +.reveal h1 { + font-size: 3.77em; } + +.reveal h2 { + font-size: 2.11em; } + +.reveal h3 { + font-size: 1.55em; } + +.reveal h4 { + font-size: 1em; } + +.reveal h1 { + text-shadow: none; } + +/********************************************* + * OTHER + *********************************************/ +.reveal p { + margin: 20px 0; + line-height: 1.3; } + +/* Ensure certain elements are never larger than the slide itself */ +.reveal img, +.reveal video, +.reveal iframe { + max-width: 95%; + max-height: 95%; } + +.reveal strong, +.reveal b { + font-weight: bold; } + +.reveal em { + font-style: italic; } + +.reveal ol, +.reveal dl, +.reveal ul { + display: inline-block; + text-align: left; + margin: 0 0 0 1em; } + +.reveal ol { + list-style-type: decimal; } + +.reveal ul { + list-style-type: disc; } + +.reveal ul ul { + list-style-type: square; } + +.reveal ul ul ul { + list-style-type: circle; } + +.reveal ul ul, +.reveal ul ol, +.reveal ol ol, +.reveal ol ul { + display: block; + margin-left: 40px; } + +.reveal dt { + font-weight: bold; } + +.reveal dd { + margin-left: 40px; } + +.reveal q, +.reveal blockquote { + quotes: none; } + +.reveal blockquote { + display: block; + position: relative; + width: 70%; + margin: 20px auto; + padding: 5px; + font-style: italic; + background: rgba(255, 255, 255, 0.05); + box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } + +.reveal blockquote p:first-child, +.reveal blockquote p:last-child { + display: inline-block; } + +.reveal q { + font-style: italic; } + +.reveal pre { + display: block; + position: relative; + width: 90%; + margin: 20px auto; + text-align: left; + font-size: 0.55em; + font-family: monospace; + line-height: 1.2em; + word-wrap: break-word; + box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); } + +.reveal code { + font-family: monospace; } + +.reveal pre code { + display: block; + padding: 5px; + overflow: auto; + max-height: 400px; + word-wrap: normal; } + +.reveal table { + margin: auto; + border-collapse: collapse; + border-spacing: 0; } + +.reveal table th { + font-weight: bold; } + +.reveal table th, +.reveal table td { + text-align: left; + padding: 0.2em 0.5em 0.2em 0.5em; + border-bottom: 1px solid; } + +.reveal table th[align="center"], +.reveal table td[align="center"] { + text-align: center; } + +.reveal table th[align="right"], +.reveal table td[align="right"] { + text-align: right; } + +.reveal table tr:last-child td { + border-bottom: none; } + +.reveal sup { + vertical-align: super; } + +.reveal sub { + vertical-align: sub; } + +.reveal small { + display: inline-block; + font-size: 0.6em; + line-height: 1.2em; + vertical-align: top; } + +.reveal small * { + vertical-align: top; } + +/********************************************* + * LINKS + *********************************************/ +.reveal a { + color: #268bd2; + text-decoration: none; + -webkit-transition: color .15s ease; + -moz-transition: color .15s ease; + transition: color .15s ease; } + +.reveal a:hover { + color: #78b9e6; + text-shadow: none; + border: none; } + +.reveal .roll span:after { + color: #fff; + background: #1a6091; } + +/********************************************* + * IMAGES + *********************************************/ +.reveal section img { + margin: 15px 0px; + background: rgba(255, 255, 255, 0.12); + border: 4px solid #657b83; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } + +.reveal section img.plain { + border: 0; + box-shadow: none; } + +.reveal a img { + -webkit-transition: all .15s linear; + -moz-transition: all .15s linear; + transition: all .15s linear; } + +.reveal a:hover img { + background: rgba(255, 255, 255, 0.2); + border-color: #268bd2; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } + +/********************************************* + * NAVIGATION CONTROLS + *********************************************/ +.reveal .controls .navigate-left, +.reveal .controls .navigate-left.enabled { + border-right-color: #268bd2; } + +.reveal .controls .navigate-right, +.reveal .controls .navigate-right.enabled { + border-left-color: #268bd2; } + +.reveal .controls .navigate-up, +.reveal .controls .navigate-up.enabled { + border-bottom-color: #268bd2; } + +.reveal .controls .navigate-down, +.reveal .controls .navigate-down.enabled { + border-top-color: #268bd2; } + +.reveal .controls .navigate-left.enabled:hover { + border-right-color: #78b9e6; } + +.reveal .controls .navigate-right.enabled:hover { + border-left-color: #78b9e6; } + +.reveal .controls .navigate-up.enabled:hover { + border-bottom-color: #78b9e6; } + +.reveal .controls .navigate-down.enabled:hover { + border-top-color: #78b9e6; } + +/********************************************* + * PROGRESS BAR + *********************************************/ +.reveal .progress { + background: rgba(0, 0, 0, 0.2); } + +.reveal .progress span { + background: #268bd2; + -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } diff --git a/gitlab89/css/theme/source/beige.scss b/gitlab89/css/theme/source/beige.scss new file mode 100644 index 0000000..5564f53 --- /dev/null +++ b/gitlab89/css/theme/source/beige.scss @@ -0,0 +1,39 @@ +/** + * Beige theme for reveal.js. + * + * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se + */ + + +// Default mixins and settings ----------------- +@import "../template/mixins"; +@import "../template/settings"; +// --------------------------------------------- + + + +// Include theme-specific fonts +@import url(../../lib/font/league-gothic/league-gothic.css); +@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); + + +// Override theme settings (see ../template/settings.scss) +$mainColor: #333; +$headingColor: #333; +$headingTextShadow: none; +$backgroundColor: #f7f3de; +$linkColor: #8b743d; +$linkColorHover: lighten( $linkColor, 20% ); +$selectionBackgroundColor: rgba(79, 64, 28, 0.99); +$heading1TextShadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,.1), 0 0 5px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.3), 0 3px 5px rgba(0,0,0,.2), 0 5px 10px rgba(0,0,0,.25), 0 20px 20px rgba(0,0,0,.15); + +// Background generator +@mixin bodyBackground() { + @include radial-gradient( rgba(247,242,211,1), rgba(255,255,255,1) ); +} + + + +// Theme template ------------------------------ +@import "../template/theme"; +// --------------------------------------------- \ No newline at end of file diff --git a/gitlab89/css/theme/source/black.scss b/gitlab89/css/theme/source/black.scss new file mode 100644 index 0000000..5f7f601 --- /dev/null +++ b/gitlab89/css/theme/source/black.scss @@ -0,0 +1,49 @@ +/** + * Black theme for reveal.js. This is the opposite of the 'white' theme. + * + * By Hakim El Hattab, http://hakim.se + */ + + +// Default mixins and settings ----------------- +@import "../template/mixins"; +@import "../template/settings"; +// --------------------------------------------- + + +// Include theme-specific fonts +@import url(../../lib/font/source-sans-pro/source-sans-pro.css); + + +// Override theme settings (see ../template/settings.scss) +$backgroundColor: #222; + +$mainColor: #fff; +$headingColor: #fff; + +$mainFontSize: 38px; +$mainFont: 'Source Sans Pro', Helvetica, sans-serif; +$headingFont: 'Source Sans Pro', Helvetica, sans-serif; +$headingTextShadow: none; +$headingLetterSpacing: normal; +$headingTextTransform: uppercase; +$headingFontWeight: 600; +$linkColor: #42affa; +$linkColorHover: lighten( $linkColor, 15% ); +$selectionBackgroundColor: lighten( $linkColor, 25% ); + +$heading1Size: 2.5em; +$heading2Size: 1.6em; +$heading3Size: 1.3em; +$heading4Size: 1.0em; + +section.has-light-background { + &, h1, h2, h3, h4, h5, h6 { + color: #222; + } +} + + +// Theme template ------------------------------ +@import "../template/theme"; +// --------------------------------------------- \ No newline at end of file diff --git a/gitlab89/css/theme/source/blood.scss b/gitlab89/css/theme/source/blood.scss new file mode 100644 index 0000000..d22b53d --- /dev/null +++ b/gitlab89/css/theme/source/blood.scss @@ -0,0 +1,79 @@ +/** + * Blood theme for reveal.js + * Author: Walther http://github.com/Walther + * + * Designed to be used with highlight.js theme + * "monokai_sublime.css" available from + * https://github.com/isagalaev/highlight.js/ + * + * For other themes, change $codeBackground accordingly. + * + */ + + // Default mixins and settings ----------------- +@import "../template/mixins"; +@import "../template/settings"; +// --------------------------------------------- + +// Include theme-specific fonts + +@import url(https://fonts.googleapis.com/css?family=Ubuntu:300,700,300italic,700italic); + +// Colors used in the theme +$blood: #a23; +$coal: #222; +$codeBackground: #23241f; + +$backgroundColor: $coal; + +// Main text +$mainFont: Ubuntu, 'sans-serif'; +$mainFontSize: 36px; +$mainColor: #eee; + +// Headings +$headingFont: Ubuntu, 'sans-serif'; +$headingTextShadow: 2px 2px 2px $coal; + +// h1 shadow, borrowed humbly from +// (c) Default theme by Hakim El Hattab +$heading1TextShadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,.1), 0 0 5px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.3), 0 3px 5px rgba(0,0,0,.2), 0 5px 10px rgba(0,0,0,.25), 0 20px 20px rgba(0,0,0,.15); + +// Links +$linkColor: $blood; +$linkColorHover: lighten( $linkColor, 20% ); + +// Text selection +$selectionBackgroundColor: $blood; +$selectionColor: #fff; + + +// Theme template ------------------------------ +@import "../template/theme"; +// --------------------------------------------- + +// some overrides after theme template import + +.reveal p { + font-weight: 300; + text-shadow: 1px 1px $coal; +} + +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + font-weight: 700; +} + +.reveal p code { + background-color: $codeBackground; + display: inline-block; + border-radius: 7px; +} + +.reveal small code { + vertical-align: baseline; +} \ No newline at end of file diff --git a/gitlab89/css/theme/source/league.scss b/gitlab89/css/theme/source/league.scss new file mode 100644 index 0000000..46ea04a --- /dev/null +++ b/gitlab89/css/theme/source/league.scss @@ -0,0 +1,34 @@ +/** + * League theme for reveal.js. + * + * This was the default theme pre-3.0.0. + * + * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se + */ + + +// Default mixins and settings ----------------- +@import "../template/mixins"; +@import "../template/settings"; +// --------------------------------------------- + + + +// Include theme-specific fonts +@import url(../../lib/font/league-gothic/league-gothic.css); +@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); + +// Override theme settings (see ../template/settings.scss) +$headingTextShadow: 0px 0px 6px rgba(0,0,0,0.2); +$heading1TextShadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,.1), 0 0 5px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.3), 0 3px 5px rgba(0,0,0,.2), 0 5px 10px rgba(0,0,0,.25), 0 20px 20px rgba(0,0,0,.15); + +// Background generator +@mixin bodyBackground() { + @include radial-gradient( rgba(28,30,32,1), rgba(85,90,95,1) ); +} + + + +// Theme template ------------------------------ +@import "../template/theme"; +// --------------------------------------------- \ No newline at end of file diff --git a/gitlab89/css/theme/source/moon.scss b/gitlab89/css/theme/source/moon.scss new file mode 100644 index 0000000..e47e5b5 --- /dev/null +++ b/gitlab89/css/theme/source/moon.scss @@ -0,0 +1,57 @@ +/** + * Solarized Dark theme for reveal.js. + * Author: Achim Staebler + */ + + +// Default mixins and settings ----------------- +@import "../template/mixins"; +@import "../template/settings"; +// --------------------------------------------- + + + +// Include theme-specific fonts +@import url(../../lib/font/league-gothic/league-gothic.css); +@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); + +/** + * Solarized colors by Ethan Schoonover + */ +html * { + color-profile: sRGB; + rendering-intent: auto; +} + +// Solarized colors +$base03: #002b36; +$base02: #073642; +$base01: #586e75; +$base00: #657b83; +$base0: #839496; +$base1: #93a1a1; +$base2: #eee8d5; +$base3: #fdf6e3; +$yellow: #b58900; +$orange: #cb4b16; +$red: #dc322f; +$magenta: #d33682; +$violet: #6c71c4; +$blue: #268bd2; +$cyan: #2aa198; +$green: #859900; + +// Override theme settings (see ../template/settings.scss) +$mainColor: $base1; +$headingColor: $base2; +$headingTextShadow: none; +$backgroundColor: $base03; +$linkColor: $blue; +$linkColorHover: lighten( $linkColor, 20% ); +$selectionBackgroundColor: $magenta; + + + +// Theme template ------------------------------ +@import "../template/theme"; +// --------------------------------------------- diff --git a/gitlab89/css/theme/source/night.scss b/gitlab89/css/theme/source/night.scss new file mode 100644 index 0000000..b0cb57f --- /dev/null +++ b/gitlab89/css/theme/source/night.scss @@ -0,0 +1,35 @@ +/** + * Black theme for reveal.js. + * + * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se + */ + + +// Default mixins and settings ----------------- +@import "../template/mixins"; +@import "../template/settings"; +// --------------------------------------------- + + +// Include theme-specific fonts +@import url(https://fonts.googleapis.com/css?family=Montserrat:700); +@import url(https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic,700italic); + + +// Override theme settings (see ../template/settings.scss) +$backgroundColor: #111; + +$mainFont: 'Open Sans', sans-serif; +$linkColor: #e7ad52; +$linkColorHover: lighten( $linkColor, 20% ); +$headingFont: 'Montserrat', Impact, sans-serif; +$headingTextShadow: none; +$headingLetterSpacing: -0.03em; +$headingTextTransform: none; +$selectionBackgroundColor: #e7ad52; +$mainFontSize: 30px; + + +// Theme template ------------------------------ +@import "../template/theme"; +// --------------------------------------------- \ No newline at end of file diff --git a/gitlab89/css/theme/source/serif.scss b/gitlab89/css/theme/source/serif.scss new file mode 100644 index 0000000..ec3fcb3 --- /dev/null +++ b/gitlab89/css/theme/source/serif.scss @@ -0,0 +1,35 @@ +/** + * A simple theme for reveal.js presentations, similar + * to the default theme. The accent color is brown. + * + * This theme is Copyright (C) 2012-2013 Owen Versteeg, http://owenversteeg.com - it is MIT licensed. + */ + + +// Default mixins and settings ----------------- +@import "../template/mixins"; +@import "../template/settings"; +// --------------------------------------------- + + + +// Override theme settings (see ../template/settings.scss) +$mainFont: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif; +$mainColor: #000; +$headingFont: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif; +$headingColor: #383D3D; +$headingTextShadow: none; +$headingTextTransform: none; +$backgroundColor: #F0F1EB; +$linkColor: #51483D; +$linkColorHover: lighten( $linkColor, 20% ); +$selectionBackgroundColor: #26351C; + +.reveal a { + line-height: 1.3em; +} + + +// Theme template ------------------------------ +@import "../template/theme"; +// --------------------------------------------- diff --git a/gitlab89/css/theme/source/simple.scss b/gitlab89/css/theme/source/simple.scss new file mode 100644 index 0000000..84c7d9b --- /dev/null +++ b/gitlab89/css/theme/source/simple.scss @@ -0,0 +1,38 @@ +/** + * A simple theme for reveal.js presentations, similar + * to the default theme. The accent color is darkblue. + * + * This theme is Copyright (C) 2012 Owen Versteeg, https://github.com/StereotypicalApps. It is MIT licensed. + * reveal.js is Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se + */ + + +// Default mixins and settings ----------------- +@import "../template/mixins"; +@import "../template/settings"; +// --------------------------------------------- + + + +// Include theme-specific fonts +@import url(https://fonts.googleapis.com/css?family=News+Cycle:400,700); +@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); + + +// Override theme settings (see ../template/settings.scss) +$mainFont: 'Lato', sans-serif; +$mainColor: #000; +$headingFont: 'News Cycle', Impact, sans-serif; +$headingColor: #000; +$headingTextShadow: none; +$headingTextTransform: none; +$backgroundColor: #fff; +$linkColor: #00008B; +$linkColorHover: lighten( $linkColor, 20% ); +$selectionBackgroundColor: rgba(0, 0, 0, 0.99); + + + +// Theme template ------------------------------ +@import "../template/theme"; +// --------------------------------------------- \ No newline at end of file diff --git a/gitlab89/css/theme/source/sky.scss b/gitlab89/css/theme/source/sky.scss new file mode 100644 index 0000000..3fee67c --- /dev/null +++ b/gitlab89/css/theme/source/sky.scss @@ -0,0 +1,46 @@ +/** + * Sky theme for reveal.js. + * + * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se + */ + + +// Default mixins and settings ----------------- +@import "../template/mixins"; +@import "../template/settings"; +// --------------------------------------------- + + + +// Include theme-specific fonts +@import url(https://fonts.googleapis.com/css?family=Quicksand:400,700,400italic,700italic); +@import url(https://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700); + + +// Override theme settings (see ../template/settings.scss) +$mainFont: 'Open Sans', sans-serif; +$mainColor: #333; +$headingFont: 'Quicksand', sans-serif; +$headingColor: #333; +$headingLetterSpacing: -0.08em; +$headingTextShadow: none; +$backgroundColor: #f7fbfc; +$linkColor: #3b759e; +$linkColorHover: lighten( $linkColor, 20% ); +$selectionBackgroundColor: #134674; + +// Fix links so they are not cut off +.reveal a { + line-height: 1.3em; +} + +// Background generator +@mixin bodyBackground() { + @include radial-gradient( #add9e4, #f7fbfc ); +} + + + +// Theme template ------------------------------ +@import "../template/theme"; +// --------------------------------------------- diff --git a/gitlab89/css/theme/source/solarized.scss b/gitlab89/css/theme/source/solarized.scss new file mode 100644 index 0000000..912be56 --- /dev/null +++ b/gitlab89/css/theme/source/solarized.scss @@ -0,0 +1,63 @@ +/** + * Solarized Light theme for reveal.js. + * Author: Achim Staebler + */ + + +// Default mixins and settings ----------------- +@import "../template/mixins"; +@import "../template/settings"; +// --------------------------------------------- + + + +// Include theme-specific fonts +@import url(../../lib/font/league-gothic/league-gothic.css); +@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); + + +/** + * Solarized colors by Ethan Schoonover + */ +html * { + color-profile: sRGB; + rendering-intent: auto; +} + +// Solarized colors +$base03: #002b36; +$base02: #073642; +$base01: #586e75; +$base00: #657b83; +$base0: #839496; +$base1: #93a1a1; +$base2: #eee8d5; +$base3: #fdf6e3; +$yellow: #b58900; +$orange: #cb4b16; +$red: #dc322f; +$magenta: #d33682; +$violet: #6c71c4; +$blue: #268bd2; +$cyan: #2aa198; +$green: #859900; + +// Override theme settings (see ../template/settings.scss) +$mainColor: $base00; +$headingColor: $base01; +$headingTextShadow: none; +$backgroundColor: $base3; +$linkColor: $blue; +$linkColorHover: lighten( $linkColor, 20% ); +$selectionBackgroundColor: $magenta; + +// Background generator +// @mixin bodyBackground() { +// @include radial-gradient( rgba($base3,1), rgba(lighten($base3, 20%),1) ); +// } + + + +// Theme template ------------------------------ +@import "../template/theme"; +// --------------------------------------------- diff --git a/gitlab89/css/theme/source/white.scss b/gitlab89/css/theme/source/white.scss new file mode 100644 index 0000000..6758ce0 --- /dev/null +++ b/gitlab89/css/theme/source/white.scss @@ -0,0 +1,49 @@ +/** + * White theme for reveal.js. This is the opposite of the 'black' theme. + * + * By Hakim El Hattab, http://hakim.se + */ + + +// Default mixins and settings ----------------- +@import "../template/mixins"; +@import "../template/settings"; +// --------------------------------------------- + + +// Include theme-specific fonts +@import url(../../lib/font/source-sans-pro/source-sans-pro.css); + + +// Override theme settings (see ../template/settings.scss) +$backgroundColor: #fff; + +$mainColor: #222; +$headingColor: #222; + +$mainFontSize: 38px; +$mainFont: 'Source Sans Pro', Helvetica, sans-serif; +$headingFont: 'Source Sans Pro', Helvetica, sans-serif; +$headingTextShadow: none; +$headingLetterSpacing: normal; +$headingTextTransform: uppercase; +$headingFontWeight: 600; +$linkColor: #2a76dd; +$linkColorHover: lighten( $linkColor, 15% ); +$selectionBackgroundColor: lighten( $linkColor, 25% ); + +$heading1Size: 2.5em; +$heading2Size: 1.6em; +$heading3Size: 1.3em; +$heading4Size: 1.0em; + +section.has-dark-background { + &, h1, h2, h3, h4, h5, h6 { + color: #fff; + } +} + + +// Theme template ------------------------------ +@import "../template/theme"; +// --------------------------------------------- \ No newline at end of file diff --git a/gitlab89/css/theme/template/mixins.scss b/gitlab89/css/theme/template/mixins.scss new file mode 100644 index 0000000..e0c5606 --- /dev/null +++ b/gitlab89/css/theme/template/mixins.scss @@ -0,0 +1,29 @@ +@mixin vertical-gradient( $top, $bottom ) { + background: $top; + background: -moz-linear-gradient( top, $top 0%, $bottom 100% ); + background: -webkit-gradient( linear, left top, left bottom, color-stop(0%,$top), color-stop(100%,$bottom) ); + background: -webkit-linear-gradient( top, $top 0%, $bottom 100% ); + background: -o-linear-gradient( top, $top 0%, $bottom 100% ); + background: -ms-linear-gradient( top, $top 0%, $bottom 100% ); + background: linear-gradient( top, $top 0%, $bottom 100% ); +} + +@mixin horizontal-gradient( $top, $bottom ) { + background: $top; + background: -moz-linear-gradient( left, $top 0%, $bottom 100% ); + background: -webkit-gradient( linear, left top, right top, color-stop(0%,$top), color-stop(100%,$bottom) ); + background: -webkit-linear-gradient( left, $top 0%, $bottom 100% ); + background: -o-linear-gradient( left, $top 0%, $bottom 100% ); + background: -ms-linear-gradient( left, $top 0%, $bottom 100% ); + background: linear-gradient( left, $top 0%, $bottom 100% ); +} + +@mixin radial-gradient( $outer, $inner, $type: circle ) { + background: $outer; + background: -moz-radial-gradient( center, $type cover, $inner 0%, $outer 100% ); + background: -webkit-gradient( radial, center center, 0px, center center, 100%, color-stop(0%,$inner), color-stop(100%,$outer) ); + background: -webkit-radial-gradient( center, $type cover, $inner 0%, $outer 100% ); + background: -o-radial-gradient( center, $type cover, $inner 0%, $outer 100% ); + background: -ms-radial-gradient( center, $type cover, $inner 0%, $outer 100% ); + background: radial-gradient( center, $type cover, $inner 0%, $outer 100% ); +} \ No newline at end of file diff --git a/gitlab89/css/theme/template/settings.scss b/gitlab89/css/theme/template/settings.scss new file mode 100644 index 0000000..ffaac23 --- /dev/null +++ b/gitlab89/css/theme/template/settings.scss @@ -0,0 +1,43 @@ +// Base settings for all themes that can optionally be +// overridden by the super-theme + +// Background of the presentation +$backgroundColor: #2b2b2b; + +// Primary/body text +$mainFont: 'Lato', sans-serif; +$mainFontSize: 36px; +$mainColor: #eee; + +// Vertical spacing between blocks of text +$blockMargin: 20px; + +// Headings +$headingMargin: 0 0 $blockMargin 0; +$headingFont: 'League Gothic', Impact, sans-serif; +$headingColor: #eee; +$headingLineHeight: 1.2; +$headingLetterSpacing: normal; +$headingTextTransform: uppercase; +$headingTextShadow: none; +$headingFontWeight: normal; +$heading1TextShadow: $headingTextShadow; + +$heading1Size: 3.77em; +$heading2Size: 2.11em; +$heading3Size: 1.55em; +$heading4Size: 1.00em; + +// Links and actions +$linkColor: #13DAEC; +$linkColorHover: lighten( $linkColor, 20% ); + +// Text selection +$selectionBackgroundColor: #FF5E99; +$selectionColor: #fff; + +// Generates the presentation background, can be overridden +// to return a background image or gradient +@mixin bodyBackground() { + background: $backgroundColor; +} \ No newline at end of file diff --git a/gitlab89/css/theme/template/theme.scss b/gitlab89/css/theme/template/theme.scss new file mode 100644 index 0000000..9bb416a --- /dev/null +++ b/gitlab89/css/theme/template/theme.scss @@ -0,0 +1,345 @@ +// Base theme template for reveal.js + +/********************************************* + * GLOBAL STYLES + *********************************************/ + +body { + @include bodyBackground(); + background-color: $backgroundColor; +} + +.reveal { + font-family: $mainFont; + font-size: $mainFontSize; + font-weight: normal; + color: $mainColor; +} + +::selection { + color: $selectionColor; + background: $selectionBackgroundColor; + text-shadow: none; +} + +.reveal .slides>section, +.reveal .slides>section>section { + line-height: 1.3; + font-weight: inherit; +} + +/********************************************* + * HEADERS + *********************************************/ + +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + margin: $headingMargin; + color: $headingColor; + + font-family: $headingFont; + font-weight: $headingFontWeight; + line-height: $headingLineHeight; + letter-spacing: $headingLetterSpacing; + + text-transform: $headingTextTransform; + text-shadow: $headingTextShadow; + + word-wrap: break-word; +} + +.reveal h1 {font-size: $heading1Size; } +.reveal h2 {font-size: $heading2Size; } +.reveal h3 {font-size: $heading3Size; } +.reveal h4 {font-size: $heading4Size; } + +.reveal h1 { + text-shadow: $heading1TextShadow; +} + + +/********************************************* + * OTHER + *********************************************/ + +.reveal p { + margin: $blockMargin 0; + line-height: 1.3; +} + +/* Ensure certain elements are never larger than the slide itself */ +.reveal img, +.reveal video, +.reveal iframe { + max-width: 95%; + max-height: 95%; +} +.reveal strong, +.reveal b { + font-weight: bold; +} + +.reveal em { + font-style: italic; +} + +.reveal ol, +.reveal dl, +.reveal ul { + display: inline-block; + + text-align: left; + margin: 0 0 0 1em; +} + +.reveal ol { + list-style-type: decimal; +} + +.reveal ul { + list-style-type: disc; +} + +.reveal ul ul { + list-style-type: square; +} + +.reveal ul ul ul { + list-style-type: circle; +} + +.reveal ul ul, +.reveal ul ol, +.reveal ol ol, +.reveal ol ul { + display: block; + margin-left: 40px; +} + +.reveal dt { + font-weight: bold; +} + +.reveal dd { + margin-left: 40px; +} + +.reveal q, +.reveal blockquote { + quotes: none; +} + +.reveal blockquote { + display: block; + position: relative; + width: 70%; + margin: $blockMargin auto; + padding: 5px; + + font-style: italic; + background: rgba(255, 255, 255, 0.05); + box-shadow: 0px 0px 2px rgba(0,0,0,0.2); +} + .reveal blockquote p:first-child, + .reveal blockquote p:last-child { + display: inline-block; + } + +.reveal q { + font-style: italic; +} + +.reveal pre { + display: block; + position: relative; + width: 90%; + margin: $blockMargin auto; + + text-align: left; + font-size: 0.55em; + font-family: monospace; + line-height: 1.2em; + + word-wrap: break-word; + + box-shadow: 0px 0px 6px rgba(0,0,0,0.3); +} +.reveal code { + font-family: monospace; +} + +.reveal pre code { + display: block; + padding: 5px; + overflow: auto; + max-height: 400px; + word-wrap: normal; +} + +.reveal table { + margin: auto; + border-collapse: collapse; + border-spacing: 0; +} + +.reveal table th { + font-weight: bold; +} + +.reveal table th, +.reveal table td { + text-align: left; + padding: 0.2em 0.5em 0.2em 0.5em; + border-bottom: 1px solid; +} + +.reveal table th[align="center"], +.reveal table td[align="center"] { + text-align: center; +} + +.reveal table th[align="right"], +.reveal table td[align="right"] { + text-align: right; +} + +.reveal table tr:last-child td { + border-bottom: none; +} + +.reveal sup { + vertical-align: super; +} +.reveal sub { + vertical-align: sub; +} + +.reveal small { + display: inline-block; + font-size: 0.6em; + line-height: 1.2em; + vertical-align: top; +} + +.reveal small * { + vertical-align: top; +} + + +/********************************************* + * LINKS + *********************************************/ + +.reveal a { + color: $linkColor; + text-decoration: none; + + -webkit-transition: color .15s ease; + -moz-transition: color .15s ease; + transition: color .15s ease; +} + .reveal a:hover { + color: $linkColorHover; + + text-shadow: none; + border: none; + } + +.reveal .roll span:after { + color: #fff; + background: darken( $linkColor, 15% ); +} + + +/********************************************* + * IMAGES + *********************************************/ + +.reveal section img { + margin: 15px 0px; + background: rgba(255,255,255,0.12); + border: 4px solid $mainColor; + + box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); +} + + .reveal section img.plain { + border: 0; + box-shadow: none; + } + + .reveal a img { + -webkit-transition: all .15s linear; + -moz-transition: all .15s linear; + transition: all .15s linear; + } + + .reveal a:hover img { + background: rgba(255,255,255,0.2); + border-color: $linkColor; + + box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); + } + + +/********************************************* + * NAVIGATION CONTROLS + *********************************************/ + +.reveal .controls .navigate-left, +.reveal .controls .navigate-left.enabled { + border-right-color: $linkColor; +} + +.reveal .controls .navigate-right, +.reveal .controls .navigate-right.enabled { + border-left-color: $linkColor; +} + +.reveal .controls .navigate-up, +.reveal .controls .navigate-up.enabled { + border-bottom-color: $linkColor; +} + +.reveal .controls .navigate-down, +.reveal .controls .navigate-down.enabled { + border-top-color: $linkColor; +} + +.reveal .controls .navigate-left.enabled:hover { + border-right-color: $linkColorHover; +} + +.reveal .controls .navigate-right.enabled:hover { + border-left-color: $linkColorHover; +} + +.reveal .controls .navigate-up.enabled:hover { + border-bottom-color: $linkColorHover; +} + +.reveal .controls .navigate-down.enabled:hover { + border-top-color: $linkColorHover; +} + + +/********************************************* + * PROGRESS BAR + *********************************************/ + +.reveal .progress { + background: rgba(0,0,0,0.2); +} + .reveal .progress span { + background: $linkColor; + + -webkit-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985); + -moz-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985); + transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985); + } + + diff --git a/gitlab89/css/theme/white.css b/gitlab89/css/theme/white.css new file mode 100644 index 0000000..f55e094 --- /dev/null +++ b/gitlab89/css/theme/white.css @@ -0,0 +1,286 @@ +/** + * White theme for reveal.js. This is the opposite of the 'black' theme. + * + * By Hakim El Hattab, http://hakim.se + */ +@import url(../../lib/font/source-sans-pro/source-sans-pro.css); +section.has-dark-background, section.has-dark-background h1, section.has-dark-background h2, section.has-dark-background h3, section.has-dark-background h4, section.has-dark-background h5, section.has-dark-background h6 { + color: #fff; } + +/********************************************* + * GLOBAL STYLES + *********************************************/ +body { + background: #fff; + background-color: #fff; } + +.reveal { + font-family: "Source Sans Pro", Helvetica, sans-serif; + font-size: 38px; + font-weight: normal; + color: #222; } + +::selection { + color: #fff; + background: #98bdef; + text-shadow: none; } + +.reveal .slides > section, +.reveal .slides > section > section { + line-height: 1.3; + font-weight: inherit; } + +/********************************************* + * HEADERS + *********************************************/ +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + margin: 0 0 20px 0; + color: #222; + font-family: "Source Sans Pro", Helvetica, sans-serif; + font-weight: 600; + line-height: 1.2; + letter-spacing: normal; + text-transform: uppercase; + text-shadow: none; + word-wrap: break-word; } + +.reveal h1 { + font-size: 2.5em; } + +.reveal h2 { + font-size: 1.6em; } + +.reveal h3 { + font-size: 1.3em; } + +.reveal h4 { + font-size: 1em; } + +.reveal h1 { + text-shadow: none; } + +/********************************************* + * OTHER + *********************************************/ +.reveal p { + margin: 20px 0; + line-height: 1.3; } + +/* Ensure certain elements are never larger than the slide itself */ +.reveal img, +.reveal video, +.reveal iframe { + max-width: 95%; + max-height: 95%; } + +.reveal strong, +.reveal b { + font-weight: bold; } + +.reveal em { + font-style: italic; } + +.reveal ol, +.reveal dl, +.reveal ul { + display: inline-block; + text-align: left; + margin: 0 0 0 1em; } + +.reveal ol { + list-style-type: decimal; } + +.reveal ul { + list-style-type: disc; } + +.reveal ul ul { + list-style-type: square; } + +.reveal ul ul ul { + list-style-type: circle; } + +.reveal ul ul, +.reveal ul ol, +.reveal ol ol, +.reveal ol ul { + display: block; + margin-left: 40px; } + +.reveal dt { + font-weight: bold; } + +.reveal dd { + margin-left: 40px; } + +.reveal q, +.reveal blockquote { + quotes: none; } + +.reveal blockquote { + display: block; + position: relative; + width: 70%; + margin: 20px auto; + padding: 5px; + font-style: italic; + background: rgba(255, 255, 255, 0.05); + box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } + +.reveal blockquote p:first-child, +.reveal blockquote p:last-child { + display: inline-block; } + +.reveal q { + font-style: italic; } + +.reveal pre { + display: block; + position: relative; + width: 90%; + margin: 20px auto; + text-align: left; + font-size: 0.55em; + font-family: monospace; + line-height: 1.2em; + word-wrap: break-word; + box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); } + +.reveal code { + font-family: monospace; } + +.reveal pre code { + display: block; + padding: 5px; + overflow: auto; + max-height: 400px; + word-wrap: normal; } + +.reveal table { + margin: auto; + border-collapse: collapse; + border-spacing: 0; } + +.reveal table th { + font-weight: bold; } + +.reveal table th, +.reveal table td { + text-align: left; + padding: 0.2em 0.5em 0.2em 0.5em; + border-bottom: 1px solid; } + +.reveal table th[align="center"], +.reveal table td[align="center"] { + text-align: center; } + +.reveal table th[align="right"], +.reveal table td[align="right"] { + text-align: right; } + +.reveal table tr:last-child td { + border-bottom: none; } + +.reveal sup { + vertical-align: super; } + +.reveal sub { + vertical-align: sub; } + +.reveal small { + display: inline-block; + font-size: 0.6em; + line-height: 1.2em; + vertical-align: top; } + +.reveal small * { + vertical-align: top; } + +/********************************************* + * LINKS + *********************************************/ +.reveal a { + color: #2a76dd; + text-decoration: none; + -webkit-transition: color .15s ease; + -moz-transition: color .15s ease; + transition: color .15s ease; } + +.reveal a:hover { + color: #6ca0e8; + text-shadow: none; + border: none; } + +.reveal .roll span:after { + color: #fff; + background: #1a53a1; } + +/********************************************* + * IMAGES + *********************************************/ +.reveal section img { + margin: 15px 0px; + background: rgba(255, 255, 255, 0.12); + border: 4px solid #222; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } + +.reveal section img.plain { + border: 0; + box-shadow: none; } + +.reveal a img { + -webkit-transition: all .15s linear; + -moz-transition: all .15s linear; + transition: all .15s linear; } + +.reveal a:hover img { + background: rgba(255, 255, 255, 0.2); + border-color: #2a76dd; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } + +/********************************************* + * NAVIGATION CONTROLS + *********************************************/ +.reveal .controls .navigate-left, +.reveal .controls .navigate-left.enabled { + border-right-color: #2a76dd; } + +.reveal .controls .navigate-right, +.reveal .controls .navigate-right.enabled { + border-left-color: #2a76dd; } + +.reveal .controls .navigate-up, +.reveal .controls .navigate-up.enabled { + border-bottom-color: #2a76dd; } + +.reveal .controls .navigate-down, +.reveal .controls .navigate-down.enabled { + border-top-color: #2a76dd; } + +.reveal .controls .navigate-left.enabled:hover { + border-right-color: #6ca0e8; } + +.reveal .controls .navigate-right.enabled:hover { + border-left-color: #6ca0e8; } + +.reveal .controls .navigate-up.enabled:hover { + border-bottom-color: #6ca0e8; } + +.reveal .controls .navigate-down.enabled:hover { + border-top-color: #6ca0e8; } + +/********************************************* + * PROGRESS BAR + *********************************************/ +.reveal .progress { + background: rgba(0, 0, 0, 0.2); } + +.reveal .progress span { + background: #2a76dd; + -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } diff --git a/gitlab89/images/dashing.png b/gitlab89/images/dashing.png new file mode 100644 index 0000000000000000000000000000000000000000..31e6dc29028c6a6964106b194dd9daa1f5e85810 GIT binary patch literal 205915 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

}|zrm2LcV`+LOU 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%0D0!%~=Gh(ZZ3 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

lKh`cd%` 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

uLFGB1}+6;5-ImpAPEk_;@h-5fSm8uy`$xX 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 TGXU{hBtS`C{Y{PByU_myd7nj| literal 0 HcmV?d00001 diff --git a/gitlab89/images/gitlabcirunner-installation.png b/gitlab89/images/gitlabcirunner-installation.png new file mode 100644 index 0000000000000000000000000000000000000000..3ede8ec1936e68eb845007dacca3535109166b1e GIT binary patch literal 23640 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 Cp>v@C literal 0 HcmV?d00001 diff --git a/gitlab89/images/project-builds-section.png b/gitlab89/images/project-builds-section.png new file mode 100644 index 0000000000000000000000000000000000000000..837714d21cf09817222ecfc43d39602909bd4237 GIT binary patch literal 92445 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 literal 0 HcmV?d00001 diff --git a/gitlab89/index.html b/gitlab89/index.html new file mode 100644 index 0000000..8cd4ded --- /dev/null +++ b/gitlab89/index.html @@ -0,0 +1,77 @@ + + + + + + + Gitlab + + + + + + + + + + + + + + + + + + + + + + + +

+ + + + + + + diff --git a/gitlab89/js/reveal.js b/gitlab89/js/reveal.js new file mode 100644 index 0000000..2c92954 --- /dev/null +++ b/gitlab89/js/reveal.js @@ -0,0 +1,4677 @@ +/*! + * reveal.js + * http://lab.hakim.se/reveal-js + * MIT licensed + * + * Copyright (C) 2016 Hakim El Hattab, http://hakim.se + */ +(function( root, factory ) { + if( typeof define === 'function' && define.amd ) { + // AMD. Register as an anonymous module. + define( function() { + root.Reveal = factory(); + return root.Reveal; + } ); + } else if( typeof exports === 'object' ) { + // Node. Does not work with strict CommonJS. + module.exports = factory(); + } else { + // Browser globals. + root.Reveal = factory(); + } +}( this, function() { + + 'use strict'; + + var Reveal; + + var SLIDES_SELECTOR = '.slides section', + HORIZONTAL_SLIDES_SELECTOR = '.slides>section', + VERTICAL_SLIDES_SELECTOR = '.slides>section.present>section', + HOME_SLIDE_SELECTOR = '.slides>section:first-of-type', + + // Configuration defaults, can be overridden at initialization time + config = { + + // The "normal" size of the presentation, aspect ratio will be preserved + // when the presentation is scaled to fit different resolutions + width: 960, + height: 700, + + // Factor of the display size that should remain empty around the content + margin: 0.1, + + // Bounds for smallest/largest possible scale to apply to content + minScale: 0.2, + maxScale: 1.5, + + // Display controls in the bottom right corner + controls: true, + + // Display a presentation progress bar + progress: true, + + // Display the page number of the current slide + slideNumber: false, + + // Push each slide change to the browser history + history: false, + + // Enable keyboard shortcuts for navigation + keyboard: true, + + // Optional function that blocks keyboard events when retuning false + keyboardCondition: null, + + // Enable the slide overview mode + overview: true, + + // Vertical centering of slides + center: true, + + // Enables touch navigation on devices with touch input + touch: true, + + // Loop the presentation + loop: false, + + // Change the presentation direction to be RTL + rtl: false, + + // Turns fragments on and off globally + fragments: true, + + // Flags if the presentation is running in an embedded mode, + // i.e. contained within a limited portion of the screen + embedded: false, + + // Flags if we should show a help overlay when the questionmark + // key is pressed + help: true, + + // Flags if it should be possible to pause the presentation (blackout) + pause: true, + + // Flags if speaker notes should be visible to all viewers + showNotes: false, + + // Number of milliseconds between automatically proceeding to the + // next slide, disabled when set to 0, this value can be overwritten + // by using a data-autoslide attribute on your slides + autoSlide: 0, + + // Stop auto-sliding after user input + autoSlideStoppable: true, + + // Enable slide navigation via mouse wheel + mouseWheel: false, + + // Apply a 3D roll to links on hover + rollingLinks: false, + + // Hides the address bar on mobile devices + hideAddressBar: true, + + // Opens links in an iframe preview overlay + previewLinks: false, + + // Exposes the reveal.js API through window.postMessage + postMessage: true, + + // Dispatches all reveal.js events to the parent window through postMessage + postMessageEvents: false, + + // Focuses body when page changes visiblity to ensure keyboard shortcuts work + focusBodyOnPageVisibilityChange: true, + + // Transition style + transition: 'slide', // none/fade/slide/convex/concave/zoom + + // Transition speed + transitionSpeed: 'default', // default/fast/slow + + // Transition style for full page slide backgrounds + backgroundTransition: 'fade', // none/fade/slide/convex/concave/zoom + + // Parallax background image + parallaxBackgroundImage: '', // CSS syntax, e.g. "a.jpg" + + // Parallax background size + parallaxBackgroundSize: '', // CSS syntax, e.g. "3000px 2000px" + + // Amount of pixels to move the parallax background per slide step + parallaxBackgroundHorizontal: null, + parallaxBackgroundVertical: null, + + // Number of slides away from the current that are visible + viewDistance: 3, + + // Script dependencies to load + dependencies: [] + + }, + + // Flags if reveal.js is loaded (has dispatched the 'ready' event) + loaded = false, + + // Flags if the overview mode is currently active + overview = false, + + // The horizontal and vertical index of the currently active slide + indexh, + indexv, + + // The previous and current slide HTML elements + previousSlide, + currentSlide, + + previousBackground, + + // Slides may hold a data-state attribute which we pick up and apply + // as a class to the body. This list contains the combined state of + // all current slides. + state = [], + + // The current scale of the presentation (see width/height config) + scale = 1, + + // CSS transform that is currently applied to the slides container, + // split into two groups + slidesTransform = { layout: '', overview: '' }, + + // Cached references to DOM elements + dom = {}, + + // Features supported by the browser, see #checkCapabilities() + features = {}, + + // Client is a mobile device, see #checkCapabilities() + isMobileDevice, + + // Throttles mouse wheel navigation + lastMouseWheelStep = 0, + + // Delays updates to the URL due to a Chrome thumbnailer bug + writeURLTimeout = 0, + + // Flags if the interaction event listeners are bound + eventsAreBound = false, + + // The current auto-slide duration + autoSlide = 0, + + // Auto slide properties + autoSlidePlayer, + autoSlideTimeout = 0, + autoSlideStartTime = -1, + autoSlidePaused = false, + + // Holds information about the currently ongoing touch input + touch = { + startX: 0, + startY: 0, + startSpan: 0, + startCount: 0, + captured: false, + threshold: 40 + }, + + // Holds information about the keyboard shortcuts + keyboardShortcuts = { + 'N , SPACE': 'Next slide', + 'P': 'Previous slide', + '← , H': 'Navigate left', + '→ , L': 'Navigate right', + '↑ , K': 'Navigate up', + '↓ , J': 'Navigate down', + 'Home': 'First slide', + 'End': 'Last slide', + 'B , .': 'Pause', + 'F': 'Fullscreen', + 'ESC, O': 'Slide overview' + }; + + /** + * Starts up the presentation if the client is capable. + */ + function initialize( options ) { + + checkCapabilities(); + + if( !features.transforms2d && !features.transforms3d ) { + document.body.setAttribute( 'class', 'no-transforms' ); + + // Since JS won't be running any further, we load all lazy + // loading elements upfront + var images = toArray( document.getElementsByTagName( 'img' ) ), + iframes = toArray( document.getElementsByTagName( 'iframe' ) ); + + var lazyLoadable = images.concat( iframes ); + + for( var i = 0, len = lazyLoadable.length; i < len; i++ ) { + var element = lazyLoadable[i]; + if( element.getAttribute( 'data-src' ) ) { + element.setAttribute( 'src', element.getAttribute( 'data-src' ) ); + element.removeAttribute( 'data-src' ); + } + } + + // If the browser doesn't support core features we won't be + // using JavaScript to control the presentation + return; + } + + // Cache references to key DOM elements + dom.wrapper = document.querySelector( '.reveal' ); + dom.slides = document.querySelector( '.reveal .slides' ); + + // Force a layout when the whole page, incl fonts, has loaded + window.addEventListener( 'load', layout, false ); + + var query = Reveal.getQueryHash(); + + // Do not accept new dependencies via query config to avoid + // the potential of malicious script injection + if( typeof query['dependencies'] !== 'undefined' ) delete query['dependencies']; + + // Copy options over to our config object + extend( config, options ); + extend( config, query ); + + // Hide the address bar in mobile browsers + hideAddressBar(); + + // Loads the dependencies and continues to #start() once done + load(); + + } + + /** + * Inspect the client to see what it's capable of, this + * should only happens once per runtime. + */ + function checkCapabilities() { + + features.transforms3d = 'WebkitPerspective' in document.body.style || + 'MozPerspective' in document.body.style || + 'msPerspective' in document.body.style || + 'OPerspective' in document.body.style || + 'perspective' in document.body.style; + + features.transforms2d = 'WebkitTransform' in document.body.style || + 'MozTransform' in document.body.style || + 'msTransform' in document.body.style || + 'OTransform' in document.body.style || + 'transform' in document.body.style; + + features.requestAnimationFrameMethod = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame; + features.requestAnimationFrame = typeof features.requestAnimationFrameMethod === 'function'; + + features.canvas = !!document.createElement( 'canvas' ).getContext; + + features.touch = !!( 'ontouchstart' in window ); + + // Transitions in the overview are disabled in desktop and + // mobile Safari due to lag + features.overviewTransitions = !/Version\/[\d\.]+.*Safari/.test( navigator.userAgent ); + + isMobileDevice = /(iphone|ipod|ipad|android)/gi.test( navigator.userAgent ); + + } + + /** + * Loads the dependencies of reveal.js. Dependencies are + * defined via the configuration option 'dependencies' + * and will be loaded prior to starting/binding reveal.js. + * Some dependencies may have an 'async' flag, if so they + * will load after reveal.js has been started up. + */ + function load() { + + var scripts = [], + scriptsAsync = [], + scriptsToPreload = 0; + + // Called once synchronous scripts finish loading + function proceed() { + if( scriptsAsync.length ) { + // Load asynchronous scripts + head.js.apply( null, scriptsAsync ); + } + + start(); + } + + function loadScript( s ) { + head.ready( s.src.match( /([\w\d_\-]*)\.?js$|[^\\\/]*$/i )[0], function() { + // Extension may contain callback functions + if( typeof s.callback === 'function' ) { + s.callback.apply( this ); + } + + if( --scriptsToPreload === 0 ) { + proceed(); + } + }); + } + + for( var i = 0, len = config.dependencies.length; i < len; i++ ) { + var s = config.dependencies[i]; + + // Load if there's no condition or the condition is truthy + if( !s.condition || s.condition() ) { + if( s.async ) { + scriptsAsync.push( s.src ); + } + else { + scripts.push( s.src ); + } + + loadScript( s ); + } + } + + if( scripts.length ) { + scriptsToPreload = scripts.length; + + // Load synchronous scripts + head.js.apply( null, scripts ); + } + else { + proceed(); + } + + } + + /** + * Starts up reveal.js by binding input events and navigating + * to the current URL deeplink if there is one. + */ + function start() { + + // Make sure we've got all the DOM elements we need + setupDOM(); + + // Listen to messages posted to this window + setupPostMessage(); + + // Prevent iframes from scrolling the slides out of view + setupIframeScrollPrevention(); + + // Resets all vertical slides so that only the first is visible + resetVerticalSlides(); + + // Updates the presentation to match the current configuration values + configure(); + + // Read the initial hash + readURL(); + + // Update all backgrounds + updateBackground( true ); + + // Notify listeners that the presentation is ready but use a 1ms + // timeout to ensure it's not fired synchronously after #initialize() + setTimeout( function() { + // Enable transitions now that we're loaded + dom.slides.classList.remove( 'no-transition' ); + + loaded = true; + + dispatchEvent( 'ready', { + 'indexh': indexh, + 'indexv': indexv, + 'currentSlide': currentSlide + } ); + }, 1 ); + + // Special setup and config is required when printing to PDF + if( isPrintingPDF() ) { + removeEventListeners(); + + // The document needs to have loaded for the PDF layout + // measurements to be accurate + if( document.readyState === 'complete' ) { + setupPDF(); + } + else { + window.addEventListener( 'load', setupPDF ); + } + } + + } + + /** + * Finds and stores references to DOM elements which are + * required by the presentation. If a required element is + * not found, it is created. + */ + function setupDOM() { + + // Prevent transitions while we're loading + dom.slides.classList.add( 'no-transition' ); + + // Background element + dom.background = createSingletonNode( dom.wrapper, 'div', 'backgrounds', null ); + + // Progress bar + dom.progress = createSingletonNode( dom.wrapper, 'div', 'progress', '' ); + dom.progressbar = dom.progress.querySelector( 'span' ); + + // Arrow controls + createSingletonNode( dom.wrapper, 'aside', 'controls', + '' + + '' + + '' + + '' ); + + // Slide number + dom.slideNumber = createSingletonNode( dom.wrapper, 'div', 'slide-number', '' ); + + // Element containing notes that are visible to the audience + dom.speakerNotes = createSingletonNode( dom.wrapper, 'div', 'speaker-notes', null ); + dom.speakerNotes.setAttribute( 'data-prevent-swipe', '' ); + + // Overlay graphic which is displayed during the paused mode + createSingletonNode( dom.wrapper, 'div', 'pause-overlay', null ); + + // Cache references to elements + dom.controls = document.querySelector( '.reveal .controls' ); + dom.theme = document.querySelector( '#theme' ); + + dom.wrapper.setAttribute( 'role', 'application' ); + + // There can be multiple instances of controls throughout the page + dom.controlsLeft = toArray( document.querySelectorAll( '.navigate-left' ) ); + dom.controlsRight = toArray( document.querySelectorAll( '.navigate-right' ) ); + dom.controlsUp = toArray( document.querySelectorAll( '.navigate-up' ) ); + dom.controlsDown = toArray( document.querySelectorAll( '.navigate-down' ) ); + dom.controlsPrev = toArray( document.querySelectorAll( '.navigate-prev' ) ); + dom.controlsNext = toArray( document.querySelectorAll( '.navigate-next' ) ); + + dom.statusDiv = createStatusDiv(); + } + + /** + * Creates a hidden div with role aria-live to announce the + * current slide content. Hide the div off-screen to make it + * available only to Assistive Technologies. + */ + function createStatusDiv() { + + var statusDiv = document.getElementById( 'aria-status-div' ); + if( !statusDiv ) { + statusDiv = document.createElement( 'div' ); + statusDiv.style.position = 'absolute'; + statusDiv.style.height = '1px'; + statusDiv.style.width = '1px'; + statusDiv.style.overflow ='hidden'; + statusDiv.style.clip = 'rect( 1px, 1px, 1px, 1px )'; + statusDiv.setAttribute( 'id', 'aria-status-div' ); + statusDiv.setAttribute( 'aria-live', 'polite' ); + statusDiv.setAttribute( 'aria-atomic','true' ); + dom.wrapper.appendChild( statusDiv ); + } + return statusDiv; + + } + + /** + * Configures the presentation for printing to a static + * PDF. + */ + function setupPDF() { + + var slideSize = getComputedSlideSize( window.innerWidth, window.innerHeight ); + + // Dimensions of the PDF pages + var pageWidth = Math.floor( slideSize.width * ( 1 + config.margin ) ), + pageHeight = Math.floor( slideSize.height * ( 1 + config.margin ) ); + + // Dimensions of slides within the pages + var slideWidth = slideSize.width, + slideHeight = slideSize.height; + + // Let the browser know what page size we want to print + injectStyleSheet( '@page{size:'+ pageWidth +'px '+ pageHeight +'px; margin: 0;}' ); + + // Limit the size of certain elements to the dimensions of the slide + injectStyleSheet( '.reveal section>img, .reveal section>video, .reveal section>iframe{max-width: '+ slideWidth +'px; max-height:'+ slideHeight +'px}' ); + + document.body.classList.add( 'print-pdf' ); + document.body.style.width = pageWidth + 'px'; + document.body.style.height = pageHeight + 'px'; + + // Add each slide's index as attributes on itself, we need these + // indices to generate slide numbers below + toArray( dom.wrapper.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) ).forEach( function( hslide, h ) { + hslide.setAttribute( 'data-index-h', h ); + + if( hslide.classList.contains( 'stack' ) ) { + toArray( hslide.querySelectorAll( 'section' ) ).forEach( function( vslide, v ) { + vslide.setAttribute( 'data-index-h', h ); + vslide.setAttribute( 'data-index-v', v ); + } ); + } + } ); + + // Slide and slide background layout + toArray( dom.wrapper.querySelectorAll( SLIDES_SELECTOR ) ).forEach( function( slide ) { + + // Vertical stacks are not centred since their section + // children will be + if( slide.classList.contains( 'stack' ) === false ) { + // Center the slide inside of the page, giving the slide some margin + var left = ( pageWidth - slideWidth ) / 2, + top = ( pageHeight - slideHeight ) / 2; + + var contentHeight = getAbsoluteHeight( slide ); + var numberOfPages = Math.max( Math.ceil( contentHeight / pageHeight ), 1 ); + + // Center slides vertically + if( numberOfPages === 1 && config.center || slide.classList.contains( 'center' ) ) { + top = Math.max( ( pageHeight - contentHeight ) / 2, 0 ); + } + + // Position the slide inside of the page + slide.style.left = left + 'px'; + slide.style.top = top + 'px'; + slide.style.width = slideWidth + 'px'; + + // TODO Backgrounds need to be multiplied when the slide + // stretches over multiple pages + var background = slide.querySelector( '.slide-background' ); + if( background ) { + background.style.width = pageWidth + 'px'; + background.style.height = ( pageHeight * numberOfPages ) + 'px'; + background.style.top = -top + 'px'; + background.style.left = -left + 'px'; + } + + // Inject notes if `showNotes` is enabled + if( config.showNotes ) { + var notes = getSlideNotes( slide ); + if( notes ) { + var notesSpacing = 8; + var notesElement = document.createElement( 'div' ); + notesElement.classList.add( 'speaker-notes' ); + notesElement.classList.add( 'speaker-notes-pdf' ); + notesElement.innerHTML = notes; + notesElement.style.left = ( notesSpacing - left ) + 'px'; + notesElement.style.bottom = ( notesSpacing - top ) + 'px'; + notesElement.style.width = ( pageWidth - notesSpacing*2 ) + 'px'; + slide.appendChild( notesElement ); + } + } + + // Inject slide numbers if `slideNumbers` are enabled + if( config.slideNumber ) { + var slideNumberH = parseInt( slide.getAttribute( 'data-index-h' ), 10 ) + 1, + slideNumberV = parseInt( slide.getAttribute( 'data-index-v' ), 10 ) + 1; + + var numberElement = document.createElement( 'div' ); + numberElement.classList.add( 'slide-number' ); + numberElement.classList.add( 'slide-number-pdf' ); + numberElement.innerHTML = formatSlideNumber( slideNumberH, '.', slideNumberV ); + background.appendChild( numberElement ); + } + } + + } ); + + // Show all fragments + toArray( dom.wrapper.querySelectorAll( SLIDES_SELECTOR + ' .fragment' ) ).forEach( function( fragment ) { + fragment.classList.add( 'visible' ); + } ); + + } + + /** + * This is an unfortunate necessity. Iframes can trigger the + * parent window to scroll, for example by focusing an input. + * This scrolling can not be prevented by hiding overflow in + * CSS so we have to resort to repeatedly checking if the + * browser has decided to offset our slides :( + */ + function setupIframeScrollPrevention() { + + if( dom.slides.querySelector( 'iframe' ) ) { + setInterval( function() { + if( dom.wrapper.scrollTop !== 0 || dom.wrapper.scrollLeft !== 0 ) { + dom.wrapper.scrollTop = 0; + dom.wrapper.scrollLeft = 0; + } + }, 500 ); + } + + } + + /** + * Creates an HTML element and returns a reference to it. + * If the element already exists the existing instance will + * be returned. + */ + function createSingletonNode( container, tagname, classname, innerHTML ) { + + // Find all nodes matching the description + var nodes = container.querySelectorAll( '.' + classname ); + + // Check all matches to find one which is a direct child of + // the specified container + for( var i = 0; i < nodes.length; i++ ) { + var testNode = nodes[i]; + if( testNode.parentNode === container ) { + return testNode; + } + } + + // If no node was found, create it now + var node = document.createElement( tagname ); + node.classList.add( classname ); + if( typeof innerHTML === 'string' ) { + node.innerHTML = innerHTML; + } + container.appendChild( node ); + + return node; + + } + + /** + * Creates the slide background elements and appends them + * to the background container. One element is created per + * slide no matter if the given slide has visible background. + */ + function createBackgrounds() { + + var printMode = isPrintingPDF(); + + // Clear prior backgrounds + dom.background.innerHTML = ''; + dom.background.classList.add( 'no-transition' ); + + // Iterate over all horizontal slides + toArray( dom.wrapper.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) ).forEach( function( slideh ) { + + var backgroundStack; + + if( printMode ) { + backgroundStack = createBackground( slideh, slideh ); + } + else { + backgroundStack = createBackground( slideh, dom.background ); + } + + // Iterate over all vertical slides + toArray( slideh.querySelectorAll( 'section' ) ).forEach( function( slidev ) { + + if( printMode ) { + createBackground( slidev, slidev ); + } + else { + createBackground( slidev, backgroundStack ); + } + + backgroundStack.classList.add( 'stack' ); + + } ); + + } ); + + // Add parallax background if specified + if( config.parallaxBackgroundImage ) { + + dom.background.style.backgroundImage = 'url("' + config.parallaxBackgroundImage + '")'; + dom.background.style.backgroundSize = config.parallaxBackgroundSize; + + // Make sure the below properties are set on the element - these properties are + // needed for proper transitions to be set on the element via CSS. To remove + // annoying background slide-in effect when the presentation starts, apply + // these properties after short time delay + setTimeout( function() { + dom.wrapper.classList.add( 'has-parallax-background' ); + }, 1 ); + + } + else { + + dom.background.style.backgroundImage = ''; + dom.wrapper.classList.remove( 'has-parallax-background' ); + + } + + } + + /** + * Creates a background for the given slide. + * + * @param {HTMLElement} slide + * @param {HTMLElement} container The element that the background + * should be appended to + */ + function createBackground( slide, container ) { + + var data = { + background: slide.getAttribute( 'data-background' ), + backgroundSize: slide.getAttribute( 'data-background-size' ), + backgroundImage: slide.getAttribute( 'data-background-image' ), + backgroundVideo: slide.getAttribute( 'data-background-video' ), + backgroundIframe: slide.getAttribute( 'data-background-iframe' ), + backgroundColor: slide.getAttribute( 'data-background-color' ), + backgroundRepeat: slide.getAttribute( 'data-background-repeat' ), + backgroundPosition: slide.getAttribute( 'data-background-position' ), + backgroundTransition: slide.getAttribute( 'data-background-transition' ) + }; + + var element = document.createElement( 'div' ); + + // Carry over custom classes from the slide to the background + element.className = 'slide-background ' + slide.className.replace( /present|past|future/, '' ); + + if( data.background ) { + // Auto-wrap image urls in url(...) + if( /^(http|file|\/\/)/gi.test( data.background ) || /\.(svg|png|jpg|jpeg|gif|bmp)$/gi.test( data.background ) ) { + slide.setAttribute( 'data-background-image', data.background ); + } + else { + element.style.background = data.background; + } + } + + // Create a hash for this combination of background settings. + // This is used to determine when two slide backgrounds are + // the same. + if( data.background || data.backgroundColor || data.backgroundImage || data.backgroundVideo || data.backgroundIframe ) { + element.setAttribute( 'data-background-hash', data.background + + data.backgroundSize + + data.backgroundImage + + data.backgroundVideo + + data.backgroundIframe + + data.backgroundColor + + data.backgroundRepeat + + data.backgroundPosition + + data.backgroundTransition ); + } + + // Additional and optional background properties + if( data.backgroundSize ) element.style.backgroundSize = data.backgroundSize; + if( data.backgroundColor ) element.style.backgroundColor = data.backgroundColor; + if( data.backgroundRepeat ) element.style.backgroundRepeat = data.backgroundRepeat; + if( data.backgroundPosition ) element.style.backgroundPosition = data.backgroundPosition; + if( data.backgroundTransition ) element.setAttribute( 'data-background-transition', data.backgroundTransition ); + + container.appendChild( element ); + + // If backgrounds are being recreated, clear old classes + slide.classList.remove( 'has-dark-background' ); + slide.classList.remove( 'has-light-background' ); + + // If this slide has a background color, add a class that + // signals if it is light or dark. If the slide has no background + // color, no class will be set + var computedBackgroundColor = window.getComputedStyle( element ).backgroundColor; + if( computedBackgroundColor ) { + var rgb = colorToRgb( computedBackgroundColor ); + + // Ignore fully transparent backgrounds. Some browsers return + // rgba(0,0,0,0) when reading the computed background color of + // an element with no background + if( rgb && rgb.a !== 0 ) { + if( colorBrightness( computedBackgroundColor ) < 128 ) { + slide.classList.add( 'has-dark-background' ); + } + else { + slide.classList.add( 'has-light-background' ); + } + } + } + + return element; + + } + + /** + * Registers a listener to postMessage events, this makes it + * possible to call all reveal.js API methods from another + * window. For example: + * + * revealWindow.postMessage( JSON.stringify({ + * method: 'slide', + * args: [ 2 ] + * }), '*' ); + */ + function setupPostMessage() { + + if( config.postMessage ) { + window.addEventListener( 'message', function ( event ) { + var data = event.data; + + // Make sure we're dealing with JSON + if( typeof data === 'string' && data.charAt( 0 ) === '{' && data.charAt( data.length - 1 ) === '}' ) { + data = JSON.parse( data ); + + // Check if the requested method can be found + if( data.method && typeof Reveal[data.method] === 'function' ) { + Reveal[data.method].apply( Reveal, data.args ); + } + } + }, false ); + } + + } + + /** + * Applies the configuration settings from the config + * object. May be called multiple times. + */ + function configure( options ) { + + var numberOfSlides = dom.wrapper.querySelectorAll( SLIDES_SELECTOR ).length; + + dom.wrapper.classList.remove( config.transition ); + + // New config options may be passed when this method + // is invoked through the API after initialization + if( typeof options === 'object' ) extend( config, options ); + + // Force linear transition based on browser capabilities + if( features.transforms3d === false ) config.transition = 'linear'; + + dom.wrapper.classList.add( config.transition ); + + dom.wrapper.setAttribute( 'data-transition-speed', config.transitionSpeed ); + dom.wrapper.setAttribute( 'data-background-transition', config.backgroundTransition ); + + dom.controls.style.display = config.controls ? 'block' : 'none'; + dom.progress.style.display = config.progress ? 'block' : 'none'; + dom.slideNumber.style.display = config.slideNumber && !isPrintingPDF() ? 'block' : 'none'; + + if( config.rtl ) { + dom.wrapper.classList.add( 'rtl' ); + } + else { + dom.wrapper.classList.remove( 'rtl' ); + } + + if( config.center ) { + dom.wrapper.classList.add( 'center' ); + } + else { + dom.wrapper.classList.remove( 'center' ); + } + + // Exit the paused mode if it was configured off + if( config.pause === false ) { + resume(); + } + + if( config.showNotes ) { + dom.speakerNotes.classList.add( 'visible' ); + } + else { + dom.speakerNotes.classList.remove( 'visible' ); + } + + if( config.mouseWheel ) { + document.addEventListener( 'DOMMouseScroll', onDocumentMouseScroll, false ); // FF + document.addEventListener( 'mousewheel', onDocumentMouseScroll, false ); + } + else { + document.removeEventListener( 'DOMMouseScroll', onDocumentMouseScroll, false ); // FF + document.removeEventListener( 'mousewheel', onDocumentMouseScroll, false ); + } + + // Rolling 3D links + if( config.rollingLinks ) { + enableRollingLinks(); + } + else { + disableRollingLinks(); + } + + // Iframe link previews + if( config.previewLinks ) { + enablePreviewLinks(); + } + else { + disablePreviewLinks(); + enablePreviewLinks( '[data-preview-link]' ); + } + + // Remove existing auto-slide controls + if( autoSlidePlayer ) { + autoSlidePlayer.destroy(); + autoSlidePlayer = null; + } + + // Generate auto-slide controls if needed + if( numberOfSlides > 1 && config.autoSlide && config.autoSlideStoppable && features.canvas && features.requestAnimationFrame ) { + autoSlidePlayer = new Playback( dom.wrapper, function() { + return Math.min( Math.max( ( Date.now() - autoSlideStartTime ) / autoSlide, 0 ), 1 ); + } ); + + autoSlidePlayer.on( 'click', onAutoSlidePlayerClick ); + autoSlidePaused = false; + } + + // When fragments are turned off they should be visible + if( config.fragments === false ) { + toArray( dom.slides.querySelectorAll( '.fragment' ) ).forEach( function( element ) { + element.classList.add( 'visible' ); + element.classList.remove( 'current-fragment' ); + } ); + } + + sync(); + + } + + /** + * Binds all event listeners. + */ + function addEventListeners() { + + eventsAreBound = true; + + window.addEventListener( 'hashchange', onWindowHashChange, false ); + window.addEventListener( 'resize', onWindowResize, false ); + + if( config.touch ) { + dom.wrapper.addEventListener( 'touchstart', onTouchStart, false ); + dom.wrapper.addEventListener( 'touchmove', onTouchMove, false ); + dom.wrapper.addEventListener( 'touchend', onTouchEnd, false ); + + // Support pointer-style touch interaction as well + if( window.navigator.pointerEnabled ) { + // IE 11 uses un-prefixed version of pointer events + dom.wrapper.addEventListener( 'pointerdown', onPointerDown, false ); + dom.wrapper.addEventListener( 'pointermove', onPointerMove, false ); + dom.wrapper.addEventListener( 'pointerup', onPointerUp, false ); + } + else if( window.navigator.msPointerEnabled ) { + // IE 10 uses prefixed version of pointer events + dom.wrapper.addEventListener( 'MSPointerDown', onPointerDown, false ); + dom.wrapper.addEventListener( 'MSPointerMove', onPointerMove, false ); + dom.wrapper.addEventListener( 'MSPointerUp', onPointerUp, false ); + } + } + + if( config.keyboard ) { + document.addEventListener( 'keydown', onDocumentKeyDown, false ); + document.addEventListener( 'keypress', onDocumentKeyPress, false ); + } + + if( config.progress && dom.progress ) { + dom.progress.addEventListener( 'click', onProgressClicked, false ); + } + + if( config.focusBodyOnPageVisibilityChange ) { + var visibilityChange; + + if( 'hidden' in document ) { + visibilityChange = 'visibilitychange'; + } + else if( 'msHidden' in document ) { + visibilityChange = 'msvisibilitychange'; + } + else if( 'webkitHidden' in document ) { + visibilityChange = 'webkitvisibilitychange'; + } + + if( visibilityChange ) { + document.addEventListener( visibilityChange, onPageVisibilityChange, false ); + } + } + + // Listen to both touch and click events, in case the device + // supports both + var pointerEvents = [ 'touchstart', 'click' ]; + + // Only support touch for Android, fixes double navigations in + // stock browser + if( navigator.userAgent.match( /android/gi ) ) { + pointerEvents = [ 'touchstart' ]; + } + + pointerEvents.forEach( function( eventName ) { + dom.controlsLeft.forEach( function( el ) { el.addEventListener( eventName, onNavigateLeftClicked, false ); } ); + dom.controlsRight.forEach( function( el ) { el.addEventListener( eventName, onNavigateRightClicked, false ); } ); + dom.controlsUp.forEach( function( el ) { el.addEventListener( eventName, onNavigateUpClicked, false ); } ); + dom.controlsDown.forEach( function( el ) { el.addEventListener( eventName, onNavigateDownClicked, false ); } ); + dom.controlsPrev.forEach( function( el ) { el.addEventListener( eventName, onNavigatePrevClicked, false ); } ); + dom.controlsNext.forEach( function( el ) { el.addEventListener( eventName, onNavigateNextClicked, false ); } ); + } ); + + } + + /** + * Unbinds all event listeners. + */ + function removeEventListeners() { + + eventsAreBound = false; + + document.removeEventListener( 'keydown', onDocumentKeyDown, false ); + document.removeEventListener( 'keypress', onDocumentKeyPress, false ); + window.removeEventListener( 'hashchange', onWindowHashChange, false ); + window.removeEventListener( 'resize', onWindowResize, false ); + + dom.wrapper.removeEventListener( 'touchstart', onTouchStart, false ); + dom.wrapper.removeEventListener( 'touchmove', onTouchMove, false ); + dom.wrapper.removeEventListener( 'touchend', onTouchEnd, false ); + + // IE11 + if( window.navigator.pointerEnabled ) { + dom.wrapper.removeEventListener( 'pointerdown', onPointerDown, false ); + dom.wrapper.removeEventListener( 'pointermove', onPointerMove, false ); + dom.wrapper.removeEventListener( 'pointerup', onPointerUp, false ); + } + // IE10 + else if( window.navigator.msPointerEnabled ) { + dom.wrapper.removeEventListener( 'MSPointerDown', onPointerDown, false ); + dom.wrapper.removeEventListener( 'MSPointerMove', onPointerMove, false ); + dom.wrapper.removeEventListener( 'MSPointerUp', onPointerUp, false ); + } + + if ( config.progress && dom.progress ) { + dom.progress.removeEventListener( 'click', onProgressClicked, false ); + } + + [ 'touchstart', 'click' ].forEach( function( eventName ) { + dom.controlsLeft.forEach( function( el ) { el.removeEventListener( eventName, onNavigateLeftClicked, false ); } ); + dom.controlsRight.forEach( function( el ) { el.removeEventListener( eventName, onNavigateRightClicked, false ); } ); + dom.controlsUp.forEach( function( el ) { el.removeEventListener( eventName, onNavigateUpClicked, false ); } ); + dom.controlsDown.forEach( function( el ) { el.removeEventListener( eventName, onNavigateDownClicked, false ); } ); + dom.controlsPrev.forEach( function( el ) { el.removeEventListener( eventName, onNavigatePrevClicked, false ); } ); + dom.controlsNext.forEach( function( el ) { el.removeEventListener( eventName, onNavigateNextClicked, false ); } ); + } ); + + } + + /** + * Extend object a with the properties of object b. + * If there's a conflict, object b takes precedence. + */ + function extend( a, b ) { + + for( var i in b ) { + a[ i ] = b[ i ]; + } + + } + + /** + * Converts the target object to an array. + */ + function toArray( o ) { + + return Array.prototype.slice.call( o ); + + } + + /** + * Utility for deserializing a value. + */ + function deserialize( value ) { + + if( typeof value === 'string' ) { + if( value === 'null' ) return null; + else if( value === 'true' ) return true; + else if( value === 'false' ) return false; + else if( value.match( /^\d+$/ ) ) return parseFloat( value ); + } + + return value; + + } + + /** + * Measures the distance in pixels between point a + * and point b. + * + * @param {Object} a point with x/y properties + * @param {Object} b point with x/y properties + */ + function distanceBetween( a, b ) { + + var dx = a.x - b.x, + dy = a.y - b.y; + + return Math.sqrt( dx*dx + dy*dy ); + + } + + /** + * Applies a CSS transform to the target element. + */ + function transformElement( element, transform ) { + + element.style.WebkitTransform = transform; + element.style.MozTransform = transform; + element.style.msTransform = transform; + element.style.transform = transform; + + } + + /** + * Applies CSS transforms to the slides container. The container + * is transformed from two separate sources: layout and the overview + * mode. + */ + function transformSlides( transforms ) { + + // Pick up new transforms from arguments + if( typeof transforms.layout === 'string' ) slidesTransform.layout = transforms.layout; + if( typeof transforms.overview === 'string' ) slidesTransform.overview = transforms.overview; + + // Apply the transforms to the slides container + if( slidesTransform.layout ) { + transformElement( dom.slides, slidesTransform.layout + ' ' + slidesTransform.overview ); + } + else { + transformElement( dom.slides, slidesTransform.overview ); + } + + } + + /** + * Injects the given CSS styles into the DOM. + */ + function injectStyleSheet( value ) { + + var tag = document.createElement( 'style' ); + tag.type = 'text/css'; + if( tag.styleSheet ) { + tag.styleSheet.cssText = value; + } + else { + tag.appendChild( document.createTextNode( value ) ); + } + document.getElementsByTagName( 'head' )[0].appendChild( tag ); + + } + + /** + * Converts various color input formats to an {r:0,g:0,b:0} object. + * + * @param {String} color The string representation of a color, + * the following formats are supported: + * - #000 + * - #000000 + * - rgb(0,0,0) + */ + function colorToRgb( color ) { + + var hex3 = color.match( /^#([0-9a-f]{3})$/i ); + if( hex3 && hex3[1] ) { + hex3 = hex3[1]; + return { + r: parseInt( hex3.charAt( 0 ), 16 ) * 0x11, + g: parseInt( hex3.charAt( 1 ), 16 ) * 0x11, + b: parseInt( hex3.charAt( 2 ), 16 ) * 0x11 + }; + } + + var hex6 = color.match( /^#([0-9a-f]{6})$/i ); + if( hex6 && hex6[1] ) { + hex6 = hex6[1]; + return { + r: parseInt( hex6.substr( 0, 2 ), 16 ), + g: parseInt( hex6.substr( 2, 2 ), 16 ), + b: parseInt( hex6.substr( 4, 2 ), 16 ) + }; + } + + var rgb = color.match( /^rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i ); + if( rgb ) { + return { + r: parseInt( rgb[1], 10 ), + g: parseInt( rgb[2], 10 ), + b: parseInt( rgb[3], 10 ) + }; + } + + var rgba = color.match( /^rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\,\s*([\d]+|[\d]*.[\d]+)\s*\)$/i ); + if( rgba ) { + return { + r: parseInt( rgba[1], 10 ), + g: parseInt( rgba[2], 10 ), + b: parseInt( rgba[3], 10 ), + a: parseFloat( rgba[4] ) + }; + } + + return null; + + } + + /** + * Calculates brightness on a scale of 0-255. + * + * @param color See colorStringToRgb for supported formats. + */ + function colorBrightness( color ) { + + if( typeof color === 'string' ) color = colorToRgb( color ); + + if( color ) { + return ( color.r * 299 + color.g * 587 + color.b * 114 ) / 1000; + } + + return null; + + } + + /** + * Retrieves the height of the given element by looking + * at the position and height of its immediate children. + */ + function getAbsoluteHeight( element ) { + + var height = 0; + + if( element ) { + var absoluteChildren = 0; + + toArray( element.childNodes ).forEach( function( child ) { + + if( typeof child.offsetTop === 'number' && child.style ) { + // Count # of abs children + if( window.getComputedStyle( child ).position === 'absolute' ) { + absoluteChildren += 1; + } + + height = Math.max( height, child.offsetTop + child.offsetHeight ); + } + + } ); + + // If there are no absolute children, use offsetHeight + if( absoluteChildren === 0 ) { + height = element.offsetHeight; + } + + } + + return height; + + } + + /** + * Returns the remaining height within the parent of the + * target element. + * + * remaining height = [ configured parent height ] - [ current parent height ] + */ + function getRemainingHeight( element, height ) { + + height = height || 0; + + if( element ) { + var newHeight, oldHeight = element.style.height; + + // Change the .stretch element height to 0 in order find the height of all + // the other elements + element.style.height = '0px'; + newHeight = height - element.parentNode.offsetHeight; + + // Restore the old height, just in case + element.style.height = oldHeight + 'px'; + + return newHeight; + } + + return height; + + } + + /** + * Checks if this instance is being used to print a PDF. + */ + function isPrintingPDF() { + + return ( /print-pdf/gi ).test( window.location.search ); + + } + + /** + * Hides the address bar if we're on a mobile device. + */ + function hideAddressBar() { + + if( config.hideAddressBar && isMobileDevice ) { + // Events that should trigger the address bar to hide + window.addEventListener( 'load', removeAddressBar, false ); + window.addEventListener( 'orientationchange', removeAddressBar, false ); + } + + } + + /** + * Causes the address bar to hide on mobile devices, + * more vertical space ftw. + */ + function removeAddressBar() { + + setTimeout( function() { + window.scrollTo( 0, 1 ); + }, 10 ); + + } + + /** + * Dispatches an event of the specified type from the + * reveal DOM element. + */ + function dispatchEvent( type, args ) { + + var event = document.createEvent( 'HTMLEvents', 1, 2 ); + event.initEvent( type, true, true ); + extend( event, args ); + dom.wrapper.dispatchEvent( event ); + + // If we're in an iframe, post each reveal.js event to the + // parent window. Used by the notes plugin + if( config.postMessageEvents && window.parent !== window.self ) { + window.parent.postMessage( JSON.stringify({ namespace: 'reveal', eventName: type, state: getState() }), '*' ); + } + + } + + /** + * Wrap all links in 3D goodness. + */ + function enableRollingLinks() { + + if( features.transforms3d && !( 'msPerspective' in document.body.style ) ) { + var anchors = dom.wrapper.querySelectorAll( SLIDES_SELECTOR + ' a' ); + + for( var i = 0, len = anchors.length; i < len; i++ ) { + var anchor = anchors[i]; + + if( anchor.textContent && !anchor.querySelector( '*' ) && ( !anchor.className || !anchor.classList.contains( anchor, 'roll' ) ) ) { + var span = document.createElement('span'); + span.setAttribute('data-title', anchor.text); + span.innerHTML = anchor.innerHTML; + + anchor.classList.add( 'roll' ); + anchor.innerHTML = ''; + anchor.appendChild(span); + } + } + } + + } + + /** + * Unwrap all 3D links. + */ + function disableRollingLinks() { + + var anchors = dom.wrapper.querySelectorAll( SLIDES_SELECTOR + ' a.roll' ); + + for( var i = 0, len = anchors.length; i < len; i++ ) { + var anchor = anchors[i]; + var span = anchor.querySelector( 'span' ); + + if( span ) { + anchor.classList.remove( 'roll' ); + anchor.innerHTML = span.innerHTML; + } + } + + } + + /** + * Bind preview frame links. + */ + function enablePreviewLinks( selector ) { + + var anchors = toArray( document.querySelectorAll( selector ? selector : 'a' ) ); + + anchors.forEach( function( element ) { + if( /^(http|www)/gi.test( element.getAttribute( 'href' ) ) ) { + element.addEventListener( 'click', onPreviewLinkClicked, false ); + } + } ); + + } + + /** + * Unbind preview frame links. + */ + function disablePreviewLinks() { + + var anchors = toArray( document.querySelectorAll( 'a' ) ); + + anchors.forEach( function( element ) { + if( /^(http|www)/gi.test( element.getAttribute( 'href' ) ) ) { + element.removeEventListener( 'click', onPreviewLinkClicked, false ); + } + } ); + + } + + /** + * Opens a preview window for the target URL. + */ + function showPreview( url ) { + + closeOverlay(); + + dom.overlay = document.createElement( 'div' ); + dom.overlay.classList.add( 'overlay' ); + dom.overlay.classList.add( 'overlay-preview' ); + dom.wrapper.appendChild( dom.overlay ); + + dom.overlay.innerHTML = [ + '
', + '', + '', + '
', + '
', + '
', + '', + '
' + ].join(''); + + dom.overlay.querySelector( 'iframe' ).addEventListener( 'load', function( event ) { + dom.overlay.classList.add( 'loaded' ); + }, false ); + + dom.overlay.querySelector( '.close' ).addEventListener( 'click', function( event ) { + closeOverlay(); + event.preventDefault(); + }, false ); + + dom.overlay.querySelector( '.external' ).addEventListener( 'click', function( event ) { + closeOverlay(); + }, false ); + + setTimeout( function() { + dom.overlay.classList.add( 'visible' ); + }, 1 ); + + } + + /** + * Opens a overlay window with help material. + */ + function showHelp() { + + if( config.help ) { + + closeOverlay(); + + dom.overlay = document.createElement( 'div' ); + dom.overlay.classList.add( 'overlay' ); + dom.overlay.classList.add( 'overlay-help' ); + dom.wrapper.appendChild( dom.overlay ); + + var html = '

Keyboard Shortcuts


'; + + html += ''; + for( var key in keyboardShortcuts ) { + html += ''; + } + + html += '
KEYACTION
' + key + '' + keyboardShortcuts[ key ] + '
'; + + dom.overlay.innerHTML = [ + '
', + '', + '
', + '
', + '
'+ html +'
', + '
' + ].join(''); + + dom.overlay.querySelector( '.close' ).addEventListener( 'click', function( event ) { + closeOverlay(); + event.preventDefault(); + }, false ); + + setTimeout( function() { + dom.overlay.classList.add( 'visible' ); + }, 1 ); + + } + + } + + /** + * Closes any currently open overlay. + */ + function closeOverlay() { + + if( dom.overlay ) { + dom.overlay.parentNode.removeChild( dom.overlay ); + dom.overlay = null; + } + + } + + /** + * Applies JavaScript-controlled layout rules to the + * presentation. + */ + function layout() { + + if( dom.wrapper && !isPrintingPDF() ) { + + var size = getComputedSlideSize(); + + var slidePadding = 20; // TODO Dig this out of DOM + + // Layout the contents of the slides + layoutSlideContents( config.width, config.height, slidePadding ); + + dom.slides.style.width = size.width + 'px'; + dom.slides.style.height = size.height + 'px'; + + // Determine scale of content to fit within available space + scale = Math.min( size.presentationWidth / size.width, size.presentationHeight / size.height ); + + // Respect max/min scale settings + scale = Math.max( scale, config.minScale ); + scale = Math.min( scale, config.maxScale ); + + // Don't apply any scaling styles if scale is 1 + if( scale === 1 ) { + dom.slides.style.zoom = ''; + dom.slides.style.left = ''; + dom.slides.style.top = ''; + dom.slides.style.bottom = ''; + dom.slides.style.right = ''; + transformSlides( { layout: '' } ); + } + else { + // Use zoom to scale up in desktop Chrome so that content + // remains crisp. We don't use zoom to scale down since that + // can lead to shifts in text layout/line breaks. + if( scale > 1 && !isMobileDevice && /chrome/i.test( navigator.userAgent ) && typeof dom.slides.style.zoom !== 'undefined' ) { + dom.slides.style.zoom = scale; + dom.slides.style.left = ''; + dom.slides.style.top = ''; + dom.slides.style.bottom = ''; + dom.slides.style.right = ''; + transformSlides( { layout: '' } ); + } + // Apply scale transform as a fallback + else { + dom.slides.style.zoom = ''; + dom.slides.style.left = '50%'; + dom.slides.style.top = '50%'; + dom.slides.style.bottom = 'auto'; + dom.slides.style.right = 'auto'; + transformSlides( { layout: 'translate(-50%, -50%) scale('+ scale +')' } ); + } + } + + // Select all slides, vertical and horizontal + var slides = toArray( dom.wrapper.querySelectorAll( SLIDES_SELECTOR ) ); + + for( var i = 0, len = slides.length; i < len; i++ ) { + var slide = slides[ i ]; + + // Don't bother updating invisible slides + if( slide.style.display === 'none' ) { + continue; + } + + if( config.center || slide.classList.contains( 'center' ) ) { + // Vertical stacks are not centred since their section + // children will be + if( slide.classList.contains( 'stack' ) ) { + slide.style.top = 0; + } + else { + slide.style.top = Math.max( ( ( size.height - getAbsoluteHeight( slide ) ) / 2 ) - slidePadding, 0 ) + 'px'; + } + } + else { + slide.style.top = ''; + } + + } + + updateProgress(); + updateParallax(); + + } + + } + + /** + * Applies layout logic to the contents of all slides in + * the presentation. + */ + function layoutSlideContents( width, height, padding ) { + + // Handle sizing of elements with the 'stretch' class + toArray( dom.slides.querySelectorAll( 'section > .stretch' ) ).forEach( function( element ) { + + // Determine how much vertical space we can use + var remainingHeight = getRemainingHeight( element, height ); + + // Consider the aspect ratio of media elements + if( /(img|video)/gi.test( element.nodeName ) ) { + var nw = element.naturalWidth || element.videoWidth, + nh = element.naturalHeight || element.videoHeight; + + var es = Math.min( width / nw, remainingHeight / nh ); + + element.style.width = ( nw * es ) + 'px'; + element.style.height = ( nh * es ) + 'px'; + + } + else { + element.style.width = width + 'px'; + element.style.height = remainingHeight + 'px'; + } + + } ); + + } + + /** + * Calculates the computed pixel size of our slides. These + * values are based on the width and height configuration + * options. + */ + function getComputedSlideSize( presentationWidth, presentationHeight ) { + + var size = { + // Slide size + width: config.width, + height: config.height, + + // Presentation size + presentationWidth: presentationWidth || dom.wrapper.offsetWidth, + presentationHeight: presentationHeight || dom.wrapper.offsetHeight + }; + + // Reduce available space by margin + size.presentationWidth -= ( size.presentationWidth * config.margin ); + size.presentationHeight -= ( size.presentationHeight * config.margin ); + + // Slide width may be a percentage of available width + if( typeof size.width === 'string' && /%$/.test( size.width ) ) { + size.width = parseInt( size.width, 10 ) / 100 * size.presentationWidth; + } + + // Slide height may be a percentage of available height + if( typeof size.height === 'string' && /%$/.test( size.height ) ) { + size.height = parseInt( size.height, 10 ) / 100 * size.presentationHeight; + } + + return size; + + } + + /** + * Stores the vertical index of a stack so that the same + * vertical slide can be selected when navigating to and + * from the stack. + * + * @param {HTMLElement} stack The vertical stack element + * @param {int} v Index to memorize + */ + function setPreviousVerticalIndex( stack, v ) { + + if( typeof stack === 'object' && typeof stack.setAttribute === 'function' ) { + stack.setAttribute( 'data-previous-indexv', v || 0 ); + } + + } + + /** + * Retrieves the vertical index which was stored using + * #setPreviousVerticalIndex() or 0 if no previous index + * exists. + * + * @param {HTMLElement} stack The vertical stack element + */ + function getPreviousVerticalIndex( stack ) { + + if( typeof stack === 'object' && typeof stack.setAttribute === 'function' && stack.classList.contains( 'stack' ) ) { + // Prefer manually defined start-indexv + var attributeName = stack.hasAttribute( 'data-start-indexv' ) ? 'data-start-indexv' : 'data-previous-indexv'; + + return parseInt( stack.getAttribute( attributeName ) || 0, 10 ); + } + + return 0; + + } + + /** + * Displays the overview of slides (quick nav) by scaling + * down and arranging all slide elements. + */ + function activateOverview() { + + // Only proceed if enabled in config + if( config.overview && !isOverview() ) { + + overview = true; + + dom.wrapper.classList.add( 'overview' ); + dom.wrapper.classList.remove( 'overview-deactivating' ); + + if( features.overviewTransitions ) { + setTimeout( function() { + dom.wrapper.classList.add( 'overview-animated' ); + }, 1 ); + } + + // Don't auto-slide while in overview mode + cancelAutoSlide(); + + // Move the backgrounds element into the slide container to + // that the same scaling is applied + dom.slides.appendChild( dom.background ); + + // Clicking on an overview slide navigates to it + toArray( dom.wrapper.querySelectorAll( SLIDES_SELECTOR ) ).forEach( function( slide ) { + if( !slide.classList.contains( 'stack' ) ) { + slide.addEventListener( 'click', onOverviewSlideClicked, true ); + } + } ); + + updateSlidesVisibility(); + layoutOverview(); + updateOverview(); + + layout(); + + // Notify observers of the overview showing + dispatchEvent( 'overviewshown', { + 'indexh': indexh, + 'indexv': indexv, + 'currentSlide': currentSlide + } ); + + } + + } + + /** + * Uses CSS transforms to position all slides in a grid for + * display inside of the overview mode. + */ + function layoutOverview() { + + var margin = 70; + var slideWidth = config.width + margin, + slideHeight = config.height + margin; + + // Reverse in RTL mode + if( config.rtl ) { + slideWidth = -slideWidth; + } + + // Layout slides + toArray( dom.wrapper.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) ).forEach( function( hslide, h ) { + hslide.setAttribute( 'data-index-h', h ); + transformElement( hslide, 'translate3d(' + ( h * slideWidth ) + 'px, 0, 0)' ); + + if( hslide.classList.contains( 'stack' ) ) { + + toArray( hslide.querySelectorAll( 'section' ) ).forEach( function( vslide, v ) { + vslide.setAttribute( 'data-index-h', h ); + vslide.setAttribute( 'data-index-v', v ); + + transformElement( vslide, 'translate3d(0, ' + ( v * slideHeight ) + 'px, 0)' ); + } ); + + } + } ); + + // Layout slide backgrounds + toArray( dom.background.childNodes ).forEach( function( hbackground, h ) { + transformElement( hbackground, 'translate3d(' + ( h * slideWidth ) + 'px, 0, 0)' ); + + toArray( hbackground.querySelectorAll( '.slide-background' ) ).forEach( function( vbackground, v ) { + transformElement( vbackground, 'translate3d(0, ' + ( v * slideHeight ) + 'px, 0)' ); + } ); + } ); + + } + + /** + * Moves the overview viewport to the current slides. + * Called each time the current slide changes. + */ + function updateOverview() { + + var margin = 70; + var slideWidth = config.width + margin, + slideHeight = config.height + margin; + + // Reverse in RTL mode + if( config.rtl ) { + slideWidth = -slideWidth; + } + + transformSlides( { + overview: [ + 'translateX('+ ( -indexh * slideWidth ) +'px)', + 'translateY('+ ( -indexv * slideHeight ) +'px)', + 'translateZ('+ ( window.innerWidth < 400 ? -1000 : -2500 ) +'px)' + ].join( ' ' ) + } ); + + } + + /** + * Exits the slide overview and enters the currently + * active slide. + */ + function deactivateOverview() { + + // Only proceed if enabled in config + if( config.overview ) { + + overview = false; + + dom.wrapper.classList.remove( 'overview' ); + dom.wrapper.classList.remove( 'overview-animated' ); + + // Temporarily add a class so that transitions can do different things + // depending on whether they are exiting/entering overview, or just + // moving from slide to slide + dom.wrapper.classList.add( 'overview-deactivating' ); + + setTimeout( function () { + dom.wrapper.classList.remove( 'overview-deactivating' ); + }, 1 ); + + // Move the background element back out + dom.wrapper.appendChild( dom.background ); + + // Clean up changes made to slides + toArray( dom.wrapper.querySelectorAll( SLIDES_SELECTOR ) ).forEach( function( slide ) { + transformElement( slide, '' ); + + slide.removeEventListener( 'click', onOverviewSlideClicked, true ); + } ); + + // Clean up changes made to backgrounds + toArray( dom.background.querySelectorAll( '.slide-background' ) ).forEach( function( background ) { + transformElement( background, '' ); + } ); + + transformSlides( { overview: '' } ); + + slide( indexh, indexv ); + + layout(); + + cueAutoSlide(); + + // Notify observers of the overview hiding + dispatchEvent( 'overviewhidden', { + 'indexh': indexh, + 'indexv': indexv, + 'currentSlide': currentSlide + } ); + + } + } + + /** + * Toggles the slide overview mode on and off. + * + * @param {Boolean} override Optional flag which overrides the + * toggle logic and forcibly sets the desired state. True means + * overview is open, false means it's closed. + */ + function toggleOverview( override ) { + + if( typeof override === 'boolean' ) { + override ? activateOverview() : deactivateOverview(); + } + else { + isOverview() ? deactivateOverview() : activateOverview(); + } + + } + + /** + * Checks if the overview is currently active. + * + * @return {Boolean} true if the overview is active, + * false otherwise + */ + function isOverview() { + + return overview; + + } + + /** + * Checks if the current or specified slide is vertical + * (nested within another slide). + * + * @param {HTMLElement} slide [optional] The slide to check + * orientation of + */ + function isVerticalSlide( slide ) { + + // Prefer slide argument, otherwise use current slide + slide = slide ? slide : currentSlide; + + return slide && slide.parentNode && !!slide.parentNode.nodeName.match( /section/i ); + + } + + /** + * Handling the fullscreen functionality via the fullscreen API + * + * @see http://fullscreen.spec.whatwg.org/ + * @see https://developer.mozilla.org/en-US/docs/DOM/Using_fullscreen_mode + */ + function enterFullscreen() { + + var element = document.body; + + // Check which implementation is available + var requestMethod = element.requestFullScreen || + element.webkitRequestFullscreen || + element.webkitRequestFullScreen || + element.mozRequestFullScreen || + element.msRequestFullscreen; + + if( requestMethod ) { + requestMethod.apply( element ); + } + + } + + /** + * Enters the paused mode which fades everything on screen to + * black. + */ + function pause() { + + if( config.pause ) { + var wasPaused = dom.wrapper.classList.contains( 'paused' ); + + cancelAutoSlide(); + dom.wrapper.classList.add( 'paused' ); + + if( wasPaused === false ) { + dispatchEvent( 'paused' ); + } + } + + } + + /** + * Exits from the paused mode. + */ + function resume() { + + var wasPaused = dom.wrapper.classList.contains( 'paused' ); + dom.wrapper.classList.remove( 'paused' ); + + cueAutoSlide(); + + if( wasPaused ) { + dispatchEvent( 'resumed' ); + } + + } + + /** + * Toggles the paused mode on and off. + */ + function togglePause( override ) { + + if( typeof override === 'boolean' ) { + override ? pause() : resume(); + } + else { + isPaused() ? resume() : pause(); + } + + } + + /** + * Checks if we are currently in the paused mode. + */ + function isPaused() { + + return dom.wrapper.classList.contains( 'paused' ); + + } + + /** + * Toggles the auto slide mode on and off. + * + * @param {Boolean} override Optional flag which sets the desired state. + * True means autoplay starts, false means it stops. + */ + + function toggleAutoSlide( override ) { + + if( typeof override === 'boolean' ) { + override ? resumeAutoSlide() : pauseAutoSlide(); + } + + else { + autoSlidePaused ? resumeAutoSlide() : pauseAutoSlide(); + } + + } + + /** + * Checks if the auto slide mode is currently on. + */ + function isAutoSliding() { + + return !!( autoSlide && !autoSlidePaused ); + + } + + /** + * Steps from the current point in the presentation to the + * slide which matches the specified horizontal and vertical + * indices. + * + * @param {int} h Horizontal index of the target slide + * @param {int} v Vertical index of the target slide + * @param {int} f Optional index of a fragment within the + * target slide to activate + * @param {int} o Optional origin for use in multimaster environments + */ + function slide( h, v, f, o ) { + + // Remember where we were at before + previousSlide = currentSlide; + + // Query all horizontal slides in the deck + var horizontalSlides = dom.wrapper.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ); + + // If no vertical index is specified and the upcoming slide is a + // stack, resume at its previous vertical index + if( v === undefined && !isOverview() ) { + v = getPreviousVerticalIndex( horizontalSlides[ h ] ); + } + + // If we were on a vertical stack, remember what vertical index + // it was on so we can resume at the same position when returning + if( previousSlide && previousSlide.parentNode && previousSlide.parentNode.classList.contains( 'stack' ) ) { + setPreviousVerticalIndex( previousSlide.parentNode, indexv ); + } + + // Remember the state before this slide + var stateBefore = state.concat(); + + // Reset the state array + state.length = 0; + + var indexhBefore = indexh || 0, + indexvBefore = indexv || 0; + + // Activate and transition to the new slide + indexh = updateSlides( HORIZONTAL_SLIDES_SELECTOR, h === undefined ? indexh : h ); + indexv = updateSlides( VERTICAL_SLIDES_SELECTOR, v === undefined ? indexv : v ); + + // Update the visibility of slides now that the indices have changed + updateSlidesVisibility(); + + layout(); + + // Apply the new state + stateLoop: for( var i = 0, len = state.length; i < len; i++ ) { + // Check if this state existed on the previous slide. If it + // did, we will avoid adding it repeatedly + for( var j = 0; j < stateBefore.length; j++ ) { + if( stateBefore[j] === state[i] ) { + stateBefore.splice( j, 1 ); + continue stateLoop; + } + } + + document.documentElement.classList.add( state[i] ); + + // Dispatch custom event matching the state's name + dispatchEvent( state[i] ); + } + + // Clean up the remains of the previous state + while( stateBefore.length ) { + document.documentElement.classList.remove( stateBefore.pop() ); + } + + // Update the overview if it's currently active + if( isOverview() ) { + updateOverview(); + } + + // Find the current horizontal slide and any possible vertical slides + // within it + var currentHorizontalSlide = horizontalSlides[ indexh ], + currentVerticalSlides = currentHorizontalSlide.querySelectorAll( 'section' ); + + // Store references to the previous and current slides + currentSlide = currentVerticalSlides[ indexv ] || currentHorizontalSlide; + + // Show fragment, if specified + if( typeof f !== 'undefined' ) { + navigateFragment( f ); + } + + // Dispatch an event if the slide changed + var slideChanged = ( indexh !== indexhBefore || indexv !== indexvBefore ); + if( slideChanged ) { + dispatchEvent( 'slidechanged', { + 'indexh': indexh, + 'indexv': indexv, + 'previousSlide': previousSlide, + 'currentSlide': currentSlide, + 'origin': o + } ); + } + else { + // Ensure that the previous slide is never the same as the current + previousSlide = null; + } + + // Solves an edge case where the previous slide maintains the + // 'present' class when navigating between adjacent vertical + // stacks + if( previousSlide ) { + previousSlide.classList.remove( 'present' ); + previousSlide.setAttribute( 'aria-hidden', 'true' ); + + // Reset all slides upon navigate to home + // Issue: #285 + if ( dom.wrapper.querySelector( HOME_SLIDE_SELECTOR ).classList.contains( 'present' ) ) { + // Launch async task + setTimeout( function () { + var slides = toArray( dom.wrapper.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR + '.stack') ), i; + for( i in slides ) { + if( slides[i] ) { + // Reset stack + setPreviousVerticalIndex( slides[i], 0 ); + } + } + }, 0 ); + } + } + + // Handle embedded content + if( slideChanged || !previousSlide ) { + stopEmbeddedContent( previousSlide ); + startEmbeddedContent( currentSlide ); + } + + // Announce the current slide contents, for screen readers + dom.statusDiv.textContent = currentSlide.textContent; + + updateControls(); + updateProgress(); + updateBackground(); + updateParallax(); + updateSlideNumber(); + updateNotes(); + + // Update the URL hash + writeURL(); + + cueAutoSlide(); + + } + + /** + * Syncs the presentation with the current DOM. Useful + * when new slides or control elements are added or when + * the configuration has changed. + */ + function sync() { + + // Subscribe to input + removeEventListeners(); + addEventListeners(); + + // Force a layout to make sure the current config is accounted for + layout(); + + // Reflect the current autoSlide value + autoSlide = config.autoSlide; + + // Start auto-sliding if it's enabled + cueAutoSlide(); + + // Re-create the slide backgrounds + createBackgrounds(); + + // Write the current hash to the URL + writeURL(); + + sortAllFragments(); + + updateControls(); + updateProgress(); + updateBackground( true ); + updateSlideNumber(); + updateSlidesVisibility(); + updateNotes(); + + formatEmbeddedContent(); + startEmbeddedContent( currentSlide ); + + if( isOverview() ) { + layoutOverview(); + } + + } + + /** + * Resets all vertical slides so that only the first + * is visible. + */ + function resetVerticalSlides() { + + var horizontalSlides = toArray( dom.wrapper.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) ); + horizontalSlides.forEach( function( horizontalSlide ) { + + var verticalSlides = toArray( horizontalSlide.querySelectorAll( 'section' ) ); + verticalSlides.forEach( function( verticalSlide, y ) { + + if( y > 0 ) { + verticalSlide.classList.remove( 'present' ); + verticalSlide.classList.remove( 'past' ); + verticalSlide.classList.add( 'future' ); + verticalSlide.setAttribute( 'aria-hidden', 'true' ); + } + + } ); + + } ); + + } + + /** + * Sorts and formats all of fragments in the + * presentation. + */ + function sortAllFragments() { + + var horizontalSlides = toArray( dom.wrapper.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) ); + horizontalSlides.forEach( function( horizontalSlide ) { + + var verticalSlides = toArray( horizontalSlide.querySelectorAll( 'section' ) ); + verticalSlides.forEach( function( verticalSlide, y ) { + + sortFragments( verticalSlide.querySelectorAll( '.fragment' ) ); + + } ); + + if( verticalSlides.length === 0 ) sortFragments( horizontalSlide.querySelectorAll( '.fragment' ) ); + + } ); + + } + + /** + * Updates one dimension of slides by showing the slide + * with the specified index. + * + * @param {String} selector A CSS selector that will fetch + * the group of slides we are working with + * @param {Number} index The index of the slide that should be + * shown + * + * @return {Number} The index of the slide that is now shown, + * might differ from the passed in index if it was out of + * bounds. + */ + function updateSlides( selector, index ) { + + // Select all slides and convert the NodeList result to + // an array + var slides = toArray( dom.wrapper.querySelectorAll( selector ) ), + slidesLength = slides.length; + + var printMode = isPrintingPDF(); + + if( slidesLength ) { + + // Should the index loop? + if( config.loop ) { + index %= slidesLength; + + if( index < 0 ) { + index = slidesLength + index; + } + } + + // Enforce max and minimum index bounds + index = Math.max( Math.min( index, slidesLength - 1 ), 0 ); + + for( var i = 0; i < slidesLength; i++ ) { + var element = slides[i]; + + var reverse = config.rtl && !isVerticalSlide( element ); + + element.classList.remove( 'past' ); + element.classList.remove( 'present' ); + element.classList.remove( 'future' ); + + // http://www.w3.org/html/wg/drafts/html/master/editing.html#the-hidden-attribute + element.setAttribute( 'hidden', '' ); + element.setAttribute( 'aria-hidden', 'true' ); + + // If this element contains vertical slides + if( element.querySelector( 'section' ) ) { + element.classList.add( 'stack' ); + } + + // If we're printing static slides, all slides are "present" + if( printMode ) { + element.classList.add( 'present' ); + continue; + } + + if( i < index ) { + // Any element previous to index is given the 'past' class + element.classList.add( reverse ? 'future' : 'past' ); + + if( config.fragments ) { + var pastFragments = toArray( element.querySelectorAll( '.fragment' ) ); + + // Show all fragments on prior slides + while( pastFragments.length ) { + var pastFragment = pastFragments.pop(); + pastFragment.classList.add( 'visible' ); + pastFragment.classList.remove( 'current-fragment' ); + } + } + } + else if( i > index ) { + // Any element subsequent to index is given the 'future' class + element.classList.add( reverse ? 'past' : 'future' ); + + if( config.fragments ) { + var futureFragments = toArray( element.querySelectorAll( '.fragment.visible' ) ); + + // No fragments in future slides should be visible ahead of time + while( futureFragments.length ) { + var futureFragment = futureFragments.pop(); + futureFragment.classList.remove( 'visible' ); + futureFragment.classList.remove( 'current-fragment' ); + } + } + } + } + + // Mark the current slide as present + slides[index].classList.add( 'present' ); + slides[index].removeAttribute( 'hidden' ); + slides[index].removeAttribute( 'aria-hidden' ); + + // If this slide has a state associated with it, add it + // onto the current state of the deck + var slideState = slides[index].getAttribute( 'data-state' ); + if( slideState ) { + state = state.concat( slideState.split( ' ' ) ); + } + + } + else { + // Since there are no slides we can't be anywhere beyond the + // zeroth index + index = 0; + } + + return index; + + } + + /** + * Optimization method; hide all slides that are far away + * from the present slide. + */ + function updateSlidesVisibility() { + + // Select all slides and convert the NodeList result to + // an array + var horizontalSlides = toArray( dom.wrapper.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) ), + horizontalSlidesLength = horizontalSlides.length, + distanceX, + distanceY; + + if( horizontalSlidesLength && typeof indexh !== 'undefined' ) { + + // The number of steps away from the present slide that will + // be visible + var viewDistance = isOverview() ? 10 : config.viewDistance; + + // Limit view distance on weaker devices + if( isMobileDevice ) { + viewDistance = isOverview() ? 6 : 2; + } + + // All slides need to be visible when exporting to PDF + if( isPrintingPDF() ) { + viewDistance = Number.MAX_VALUE; + } + + for( var x = 0; x < horizontalSlidesLength; x++ ) { + var horizontalSlide = horizontalSlides[x]; + + var verticalSlides = toArray( horizontalSlide.querySelectorAll( 'section' ) ), + verticalSlidesLength = verticalSlides.length; + + // Determine how far away this slide is from the present + distanceX = Math.abs( ( indexh || 0 ) - x ) || 0; + + // If the presentation is looped, distance should measure + // 1 between the first and last slides + if( config.loop ) { + distanceX = Math.abs( ( ( indexh || 0 ) - x ) % ( horizontalSlidesLength - viewDistance ) ) || 0; + } + + // Show the horizontal slide if it's within the view distance + if( distanceX < viewDistance ) { + showSlide( horizontalSlide ); + } + else { + hideSlide( horizontalSlide ); + } + + if( verticalSlidesLength ) { + + var oy = getPreviousVerticalIndex( horizontalSlide ); + + for( var y = 0; y < verticalSlidesLength; y++ ) { + var verticalSlide = verticalSlides[y]; + + distanceY = x === ( indexh || 0 ) ? Math.abs( ( indexv || 0 ) - y ) : Math.abs( y - oy ); + + if( distanceX + distanceY < viewDistance ) { + showSlide( verticalSlide ); + } + else { + hideSlide( verticalSlide ); + } + } + + } + } + + } + + } + + /** + * Pick up notes from the current slide and display tham + * to the viewer. + * + * @see `showNotes` config value + */ + function updateNotes() { + + if( config.showNotes && dom.speakerNotes && currentSlide && !isPrintingPDF() ) { + + dom.speakerNotes.innerHTML = getSlideNotes() || ''; + + } + + } + + /** + * Updates the progress bar to reflect the current slide. + */ + function updateProgress() { + + // Update progress if enabled + if( config.progress && dom.progressbar ) { + + dom.progressbar.style.width = getProgress() * dom.wrapper.offsetWidth + 'px'; + + } + + } + + /** + * Updates the slide number div to reflect the current slide. + * + * The following slide number formats are available: + * "h.v": horizontal . vertical slide number (default) + * "h/v": horizontal / vertical slide number + * "c": flattened slide number + * "c/t": flattened slide number / total slides + */ + function updateSlideNumber() { + + // Update slide number if enabled + if( config.slideNumber && dom.slideNumber ) { + + var value = []; + var format = 'h.v'; + + // Check if a custom number format is available + if( typeof config.slideNumber === 'string' ) { + format = config.slideNumber; + } + + switch( format ) { + case 'c': + value.push( getSlidePastCount() + 1 ); + break; + case 'c/t': + value.push( getSlidePastCount() + 1, '/', getTotalSlides() ); + break; + case 'h/v': + value.push( indexh + 1 ); + if( isVerticalSlide() ) value.push( '/', indexv + 1 ); + break; + default: + value.push( indexh + 1 ); + if( isVerticalSlide() ) value.push( '.', indexv + 1 ); + } + + dom.slideNumber.innerHTML = formatSlideNumber( value[0], value[1], value[2] ); + } + + } + + /** + * Applies HTML formatting to a slide number before it's + * written to the DOM. + */ + function formatSlideNumber( a, delimiter, b ) { + + if( typeof b === 'number' && !isNaN( b ) ) { + return ''+ a +'' + + ''+ delimiter +'' + + ''+ b +''; + } + else { + return ''+ a +''; + } + + } + + /** + * Updates the state of all control/navigation arrows. + */ + function updateControls() { + + var routes = availableRoutes(); + var fragments = availableFragments(); + + // Remove the 'enabled' class from all directions + dom.controlsLeft.concat( dom.controlsRight ) + .concat( dom.controlsUp ) + .concat( dom.controlsDown ) + .concat( dom.controlsPrev ) + .concat( dom.controlsNext ).forEach( function( node ) { + node.classList.remove( 'enabled' ); + node.classList.remove( 'fragmented' ); + } ); + + // Add the 'enabled' class to the available routes + if( routes.left ) dom.controlsLeft.forEach( function( el ) { el.classList.add( 'enabled' ); } ); + if( routes.right ) dom.controlsRight.forEach( function( el ) { el.classList.add( 'enabled' ); } ); + if( routes.up ) dom.controlsUp.forEach( function( el ) { el.classList.add( 'enabled' ); } ); + if( routes.down ) dom.controlsDown.forEach( function( el ) { el.classList.add( 'enabled' ); } ); + + // Prev/next buttons + if( routes.left || routes.up ) dom.controlsPrev.forEach( function( el ) { el.classList.add( 'enabled' ); } ); + if( routes.right || routes.down ) dom.controlsNext.forEach( function( el ) { el.classList.add( 'enabled' ); } ); + + // Highlight fragment directions + if( currentSlide ) { + + // Always apply fragment decorator to prev/next buttons + if( fragments.prev ) dom.controlsPrev.forEach( function( el ) { el.classList.add( 'fragmented', 'enabled' ); } ); + if( fragments.next ) dom.controlsNext.forEach( function( el ) { el.classList.add( 'fragmented', 'enabled' ); } ); + + // Apply fragment decorators to directional buttons based on + // what slide axis they are in + if( isVerticalSlide( currentSlide ) ) { + if( fragments.prev ) dom.controlsUp.forEach( function( el ) { el.classList.add( 'fragmented', 'enabled' ); } ); + if( fragments.next ) dom.controlsDown.forEach( function( el ) { el.classList.add( 'fragmented', 'enabled' ); } ); + } + else { + if( fragments.prev ) dom.controlsLeft.forEach( function( el ) { el.classList.add( 'fragmented', 'enabled' ); } ); + if( fragments.next ) dom.controlsRight.forEach( function( el ) { el.classList.add( 'fragmented', 'enabled' ); } ); + } + + } + + } + + /** + * Updates the background elements to reflect the current + * slide. + * + * @param {Boolean} includeAll If true, the backgrounds of + * all vertical slides (not just the present) will be updated. + */ + function updateBackground( includeAll ) { + + var currentBackground = null; + + // Reverse past/future classes when in RTL mode + var horizontalPast = config.rtl ? 'future' : 'past', + horizontalFuture = config.rtl ? 'past' : 'future'; + + // Update the classes of all backgrounds to match the + // states of their slides (past/present/future) + toArray( dom.background.childNodes ).forEach( function( backgroundh, h ) { + + backgroundh.classList.remove( 'past' ); + backgroundh.classList.remove( 'present' ); + backgroundh.classList.remove( 'future' ); + + if( h < indexh ) { + backgroundh.classList.add( horizontalPast ); + } + else if ( h > indexh ) { + backgroundh.classList.add( horizontalFuture ); + } + else { + backgroundh.classList.add( 'present' ); + + // Store a reference to the current background element + currentBackground = backgroundh; + } + + if( includeAll || h === indexh ) { + toArray( backgroundh.querySelectorAll( '.slide-background' ) ).forEach( function( backgroundv, v ) { + + backgroundv.classList.remove( 'past' ); + backgroundv.classList.remove( 'present' ); + backgroundv.classList.remove( 'future' ); + + if( v < indexv ) { + backgroundv.classList.add( 'past' ); + } + else if ( v > indexv ) { + backgroundv.classList.add( 'future' ); + } + else { + backgroundv.classList.add( 'present' ); + + // Only if this is the present horizontal and vertical slide + if( h === indexh ) currentBackground = backgroundv; + } + + } ); + } + + } ); + + // Stop any currently playing video background + if( previousBackground ) { + + var previousVideo = previousBackground.querySelector( 'video' ); + if( previousVideo ) previousVideo.pause(); + + } + + if( currentBackground ) { + + // Start video playback + var currentVideo = currentBackground.querySelector( 'video' ); + if( currentVideo ) { + if( currentVideo.currentTime > 0 ) currentVideo.currentTime = 0; + currentVideo.play(); + } + + var backgroundImageURL = currentBackground.style.backgroundImage || ''; + + // Restart GIFs (doesn't work in Firefox) + if( /\.gif/i.test( backgroundImageURL ) ) { + currentBackground.style.backgroundImage = ''; + window.getComputedStyle( currentBackground ).opacity; + currentBackground.style.backgroundImage = backgroundImageURL; + } + + // Don't transition between identical backgrounds. This + // prevents unwanted flicker. + var previousBackgroundHash = previousBackground ? previousBackground.getAttribute( 'data-background-hash' ) : null; + var currentBackgroundHash = currentBackground.getAttribute( 'data-background-hash' ); + if( currentBackgroundHash && currentBackgroundHash === previousBackgroundHash && currentBackground !== previousBackground ) { + dom.background.classList.add( 'no-transition' ); + } + + previousBackground = currentBackground; + + } + + // If there's a background brightness flag for this slide, + // bubble it to the .reveal container + if( currentSlide ) { + [ 'has-light-background', 'has-dark-background' ].forEach( function( classToBubble ) { + if( currentSlide.classList.contains( classToBubble ) ) { + dom.wrapper.classList.add( classToBubble ); + } + else { + dom.wrapper.classList.remove( classToBubble ); + } + } ); + } + + // Allow the first background to apply without transition + setTimeout( function() { + dom.background.classList.remove( 'no-transition' ); + }, 1 ); + + } + + /** + * Updates the position of the parallax background based + * on the current slide index. + */ + function updateParallax() { + + if( config.parallaxBackgroundImage ) { + + var horizontalSlides = dom.wrapper.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ), + verticalSlides = dom.wrapper.querySelectorAll( VERTICAL_SLIDES_SELECTOR ); + + var backgroundSize = dom.background.style.backgroundSize.split( ' ' ), + backgroundWidth, backgroundHeight; + + if( backgroundSize.length === 1 ) { + backgroundWidth = backgroundHeight = parseInt( backgroundSize[0], 10 ); + } + else { + backgroundWidth = parseInt( backgroundSize[0], 10 ); + backgroundHeight = parseInt( backgroundSize[1], 10 ); + } + + var slideWidth = dom.background.offsetWidth, + horizontalSlideCount = horizontalSlides.length, + horizontalOffsetMultiplier, + horizontalOffset; + + if( typeof config.parallaxBackgroundHorizontal === 'number' ) { + horizontalOffsetMultiplier = config.parallaxBackgroundHorizontal; + } + else { + horizontalOffsetMultiplier = horizontalSlideCount > 1 ? ( backgroundWidth - slideWidth ) / ( horizontalSlideCount-1 ) : 0; + } + + horizontalOffset = horizontalOffsetMultiplier * indexh * -1; + + var slideHeight = dom.background.offsetHeight, + verticalSlideCount = verticalSlides.length, + verticalOffsetMultiplier, + verticalOffset; + + if( typeof config.parallaxBackgroundVertical === 'number' ) { + verticalOffsetMultiplier = config.parallaxBackgroundVertical; + } + else { + verticalOffsetMultiplier = ( backgroundHeight - slideHeight ) / ( verticalSlideCount-1 ); + } + + verticalOffset = verticalSlideCount > 0 ? verticalOffsetMultiplier * indexv * 1 : 0; + + dom.background.style.backgroundPosition = horizontalOffset + 'px ' + -verticalOffset + 'px'; + + } + + } + + /** + * Called when the given slide is within the configured view + * distance. Shows the slide element and loads any content + * that is set to load lazily (data-src). + */ + function showSlide( slide ) { + + // Show the slide element + slide.style.display = 'block'; + + // Media elements with data-src attributes + toArray( slide.querySelectorAll( 'img[data-src], video[data-src], audio[data-src]' ) ).forEach( function( element ) { + element.setAttribute( 'src', element.getAttribute( 'data-src' ) ); + element.removeAttribute( 'data-src' ); + } ); + + // Media elements with children + toArray( slide.querySelectorAll( 'video, audio' ) ).forEach( function( media ) { + var sources = 0; + + toArray( media.querySelectorAll( 'source[data-src]' ) ).forEach( function( source ) { + source.setAttribute( 'src', source.getAttribute( 'data-src' ) ); + source.removeAttribute( 'data-src' ); + sources += 1; + } ); + + // If we rewrote sources for this video/audio element, we need + // to manually tell it to load from its new origin + if( sources > 0 ) { + media.load(); + } + } ); + + + // Show the corresponding background element + var indices = getIndices( slide ); + var background = getSlideBackground( indices.h, indices.v ); + if( background ) { + background.style.display = 'block'; + + // If the background contains media, load it + if( background.hasAttribute( 'data-loaded' ) === false ) { + background.setAttribute( 'data-loaded', 'true' ); + + var backgroundImage = slide.getAttribute( 'data-background-image' ), + backgroundVideo = slide.getAttribute( 'data-background-video' ), + backgroundVideoLoop = slide.hasAttribute( 'data-background-video-loop' ), + backgroundIframe = slide.getAttribute( 'data-background-iframe' ); + + // Images + if( backgroundImage ) { + background.style.backgroundImage = 'url('+ backgroundImage +')'; + } + // Videos + else if ( backgroundVideo && !isSpeakerNotes() ) { + var video = document.createElement( 'video' ); + + if( backgroundVideoLoop ) { + video.setAttribute( 'loop', '' ); + } + + // Support comma separated lists of video sources + backgroundVideo.split( ',' ).forEach( function( source ) { + video.innerHTML += ''; + } ); + + background.appendChild( video ); + } + // Iframes + else if( backgroundIframe ) { + var iframe = document.createElement( 'iframe' ); + iframe.setAttribute( 'src', backgroundIframe ); + iframe.style.width = '100%'; + iframe.style.height = '100%'; + iframe.style.maxHeight = '100%'; + iframe.style.maxWidth = '100%'; + + background.appendChild( iframe ); + } + } + } + + } + + /** + * Called when the given slide is moved outside of the + * configured view distance. + */ + function hideSlide( slide ) { + + // Hide the slide element + slide.style.display = 'none'; + + // Hide the corresponding background element + var indices = getIndices( slide ); + var background = getSlideBackground( indices.h, indices.v ); + if( background ) { + background.style.display = 'none'; + } + + } + + /** + * Determine what available routes there are for navigation. + * + * @return {Object} containing four booleans: left/right/up/down + */ + function availableRoutes() { + + var horizontalSlides = dom.wrapper.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ), + verticalSlides = dom.wrapper.querySelectorAll( VERTICAL_SLIDES_SELECTOR ); + + var routes = { + left: indexh > 0 || config.loop, + right: indexh < horizontalSlides.length - 1 || config.loop, + up: indexv > 0, + down: indexv < verticalSlides.length - 1 + }; + + // reverse horizontal controls for rtl + if( config.rtl ) { + var left = routes.left; + routes.left = routes.right; + routes.right = left; + } + + return routes; + + } + + /** + * Returns an object describing the available fragment + * directions. + * + * @return {Object} two boolean properties: prev/next + */ + function availableFragments() { + + if( currentSlide && config.fragments ) { + var fragments = currentSlide.querySelectorAll( '.fragment' ); + var hiddenFragments = currentSlide.querySelectorAll( '.fragment:not(.visible)' ); + + return { + prev: fragments.length - hiddenFragments.length > 0, + next: !!hiddenFragments.length + }; + } + else { + return { prev: false, next: false }; + } + + } + + /** + * Enforces origin-specific format rules for embedded media. + */ + function formatEmbeddedContent() { + + var _appendParamToIframeSource = function( sourceAttribute, sourceURL, param ) { + toArray( dom.slides.querySelectorAll( 'iframe['+ sourceAttribute +'*="'+ sourceURL +'"]' ) ).forEach( function( el ) { + var src = el.getAttribute( sourceAttribute ); + if( src && src.indexOf( param ) === -1 ) { + el.setAttribute( sourceAttribute, src + ( !/\?/.test( src ) ? '?' : '&' ) + param ); + } + }); + }; + + // YouTube frames must include "?enablejsapi=1" + _appendParamToIframeSource( 'src', 'youtube.com/embed/', 'enablejsapi=1' ); + _appendParamToIframeSource( 'data-src', 'youtube.com/embed/', 'enablejsapi=1' ); + + // Vimeo frames must include "?api=1" + _appendParamToIframeSource( 'src', 'player.vimeo.com/', 'api=1' ); + _appendParamToIframeSource( 'data-src', 'player.vimeo.com/', 'api=1' ); + + } + + /** + * Start playback of any embedded content inside of + * the targeted slide. + */ + function startEmbeddedContent( slide ) { + + if( slide && !isSpeakerNotes() ) { + // Restart GIFs + toArray( slide.querySelectorAll( 'img[src$=".gif"]' ) ).forEach( function( el ) { + // Setting the same unchanged source like this was confirmed + // to work in Chrome, FF & Safari + el.setAttribute( 'src', el.getAttribute( 'src' ) ); + } ); + + // HTML5 media elements + toArray( slide.querySelectorAll( 'video, audio' ) ).forEach( function( el ) { + if( el.hasAttribute( 'data-autoplay' ) && typeof el.play === 'function' ) { + el.play(); + } + } ); + + // Normal iframes + toArray( slide.querySelectorAll( 'iframe[src]' ) ).forEach( function( el ) { + startEmbeddedIframe( { target: el } ); + } ); + + // Lazy loading iframes + toArray( slide.querySelectorAll( 'iframe[data-src]' ) ).forEach( function( el ) { + if( el.getAttribute( 'src' ) !== el.getAttribute( 'data-src' ) ) { + el.removeEventListener( 'load', startEmbeddedIframe ); // remove first to avoid dupes + el.addEventListener( 'load', startEmbeddedIframe ); + el.setAttribute( 'src', el.getAttribute( 'data-src' ) ); + } + } ); + } + + } + + /** + * "Starts" the content of an embedded iframe using the + * postmessage API. + */ + function startEmbeddedIframe( event ) { + + var iframe = event.target; + + // YouTube postMessage API + if( /youtube\.com\/embed\//.test( iframe.getAttribute( 'src' ) ) && iframe.hasAttribute( 'data-autoplay' ) ) { + iframe.contentWindow.postMessage( '{"event":"command","func":"playVideo","args":""}', '*' ); + } + // Vimeo postMessage API + else if( /player\.vimeo\.com\//.test( iframe.getAttribute( 'src' ) ) && iframe.hasAttribute( 'data-autoplay' ) ) { + iframe.contentWindow.postMessage( '{"method":"play"}', '*' ); + } + // Generic postMessage API + else { + iframe.contentWindow.postMessage( 'slide:start', '*' ); + } + + } + + /** + * Stop playback of any embedded content inside of + * the targeted slide. + */ + function stopEmbeddedContent( slide ) { + + if( slide && slide.parentNode ) { + // HTML5 media elements + toArray( slide.querySelectorAll( 'video, audio' ) ).forEach( function( el ) { + if( !el.hasAttribute( 'data-ignore' ) && typeof el.pause === 'function' ) { + el.pause(); + } + } ); + + // Generic postMessage API for non-lazy loaded iframes + toArray( slide.querySelectorAll( 'iframe' ) ).forEach( function( el ) { + el.contentWindow.postMessage( 'slide:stop', '*' ); + el.removeEventListener( 'load', startEmbeddedIframe ); + }); + + // YouTube postMessage API + toArray( slide.querySelectorAll( 'iframe[src*="youtube.com/embed/"]' ) ).forEach( function( el ) { + if( !el.hasAttribute( 'data-ignore' ) && typeof el.contentWindow.postMessage === 'function' ) { + el.contentWindow.postMessage( '{"event":"command","func":"pauseVideo","args":""}', '*' ); + } + }); + + // Vimeo postMessage API + toArray( slide.querySelectorAll( 'iframe[src*="player.vimeo.com/"]' ) ).forEach( function( el ) { + if( !el.hasAttribute( 'data-ignore' ) && typeof el.contentWindow.postMessage === 'function' ) { + el.contentWindow.postMessage( '{"method":"pause"}', '*' ); + } + }); + + // Lazy loading iframes + toArray( slide.querySelectorAll( 'iframe[data-src]' ) ).forEach( function( el ) { + // Only removing the src doesn't actually unload the frame + // in all browsers (Firefox) so we set it to blank first + el.setAttribute( 'src', 'about:blank' ); + el.removeAttribute( 'src' ); + } ); + } + + } + + /** + * Returns the number of past slides. This can be used as a global + * flattened index for slides. + */ + function getSlidePastCount() { + + var horizontalSlides = toArray( dom.wrapper.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) ); + + // The number of past slides + var pastCount = 0; + + // Step through all slides and count the past ones + mainLoop: for( var i = 0; i < horizontalSlides.length; i++ ) { + + var horizontalSlide = horizontalSlides[i]; + var verticalSlides = toArray( horizontalSlide.querySelectorAll( 'section' ) ); + + for( var j = 0; j < verticalSlides.length; j++ ) { + + // Stop as soon as we arrive at the present + if( verticalSlides[j].classList.contains( 'present' ) ) { + break mainLoop; + } + + pastCount++; + + } + + // Stop as soon as we arrive at the present + if( horizontalSlide.classList.contains( 'present' ) ) { + break; + } + + // Don't count the wrapping section for vertical slides + if( horizontalSlide.classList.contains( 'stack' ) === false ) { + pastCount++; + } + + } + + return pastCount; + + } + + /** + * Returns a value ranging from 0-1 that represents + * how far into the presentation we have navigated. + */ + function getProgress() { + + // The number of past and total slides + var totalCount = getTotalSlides(); + var pastCount = getSlidePastCount(); + + if( currentSlide ) { + + var allFragments = currentSlide.querySelectorAll( '.fragment' ); + + // If there are fragments in the current slide those should be + // accounted for in the progress. + if( allFragments.length > 0 ) { + var visibleFragments = currentSlide.querySelectorAll( '.fragment.visible' ); + + // This value represents how big a portion of the slide progress + // that is made up by its fragments (0-1) + var fragmentWeight = 0.9; + + // Add fragment progress to the past slide count + pastCount += ( visibleFragments.length / allFragments.length ) * fragmentWeight; + } + + } + + return pastCount / ( totalCount - 1 ); + + } + + /** + * Checks if this presentation is running inside of the + * speaker notes window. + */ + function isSpeakerNotes() { + + return !!window.location.search.match( /receiver/gi ); + + } + + /** + * Reads the current URL (hash) and navigates accordingly. + */ + function readURL() { + + var hash = window.location.hash; + + // Attempt to parse the hash as either an index or name + var bits = hash.slice( 2 ).split( '/' ), + name = hash.replace( /#|\//gi, '' ); + + // If the first bit is invalid and there is a name we can + // assume that this is a named link + if( isNaN( parseInt( bits[0], 10 ) ) && name.length ) { + var element; + + // Ensure the named link is a valid HTML ID attribute + if( /^[a-zA-Z][\w:.-]*$/.test( name ) ) { + // Find the slide with the specified ID + element = document.getElementById( name ); + } + + if( element ) { + // Find the position of the named slide and navigate to it + var indices = Reveal.getIndices( element ); + slide( indices.h, indices.v ); + } + // If the slide doesn't exist, navigate to the current slide + else { + slide( indexh || 0, indexv || 0 ); + } + } + else { + // Read the index components of the hash + var h = parseInt( bits[0], 10 ) || 0, + v = parseInt( bits[1], 10 ) || 0; + + if( h !== indexh || v !== indexv ) { + slide( h, v ); + } + } + + } + + /** + * Updates the page URL (hash) to reflect the current + * state. + * + * @param {Number} delay The time in ms to wait before + * writing the hash + */ + function writeURL( delay ) { + + if( config.history ) { + + // Make sure there's never more than one timeout running + clearTimeout( writeURLTimeout ); + + // If a delay is specified, timeout this call + if( typeof delay === 'number' ) { + writeURLTimeout = setTimeout( writeURL, delay ); + } + else if( currentSlide ) { + var url = '/'; + + // Attempt to create a named link based on the slide's ID + var id = currentSlide.getAttribute( 'id' ); + if( id ) { + id = id.replace( /[^a-zA-Z0-9\-\_\:\.]/g, '' ); + } + + // If the current slide has an ID, use that as a named link + if( typeof id === 'string' && id.length ) { + url = '/' + id; + } + // Otherwise use the /h/v index + else { + if( indexh > 0 || indexv > 0 ) url += indexh; + if( indexv > 0 ) url += '/' + indexv; + } + + window.location.hash = url; + } + } + + } + + /** + * Retrieves the h/v location of the current, or specified, + * slide. + * + * @param {HTMLElement} slide If specified, the returned + * index will be for this slide rather than the currently + * active one + * + * @return {Object} { h: , v: , f: } + */ + function getIndices( slide ) { + + // By default, return the current indices + var h = indexh, + v = indexv, + f; + + // If a slide is specified, return the indices of that slide + if( slide ) { + var isVertical = isVerticalSlide( slide ); + var slideh = isVertical ? slide.parentNode : slide; + + // Select all horizontal slides + var horizontalSlides = toArray( dom.wrapper.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) ); + + // Now that we know which the horizontal slide is, get its index + h = Math.max( horizontalSlides.indexOf( slideh ), 0 ); + + // Assume we're not vertical + v = undefined; + + // If this is a vertical slide, grab the vertical index + if( isVertical ) { + v = Math.max( toArray( slide.parentNode.querySelectorAll( 'section' ) ).indexOf( slide ), 0 ); + } + } + + if( !slide && currentSlide ) { + var hasFragments = currentSlide.querySelectorAll( '.fragment' ).length > 0; + if( hasFragments ) { + var currentFragment = currentSlide.querySelector( '.current-fragment' ); + if( currentFragment && currentFragment.hasAttribute( 'data-fragment-index' ) ) { + f = parseInt( currentFragment.getAttribute( 'data-fragment-index' ), 10 ); + } + else { + f = currentSlide.querySelectorAll( '.fragment.visible' ).length - 1; + } + } + } + + return { h: h, v: v, f: f }; + + } + + /** + * Retrieves the total number of slides in this presentation. + */ + function getTotalSlides() { + + return dom.wrapper.querySelectorAll( SLIDES_SELECTOR + ':not(.stack)' ).length; + + } + + /** + * Returns the slide element matching the specified index. + */ + function getSlide( x, y ) { + + var horizontalSlide = dom.wrapper.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR )[ x ]; + var verticalSlides = horizontalSlide && horizontalSlide.querySelectorAll( 'section' ); + + if( verticalSlides && verticalSlides.length && typeof y === 'number' ) { + return verticalSlides ? verticalSlides[ y ] : undefined; + } + + return horizontalSlide; + + } + + /** + * Returns the background element for the given slide. + * All slides, even the ones with no background properties + * defined, have a background element so as long as the + * index is valid an element will be returned. + */ + function getSlideBackground( x, y ) { + + // When printing to PDF the slide backgrounds are nested + // inside of the slides + if( isPrintingPDF() ) { + var slide = getSlide( x, y ); + if( slide ) { + var background = slide.querySelector( '.slide-background' ); + if( background && background.parentNode === slide ) { + return background; + } + } + + return undefined; + } + + var horizontalBackground = dom.wrapper.querySelectorAll( '.backgrounds>.slide-background' )[ x ]; + var verticalBackgrounds = horizontalBackground && horizontalBackground.querySelectorAll( '.slide-background' ); + + if( verticalBackgrounds && verticalBackgrounds.length && typeof y === 'number' ) { + return verticalBackgrounds ? verticalBackgrounds[ y ] : undefined; + } + + return horizontalBackground; + + } + + /** + * Retrieves the speaker notes from a slide. Notes can be + * defined in two ways: + * 1. As a data-notes attribute on the slide
+ * 2. As an