diff --git a/slides/images/angularjs-tiny.png b/slides/images/angularjs-tiny.png new file mode 100644 index 0000000..1a33fe8 Binary files /dev/null and b/slides/images/angularjs-tiny.png differ diff --git a/slides/images/angularjs.png b/slides/images/angularjs.png new file mode 100644 index 0000000..fb893f0 Binary files /dev/null and b/slides/images/angularjs.png differ diff --git a/slides/images/async.png b/slides/images/async.png new file mode 100644 index 0000000..901e5f8 Binary files /dev/null and b/slides/images/async.png differ diff --git a/slides/images/callbacks-hack.jpg b/slides/images/callbacks-hack.jpg new file mode 100644 index 0000000..b6dcea8 Binary files /dev/null and b/slides/images/callbacks-hack.jpg differ diff --git a/slides/images/eventloop.png b/slides/images/eventloop.png new file mode 100644 index 0000000..3fb3873 Binary files /dev/null and b/slides/images/eventloop.png differ diff --git a/slides/images/google_developers_logo_tiny.png b/slides/images/google_developers_logo_tiny.png deleted file mode 100644 index 6e607e4..0000000 Binary files a/slides/images/google_developers_logo_tiny.png and /dev/null differ diff --git a/slides/images/ihavenoidea.jpg b/slides/images/ihavenoidea.jpg new file mode 100644 index 0000000..251b890 Binary files /dev/null and b/slides/images/ihavenoidea.jpg differ diff --git a/slides/images/promises.jpg b/slides/images/promises.jpg new file mode 100644 index 0000000..884f1d4 Binary files /dev/null and b/slides/images/promises.jpg differ diff --git a/slides/images/runloop.png b/slides/images/runloop.png new file mode 100644 index 0000000..eededc2 Binary files /dev/null and b/slides/images/runloop.png differ diff --git a/slides/images/sync.png b/slides/images/sync.png new file mode 100644 index 0000000..1a8fda4 Binary files /dev/null and b/slides/images/sync.png differ diff --git a/slides/images/threaded.png b/slides/images/threaded.png new file mode 100644 index 0000000..91d188d Binary files /dev/null and b/slides/images/threaded.png differ diff --git a/slides/slide_config.js b/slides/slide_config.js index a849147..e739b5b 100644 --- a/slides/slide_config.js +++ b/slides/slide_config.js @@ -1,15 +1,15 @@ var SLIDE_CONFIG = { // Slide settings settings: { - title: 'Title Goes Here
Up To Two Lines', - subtitle: 'Subtitle Goes Here', + title: 'Promises Then Angular', + subtitle: '', //eventTitle: 'Google I/O 2013', useBuilds: true, // Default: true. False will turn off slide animation builds. usePrettify: true, // Default: true enableSlideAreas: true, // Default: true. False turns off the click areas on either slide of the slides. enableTouch: true, // Default: true. If touch support should enabled. Note: the device must support touch. //analytics: 'UA-XXXXXXXX-1', // TODO: Using this breaks GA for some reason (probably requirejs). Update your tracking code in template.html instead. - favIcon: 'images/google_developers_logo_tiny.png', + favIcon: 'images/angularjs-tiny.png', fonts: [ 'Open Sans:regular,semibold,italic,italicsemibold', 'Source Code Pro' @@ -19,12 +19,12 @@ var SLIDE_CONFIG = { // Author information presenters: [{ - name: 'Firstname Lastname', - company: 'Job Title, Google', - gplus: 'http://plus.google.com/1234567890', - twitter: '@yourhandle', - www: 'http://www.you.com', - github: 'http://github.com/you' + name: 'Chakib Benziane', + company: 'Frontend Engineer', + // gplus: 'http://plus.google.com/1234567890', + twitter: '@sp4ke', + // www: 'http://www.you.com', + github: 'http://github.com/sp4ke' }/*, { name: 'Second Name', company: 'Job Title, Google', diff --git a/slides/template.html b/slides/template.html index 93eb2a0..74e8644 100644 --- a/slides/template.html +++ b/slides/template.html @@ -26,40 +26,520 @@ URL: https://code.google.com/p/io-2012-slides - + + +
-

+

-

+

+
+
+ + + +
+

Why Promises ?

+

Let's step back to the basics

+
+
+ + +
+

Single thread synchronous model aka. blocking

+
+

+
+
+
+
+
+
    +
  • Suppose a program consisting of 3 distinct tasks
  • +
  • Tasks are performed one at a time
  • +
  • Always in a defined order
  • +
  • Simplest style of programming
  • +
+
+ +
+ + + +
+

Multi threaded model

+
+

+
+
+
+
+
+
    +
  • Tasks run in separate threads
  • +
  • Threads are handled by the OS
  • +
  • Threads can run concurrently
  • +
  • They often end up just waiting
  • +
  • Or interleaved together in single CPU
  • +
  • Tasks might get suspended arbitrarily by OS
  • +
  • Thread communication and synchronisation is a diffcult topic
  • +
+
+ +
+ + + + + + +
+

Single thread asynchronous model = Javascript

+
+

+
+
+
+
+
+
    +
  • Tasks interleaved inside the same Thread
  • +
  • Goodness of synchronous + multithreaded
  • +
  • Programmer in control, not the OS
  • +
  • Tasks are not suspended arbitrarily
  • +
+
+ +
+ + +
+

Single thread asynchronous model = Javascript

+
+

+
+
+

The event loop handles task scheduling

+

+
+// Event loop pseudo code
+for(;;) { 
+  if (endOfProgram)
+    quit();
+  if(eventToHandle) { // task waiting, task finished ...
+    handleEvent(eventToHandle); // Callback 
+  }
+}
+
+
+ +
+ + + +
+

Single thread asynchronous model = Javascript

+
+

+
+
+

Therefore

+

+
    +
  • Each task must be non blocking
  • +
  • Otherwise you get freezes and lags
  • +
+
+ +
+ + +
+

Stupid Asynchronous API: Callbacks

+

Asynchronous = Non Blocking

+
+
+

Callbacks are a way to make tasks non blocking

+
+
+        task1(function task2(task1Result) {
+          // do something with task 1 result 
+        })
+
+        var task1 = function(callback) {
+          result = longRunningTask(); // Blocking call
+          callback(result); // Calling a passed callback
+        }
+      
+
+
+ + +
+

Stupid Asynchronous API: Callbacks

+

Asynchronous = Non Blocking

+
+
+

Callbacks are messy

+
+
+        $('#button').click(function () {
+          askForTwitterHandle(function(twitterHandle) {
+            twitterHandle.getTweets(function (tweets) {
+              processTweets(function (processedTweets) {
+                ui.show(processedTweets);
+              });
+            });
+          });
+        });
+      
+
+
+ + +
+

Callbacks error handling is worse, no exception propagation

+
+        $('#button').click(function () {
+          askForTwitterHandle(function(twitterHandle) {
+              twitterHandle.getTweets(function (tweets) {
+                ...
+              });
+          }, function onFailure(error) {
+            handleError(error);
+          });
+        });
+      
+

In the synchronous model we have try/catch

+
+        try {
+          handle = askForTwitterHandle();
+          tweets = handle.getTweets();
+          ...
+        } catch (errorMessage) {
+          console.log('I messed up');
+        }
+      
+
+
+ + + + + + +
+

Promises are the right abstraction

+
+
+ +

Instead of calling a passed callback, we return a promise

+

+
+        ajax('template.html', function(err, template) {
+            if (err)
+              handleError();
+
+            render(template);
+        })
+
+        // Becomes
+
+        var promiseForTemplate = $http.get('template.html');
+        promiseForTemplate.then(render, handleError)
+      
+
+
+ + +
+

Promises guarantees

+
+ +
+          promiseForTemplate.then(onFulfilled, onFailed);
+      
+

+
    +
  • Only one of onFulfilled or onFailed will be called
  • +
  • onFulfilled will be called with a single value (return value)
  • +
  • onFailed will be called with a single rejection reason (thrown exception)
  • +
  • If the promise if already settled, the handlers are guaranteed to be called anyway
  • +
  • The handlers will always be called asynchronousy
  • +
+
-

Slide with Bullets

+

Promises can be chained

+ +
+          //
+          var transformedPromise = promiseForTemplate.then(onFulfilled, onFailed);
+      
+

    -
  • Titles are formatted as Open Sans with bold applied and font size is set at 45
  • -
  • Title capitalization is title case -
      -
    • Subtitle capitalization is title case
    • -
    -
  • -
  • Subtitle capitalization is title case
  • -
  • Titles and subtitles should never have a period at the end
  • +
  • If onFulfilled returns a value
  • +
      +
    • transformedPromise is resolved with that value
    • +
    +
  • If onFulfilled returns a promise
  • +
      +
    • transformedPromise will adapt it's state
    • +
    +
  • If onFailed throws an exception
  • +
      +
    • transformedPromise will be rejected with that exception
    • +
+ + +
+
+

Example

+
+

+

Sync

+
+        var user = getUser();  // blocking, ie, prompt for password
+        var username = user.name;
+        
+

+

Async with Promise

+
+          var userNamePromise = getUser().then(function (user){
+            return user.name;
+          })
+
+
+ + +
+
+

Example: throwing an exception

+
+

+

Sync

+
+        var user = getUser();  // blocking, ie, prompt for password
+        if (user === null)
+          throw new Error('null user');
+        
+

+

Async with Promise

+
+          var userPromise = getUser().then(function (user){
+            if (user === null)
+              throw new Error('null user');
+            return user;
+          })
+        
+
+
+ + +
+
+

Example: handling an exception

+
+

+

Sync

+
+        try {
+          updateUser(data);
+        } catch (exp) {
+          console.log('There was an error', exp);
+        }
+
+

Async with Promise: exception propagation

+
+
+          var updateUserPromise = updateUser(data).then(undefined, function(exp) {
+            console.log('There was an error', exp);
+          })
+        
+
+
+ + +
+
+

Example: rethrowing an exception

+
+

+

Sync

+
+        try {
+          updateUser(data);
+        } catch (exp) {
+          throw new Error('UpdateUserError: ' + exp.message)
+        }
+
+

Async with Promise: exception propagation

+
+
+        var updateUserPromise = updateUser(data).then(undefined,  function(exp) {
+          throw new Error('UpdateUserError: ' + exp.message)
+        })
+        
+
+
+ + +
+
+

Example: exception propagation

+
+

Callbacks

+
+          getUser('spike', function(err, user){
+            if(err) {
+              ui.error(err);
+            } else {
+              getBestFriend(user, function(err, friend){
+                if (err) {
+                  ui.error(err);
+                } else {
+                  ui.showBestFriend(friend, function(err, friend){
+                    if (err) {
+                      ui.error(err);
+                    } 
+                  })
+                }
+              })
+            }
+          })
+
+
+
+ + +
+
+

Example: exception propagation

+
+
+
+
+

Promises

+
+          getUser()
+          .then(getBestFriend)
+          .then(ui.showBestFriend)
+          .then(undefined, ui.error)
+        
+
+
+
+ + +
+

Promises in Angular

+
+
+
    +
  • Provided by $q service
  • +
  • Inspired by the the promise/deferred Q library
  • +
  • Is a lightweight implementation of Promises (Q is much more complete)
  • +
  • Promises are used everywhere Angular needs async
  • +
      +
    • $http
    • +
    • $resource
    • +
    • $routeProvider
    • +
    • Controller properties
    • +
    • Response Interceptors
    • +
    • ...
    • +
    +
  • Optimized for the Angular run loop
  • +
+
+
+ + +
+

Angular Run Loop

+

+
+ +
+
+
+ + +
+

How to use Promises in Angular

+
+
+
+
+          .controller('testCtrl', function($scope, $q) { // inject the service
+
+            var promiseOfTask = function () {
+
+              var deferredTask = $q.defer(); // create a deferred object
+
+              var result = blockingTask(); // long running task
+              deferredTask.resolve(result) // resolve the future promise with the result
+
+              return deferredTask.promise // return the promise
+            }
+             
+            //using the promise 
+            promiseOfTask().then(function(result){
+              $scope.updateSomeModel(result);
+            })
+          })
+        
+
+
+ + + +
+

Demonstration

+

Handling failovers for api calls

+
+
+

Slide with Bullets that Build

@@ -388,7 +868,7 @@ function helloWorld(world) {
- +
diff --git a/slides/theme/css/default.css b/slides/theme/css/default.css index ec23aea..72572c9 100644 --- a/slides/theme/css/default.css +++ b/slides/theme/css/default.css @@ -1,1492 +1 @@ -@charset "UTF-8"; -/* line 17, ../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ -html, body, div, span, applet, object, iframe, -h1, h2, h3, h4, h5, h6, p, blockquote, pre, -a, abbr, acronym, address, big, cite, code, -del, dfn, em, img, ins, kbd, q, s, samp, -small, strike, strong, sub, sup, tt, var, -b, u, i, center, -dl, dt, dd, ol, ul, li, -fieldset, form, label, legend, -table, caption, tbody, tfoot, thead, tr, th, td, -article, aside, canvas, details, embed, -figure, figcaption, footer, header, hgroup, -menu, nav, output, ruby, section, summary, -time, mark, audio, video { - margin: 0; - padding: 0; - border: 0; - font: inherit; - font-size: 100%; - vertical-align: baseline; -} - -/* line 22, ../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ -html { - line-height: 1; -} - -/* line 24, ../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ -ol, ul { - list-style: none; -} - -/* line 26, ../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ -table { - border-collapse: collapse; - border-spacing: 0; -} - -/* line 28, ../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ -caption, th, td { - text-align: left; - font-weight: normal; - vertical-align: middle; -} - -/* line 30, ../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ -q, blockquote { - quotes: none; -} -/* line 103, ../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ -q:before, q:after, blockquote:before, blockquote:after { - content: ""; - content: none; -} - -/* line 32, ../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ -a img { - border: none; -} - -/* line 116, ../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/reset/_utilities.scss */ -article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary { - display: block; -} - -/** - * Base SlideDeck Styles - */ -/* line 50, ../scss/_base.scss */ -html { - height: 100%; - overflow: hidden; -} - -/* line 55, ../scss/_base.scss */ -body { - margin: 0; - padding: 0; - opacity: 0; - height: 100%; - min-height: 740px; - width: 100%; - overflow: hidden; - color: #fff; - -webkit-font-smoothing: antialiased; - -moz-font-smoothing: antialiased; - -ms-font-smoothing: antialiased; - -o-font-smoothing: antialiased; - -webkit-transition: opacity 800ms ease-in; - -webkit-transition-delay: 100ms; - -moz-transition: opacity 800ms ease-in 100ms; - -o-transition: opacity 800ms ease-in 100ms; - transition: opacity 800ms ease-in 100ms; -} -/* line 71, ../scss/_base.scss */ -body.loaded { - opacity: 1 !important; -} - -/* line 76, ../scss/_base.scss */ -input, button { - vertical-align: middle; -} - -/* line 80, ../scss/_base.scss */ -slides > slide[hidden] { - display: none !important; -} - -/* line 84, ../scss/_base.scss */ -slides { - width: 100%; - height: 100%; - position: absolute; - left: 0; - top: 0; - -webkit-transform: translate3d(0, 0, 0); - -moz-transform: translate3d(0, 0, 0); - -ms-transform: translate3d(0, 0, 0); - -o-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - -webkit-perspective: 1000; - -moz-perspective: 1000; - -ms-perspective: 1000; - -o-perspective: 1000; - perspective: 1000; - -webkit-transform-style: preserve-3d; - -moz-transform-style: preserve-3d; - -ms-transform-style: preserve-3d; - -o-transform-style: preserve-3d; - transform-style: preserve-3d; - -webkit-transition: opacity 800ms ease-in; - -webkit-transition-delay: 100ms; - -moz-transition: opacity 800ms ease-in 100ms; - -o-transition: opacity 800ms ease-in 100ms; - transition: opacity 800ms ease-in 100ms; -} - -/* line 96, ../scss/_base.scss */ -slides > slide { - display: block; - position: absolute; - overflow: hidden; - left: 50%; - top: 50%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -/* Slide styles */ -/*article.fill iframe { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - - border: 0; - margin: 0; - - @include border-radius(10px); - - z-index: -1; -} - -slide.fill { - background-repeat: no-repeat; - @include background-size(cover); -} - -slide.fill img { - position: absolute; - left: 0; - top: 0; - min-width: 100%; - min-height: 100%; - - z-index: -1; -} -*/ -/** - * Theme Styles - */ -/* line 58, ../scss/default.scss */ -::selection { - color: white; - background-color: #ffd14d; - text-shadow: none; -} - -/* line 64, ../scss/default.scss */ -::-webkit-scrollbar { - height: 16px; - overflow: visible; - width: 16px; -} - -/* line 69, ../scss/default.scss */ -::-webkit-scrollbar-thumb { - background-color: rgba(0, 0, 0, 0.1); - background-clip: padding-box; - border: solid transparent; - min-height: 28px; - padding: 100px 0 0; - -webkit-box-shadow: inset 1px 1px 0 rgba(0, 0, 0, 0.1), inset 0 -1px 0 rgba(0, 0, 0, 0.07); - -moz-box-shadow: inset 1px 1px 0 rgba(0, 0, 0, 0.1), inset 0 -1px 0 rgba(0, 0, 0, 0.07); - box-shadow: inset 1px 1px 0 rgba(0, 0, 0, 0.1), inset 0 -1px 0 rgba(0, 0, 0, 0.07); - border-width: 1px 1px 1px 6px; -} - -/* line 78, ../scss/default.scss */ -::-webkit-scrollbar-thumb:hover { - background-color: rgba(0, 0, 0, 0.5); -} - -/* line 81, ../scss/default.scss */ -::-webkit-scrollbar-button { - height: 0; - width: 0; -} - -/* line 85, ../scss/default.scss */ -::-webkit-scrollbar-track { - background-clip: padding-box; - border: solid transparent; - border-width: 0 0 0 4px; -} - -/* line 90, ../scss/default.scss */ -::-webkit-scrollbar-corner { - background: transparent; -} - -/* line 94, ../scss/default.scss */ -body { - background: black; -} - -/* line 98, ../scss/default.scss */ -slides > slide { - display: none; - font-family: "Open Sans", Arial, sans-serif; - font-size: 26px; - color: #797979; - width: 900px; - height: 700px; - margin-left: -450px; - margin-top: -350px; - padding: 40px 60px; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - -ms-border-radius: 5px; - -o-border-radius: 5px; - border-radius: 5px; - -webkit-transition: all 0.6s ease-in-out; - -moz-transition: all 0.6s ease-in-out; - -o-transition: all 0.6s ease-in-out; - transition: all 0.6s ease-in-out; -} -/* line 119, ../scss/default.scss */ -slides > slide.far-past { - display: none; -} -/* line 126, ../scss/default.scss */ -slides > slide.past { - display: block; - opacity: 0; -} -/* line 133, ../scss/default.scss */ -slides > slide.current { - display: block; - opacity: 1; -} -/* line 139, ../scss/default.scss */ -slides > slide.current .auto-fadein { - opacity: 1; -} -/* line 143, ../scss/default.scss */ -slides > slide.current .gdbar { - -webkit-background-size: 100% 100%; - -moz-background-size: 100% 100%; - -o-background-size: 100% 100%; - background-size: 100% 100%; -} -/* line 148, ../scss/default.scss */ -slides > slide.next { - display: block; - opacity: 0; - pointer-events: none; -} -/* line 156, ../scss/default.scss */ -slides > slide.far-next { - display: none; -} -/* line 163, ../scss/default.scss */ -slides > slide.dark { - background: #515151 !important; -} -/* line 171, ../scss/default.scss */ -slides > slide:not(.nobackground):before { - font-size: 12pt; - content: "#yourhashtag"; - position: absolute; - bottom: 20px; - left: 60px; - background: url(../../images/google_developers_icon_128.png) no-repeat 0 50%; - -webkit-background-size: 30px 30px; - -moz-background-size: 30px 30px; - -o-background-size: 30px 30px; - background-size: 30px 30px; - padding-left: 40px; - height: 30px; - line-height: 1.9; -} -/* line 183, ../scss/default.scss */ -slides > slide:not(.nobackground):after { - font-size: 12pt; - content: attr(data-slide-num) "/" attr(data-total-slides); - position: absolute; - bottom: 20px; - right: 60px; - line-height: 1.9; -} -/* line 194, ../scss/default.scss */ -slides > slide.title-slide:after { - content: ''; - /* background: url(../../images/io2012_logo.png) no-repeat 100% 50%; */ - /* background: url(../../images/io2013_logo.png) no-repeat 100% 50%; */ - -webkit-background-size: contain; - -moz-background-size: contain; - -o-background-size: contain; - background-size: contain; - position: absolute; - bottom: 40px; - right: 40px; - width: 100%; - height: 60px; -} -/* line 206, ../scss/default.scss */ -slides > slide.backdrop { - z-index: -10; - display: block !important; - background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(85%, #ffffff), color-stop(100%, #e6e6e6)); - background: -webkit-linear-gradient(#ffffff, #ffffff 85%, #e6e6e6); - background: -moz-linear-gradient(#ffffff, #ffffff 85%, #e6e6e6); - background: -o-linear-gradient(#ffffff, #ffffff 85%, #e6e6e6); - background: linear-gradient(#ffffff, #ffffff 85%, #e6e6e6); - background-color: white; -} -/* line 211, ../scss/default.scss */ -slides > slide.backdrop:after, slides > slide.backdrop:before { - display: none; -} -/* line 216, ../scss/default.scss */ -slides > slide > hgroup + article { - margin-top: 45px; -} -/* line 220, ../scss/default.scss */ -slides > slide > hgroup + article.flexbox.vcenter, slides > slide > hgroup + article.flexbox.vleft, slides > slide > hgroup + article.flexbox.vright { - height: 80%; -} -/* line 225, ../scss/default.scss */ -slides > slide > hgroup + article p { - margin-bottom: 1em; -} -/* line 230, ../scss/default.scss */ -slides > slide > article:only-child { - height: 100%; -} -/* line 233, ../scss/default.scss */ -slides > slide > article:only-child > iframe { - height: 98%; -} - -/* line 239, ../scss/default.scss */ -slides.layout-faux-widescreen > slide { - padding: 40px 160px; -} - -/* line 248, ../scss/default.scss */ -slides.layout-widescreen > slide, -slides.layout-faux-widescreen > slide { - margin-left: -550px; - width: 1100px; -} -/* line 253, ../scss/default.scss */ -slides.layout-widescreen > slide.far-past, -slides.layout-faux-widescreen > slide.far-past { - display: block; - display: none; - -webkit-transform: translate(-2260px); - -moz-transform: translate(-2260px); - -ms-transform: translate(-2260px); - -o-transform: translate(-2260px); - transform: translate(-2260px); - -webkit-transform: translate3d(-2260px, 0, 0); - -moz-transform: translate3d(-2260px, 0, 0); - -ms-transform: translate3d(-2260px, 0, 0); - -o-transform: translate3d(-2260px, 0, 0); - transform: translate3d(-2260px, 0, 0); -} -/* line 260, ../scss/default.scss */ -slides.layout-widescreen > slide.past, -slides.layout-faux-widescreen > slide.past { - display: block; - opacity: 0; -} -/* line 267, ../scss/default.scss */ -slides.layout-widescreen > slide.current, -slides.layout-faux-widescreen > slide.current { - display: block; - opacity: 1; -} -/* line 274, ../scss/default.scss */ -slides.layout-widescreen > slide.next, -slides.layout-faux-widescreen > slide.next { - display: block; - opacity: 0; - pointer-events: none; -} -/* line 282, ../scss/default.scss */ -slides.layout-widescreen > slide.far-next, -slides.layout-faux-widescreen > slide.far-next { - display: block; - display: none; - -webkit-transform: translate(2260px); - -moz-transform: translate(2260px); - -ms-transform: translate(2260px); - -o-transform: translate(2260px); - transform: translate(2260px); - -webkit-transform: translate3d(2260px, 0, 0); - -moz-transform: translate3d(2260px, 0, 0); - -ms-transform: translate3d(2260px, 0, 0); - -o-transform: translate3d(2260px, 0, 0); - transform: translate3d(2260px, 0, 0); -} -/* line 289, ../scss/default.scss */ -slides.layout-widescreen #prev-slide-area, -slides.layout-faux-widescreen #prev-slide-area { - margin-left: -650px; -} -/* line 293, ../scss/default.scss */ -slides.layout-widescreen #next-slide-area, -slides.layout-faux-widescreen #next-slide-area { - margin-left: 550px; -} - -/* line 298, ../scss/default.scss */ -b { - font-weight: 600; -} - -/* line 302, ../scss/default.scss */ -a { - color: #2a7cdf; - text-decoration: none; - border-bottom: 1px solid rgba(42, 124, 223, 0.5); -} -/* line 307, ../scss/default.scss */ -a:hover { - color: black !important; -} - -/* line 312, ../scss/default.scss */ -h1, h2, h3 { - font-weight: 600; -} - -/* line 316, ../scss/default.scss */ -h2 { - font-size: 45px; - line-height: 45px; - letter-spacing: -2px; - color: #515151; -} - -/* line 323, ../scss/default.scss */ -h3 { - font-size: 30px; - letter-spacing: -1px; - line-height: 2; - font-weight: inherit; - color: #797979; -} - -/* line 331, ../scss/default.scss */ -ul { - margin-left: 1.2em; - margin-bottom: 1em; - position: relative; -} -/* line 336, ../scss/default.scss */ -ul li { - margin-bottom: 0.5em; -} -/* line 339, ../scss/default.scss */ -ul li ul { - margin-left: 2em; - margin-bottom: 0; -} -/* line 343, ../scss/default.scss */ -ul li ul li:before { - content: '-'; - font-weight: 600; -} -/* line 350, ../scss/default.scss */ -ul > li:before { - content: '\00B7'; - margin-left: -1em; - position: absolute; - font-weight: 600; -} -/* line 357, ../scss/default.scss */ -ul ul { - margin-top: .5em; -} - -/* line 364, ../scss/default.scss */ -.highlight-code slide.current pre > * { - opacity: 0.25; - -webkit-transition: opacity 0.5s ease-in; - -moz-transition: opacity 0.5s ease-in; - -o-transition: opacity 0.5s ease-in; - transition: opacity 0.5s ease-in; -} -/* line 368, ../scss/default.scss */ -.highlight-code slide.current b { - opacity: 1; -} - -/* line 373, ../scss/default.scss */ -pre { - font-family: "Source Code Pro", "Courier New", monospace; - font-size: 20px; - line-height: 28px; - padding: 10px 0 10px 60px; - letter-spacing: -1px; - margin-bottom: 20px; - width: 106%; - background-color: #e6e6e6; - left: -60px; - position: relative; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - /*overflow: hidden;*/ -} -/* line 387, ../scss/default.scss */ -pre[data-lang]:after { - content: attr(data-lang); - background-color: darkgrey; - right: 0; - top: 0; - position: absolute; - font-size: 16pt; - color: white; - padding: 2px 25px; - text-transform: uppercase; -} - -/* line 400, ../scss/default.scss */ -pre[data-lang="go"] { - color: #333; -} - -/* line 404, ../scss/default.scss */ -code { - font-size: 95%; - font-family: "Source Code Pro", "Courier New", monospace; - color: black; -} - -/* line 410, ../scss/default.scss */ -iframe { - width: 100%; - height: 530px; - background: white; - border: 1px solid #e6e6e6; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -/* line 418, ../scss/default.scss */ -dt { - font-weight: bold; -} - -/* line 422, ../scss/default.scss */ -button { - display: inline-block; - background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(40%, #f9f9f9), color-stop(70%, #e3e3e3)); - background: -webkit-linear-gradient(#f9f9f9 40%, #e3e3e3 70%); - background: -moz-linear-gradient(#f9f9f9 40%, #e3e3e3 70%); - background: -o-linear-gradient(#f9f9f9 40%, #e3e3e3 70%); - background: linear-gradient(#f9f9f9 40%, #e3e3e3 70%); - border: 1px solid darkgrey; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -ms-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - padding: 5px 8px; - outline: none; - white-space: nowrap; - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; - cursor: pointer; - text-shadow: 1px 1px white; - font-size: 10pt; -} - -/* line 436, ../scss/default.scss */ -button:not(:disabled):hover { - border-color: #515151; -} - -/* line 440, ../scss/default.scss */ -button:not(:disabled):active { - background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(40%, #e3e3e3), color-stop(70%, #f9f9f9)); - background: -webkit-linear-gradient(#e3e3e3 40%, #f9f9f9 70%); - background: -moz-linear-gradient(#e3e3e3 40%, #f9f9f9 70%); - background: -o-linear-gradient(#e3e3e3 40%, #f9f9f9 70%); - background: linear-gradient(#e3e3e3 40%, #f9f9f9 70%); -} - -/* line 444, ../scss/default.scss */ -:disabled { - color: darkgrey; -} - -/* line 448, ../scss/default.scss */ -.blue { - color: #4387fd; -} - -/* line 451, ../scss/default.scss */ -.blue2 { - color: #3c8ef3; -} - -/* line 454, ../scss/default.scss */ -.blue3 { - color: #2a7cdf; -} - -/* line 457, ../scss/default.scss */ -.yellow { - color: #ffd14d; -} - -/* line 460, ../scss/default.scss */ -.yellow2 { - color: #f9cc46; -} - -/* line 463, ../scss/default.scss */ -.yellow3 { - color: #f6c000; -} - -/* line 466, ../scss/default.scss */ -.green { - color: #0da861; -} - -/* line 469, ../scss/default.scss */ -.green2 { - color: #00a86d; -} - -/* line 472, ../scss/default.scss */ -.green3 { - color: #009f5d; -} - -/* line 475, ../scss/default.scss */ -.red { - color: #f44a3f; -} - -/* line 478, ../scss/default.scss */ -.red2 { - color: #e0543e; -} - -/* line 481, ../scss/default.scss */ -.red3 { - color: #d94d3a; -} - -/* line 484, ../scss/default.scss */ -.gray { - color: #e6e6e6; -} - -/* line 487, ../scss/default.scss */ -.gray2 { - color: darkgrey; -} - -/* line 490, ../scss/default.scss */ -.gray3 { - color: #797979; -} - -/* line 493, ../scss/default.scss */ -.gray4 { - color: #515151; -} - -/* line 497, ../scss/default.scss */ -.white { - color: white !important; -} - -/* line 500, ../scss/default.scss */ -.black { - color: black !important; -} - -/* line 504, ../scss/default.scss */ -.columns-2 { - -webkit-column-count: 2; - -moz-column-count: 2; - -ms-column-count: 2; - -o-column-count: 2; - column-count: 2; -} - -/* line 508, ../scss/default.scss */ -table { - width: 100%; - border-collapse: -moz-initial; - border-collapse: initial; - border-spacing: 2px; - border-bottom: 1px solid #797979; -} -/* line 515, ../scss/default.scss */ -table tr > td:first-child, table th { - font-weight: 600; - color: #515151; -} -/* line 520, ../scss/default.scss */ -table tr:nth-child(odd) { - background-color: #e6e6e6; -} -/* line 524, ../scss/default.scss */ -table th { - color: white; - font-size: 18px; - background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(40%, #4387fd), color-stop(80%, #2a7cdf)) no-repeat; - background: -webkit-linear-gradient(top, #4387fd 40%, #2a7cdf 80%) no-repeat; - background: -moz-linear-gradient(top, #4387fd 40%, #2a7cdf 80%) no-repeat; - background: -o-linear-gradient(top, #4387fd 40%, #2a7cdf 80%) no-repeat; - background: linear-gradient(top, #4387fd 40%, #2a7cdf 80%) no-repeat; -} -/* line 530, ../scss/default.scss */ -table td, table th { - font-size: 18px; - padding: 1em 0.5em; -} -/* line 535, ../scss/default.scss */ -table td.highlight { - color: #515151; - background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(40%, #ffd14d), color-stop(80%, #f6c000)) no-repeat; - background: -webkit-linear-gradient(top, #ffd14d 40%, #f6c000 80%) no-repeat; - background: -moz-linear-gradient(top, #ffd14d 40%, #f6c000 80%) no-repeat; - background: -o-linear-gradient(top, #ffd14d 40%, #f6c000 80%) no-repeat; - background: linear-gradient(top, #ffd14d 40%, #f6c000 80%) no-repeat; -} -/* line 540, ../scss/default.scss */ -table.rows { - border-bottom: none; - border-right: 1px solid #797979; -} - -/* line 546, ../scss/default.scss */ -q { - font-size: 45px; - line-height: 72px; -} -/* line 550, ../scss/default.scss */ -q:before { - content: '“'; - position: absolute; - margin-left: -0.5em; -} -/* line 555, ../scss/default.scss */ -q:after { - content: '”'; - position: absolute; - margin-left: 0.1em; -} - -/* line 562, ../scss/default.scss */ -slide.fill { - background-repeat: no-repeat; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - -ms-border-radius: 5px; - -o-border-radius: 5px; - border-radius: 5px; - -webkit-background-size: cover; - -moz-background-size: cover; - -o-background-size: cover; - background-size: cover; -} - -/* Size variants */ -/* line 571, ../scss/default.scss */ -article.smaller p, article.smaller ul { - font-size: 20px; - line-height: 24px; - letter-spacing: 0; -} -/* line 577, ../scss/default.scss */ -article.smaller table td, article.smaller table th { - font-size: 14px; -} -/* line 581, ../scss/default.scss */ -article.smaller pre { - font-size: 15px; - line-height: 20px; - letter-spacing: 0; -} -/* line 586, ../scss/default.scss */ -article.smaller q { - font-size: 40px; - line-height: 48px; -} -/* line 590, ../scss/default.scss */ -article.smaller q:before, article.smaller q:after { - font-size: 60px; -} - -/* Builds */ -/* line 599, ../scss/default.scss */ -.build > * { - -webkit-transition: opacity 0.5s ease-in-out; - -webkit-transition-delay: 0.2s; - -moz-transition: opacity 0.5s ease-in-out 0.2s; - -o-transition: opacity 0.5s ease-in-out 0.2s; - transition: opacity 0.5s ease-in-out 0.2s; -} -/* line 603, ../scss/default.scss */ -.build .to-build { - opacity: 0; -} -/* line 607, ../scss/default.scss */ -.build .build-fade { - opacity: 0.3; -} -/* line 610, ../scss/default.scss */ -.build .build-fade:hover { - opacity: 1.0; -} - -/* line 617, ../scss/default.scss */ -.popup .next .build .to-build { - opacity: 1; -} -/* line 621, ../scss/default.scss */ -.popup .next .build .build-fade { - opacity: 1; -} - -/* Pretty print */ -/* line 629, ../scss/default.scss */ -.prettyprint .str, -.prettyprint .atv { - /* a markup attribute value */ - color: #009f5d; -} - -/* line 633, ../scss/default.scss */ -.prettyprint .kwd, -.prettyprint .tag { - /* a markup tag name */ - color: #0066cc; -} - -/* line 636, ../scss/default.scss */ -.prettyprint .com { - /* a comment */ - color: #797979; - font-style: italic; -} - -/* line 640, ../scss/default.scss */ -.prettyprint .lit { - /* a literal value */ - color: #7f0000; -} - -/* line 645, ../scss/default.scss */ -.prettyprint .pun, -.prettyprint .opn, -.prettyprint .clo { - color: #515151; -} - -/* line 651, ../scss/default.scss */ -.prettyprint .typ, -.prettyprint .atn, -.prettyprint .dec, -.prettyprint .var { - /* a declaration; a variable name */ - color: #d94d3a; -} - -/* line 654, ../scss/default.scss */ -.prettyprint .pln { - color: #515151; -} - -/* line 658, ../scss/default.scss */ -.note { - position: absolute; - z-index: 100; - width: 100%; - height: 100%; - top: 0; - left: 0; - padding: 1em; - background: rgba(0, 0, 0, 0.3); - opacity: 0; - pointer-events: none; - display: -webkit-box !important; - display: -moz-box !important; - display: -ms-box !important; - display: -o-box !important; - display: box !important; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -ms-box-orient: vertical; - box-orient: vertical; - -webkit-box-align: center; - -moz-box-align: center; - -ms-box-align: center; - box-align: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -ms-box-pack: center; - box-pack: center; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - -ms-border-radius: 5px; - -o-border-radius: 5px; - border-radius: 5px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - -webkit-transform: translateY(350px); - -moz-transform: translateY(350px); - -ms-transform: translateY(350px); - -o-transform: translateY(350px); - transform: translateY(350px); - -webkit-transition: all 0.4s ease-in-out; - -moz-transition: all 0.4s ease-in-out; - -o-transition: all 0.4s ease-in-out; - transition: all 0.4s ease-in-out; -} -/* line 676, ../scss/default.scss */ -.note > section { - background: #fff; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - -ms-border-radius: 5px; - -o-border-radius: 5px; - border-radius: 5px; - -webkit-box-shadow: 0 0 10px #797979; - -moz-box-shadow: 0 0 10px #797979; - box-shadow: 0 0 10px #797979; - width: 60%; - padding: 2em; -} - -/* line 693, ../scss/default.scss */ -.with-notes.popup slides.layout-widescreen slide.next, -.with-notes.popup slides.layout-faux-widescreen slide.next { - -webkit-transform: translate3d(690px, 80px, 0) scale(0.35); - -moz-transform: translate3d(690px, 80px, 0) scale(0.35); - -ms-transform: translate3d(690px, 80px, 0) scale(0.35); - -o-transform: translate3d(690px, 80px, 0) scale(0.35); - transform: translate3d(690px, 80px, 0) scale(0.35); -} -/* line 696, ../scss/default.scss */ -.with-notes.popup slides.layout-widescreen slide .note, -.with-notes.popup slides.layout-faux-widescreen slide .note { - -webkit-transform: translate3d(300px, 800px, 0) scale(1.5); - -moz-transform: translate3d(300px, 800px, 0) scale(1.5); - -ms-transform: translate3d(300px, 800px, 0) scale(1.5); - -o-transform: translate3d(300px, 800px, 0) scale(1.5); - transform: translate3d(300px, 800px, 0) scale(1.5); -} -/* line 702, ../scss/default.scss */ -.with-notes.popup slide { - overflow: visible; - background: white; - -webkit-transition: none; - -moz-transition: none; - -o-transition: none; - transition: none; - pointer-events: none; - -webkit-transform-origin: 0 0; - -moz-transform-origin: 0 0; - -ms-transform-origin: 0 0; - -o-transform-origin: 0 0; - transform-origin: 0 0; -} -/* line 709, ../scss/default.scss */ -.with-notes.popup slide:not(.backdrop) { - -webkit-transform: scale(0.6) translate3d(0.5em, 0.5em, 0); - -moz-transform: scale(0.6) translate3d(0.5em, 0.5em, 0); - -ms-transform: scale(0.6) translate3d(0.5em, 0.5em, 0); - -o-transform: scale(0.6) translate3d(0.5em, 0.5em, 0); - transform: scale(0.6) translate3d(0.5em, 0.5em, 0); - -webkit-box-shadow: 0 0 10px #797979; - -moz-box-shadow: 0 0 10px #797979; - box-shadow: 0 0 10px #797979; -} -/* line 714, ../scss/default.scss */ -.with-notes.popup slide.backdrop { - background-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 600, color-stop(0%, #b1dfff), color-stop(100%, #4387fd)); - background-image: -webkit-radial-gradient(50% 50%, #b1dfff 0%, #4387fd 600px); - background-image: -moz-radial-gradient(50% 50%, #b1dfff 0%, #4387fd 600px); - background-image: -o-radial-gradient(50% 50%, #b1dfff 0%, #4387fd 600px); - background-image: radial-gradient(50% 50%, #b1dfff 0%, #4387fd 600px); -} -/* line 720, ../scss/default.scss */ -.with-notes.popup slide.next { - -webkit-transform: translate3d(570px, 80px, 0) scale(0.35); - -moz-transform: translate3d(570px, 80px, 0) scale(0.35); - -ms-transform: translate3d(570px, 80px, 0) scale(0.35); - -o-transform: translate3d(570px, 80px, 0) scale(0.35); - transform: translate3d(570px, 80px, 0) scale(0.35); - opacity: 1 !important; -} -/* line 724, ../scss/default.scss */ -.with-notes.popup slide.next .note { - display: none !important; -} -/* line 730, ../scss/default.scss */ -.with-notes.popup .note { - width: 109%; - height: 260px; - background: #e6e6e6; - padding: 0; - -webkit-box-shadow: 0 0 10px #797979; - -moz-box-shadow: 0 0 10px #797979; - box-shadow: 0 0 10px #797979; - -webkit-transform: translate3d(250px, 800px, 0) scale(1.5); - -moz-transform: translate3d(250px, 800px, 0) scale(1.5); - -ms-transform: translate3d(250px, 800px, 0) scale(1.5); - -o-transform: translate3d(250px, 800px, 0) scale(1.5); - transform: translate3d(250px, 800px, 0) scale(1.5); - -webkit-transition: opacity 400ms ease-in-out; - -moz-transition: opacity 400ms ease-in-out; - -o-transition: opacity 400ms ease-in-out; - transition: opacity 400ms ease-in-out; -} -/* line 741, ../scss/default.scss */ -.with-notes.popup .note > section { - background: #fff; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - -ms-border-radius: 5px; - -o-border-radius: 5px; - border-radius: 5px; - height: 100%; - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - overflow: auto; - padding: 1em; -} -/* line 754, ../scss/default.scss */ -.with-notes .note { - opacity: 1; - -webkit-transform: translateY(0); - -moz-transform: translateY(0); - -ms-transform: translateY(0); - -o-transform: translateY(0); - transform: translateY(0); - pointer-events: auto; -} - -/* line 761, ../scss/default.scss */ -.source { - font-size: 14px; - color: darkgrey; - position: absolute; - bottom: 70px; - left: 60px; -} - -/* line 769, ../scss/default.scss */ -.centered { - text-align: center; -} - -/* line 773, ../scss/default.scss */ -.reflect { - -webkit-box-reflect: below 3px -webkit-linear-gradient(rgba(255, 255, 255, 0) 85%, white 150%); - -moz-box-reflect: below 3px -moz-linear-gradient(rgba(255, 255, 255, 0) 85%, white 150%); - -o-box-reflect: below 3px -o-linear-gradient(rgba(255, 255, 255, 0) 85%, white 150%); - -ms-box-reflect: below 3px -ms-linear-gradient(rgba(255, 255, 255, 0) 85%, white 150%); - box-reflect: below 3px linear-gradient(rgba(255, 255, 255, 0) 85%, #ffffff 150%); -} - -/* line 781, ../scss/default.scss */ -.flexbox { - display: -webkit-box !important; - display: -moz-box !important; - display: -ms-box !important; - display: -o-box !important; - display: box !important; -} - -/* line 785, ../scss/default.scss */ -.flexbox.vcenter { - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -ms-box-orient: vertical; - box-orient: vertical; - -webkit-box-align: center; - -moz-box-align: center; - -ms-box-align: center; - box-align: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -ms-box-pack: center; - box-pack: center; - height: 100%; - width: 100%; -} - -/* line 791, ../scss/default.scss */ -.flexbox.vleft { - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -ms-box-orient: vertical; - box-orient: vertical; - -webkit-box-align: left; - -moz-box-align: left; - -ms-box-align: left; - box-align: left; - -webkit-box-pack: center; - -moz-box-pack: center; - -ms-box-pack: center; - box-pack: center; - height: 100%; - width: 100%; -} - -/* line 797, ../scss/default.scss */ -.flexbox.vright { - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -ms-box-orient: vertical; - box-orient: vertical; - -webkit-box-align: end; - -moz-box-align: end; - -ms-box-align: end; - box-align: end; - -webkit-box-pack: center; - -moz-box-pack: center; - -ms-box-pack: center; - box-pack: center; - height: 100%; - width: 100%; -} - -/* line 803, ../scss/default.scss */ -.auto-fadein { - -webkit-transition: opacity 0.6s ease-in; - -webkit-transition-delay: 1s; - -moz-transition: opacity 0.6s ease-in 1s; - -o-transition: opacity 0.6s ease-in 1s; - transition: opacity 0.6s ease-in 1s; - opacity: 0; -} - -/* Clickable/tappable areas */ -/* line 809, ../scss/default.scss */ -.slide-area { - z-index: 1000; - position: absolute; - left: 0; - top: 0; - width: 100px; - height: 700px; - left: 50%; - top: 50%; - cursor: pointer; - margin-top: -350px; -} - -/* line 826, ../scss/default.scss */ -#prev-slide-area { - margin-left: -550px; -} - -/* line 831, ../scss/default.scss */ -#next-slide-area { - margin-left: 450px; -} - -/* ===== SLIDE CONTENT ===== */ -/* line 839, ../scss/default.scss */ -.logoslide img { - width: 383px; - height: 92px; -} - -/* line 845, ../scss/default.scss */ -.segue { - padding: 60px 120px; -} -/* line 848, ../scss/default.scss */ -.segue h2 { - color: #e6e6e6; - font-size: 60px; -} -/* line 852, ../scss/default.scss */ -.segue h3 { - color: #e6e6e6; - line-height: 2.8; -} -/* line 856, ../scss/default.scss */ -.segue hgroup { - position: absolute; - bottom: 225px; -} - -/* line 862, ../scss/default.scss */ -.thank-you-slide { - background: #4387fd !important; - color: white; -} -/* line 866, ../scss/default.scss */ -.thank-you-slide h2 { - font-size: 60px; - color: inherit; -} -/* line 871, ../scss/default.scss */ -.thank-you-slide article > p { - margin-top: 2em; - font-size: 20pt; -} -/* line 876, ../scss/default.scss */ -.thank-you-slide > p { - position: absolute; - bottom: 80px; - font-size: 24pt; - line-height: 1.3; -} - -/* line 884, ../scss/default.scss */ -aside.gdbar { - height: 97px; - width: 215px; - position: absolute; - left: -1px; - top: 125px; - -webkit-border-radius: 0 10px 10px 0; - -moz-border-radius: 0 10px 10px 0; - -ms-border-radius: 0 10px 10px 0; - -o-border-radius: 0 10px 10px 0; - border-radius: 0 10px 10px 0; - background: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #e6e6e6), color-stop(100%, #e6e6e6)) no-repeat; - background: -webkit-linear-gradient(left, #e6e6e6, #e6e6e6) no-repeat; - background: -moz-linear-gradient(left, #e6e6e6, #e6e6e6) no-repeat; - background: -o-linear-gradient(left, #e6e6e6, #e6e6e6) no-repeat; - background: linear-gradient(left, #e6e6e6, #e6e6e6) no-repeat; - -webkit-background-size: 0% 100%; - -moz-background-size: 0% 100%; - -o-background-size: 0% 100%; - background-size: 0% 100%; - -webkit-transition: all 0.5s ease-out; - -webkit-transition-delay: 0.5s; - -moz-transition: all 0.5s ease-out 0.5s; - -o-transition: all 0.5s ease-out 0.5s; - transition: all 0.5s ease-out 0.5s; - /* Better to transition only on background-size, but not sure how to do that with the mixin. */ -} -/* line 895, ../scss/default.scss */ -aside.gdbar.right { - right: 0; - left: -moz-initial; - left: initial; - top: 254px; - /* 96 is height of gray icon bar */ - -webkit-transform: rotateZ(180deg); - -moz-transform: rotateZ(180deg); - -ms-transform: rotateZ(180deg); - -o-transform: rotateZ(180deg); - transform: rotateZ(180deg); -} -/* line 902, ../scss/default.scss */ -aside.gdbar.right img { - -webkit-transform: rotateZ(180deg); - -moz-transform: rotateZ(180deg); - -ms-transform: rotateZ(180deg); - -o-transform: rotateZ(180deg); - transform: rotateZ(180deg); -} -/* line 907, ../scss/default.scss */ -aside.gdbar.bottom { - top: -moz-initial; - top: initial; - bottom: 60px; -} -/* line 913, ../scss/default.scss */ -aside.gdbar img { - width: 85px; - height: 85px; - position: absolute; - right: 0; - margin: 8px 15px; -} - -/* line 924, ../scss/default.scss */ -.title-slide hgroup { - bottom: 100px; -} -/* line 927, ../scss/default.scss */ -.title-slide hgroup h1 { - font-size: 65px; - line-height: 1.4; - letter-spacing: -3px; - color: #515151; -} -/* line 934, ../scss/default.scss */ -.title-slide hgroup h2 { - font-size: 34px; - color: darkgrey; - font-weight: inherit; -} -/* line 940, ../scss/default.scss */ -.title-slide hgroup p { - font-size: 20px; - color: #797979; - line-height: 1.3; - margin-top: 2em; -} - -/* line 949, ../scss/default.scss */ -.quote { - color: #e6e6e6; -} -/* line 952, ../scss/default.scss */ -.quote .author { - font-size: 24px; - position: absolute; - bottom: 80px; - line-height: 1.4; -} - -/* line 961, ../scss/default.scss */ -[data-config-contact] a { - color: white; - border-bottom: none; -} -/* line 965, ../scss/default.scss */ -[data-config-contact] span { - width: 115px; - display: inline-block; -} - -/* line 974, ../scss/default.scss */ -.overview.popup .note { - display: none !important; -} -/* line 980, ../scss/default.scss */ -.overview slides slide { - display: block; - cursor: pointer; - opacity: 0.5; - pointer-events: auto !important; - background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(85%, #ffffff), color-stop(100%, #e6e6e6)); - background: -webkit-linear-gradient(#ffffff, #ffffff 85%, #e6e6e6); - background: -moz-linear-gradient(#ffffff, #ffffff 85%, #e6e6e6); - background: -o-linear-gradient(#ffffff, #ffffff 85%, #e6e6e6); - background: linear-gradient(#ffffff, #ffffff 85%, #e6e6e6); - background-color: white; -} -/* line 981, ../scss/default.scss */ -.overview slides slide.backdrop { - display: none !important; -} -/* line 996, ../scss/default.scss */ -.overview slides slide.far-past, .overview slides slide.past, .overview slides slide.next, .overview slides slide.far-next, .overview slides slide.far-past { - opacity: 0.5; - display: block; -} -/* line 1001, ../scss/default.scss */ -.overview slides slide.current { - opacity: 1; -} -/* line 1007, ../scss/default.scss */ -.overview .slide-area { - display: none; -} - -@media print { - /* line 1014, ../scss/default.scss */ - slides slide { - display: block !important; - position: relative; - background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(85%, #ffffff), color-stop(100%, #e6e6e6)); - background: -webkit-linear-gradient(#ffffff, #ffffff 85%, #e6e6e6); - background: -moz-linear-gradient(#ffffff, #ffffff 85%, #e6e6e6); - background: -o-linear-gradient(#ffffff, #ffffff 85%, #e6e6e6); - background: linear-gradient(#ffffff, #ffffff 85%, #e6e6e6); - background-color: white; - -webkit-transform: none !important; - -moz-transform: none !important; - -ms-transform: none !important; - -o-transform: none !important; - transform: none !important; - width: 100%; - height: 100%; - page-break-after: always; - top: auto !important; - left: auto !important; - margin-top: 0 !important; - margin-left: 0 !important; - opacity: 1 !important; - color: #555; - } - /* line 1034, ../scss/default.scss */ - slides slide.far-past, slides slide.past, slides slide.next, slides slide.far-next, slides slide.far-past, slides slide.current { - opacity: 1 !important; - display: block !important; - } - /* line 1040, ../scss/default.scss */ - slides slide .build > * { - -webkit-transition: none; - -moz-transition: none; - -o-transition: none; - transition: none; - } - /* line 1045, ../scss/default.scss */ - slides slide .build .to-build, - slides slide .build .build-fade { - opacity: 1; - } - /* line 1050, ../scss/default.scss */ - slides slide .auto-fadein { - opacity: 1 !important; - } - /* line 1054, ../scss/default.scss */ - slides slide.backdrop { - display: none !important; - } - /* line 1058, ../scss/default.scss */ - slides slide table.rows { - border-right: 0; - } - /* line 1063, ../scss/default.scss */ - slides slide[hidden] { - display: none !important; - } - - /* line 1068, ../scss/default.scss */ - .slide-area { - display: none; - } - - /* line 1072, ../scss/default.scss */ - .reflect { - -webkit-box-reflect: none; - -moz-box-reflect: none; - -o-box-reflect: none; - -ms-box-reflect: none; - box-reflect: none; - } - - /* line 1080, ../scss/default.scss */ - pre, code { - font-family: monospace !important; - } -} +@charset "UTF-8";html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}html{line-height:1}ol,ul{list-style:none}table{border-collapse:collapse;border-spacing:0}caption,th,td{text-align:left;font-weight:normal;vertical-align:middle}q,blockquote{quotes:none}q:before,q:after,blockquote:before,blockquote:after{content:"";content:none}a img{border:none}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section,summary{display:block}html{height:100%;overflow:hidden}body{margin:0;padding:0;opacity:0;height:100%;min-height:740px;width:100%;overflow:hidden;color:#fff;-webkit-font-smoothing:antialiased;-moz-font-smoothing:antialiased;-ms-font-smoothing:antialiased;-o-font-smoothing:antialiased;-webkit-transition:opacity 800ms ease-in;-webkit-transition-delay:100ms;-moz-transition:opacity 800ms ease-in 100ms;-o-transition:opacity 800ms ease-in 100ms;transition:opacity 800ms ease-in 100ms}body.loaded{opacity:1 !important}input,button{vertical-align:middle}slides>slide[hidden]{display:none !important}slides{width:100%;height:100%;position:absolute;left:0;top:0;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-o-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);-webkit-perspective:1000;-moz-perspective:1000;-ms-perspective:1000;-o-perspective:1000;perspective:1000;-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;-ms-transform-style:preserve-3d;-o-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transition:opacity 800ms ease-in;-webkit-transition-delay:100ms;-moz-transition:opacity 800ms ease-in 100ms;-o-transition:opacity 800ms ease-in 100ms;transition:opacity 800ms ease-in 100ms}slides>slide{display:block;position:absolute;overflow:hidden;left:50%;top:50%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}::selection{color:white;background-color:#ffd14d;text-shadow:none}::-webkit-scrollbar{height:16px;overflow:visible;width:16px}::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,0.1);background-clip:padding-box;border:solid transparent;min-height:28px;padding:100px 0 0;-webkit-box-shadow:inset 1px 1px 0 rgba(0,0,0,0.1),inset 0 -1px 0 rgba(0,0,0,0.07);-moz-box-shadow:inset 1px 1px 0 rgba(0,0,0,0.1),inset 0 -1px 0 rgba(0,0,0,0.07);box-shadow:inset 1px 1px 0 rgba(0,0,0,0.1),inset 0 -1px 0 rgba(0,0,0,0.07);border-width:1px 1px 1px 6px}::-webkit-scrollbar-thumb:hover{background-color:rgba(0,0,0,0.5)}::-webkit-scrollbar-button{height:0;width:0}::-webkit-scrollbar-track{background-clip:padding-box;border:solid transparent;border-width:0 0 0 4px}::-webkit-scrollbar-corner{background:transparent}body{background:black}slides>slide{display:none;font-family:'Open Sans', Arial, sans-serif;font-size:26px;color:#797979;width:900px;height:700px;margin-left:-450px;margin-top:-350px;padding:40px 60px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-transition:all 0.6s ease-in-out;-moz-transition:all 0.6s ease-in-out;-o-transition:all 0.6s ease-in-out;transition:all 0.6s ease-in-out}slides>slide.far-past{display:none}slides>slide.past{display:block;opacity:0}slides>slide.current{display:block;opacity:1}slides>slide.current .auto-fadein{opacity:1}slides>slide.current .gdbar{-webkit-background-size:100% 100%;-moz-background-size:100% 100%;-o-background-size:100% 100%;background-size:100% 100%}slides>slide.next{display:block;opacity:0;pointer-events:none}slides>slide.far-next{display:none}slides>slide.dark{background:#515151 !important}slides>slide:not(.nobackground):after{font-size:12pt;content:attr(data-slide-num) "/" attr(data-total-slides);position:absolute;bottom:20px;right:60px;line-height:1.9}slides>slide.title-slide:after{content:'';background:url(../../images/angularjs.png) no-repeat 100% 50%;-webkit-background-size:contain;-moz-background-size:contain;-o-background-size:contain;background-size:contain;position:absolute;top:40px;right:40px;width:100%;height:60px}slides>slide.backdrop{z-index:-10;display:block !important;background:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(85%, #ffffff), color-stop(100%, #e6e6e6));background:-webkit-linear-gradient(#ffffff,#ffffff 85%,#e6e6e6);background:-moz-linear-gradient(#ffffff,#ffffff 85%,#e6e6e6);background:-o-linear-gradient(#ffffff,#ffffff 85%,#e6e6e6);background:linear-gradient(#ffffff,#ffffff 85%,#e6e6e6);background-color:white}slides>slide.backdrop:after,slides>slide.backdrop:before{display:none}slides>slide>hgroup+article{margin-top:45px}slides>slide>hgroup+article.flexbox.vcenter,slides>slide>hgroup+article.flexbox.vleft,slides>slide>hgroup+article.flexbox.vright{height:80%}slides>slide>hgroup+article p{margin-bottom:1em}slides>slide>article:only-child{height:100%}slides>slide>article:only-child>iframe{height:98%}slides.layout-faux-widescreen>slide{padding:40px 160px}slides.layout-widescreen>slide,slides.layout-faux-widescreen>slide{margin-left:-550px;width:1100px}slides.layout-widescreen>slide.far-past,slides.layout-faux-widescreen>slide.far-past{display:block;display:none;-webkit-transform:translate(-2260px);-moz-transform:translate(-2260px);-ms-transform:translate(-2260px);-o-transform:translate(-2260px);transform:translate(-2260px);-webkit-transform:translate3d(-2260px, 0, 0);-moz-transform:translate3d(-2260px, 0, 0);-ms-transform:translate3d(-2260px, 0, 0);-o-transform:translate3d(-2260px, 0, 0);transform:translate3d(-2260px, 0, 0)}slides.layout-widescreen>slide.past,slides.layout-faux-widescreen>slide.past{display:block;opacity:0}slides.layout-widescreen>slide.current,slides.layout-faux-widescreen>slide.current{display:block;opacity:1}slides.layout-widescreen>slide.next,slides.layout-faux-widescreen>slide.next{display:block;opacity:0;pointer-events:none}slides.layout-widescreen>slide.far-next,slides.layout-faux-widescreen>slide.far-next{display:block;display:none;-webkit-transform:translate(2260px);-moz-transform:translate(2260px);-ms-transform:translate(2260px);-o-transform:translate(2260px);transform:translate(2260px);-webkit-transform:translate3d(2260px, 0, 0);-moz-transform:translate3d(2260px, 0, 0);-ms-transform:translate3d(2260px, 0, 0);-o-transform:translate3d(2260px, 0, 0);transform:translate3d(2260px, 0, 0)}slides.layout-widescreen #prev-slide-area,slides.layout-faux-widescreen #prev-slide-area{margin-left:-650px}slides.layout-widescreen #next-slide-area,slides.layout-faux-widescreen #next-slide-area{margin-left:550px}b{font-weight:600}a{color:#2a7cdf;text-decoration:none;border-bottom:1px solid rgba(42,124,223,0.5)}a:hover{color:black !important}h1,h2,h3{font-weight:600}h2{font-size:45px;line-height:45px;letter-spacing:-2px;color:#515151}h3{font-size:30px;letter-spacing:-1px;line-height:2;font-weight:inherit;color:#797979}ul{margin-left:1.2em;margin-bottom:1em;position:relative}ul li{margin-bottom:0.5em}ul li ul{margin-left:2em;margin-bottom:0}ul li ul li:before{content:'-';font-weight:600}ul>li:before{content:'\00B7';margin-left:-1em;position:absolute;font-weight:600}ul ul{margin-top:.5em}.highlight-code slide.current pre>*{opacity:0.25;-webkit-transition:opacity 0.5s ease-in;-moz-transition:opacity 0.5s ease-in;-o-transition:opacity 0.5s ease-in;transition:opacity 0.5s ease-in}.highlight-code slide.current b{opacity:1}pre{font-family:'Source Code Pro', 'Courier New', monospace;font-size:20px;line-height:28px;padding:10px 0 10px 60px;letter-spacing:-1px;margin-bottom:20px;width:106%;background-color:#e6e6e6;left:-60px;position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}pre[data-lang]:after{content:attr(data-lang);background-color:#a9a9a9;right:0;top:0;position:absolute;font-size:16pt;color:white;padding:2px 25px;text-transform:uppercase}pre[data-lang="go"]{color:#333}code{font-size:95%;font-family:'Source Code Pro', 'Courier New', monospace;color:black}iframe{width:100%;height:530px;background:white;border:1px solid #e6e6e6;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}dt{font-weight:bold}button{display:inline-block;background:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(40%, #f9f9f9), color-stop(70%, #e3e3e3));background:-webkit-linear-gradient(#f9f9f9 40%,#e3e3e3 70%);background:-moz-linear-gradient(#f9f9f9 40%,#e3e3e3 70%);background:-o-linear-gradient(#f9f9f9 40%,#e3e3e3 70%);background:linear-gradient(#f9f9f9 40%,#e3e3e3 70%);border:1px solid #a9a9a9;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:5px 8px;outline:none;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:pointer;text-shadow:1px 1px #fff;font-size:10pt}button:not(:disabled):hover{border-color:#515151}button:not(:disabled):active{background:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(40%, #e3e3e3), color-stop(70%, #f9f9f9));background:-webkit-linear-gradient(#e3e3e3 40%,#f9f9f9 70%);background:-moz-linear-gradient(#e3e3e3 40%,#f9f9f9 70%);background:-o-linear-gradient(#e3e3e3 40%,#f9f9f9 70%);background:linear-gradient(#e3e3e3 40%,#f9f9f9 70%)}:disabled{color:#a9a9a9}.blue{color:#4387fd}.blue2{color:#3c8ef3}.blue3{color:#2a7cdf}.yellow{color:#ffd14d !important}.yellow2{color:#f9cc46 !important}.yellow3{color:#f6c000 !important}.green{color:#0da861}.green2{color:#00a86d}.green3{color:#009f5d}.red{color:#f44a3f}.red2{color:#e0543e}.red3{color:#d94d3a}.gray{color:#e6e6e6}.gray2{color:#a9a9a9}.gray3{color:#797979}.gray4{color:#515151}.white{color:white !important}.black{color:black !important}.columns-2{-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2}table{width:100%;border-collapse:-moz-initial;border-collapse:initial;border-spacing:2px;border-bottom:1px solid #797979}table tr>td:first-child,table th{font-weight:600;color:#515151}table tr:nth-child(odd){background-color:#e6e6e6}table th{color:white;font-size:18px;background:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(40%, #4387fd), color-stop(80%, #2a7cdf)) no-repeat;background:-webkit-linear-gradient(top, #4387fd 40%,#2a7cdf 80%) no-repeat;background:-moz-linear-gradient(top, #4387fd 40%,#2a7cdf 80%) no-repeat;background:-o-linear-gradient(top, #4387fd 40%,#2a7cdf 80%) no-repeat;background:linear-gradient(top, #4387fd 40%,#2a7cdf 80%) no-repeat}table td,table th{font-size:18px;padding:1em 0.5em}table td.highlight{color:#515151;background:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(40%, #ffd14d), color-stop(80%, #f6c000)) no-repeat;background:-webkit-linear-gradient(top, #ffd14d 40%,#f6c000 80%) no-repeat;background:-moz-linear-gradient(top, #ffd14d 40%,#f6c000 80%) no-repeat;background:-o-linear-gradient(top, #ffd14d 40%,#f6c000 80%) no-repeat;background:linear-gradient(top, #ffd14d 40%,#f6c000 80%) no-repeat}table.rows{border-bottom:none;border-right:1px solid #797979}q{font-size:45px;line-height:72px}q:before{content:'“';position:absolute;margin-left:-0.5em}q:after{content:'”';position:absolute;margin-left:0.1em}slide.fill{background-repeat:no-repeat;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-background-size:cover;-moz-background-size:cover;-o-background-size:cover;background-size:cover}article.smaller p,article.smaller ul{font-size:20px;line-height:24px;letter-spacing:0}article.smaller table td,article.smaller table th{font-size:14px}article.smaller pre{font-size:15px;line-height:20px;letter-spacing:0}article.smaller q{font-size:40px;line-height:48px}article.smaller q:before,article.smaller q:after{font-size:60px}.build>*{-webkit-transition:opacity 0.5s ease-in-out;-webkit-transition-delay:0.2s;-moz-transition:opacity 0.5s ease-in-out 0.2s;-o-transition:opacity 0.5s ease-in-out 0.2s;transition:opacity 0.5s ease-in-out 0.2s}.build .to-build{opacity:0}.build .build-fade{opacity:0.3}.build .build-fade:hover{opacity:1.0}.popup .next .build .to-build{opacity:1}.popup .next .build .build-fade{opacity:1}.prettyprint .str,.prettyprint .atv{color:#009f5d}.prettyprint .kwd,.prettyprint .tag{color:#06c}.prettyprint .com{color:#797979;font-style:italic}.prettyprint .lit{color:#7f0000}.prettyprint .pun,.prettyprint .opn,.prettyprint .clo{color:#515151}.prettyprint .typ,.prettyprint .atn,.prettyprint .dec,.prettyprint .var{color:#d94d3a}.prettyprint .pln{color:#515151}.note{position:absolute;z-index:100;width:100%;height:100%;top:0;left:0;padding:1em;background:rgba(0,0,0,0.3);opacity:0;pointer-events:none;display:-webkit-box !important;display:-moz-box !important;display:-ms-box !important;display:-o-box !important;display:box !important;-webkit-box-orient:vertical;-moz-box-orient:vertical;-ms-box-orient:vertical;box-orient:vertical;-webkit-box-align:center;-moz-box-align:center;-ms-box-align:center;box-align:center;-webkit-box-pack:center;-moz-box-pack:center;-ms-box-pack:center;box-pack:center;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transform:translateY(350px);-moz-transform:translateY(350px);-ms-transform:translateY(350px);-o-transform:translateY(350px);transform:translateY(350px);-webkit-transition:all 0.4s ease-in-out;-moz-transition:all 0.4s ease-in-out;-o-transition:all 0.4s ease-in-out;transition:all 0.4s ease-in-out}.note>section{background:#fff;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-box-shadow:0 0 10px #797979;-moz-box-shadow:0 0 10px #797979;box-shadow:0 0 10px #797979;width:60%;padding:2em}.with-notes.popup slides.layout-widescreen slide.next,.with-notes.popup slides.layout-faux-widescreen slide.next{-webkit-transform:translate3d(690px, 80px, 0) scale(0.35);-moz-transform:translate3d(690px, 80px, 0) scale(0.35);-ms-transform:translate3d(690px, 80px, 0) scale(0.35);-o-transform:translate3d(690px, 80px, 0) scale(0.35);transform:translate3d(690px, 80px, 0) scale(0.35)}.with-notes.popup slides.layout-widescreen slide .note,.with-notes.popup slides.layout-faux-widescreen slide .note{-webkit-transform:translate3d(300px, 800px, 0) scale(1.5);-moz-transform:translate3d(300px, 800px, 0) scale(1.5);-ms-transform:translate3d(300px, 800px, 0) scale(1.5);-o-transform:translate3d(300px, 800px, 0) scale(1.5);transform:translate3d(300px, 800px, 0) scale(1.5)}.with-notes.popup slide{overflow:visible;background:white;-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none;pointer-events:none;-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;-o-transform-origin:0 0;transform-origin:0 0}.with-notes.popup slide:not(.backdrop){-webkit-transform:scale(0.6) translate3d(0.5em, 0.5em, 0);-moz-transform:scale(0.6) translate3d(0.5em, 0.5em, 0);-ms-transform:scale(0.6) translate3d(0.5em, 0.5em, 0);-o-transform:scale(0.6) translate3d(0.5em, 0.5em, 0);transform:scale(0.6) translate3d(0.5em, 0.5em, 0);-webkit-box-shadow:0 0 10px #797979;-moz-box-shadow:0 0 10px #797979;box-shadow:0 0 10px #797979}.with-notes.popup slide.backdrop{background-image:-webkit-gradient(radial, 50% 50%, 0, 50% 50%, 600, color-stop(0%, #b1dfff), color-stop(100%, #4387fd));background-image:-webkit-radial-gradient(50% 50%, #b1dfff 0%,#4387fd 600px);background-image:-moz-radial-gradient(50% 50%, #b1dfff 0%,#4387fd 600px);background-image:-o-radial-gradient(50% 50%, #b1dfff 0%,#4387fd 600px);background-image:radial-gradient(50% 50%, #b1dfff 0%,#4387fd 600px)}.with-notes.popup slide.next{-webkit-transform:translate3d(570px, 80px, 0) scale(0.35);-moz-transform:translate3d(570px, 80px, 0) scale(0.35);-ms-transform:translate3d(570px, 80px, 0) scale(0.35);-o-transform:translate3d(570px, 80px, 0) scale(0.35);transform:translate3d(570px, 80px, 0) scale(0.35);opacity:1 !important}.with-notes.popup slide.next .note{display:none !important}.with-notes.popup .note{width:109%;height:260px;background:#e6e6e6;padding:0;-webkit-box-shadow:0 0 10px #797979;-moz-box-shadow:0 0 10px #797979;box-shadow:0 0 10px #797979;-webkit-transform:translate3d(250px, 800px, 0) scale(1.5);-moz-transform:translate3d(250px, 800px, 0) scale(1.5);-ms-transform:translate3d(250px, 800px, 0) scale(1.5);-o-transform:translate3d(250px, 800px, 0) scale(1.5);transform:translate3d(250px, 800px, 0) scale(1.5);-webkit-transition:opacity 400ms ease-in-out;-moz-transition:opacity 400ms ease-in-out;-o-transition:opacity 400ms ease-in-out;transition:opacity 400ms ease-in-out}.with-notes.popup .note>section{background:#fff;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;height:100%;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;overflow:auto;padding:1em}.with-notes .note{opacity:1;-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);-o-transform:translateY(0);transform:translateY(0);pointer-events:auto}.source{font-size:14px;color:#a9a9a9;position:absolute;bottom:70px;left:60px}.centered{text-align:center}.reflect{-webkit-box-reflect:below 3px -webkit-linear-gradient(rgba(255,255,255,0) 85%, #fff 150%);-moz-box-reflect:below 3px -moz-linear-gradient(rgba(255,255,255,0) 85%, #fff 150%);-o-box-reflect:below 3px -o-linear-gradient(rgba(255,255,255,0) 85%, #fff 150%);-ms-box-reflect:below 3px -ms-linear-gradient(rgba(255,255,255,0) 85%, #fff 150%);box-reflect:below 3px linear-gradient(rgba(255,255,255,0) 85%,#ffffff 150%)}.flexbox{display:-webkit-box !important;display:-moz-box !important;display:-ms-box !important;display:-o-box !important;display:box !important}.flexbox.vcenter{-webkit-box-orient:vertical;-moz-box-orient:vertical;-ms-box-orient:vertical;box-orient:vertical;-webkit-box-align:center;-moz-box-align:center;-ms-box-align:center;box-align:center;-webkit-box-pack:center;-moz-box-pack:center;-ms-box-pack:center;box-pack:center;height:100%;width:100%}.flexbox.vleft{-webkit-box-orient:vertical;-moz-box-orient:vertical;-ms-box-orient:vertical;box-orient:vertical;-webkit-box-align:left;-moz-box-align:left;-ms-box-align:left;box-align:left;-webkit-box-pack:center;-moz-box-pack:center;-ms-box-pack:center;box-pack:center;height:100%;width:100%}.flexbox.vright{-webkit-box-orient:vertical;-moz-box-orient:vertical;-ms-box-orient:vertical;box-orient:vertical;-webkit-box-align:end;-moz-box-align:end;-ms-box-align:end;box-align:end;-webkit-box-pack:center;-moz-box-pack:center;-ms-box-pack:center;box-pack:center;height:100%;width:100%}.auto-fadein{-webkit-transition:opacity 0.6s ease-in;-webkit-transition-delay:1s;-moz-transition:opacity 0.6s ease-in 1s;-o-transition:opacity 0.6s ease-in 1s;transition:opacity 0.6s ease-in 1s;opacity:0}.slide-area{z-index:1000;position:absolute;left:0;top:0;width:100px;height:700px;left:50%;top:50%;cursor:pointer;margin-top:-350px}#prev-slide-area{margin-left:-550px}#next-slide-area{margin-left:450px}.logoslide img{width:383px;height:92px}.segue{padding:60px 120px}.segue h2{color:#e6e6e6;font-size:60px}.segue h3{color:#e6e6e6;line-height:2.8}.segue hgroup{position:absolute;bottom:225px}.thank-you-slide{background:#4387fd !important;color:white}.thank-you-slide h2{font-size:60px;color:inherit}.thank-you-slide article>p{margin-top:2em;font-size:20pt}.thank-you-slide>p{position:absolute;bottom:80px;font-size:24pt;line-height:1.3}aside.gdbar{height:97px;width:215px;position:absolute;left:-1px;top:125px;-webkit-border-radius:0 10px 10px 0;-moz-border-radius:0 10px 10px 0;-ms-border-radius:0 10px 10px 0;-o-border-radius:0 10px 10px 0;border-radius:0 10px 10px 0;background:-webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #e6e6e6), color-stop(100%, #e6e6e6)) no-repeat;background:-webkit-linear-gradient(left, #e6e6e6,#e6e6e6) no-repeat;background:-moz-linear-gradient(left, #e6e6e6,#e6e6e6) no-repeat;background:-o-linear-gradient(left, #e6e6e6,#e6e6e6) no-repeat;background:linear-gradient(left, #e6e6e6,#e6e6e6) no-repeat;-webkit-background-size:0% 100%;-moz-background-size:0% 100%;-o-background-size:0% 100%;background-size:0% 100%;-webkit-transition:all 0.5s ease-out;-webkit-transition-delay:0.5s;-moz-transition:all 0.5s ease-out 0.5s;-o-transition:all 0.5s ease-out 0.5s;transition:all 0.5s ease-out 0.5s}aside.gdbar.right{right:0;left:-moz-initial;left:initial;top:254px;-webkit-transform:rotateZ(180deg);-moz-transform:rotateZ(180deg);-ms-transform:rotateZ(180deg);-o-transform:rotateZ(180deg);transform:rotateZ(180deg)}aside.gdbar.right img{-webkit-transform:rotateZ(180deg);-moz-transform:rotateZ(180deg);-ms-transform:rotateZ(180deg);-o-transform:rotateZ(180deg);transform:rotateZ(180deg)}aside.gdbar.bottom{top:-moz-initial;top:initial;bottom:60px}aside.gdbar img{width:85px;height:85px;position:absolute;right:0;margin:8px 15px}.title-slide hgroup{bottom:100px}.title-slide hgroup h1{font-size:65px;line-height:1.4;letter-spacing:-3px;color:#515151}.title-slide hgroup h2{font-size:34px;color:#a9a9a9;font-weight:inherit}.title-slide hgroup p{font-size:20px;color:#797979;line-height:1.3;margin-top:2em}.quote{color:#e6e6e6}.quote .author{font-size:24px;position:absolute;bottom:80px;line-height:1.4}[data-config-contact] a{color:#fff;border-bottom:none}[data-config-contact] span{width:115px;display:inline-block}.overview.popup .note{display:none !important}.overview slides slide{display:block;cursor:pointer;opacity:0.5;pointer-events:auto !important;background:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(85%, #ffffff), color-stop(100%, #e6e6e6));background:-webkit-linear-gradient(#ffffff,#ffffff 85%,#e6e6e6);background:-moz-linear-gradient(#ffffff,#ffffff 85%,#e6e6e6);background:-o-linear-gradient(#ffffff,#ffffff 85%,#e6e6e6);background:linear-gradient(#ffffff,#ffffff 85%,#e6e6e6);background-color:white}.overview slides slide.backdrop{display:none !important}.overview slides slide.far-past,.overview slides slide.past,.overview slides slide.next,.overview slides slide.far-next,.overview slides slide.far-past{opacity:0.5;display:block}.overview slides slide.current{opacity:1}.overview .slide-area{display:none}@media print{slides slide{display:block !important;position:relative;background:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(85%, #ffffff), color-stop(100%, #e6e6e6));background:-webkit-linear-gradient(#ffffff,#ffffff 85%,#e6e6e6);background:-moz-linear-gradient(#ffffff,#ffffff 85%,#e6e6e6);background:-o-linear-gradient(#ffffff,#ffffff 85%,#e6e6e6);background:linear-gradient(#ffffff,#ffffff 85%,#e6e6e6);background-color:white;-webkit-transform:none !important;-moz-transform:none !important;-ms-transform:none !important;-o-transform:none !important;transform:none !important;width:100%;height:100%;page-break-after:always;top:auto !important;left:auto !important;margin-top:0 !important;margin-left:0 !important;opacity:1 !important;color:#555}slides slide.far-past,slides slide.past,slides slide.next,slides slide.far-next,slides slide.far-past,slides slide.current{opacity:1 !important;display:block !important}slides slide .build>*{-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}slides slide .build .to-build,slides slide .build .build-fade{opacity:1}slides slide .auto-fadein{opacity:1 !important}slides slide.backdrop{display:none !important}slides slide table.rows{border-right:0}slides slide[hidden]{display:none !important}.slide-area{display:none}.reflect{-webkit-box-reflect:none;-moz-box-reflect:none;-o-box-reflect:none;-ms-box-reflect:none;box-reflect:none}pre,code{font-family:monospace !important}} diff --git a/slides/theme/scss/default.scss b/slides/theme/scss/default.scss index 77a3f87..d6cc17b 100644 --- a/slides/theme/scss/default.scss +++ b/slides/theme/scss/default.scss @@ -168,18 +168,18 @@ slides > slide { //background: white url(../../images/google_developers_icon_128.png) ($brand-small-icon-size * 2) 98% no-repeat; //@include background-size($brand-small-icon-size $brand-small-icon-size); - &:before { - font-size: 12pt; - content: $social-tags; - position: absolute; - bottom: $slide-top-bottom-padding / 2; - left: $slide-left-right-padding; - background: url(../../images/google_developers_icon_128.png) no-repeat 0 50%; - @include background-size($brand-small-icon-size $brand-small-icon-size); - padding-left: $brand-small-icon-size + 10; - height: $brand-small-icon-size; - line-height: 1.9; - } + // &:before { + // font-size: 12pt; + // content: $social-tags; + // position: absolute; + // bottom: $slide-top-bottom-padding / 2; + // left: $slide-left-right-padding; + // background: url(../../images/google_developers_icon_128.png) no-repeat 0 50%; + // @include background-size($brand-small-icon-size $brand-small-icon-size); + // padding-left: $brand-small-icon-size + 10; + // height: $brand-small-icon-size; + // line-height: 1.9; + // } &:after { font-size: 12pt; content: attr(data-slide-num) '/' attr(data-total-slides); @@ -193,10 +193,10 @@ slides > slide { &.title-slide { &:after { content: ''; - background: url(../../images/io2012_logo.png) no-repeat 100% 50%; + background: url(../../images/angularjs.png) no-repeat 100% 50%; @include background-size(contain); position: absolute; - bottom: $slide-top-bottom-padding; + top: $slide-top-bottom-padding; right: $slide-top-bottom-padding; width: 100%; height: 60px; @@ -455,13 +455,13 @@ button:not(:disabled):active { color: $brand-blue-secondary2; } .yellow { - color: $brand-yellow; + color: $brand-yellow !important; } .yellow2 { - color: $brand-yellow-secondary; + color: $brand-yellow-secondary !important; } .yellow3 { - color: $brand-yellow-secondary2; + color: $brand-yellow-secondary2 !important; } .green { color: $brand-green;