3 * http://lab.hakim.se/reveal-js
6 * Copyright (C) 2016 Hakim El Hattab, http://hakim.se
10 /*********************************************
12 *********************************************/
14 html, body, .reveal div, .reveal span, .reveal applet, .reveal object, .reveal iframe,
15 .reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6, .reveal p, .reveal blockquote, .reveal pre,
16 .reveal a, .reveal abbr, .reveal acronym, .reveal address, .reveal big, .reveal cite, .reveal code,
17 .reveal del, .reveal dfn, .reveal em, .reveal img, .reveal ins, .reveal kbd, .reveal q, .reveal s, .reveal samp,
18 .reveal small, .reveal strike, .reveal strong, .reveal sub, .reveal sup, .reveal tt, .reveal var,
19 .reveal b, .reveal u, .reveal center,
20 .reveal dl, .reveal dt, .reveal dd, .reveal ol, .reveal ul, .reveal li,
21 .reveal fieldset, .reveal form, .reveal label, .reveal legend,
22 .reveal table, .reveal caption, .reveal tbody, .reveal tfoot, .reveal thead, .reveal tr, .reveal th, .reveal td,
23 .reveal article, .reveal aside, .reveal canvas, .reveal details, .reveal embed,
24 .reveal figure, .reveal figcaption, .reveal footer, .reveal header, .reveal hgroup,
25 .reveal menu, .reveal nav, .reveal output, .reveal ruby, .reveal section, .reveal summary,
26 .reveal time, .reveal mark, .reveal audio, .reveal video {
32 vertical-align: baseline;
35 .reveal article, .reveal aside, .reveal details, .reveal figcaption, .reveal figure,
36 .reveal footer, .reveal header, .reveal hgroup, .reveal menu, .reveal nav, .reveal section {
41 /*********************************************
43 *********************************************/
56 background-color: #fff;
61 /*********************************************
63 *********************************************/
65 .reveal .slides section .fragment {
68 transition: all .2s ease;
76 .reveal .slides section .fragment.grow {
81 transform: scale( 1.3 );
85 .reveal .slides section .fragment.shrink {
90 transform: scale( 0.7 );
94 .reveal .slides section .fragment.zoom-in {
95 transform: scale( 0.1 );
102 .reveal .slides section .fragment.fade-out {
112 .reveal .slides section .fragment.semi-fade-out {
122 .reveal .slides section .fragment.strike {
127 text-decoration: line-through;
131 .reveal .slides section .fragment.fade-up {
132 transform: translate(0, 20%);
135 transform: translate(0, 0);
139 .reveal .slides section .fragment.fade-down {
140 transform: translate(0, -20%);
143 transform: translate(0, 0);
147 .reveal .slides section .fragment.fade-right {
148 transform: translate(-20%, 0);
151 transform: translate(0, 0);
155 .reveal .slides section .fragment.fade-left {
156 transform: translate(20%, 0);
159 transform: translate(0, 0);
163 .reveal .slides section .fragment.current-visible {
173 .reveal .slides section .fragment.highlight-red,
174 .reveal .slides section .fragment.highlight-current-red,
175 .reveal .slides section .fragment.highlight-green,
176 .reveal .slides section .fragment.highlight-current-green,
177 .reveal .slides section .fragment.highlight-blue,
178 .reveal .slides section .fragment.highlight-current-blue {
182 .reveal .slides section .fragment.highlight-red.visible {
185 .reveal .slides section .fragment.highlight-green.visible {
188 .reveal .slides section .fragment.highlight-blue.visible {
192 .reveal .slides section .fragment.highlight-current-red.current-fragment {
195 .reveal .slides section .fragment.highlight-current-green.current-fragment {
198 .reveal .slides section .fragment.highlight-current-blue.current-fragment {
203 /*********************************************
204 * DEFAULT ELEMENT STYLES
205 *********************************************/
207 /* Fixes issue in Chrome where italic fonts did not appear when printing to PDF */
217 /** Prevents layering issues in certain browser/transition combinations */
227 .reveal pre.stretch code {
230 box-sizing: border-box;
234 /*********************************************
236 *********************************************/
247 -webkit-user-select: none;
250 .reveal .controls button {
256 background-color: transparent;
257 border: 12px solid transparent;
258 transform: scale(.9999);
259 transition: all 0.2s ease;
260 -webkit-appearance: none;
261 -webkit-tap-highlight-color: rgba( 0, 0, 0, 0 );
264 .reveal .controls .enabled {
269 .reveal .controls .enabled:active {
273 .reveal .controls .navigate-left {
276 border-right-width: 22px;
277 border-right-color: #000;
279 .reveal .controls .navigate-left.fragmented {
283 .reveal .controls .navigate-right {
287 border-left-width: 22px;
288 border-left-color: #000;
290 .reveal .controls .navigate-right.fragmented {
294 .reveal .controls .navigate-up {
297 border-bottom-width: 22px;
298 border-bottom-color: #000;
300 .reveal .controls .navigate-up.fragmented {
304 .reveal .controls .navigate-down {
308 border-top-width: 22px;
309 border-top-color: #000;
311 .reveal .controls .navigate-down.fragmented {
316 /*********************************************
318 *********************************************/
329 background-color: rgba( 0, 0, 0, 0.2 );
331 .reveal .progress:after {
339 .reveal .progress span {
344 background-color: #000;
345 transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
348 /*********************************************
350 *********************************************/
352 .reveal .slide-number {
358 font-family: Helvetica, sans-serif;
362 background-color: rgba( 0, 0, 0, 0.4 );
366 .reveal .slide-number-delimiter {
370 /*********************************************
372 *********************************************/
396 perspective-origin: 50% 40%;
399 .reveal .slides>section {
400 -ms-perspective: 600px;
403 .reveal .slides>section,
404 .reveal .slides>section>section {
411 transform-style: preserve-3d;
412 transition: transform-origin 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985),
413 transform 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985),
414 visibility 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985),
415 opacity 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
418 /* Global transition speed settings */
419 .reveal[data-transition-speed="fast"] .slides section {
420 transition-duration: 400ms;
422 .reveal[data-transition-speed="slow"] .slides section {
423 transition-duration: 1200ms;
426 /* Slide-specific transition speed overrides */
427 .reveal .slides section[data-transition-speed="fast"] {
428 transition-duration: 400ms;
430 .reveal .slides section[data-transition-speed="slow"] {
431 transition-duration: 1200ms;
434 .reveal .slides>section.stack {
439 .reveal .slides>section.present,
440 .reveal .slides>section>section.present {
447 .reveal.center .slides,
448 .reveal.center .slides section {
449 min-height: 0 !important;
452 /* Don't allow interaction with invisible slides */
453 .reveal .slides>section.future,
454 .reveal .slides>section>section.future,
455 .reveal .slides>section.past,
456 .reveal .slides>section>section.past {
457 pointer-events: none;
460 .reveal.overview .slides>section,
461 .reveal.overview .slides>section>section {
462 pointer-events: auto;
465 .reveal .slides>section.past,
466 .reveal .slides>section.future,
467 .reveal .slides>section>section.past,
468 .reveal .slides>section>section.future {
473 /*********************************************
474 * Mixins for readability of transitions
475 *********************************************/
477 @mixin transition-global($style) {
478 .reveal .slides section[data-transition=#{$style}],
479 .reveal.#{$style} .slides section:not([data-transition]) {
483 @mixin transition-horizontal-past($style) {
484 .reveal .slides>section[data-transition=#{$style}].past,
485 .reveal .slides>section[data-transition~=#{$style}-out].past,
486 .reveal.#{$style} .slides>section:not([data-transition]).past {
490 @mixin transition-horizontal-future($style) {
491 .reveal .slides>section[data-transition=#{$style}].future,
492 .reveal .slides>section[data-transition~=#{$style}-in].future,
493 .reveal.#{$style} .slides>section:not([data-transition]).future {
498 @mixin transition-vertical-past($style) {
499 .reveal .slides>section>section[data-transition=#{$style}].past,
500 .reveal .slides>section>section[data-transition~=#{$style}-out].past,
501 .reveal.#{$style} .slides>section>section:not([data-transition]).past {
505 @mixin transition-vertical-future($style) {
506 .reveal .slides>section>section[data-transition=#{$style}].future,
507 .reveal .slides>section>section[data-transition~=#{$style}-in].future,
508 .reveal.#{$style} .slides>section>section:not([data-transition]).future {
513 /*********************************************
515 * Aliased 'linear' for backwards compatibility
516 *********************************************/
518 @each $stylename in slide, linear {
519 .reveal.#{$stylename} section {
520 backface-visibility: hidden;
522 @include transition-horizontal-past(#{$stylename}) {
523 transform: translate(-150%, 0);
525 @include transition-horizontal-future(#{$stylename}) {
526 transform: translate(150%, 0);
528 @include transition-vertical-past(#{$stylename}) {
529 transform: translate(0, -150%);
531 @include transition-vertical-future(#{$stylename}) {
532 transform: translate(0, 150%);
536 /*********************************************
538 * Aliased 'default' for backwards compatibility
539 *********************************************/
541 @each $stylename in default, convex {
542 @include transition-horizontal-past(#{$stylename}) {
543 transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0);
545 @include transition-horizontal-future(#{$stylename}) {
546 transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0);
548 @include transition-vertical-past(#{$stylename}) {
549 transform: translate3d(0, -300px, 0) rotateX(70deg) translate3d(0, -300px, 0);
551 @include transition-vertical-future(#{$stylename}) {
552 transform: translate3d(0, 300px, 0) rotateX(-70deg) translate3d(0, 300px, 0);
556 /*********************************************
558 *********************************************/
560 @include transition-horizontal-past(concave) {
561 transform: translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0);
563 @include transition-horizontal-future(concave) {
564 transform: translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0);
566 @include transition-vertical-past(concave) {
567 transform: translate3d(0, -80%, 0) rotateX(-70deg) translate3d(0, -80%, 0);
569 @include transition-vertical-future(concave) {
570 transform: translate3d(0, 80%, 0) rotateX(70deg) translate3d(0, 80%, 0);
574 /*********************************************
576 *********************************************/
578 @include transition-global(zoom) {
579 transition-timing-function: ease;
581 @include transition-horizontal-past(zoom) {
583 transform: scale(16);
585 @include transition-horizontal-future(zoom) {
587 transform: scale(0.2);
589 @include transition-vertical-past(zoom) {
590 transform: translate(0, -150%);
592 @include transition-vertical-future(zoom) {
593 transform: translate(0, 150%);
597 /*********************************************
599 *********************************************/
601 .reveal.cube .slides {
605 .reveal.cube .slides section {
608 backface-visibility: hidden;
609 box-sizing: border-box;
611 .reveal.center.cube .slides section {
614 .reveal.cube .slides section:not(.stack):before {
622 background: rgba(0,0,0,0.1);
624 transform: translateZ( -20px );
626 .reveal.cube .slides section:not(.stack):after {
638 box-shadow: 0px 95px 25px rgba(0,0,0,0.2);
639 transform: translateZ(-90px) rotateX( 65deg );
642 .reveal.cube .slides>section.stack {
647 .reveal.cube .slides>section.past {
648 transform-origin: 100% 0%;
649 transform: translate3d(-100%, 0, 0) rotateY(-90deg);
652 .reveal.cube .slides>section.future {
653 transform-origin: 0% 0%;
654 transform: translate3d(100%, 0, 0) rotateY(90deg);
657 .reveal.cube .slides>section>section.past {
658 transform-origin: 0% 100%;
659 transform: translate3d(0, -100%, 0) rotateX(90deg);
662 .reveal.cube .slides>section>section.future {
663 transform-origin: 0% 0%;
664 transform: translate3d(0, 100%, 0) rotateX(-90deg);
668 /*********************************************
670 *********************************************/
672 .reveal.page .slides {
673 perspective-origin: 0% 50%;
677 .reveal.page .slides section {
680 box-sizing: border-box;
682 .reveal.page .slides section.past {
685 .reveal.page .slides section:not(.stack):before {
693 background: rgba(0,0,0,0.1);
694 transform: translateZ( -20px );
696 .reveal.page .slides section:not(.stack):after {
708 box-shadow: 0px 95px 25px rgba(0,0,0,0.2);
710 -webkit-transform: translateZ(-90px) rotateX( 65deg );
713 .reveal.page .slides>section.stack {
718 .reveal.page .slides>section.past {
719 transform-origin: 0% 0%;
720 transform: translate3d(-40%, 0, 0) rotateY(-80deg);
723 .reveal.page .slides>section.future {
724 transform-origin: 100% 0%;
725 transform: translate3d(0, 0, 0);
728 .reveal.page .slides>section>section.past {
729 transform-origin: 0% 0%;
730 transform: translate3d(0, -40%, 0) rotateX(80deg);
733 .reveal.page .slides>section>section.future {
734 transform-origin: 0% 100%;
735 transform: translate3d(0, 0, 0);
739 /*********************************************
741 *********************************************/
743 .reveal .slides section[data-transition=fade],
744 .reveal.fade .slides section:not([data-transition]),
745 .reveal.fade .slides>section>section:not([data-transition]) {
747 transition: opacity 0.5s;
751 .reveal.fade.overview .slides section,
752 .reveal.fade.overview .slides>section>section {
757 /*********************************************
759 *********************************************/
761 @include transition-global(none) {
767 /*********************************************
769 *********************************************/
771 .reveal .pause-overlay {
781 transition: all 1s ease;
783 .reveal.paused .pause-overlay {
789 /*********************************************
791 *********************************************/
797 .no-transforms .reveal .slides {
800 height: auto !important;
807 .no-transforms .reveal .controls,
808 .no-transforms .reveal .progress {
809 display: none !important;
812 .no-transforms .reveal .slides section {
813 display: block !important;
814 opacity: 1 !important;
815 position: relative !important;
824 .no-transforms .reveal .slides section section {
828 .reveal .no-transition,
829 .reveal .no-transition * {
830 transition: none !important;
834 /*********************************************
835 * PER-SLIDE BACKGROUNDS
836 *********************************************/
838 .reveal .backgrounds {
846 .reveal .slide-background {
854 background-color: rgba( 0, 0, 0, 0 );
855 background-position: 50% 50%;
856 background-repeat: no-repeat;
857 background-size: cover;
859 transition: all 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
862 .reveal .slide-background.stack {
866 .reveal .slide-background.present {
871 .print-pdf .reveal .slide-background {
872 opacity: 1 !important;
873 visibility: visible !important;
876 /* Video backgrounds */
877 .reveal .slide-background video {
887 /* Immediate transition style */
888 .reveal[data-background-transition=none]>.backgrounds .slide-background,
889 .reveal>.backgrounds .slide-background[data-background-transition=none] {
894 .reveal[data-background-transition=slide]>.backgrounds .slide-background,
895 .reveal>.backgrounds .slide-background[data-background-transition=slide] {
897 backface-visibility: hidden;
899 .reveal[data-background-transition=slide]>.backgrounds .slide-background.past,
900 .reveal>.backgrounds .slide-background.past[data-background-transition=slide] {
901 transform: translate(-100%, 0);
903 .reveal[data-background-transition=slide]>.backgrounds .slide-background.future,
904 .reveal>.backgrounds .slide-background.future[data-background-transition=slide] {
905 transform: translate(100%, 0);
908 .reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.past,
909 .reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=slide] {
910 transform: translate(0, -100%);
912 .reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.future,
913 .reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=slide] {
914 transform: translate(0, 100%);
919 .reveal[data-background-transition=convex]>.backgrounds .slide-background.past,
920 .reveal>.backgrounds .slide-background.past[data-background-transition=convex] {
922 transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0);
924 .reveal[data-background-transition=convex]>.backgrounds .slide-background.future,
925 .reveal>.backgrounds .slide-background.future[data-background-transition=convex] {
927 transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0);
930 .reveal[data-background-transition=convex]>.backgrounds .slide-background>.slide-background.past,
931 .reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=convex] {
933 transform: translate3d(0, -100%, 0) rotateX(90deg) translate3d(0, -100%, 0);
935 .reveal[data-background-transition=convex]>.backgrounds .slide-background>.slide-background.future,
936 .reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=convex] {
938 transform: translate3d(0, 100%, 0) rotateX(-90deg) translate3d(0, 100%, 0);
943 .reveal[data-background-transition=concave]>.backgrounds .slide-background.past,
944 .reveal>.backgrounds .slide-background.past[data-background-transition=concave] {
946 transform: translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0);
948 .reveal[data-background-transition=concave]>.backgrounds .slide-background.future,
949 .reveal>.backgrounds .slide-background.future[data-background-transition=concave] {
951 transform: translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0);
954 .reveal[data-background-transition=concave]>.backgrounds .slide-background>.slide-background.past,
955 .reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=concave] {
957 transform: translate3d(0, -100%, 0) rotateX(-90deg) translate3d(0, -100%, 0);
959 .reveal[data-background-transition=concave]>.backgrounds .slide-background>.slide-background.future,
960 .reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=concave] {
962 transform: translate3d(0, 100%, 0) rotateX(90deg) translate3d(0, 100%, 0);
966 .reveal[data-background-transition=zoom]>.backgrounds .slide-background,
967 .reveal>.backgrounds .slide-background[data-background-transition=zoom] {
968 transition-timing-function: ease;
971 .reveal[data-background-transition=zoom]>.backgrounds .slide-background.past,
972 .reveal>.backgrounds .slide-background.past[data-background-transition=zoom] {
975 transform: scale(16);
977 .reveal[data-background-transition=zoom]>.backgrounds .slide-background.future,
978 .reveal>.backgrounds .slide-background.future[data-background-transition=zoom] {
981 transform: scale(0.2);
984 .reveal[data-background-transition=zoom]>.backgrounds .slide-background>.slide-background.past,
985 .reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=zoom] {
988 transform: scale(16);
990 .reveal[data-background-transition=zoom]>.backgrounds .slide-background>.slide-background.future,
991 .reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=zoom] {
994 transform: scale(0.2);
998 /* Global transition speed settings */
999 .reveal[data-transition-speed="fast"]>.backgrounds .slide-background {
1000 transition-duration: 400ms;
1002 .reveal[data-transition-speed="slow"]>.backgrounds .slide-background {
1003 transition-duration: 1200ms;
1007 /*********************************************
1009 *********************************************/
1012 perspective-origin: 50% 50%;
1018 opacity: 1 !important;
1020 visibility: visible !important;
1022 box-sizing: border-box;
1024 .slides section:hover,
1025 .slides section.present {
1026 outline: 10px solid rgba(150,150,150,0.4);
1027 outline-offset: 10px;
1029 .slides section .fragment {
1033 .slides section:after,
1034 .slides section:before {
1035 display: none !important;
1037 .slides>section.stack {
1046 perspective: inherit;
1049 .backgrounds .slide-background {
1051 visibility: visible;
1053 // This can't be applied to the slide itself in Safari
1054 outline: 10px solid rgba(150,150,150,0.1);
1055 outline-offset: 10px;
1059 // Disable transitions transitions while we're activating
1060 // or deactivating the overview mode.
1061 .reveal.overview .slides section,
1062 .reveal.overview-deactivating .slides section {
1066 .reveal.overview .backgrounds .slide-background,
1067 .reveal.overview-deactivating .backgrounds .slide-background {
1071 .reveal.overview-animated .slides {
1072 transition: transform 0.4s ease;
1076 /*********************************************
1078 *********************************************/
1080 .reveal.rtl .slides,
1081 .reveal.rtl .slides h1,
1082 .reveal.rtl .slides h2,
1083 .reveal.rtl .slides h3,
1084 .reveal.rtl .slides h4,
1085 .reveal.rtl .slides h5,
1086 .reveal.rtl .slides h6 {
1088 font-family: sans-serif;
1101 .reveal.rtl .progress span {
1105 /*********************************************
1106 * PARALLAX BACKGROUND
1107 *********************************************/
1109 .reveal.has-parallax-background .backgrounds {
1110 transition: all 0.8s ease;
1113 /* Global transition speed settings */
1114 .reveal.has-parallax-background[data-transition-speed="fast"] .backgrounds {
1115 transition-duration: 400ms;
1117 .reveal.has-parallax-background[data-transition-speed="slow"] .backgrounds {
1118 transition-duration: 1200ms;
1122 /*********************************************
1123 * LINK PREVIEW OVERLAY
1124 *********************************************/
1133 background: rgba( 0, 0, 0, 0.9 );
1136 transition: all 0.3s ease;
1138 .reveal .overlay.visible {
1140 visibility: visible;
1143 .reveal .overlay .spinner {
1150 margin: -16px 0 0 -16px;
1152 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);
1154 visibility: visible;
1156 transition: all 0.3s ease;
1159 .reveal .overlay header {
1166 border-bottom: 1px solid #222;
1168 .reveal .overlay header a {
1169 display: inline-block;
1176 box-sizing: border-box;
1178 .reveal .overlay header a:hover {
1181 .reveal .overlay header a .icon {
1182 display: inline-block;
1186 background-position: 50% 50%;
1187 background-size: 100%;
1188 background-repeat: no-repeat;
1190 .reveal .overlay header a.close .icon {
1191 background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABkklEQVRYR8WX4VHDMAxG6wnoJrABZQPYBCaBTWAD2g1gE5gg6OOsXuxIlr40d81dfrSJ9V4c2VLK7spHuTJ/5wpM07QXuXc5X0opX2tEJcadjHuV80li/FgxTIEK/5QBCICBD6xEhSMGHgQPgBgLiYVAB1dpSqKDawxTohFw4JSEA3clzgIBPCURwE2JucBR7rhPJJv5OpJwDX+SfDjgx1wACQeJG1aChP9K/IMmdZ8DtESV1WyP3Bt4MwM6sj4NMxMYiqUWHQu4KYA/SYkIjOsm3BXYWMKFDwU2khjCQ4ELJUJ4SmClRArOCmSXGuKma0fYD5CbzHxFpCSGAhfAVSSUGDUk2BWZaff2g6GE15BsBQ9nwmpIGDiyHQddwNTMKkbZaf9fajXQca1EX44puJZUsnY0ObGmITE3GVLCbEhQUjGVt146j6oasWN+49Vph2w1pZ5EansNZqKBm1txbU57iRRcZ86RWMDdWtBJUHBHwoQPi1GV+JCbntmvok7iTX4/Up9mgyTc/FJYDTcndgH/AA5A/CHsyEkVAAAAAElFTkSuQmCC);
1193 .reveal .overlay header a.external .icon {
1194 background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAcElEQVRYR+2WSQoAIQwEzf8f7XiOMkUQxUPlGkM3hVmiQfQR9GYnH1SsAQlI4DiBqkCMoNb9y2e90IAEJPAcgdznU9+engMaeJ7Azh5Y1U67gAho4DqBqmB1buAf0MB1AlVBek83ZPkmJMGc1wAR+AAqod/B97TRpQAAAABJRU5ErkJggg==);
1197 .reveal .overlay .viewport {
1206 .reveal .overlay.overlay-preview .viewport iframe {
1215 transition: all 0.3s ease;
1218 .reveal .overlay.overlay-preview.loaded .viewport iframe {
1220 visibility: visible;
1223 .reveal .overlay.overlay-preview.loaded .spinner {
1226 transform: scale(0.2);
1229 .reveal .overlay.overlay-help .viewport {
1234 .reveal .overlay.overlay-help .viewport .viewport-inner {
1237 padding: 20px 20px 80px 20px;
1239 letter-spacing: normal;
1242 .reveal .overlay.overlay-help .viewport .viewport-inner .title {
1246 .reveal .overlay.overlay-help .viewport .viewport-inner table {
1247 border: 1px solid #fff;
1248 border-collapse: collapse;
1252 .reveal .overlay.overlay-help .viewport .viewport-inner table th,
1253 .reveal .overlay.overlay-help .viewport .viewport-inner table td {
1256 border: 1px solid #fff;
1257 vertical-align: middle;
1260 .reveal .overlay.overlay-help .viewport .viewport-inner table th {
1262 padding-bottom: 20px;
1267 /*********************************************
1268 * PLAYBACK COMPONENT
1269 *********************************************/
1277 transition: all 400ms ease;
1280 .reveal.overview .playback {
1286 /*********************************************
1288 *********************************************/
1291 display: inline-block;
1295 vertical-align: top;
1297 perspective-origin: 50% 50%;
1299 .reveal .roll:hover {
1303 .reveal .roll span {
1308 pointer-events: none;
1309 transition: all 400ms ease;
1310 transform-origin: 50% 0%;
1311 transform-style: preserve-3d;
1312 backface-visibility: hidden;
1314 .reveal .roll:hover span {
1315 background: rgba(0,0,0,0.5);
1316 transform: translate3d( 0px, 0px, -45px ) rotateX( 90deg );
1318 .reveal .roll span:after {
1319 content: attr(data-title);
1326 backface-visibility: hidden;
1327 transform-origin: 50% 0%;
1328 transform: translate3d( 0px, 110%, 0px ) rotateX( -90deg );
1332 /*********************************************
1334 *********************************************/
1336 // Hide on-page notes
1337 .reveal aside.notes {
1341 // An interface element that can optionally be used to show the
1342 // speaker notes to all viewers, on top of the presentation
1343 .reveal .speaker-notes {
1355 background-color: rgba(0,0,0,0.5);
1357 box-sizing: border-box;
1359 font-family: Helvetica, sans-serif;
1360 -webkit-overflow-scrolling: touch;
1363 .reveal .speaker-notes.visible:not(:empty) {
1367 @media screen and (max-width: 1024px) {
1368 .reveal .speaker-notes {
1373 @media screen and (max-width: 600px) {
1374 .reveal .speaker-notes {
1381 /*********************************************
1383 *********************************************/
1386 .zoomed .reveal *:before,
1387 .zoomed .reveal *:after {
1388 backface-visibility: visible !important;
1391 .zoomed .reveal .progress,
1392 .zoomed .reveal .controls {
1396 .zoomed .reveal .roll span {
1400 .zoomed .reveal .roll span:after {