reveal-ck 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/README.md +24 -129
- data/bin/reveal-ck +3 -2
- data/lib/reveal-ck.rb +1 -1
- data/lib/reveal-ck/presentation_builder.rb +5 -5
- data/lib/reveal-ck/template_processor.rb +29 -0
- data/lib/reveal-ck/version.rb +1 -1
- data/reveal.js/Gruntfile.js +6 -2
- data/reveal.js/README.md +139 -31
- data/reveal.js/css/print/paper.css +1 -1
- data/reveal.js/css/print/pdf.css +1 -1
- data/reveal.js/css/reveal.css +134 -88
- data/reveal.js/css/reveal.min.css +1 -1
- data/reveal.js/css/theme/template/settings.scss +1 -0
- data/reveal.js/css/theme/template/theme.scss +1 -1
- data/reveal.js/index.html +7 -6
- data/reveal.js/js/reveal.js +496 -299
- data/reveal.js/js/reveal.min.js +2 -2
- data/reveal.js/lib/css/zenburn.css +16 -17
- data/reveal.js/package.json +10 -9
- data/reveal.js/plugin/leap/leap.js +157 -0
- data/reveal.js/plugin/markdown/example.html +3 -2
- data/reveal.js/plugin/markdown/example.md +2 -0
- data/reveal.js/plugin/markdown/markdown.js +273 -143
- data/reveal.js/plugin/math/math.js +64 -0
- data/reveal.js/plugin/notes/notes.html +27 -17
- data/reveal.js/plugin/notes/notes.js +25 -47
- data/reveal.js/{examples → test/examples}/assets/image1.png +0 -0
- data/reveal.js/{examples → test/examples}/assets/image2.png +0 -0
- data/reveal.js/{examples → test/examples}/barebones.html +3 -3
- data/reveal.js/{examples → test/examples}/embedded-media.html +4 -4
- data/reveal.js/test/examples/math.html +185 -0
- data/reveal.js/{examples → test/examples}/slide-backgrounds.html +4 -4
- data/reveal.js/test/qunit-1.12.0.css +244 -0
- data/reveal.js/test/qunit-1.12.0.js +2212 -0
- data/reveal.js/test/test-markdown.html +52 -0
- data/reveal.js/test/test-markdown.js +15 -0
- data/reveal.js/test/test.html +62 -0
- data/reveal.js/test/test.js +353 -0
- data/spec/data/haml/basic.haml +2 -2
- data/spec/data/html/converted_basic_slim.html +10 -0
- data/spec/data/slim/basic.slim +5 -0
- data/spec/lib/reveal-ck/template_processor_spec.rb +29 -0
- metadata +50 -9
- data/lib/reveal-ck/haml_processor.rb +0 -26
- data/spec/lib/reveal-ck/haml_processor_spec.rb +0 -40
@@ -49,7 +49,7 @@ body, p, td, li, div, a {
|
|
49
49
|
}
|
50
50
|
|
51
51
|
/* SECTION 4: Set heading font face, sizes, and color.
|
52
|
-
|
52
|
+
Differentiate your headings from your body text.
|
53
53
|
Perhaps use a large sans-serif for distinction. */
|
54
54
|
h1,h2,h3,h4,h5,h6 {
|
55
55
|
color: #000!important;
|
data/reveal.js/css/print/pdf.css
CHANGED
@@ -56,7 +56,7 @@ body, p, td, li, div {
|
|
56
56
|
}
|
57
57
|
|
58
58
|
/* SECTION 4: Set heading font face, sizes, and color.
|
59
|
-
|
59
|
+
Differentiate your headings from your body text.
|
60
60
|
Perhaps use a large sans-serif for distinction. */
|
61
61
|
h1,h2,h3,h4,h5,h6 {
|
62
62
|
text-shadow: 0 0 0 #000 !important;
|
data/reveal.js/css/reveal.css
CHANGED
@@ -205,6 +205,10 @@ body {
|
|
205
205
|
font-style: italic;
|
206
206
|
}
|
207
207
|
|
208
|
+
.reveal iframe {
|
209
|
+
z-index: 1;
|
210
|
+
}
|
211
|
+
|
208
212
|
/* Ensure certain elements are never larger than the slide itself */
|
209
213
|
.reveal img,
|
210
214
|
.reveal video,
|
@@ -314,6 +318,14 @@ body {
|
|
314
318
|
max-height: 400px;
|
315
319
|
word-wrap: normal;
|
316
320
|
}
|
321
|
+
.reveal pre.stretch code {
|
322
|
+
height: 100%;
|
323
|
+
max-height: 100%;
|
324
|
+
|
325
|
+
-webkit-box-sizing: border-box;
|
326
|
+
-moz-box-sizing: border-box;
|
327
|
+
box-sizing: border-box;
|
328
|
+
}
|
317
329
|
|
318
330
|
.reveal table th,
|
319
331
|
.reveal table td {
|
@@ -343,6 +355,11 @@ body {
|
|
343
355
|
vertical-align: top;
|
344
356
|
}
|
345
357
|
|
358
|
+
.reveal .stretch {
|
359
|
+
max-width: none;
|
360
|
+
max-height: none;
|
361
|
+
}
|
362
|
+
|
346
363
|
|
347
364
|
/*********************************************
|
348
365
|
* CONTROLS
|
@@ -460,90 +477,6 @@ body {
|
|
460
477
|
}
|
461
478
|
|
462
479
|
|
463
|
-
/*********************************************
|
464
|
-
* ROLLING LINKS
|
465
|
-
*********************************************/
|
466
|
-
|
467
|
-
.reveal .roll {
|
468
|
-
display: inline-block;
|
469
|
-
line-height: 1.2;
|
470
|
-
overflow: hidden;
|
471
|
-
|
472
|
-
vertical-align: top;
|
473
|
-
|
474
|
-
-webkit-perspective: 400px;
|
475
|
-
-moz-perspective: 400px;
|
476
|
-
-ms-perspective: 400px;
|
477
|
-
perspective: 400px;
|
478
|
-
|
479
|
-
-webkit-perspective-origin: 50% 50%;
|
480
|
-
-moz-perspective-origin: 50% 50%;
|
481
|
-
-ms-perspective-origin: 50% 50%;
|
482
|
-
perspective-origin: 50% 50%;
|
483
|
-
}
|
484
|
-
.reveal .roll:hover {
|
485
|
-
background: none;
|
486
|
-
text-shadow: none;
|
487
|
-
}
|
488
|
-
.reveal .roll span {
|
489
|
-
display: block;
|
490
|
-
position: relative;
|
491
|
-
padding: 0 2px;
|
492
|
-
|
493
|
-
pointer-events: none;
|
494
|
-
|
495
|
-
-webkit-transition: all 400ms ease;
|
496
|
-
-moz-transition: all 400ms ease;
|
497
|
-
-ms-transition: all 400ms ease;
|
498
|
-
transition: all 400ms ease;
|
499
|
-
|
500
|
-
-webkit-transform-origin: 50% 0%;
|
501
|
-
-moz-transform-origin: 50% 0%;
|
502
|
-
-ms-transform-origin: 50% 0%;
|
503
|
-
transform-origin: 50% 0%;
|
504
|
-
|
505
|
-
-webkit-transform-style: preserve-3d;
|
506
|
-
-moz-transform-style: preserve-3d;
|
507
|
-
-ms-transform-style: preserve-3d;
|
508
|
-
transform-style: preserve-3d;
|
509
|
-
|
510
|
-
-webkit-backface-visibility: hidden;
|
511
|
-
-moz-backface-visibility: hidden;
|
512
|
-
backface-visibility: hidden;
|
513
|
-
}
|
514
|
-
.reveal .roll:hover span {
|
515
|
-
background: rgba(0,0,0,0.5);
|
516
|
-
|
517
|
-
-webkit-transform: translate3d( 0px, 0px, -45px ) rotateX( 90deg );
|
518
|
-
-moz-transform: translate3d( 0px, 0px, -45px ) rotateX( 90deg );
|
519
|
-
-ms-transform: translate3d( 0px, 0px, -45px ) rotateX( 90deg );
|
520
|
-
transform: translate3d( 0px, 0px, -45px ) rotateX( 90deg );
|
521
|
-
}
|
522
|
-
.reveal .roll span:after {
|
523
|
-
content: attr(data-title);
|
524
|
-
|
525
|
-
display: block;
|
526
|
-
position: absolute;
|
527
|
-
left: 0;
|
528
|
-
top: 0;
|
529
|
-
padding: 0 2px;
|
530
|
-
|
531
|
-
-webkit-backface-visibility: hidden;
|
532
|
-
-moz-backface-visibility: hidden;
|
533
|
-
backface-visibility: hidden;
|
534
|
-
|
535
|
-
-webkit-transform-origin: 50% 0%;
|
536
|
-
-moz-transform-origin: 50% 0%;
|
537
|
-
-ms-transform-origin: 50% 0%;
|
538
|
-
transform-origin: 50% 0%;
|
539
|
-
|
540
|
-
-webkit-transform: translate3d( 0px, 110%, 0px ) rotateX( -90deg );
|
541
|
-
-moz-transform: translate3d( 0px, 110%, 0px ) rotateX( -90deg );
|
542
|
-
-ms-transform: translate3d( 0px, 110%, 0px ) rotateX( -90deg );
|
543
|
-
transform: translate3d( 0px, 110%, 0px ) rotateX( -90deg );
|
544
|
-
}
|
545
|
-
|
546
|
-
|
547
480
|
/*********************************************
|
548
481
|
* SLIDES
|
549
482
|
*********************************************/
|
@@ -584,6 +517,10 @@ body {
|
|
584
517
|
perspective-origin: 0px -100px;
|
585
518
|
}
|
586
519
|
|
520
|
+
.reveal .slides>section {
|
521
|
+
-ms-perspective: 600px;
|
522
|
+
}
|
523
|
+
|
587
524
|
.reveal .slides>section,
|
588
525
|
.reveal .slides>section>section {
|
589
526
|
display: none;
|
@@ -673,6 +610,19 @@ body {
|
|
673
610
|
min-height: auto !important;
|
674
611
|
}
|
675
612
|
|
613
|
+
/* Don't allow interaction with invisible slides */
|
614
|
+
.reveal .slides>section.future,
|
615
|
+
.reveal .slides>section>section.future,
|
616
|
+
.reveal .slides>section.past,
|
617
|
+
.reveal .slides>section>section.past {
|
618
|
+
pointer-events: none;
|
619
|
+
}
|
620
|
+
|
621
|
+
.reveal.overview .slides>section,
|
622
|
+
.reveal.overview .slides>section>section {
|
623
|
+
pointer-events: auto;
|
624
|
+
}
|
625
|
+
|
676
626
|
|
677
627
|
|
678
628
|
/*********************************************
|
@@ -1104,8 +1054,8 @@ body {
|
|
1104
1054
|
|
1105
1055
|
.reveal.fade.overview .slides section,
|
1106
1056
|
.reveal.fade.overview .slides>section>section,
|
1107
|
-
.reveal.fade.
|
1108
|
-
.reveal.fade.
|
1057
|
+
.reveal.fade.overview-deactivating .slides section,
|
1058
|
+
.reveal.fade.overview-deactivating .slides>section>section {
|
1109
1059
|
-webkit-transition: none;
|
1110
1060
|
-moz-transition: none;
|
1111
1061
|
-ms-transition: none;
|
@@ -1152,9 +1102,10 @@ body {
|
|
1152
1102
|
|
1153
1103
|
.reveal.overview .slides section {
|
1154
1104
|
height: 600px;
|
1105
|
+
top: -300px !important;
|
1155
1106
|
overflow: hidden;
|
1156
|
-
opacity: 1!important;
|
1157
|
-
visibility: visible!important;
|
1107
|
+
opacity: 1 !important;
|
1108
|
+
visibility: visible !important;
|
1158
1109
|
cursor: pointer;
|
1159
1110
|
background: rgba(0,0,0,0.1);
|
1160
1111
|
}
|
@@ -1177,6 +1128,7 @@ body {
|
|
1177
1128
|
}
|
1178
1129
|
.reveal.overview .slides>section.stack {
|
1179
1130
|
padding: 0;
|
1131
|
+
top: 0 !important;
|
1180
1132
|
background: none;
|
1181
1133
|
overflow: visible;
|
1182
1134
|
}
|
@@ -1345,6 +1297,16 @@ body {
|
|
1345
1297
|
visibility: visible !important;
|
1346
1298
|
}
|
1347
1299
|
|
1300
|
+
/* Immediate transition style */
|
1301
|
+
.reveal[data-background-transition=none]>.backgrounds .slide-background,
|
1302
|
+
.reveal>.backgrounds .slide-background[data-background-transition=none] {
|
1303
|
+
-webkit-transition: none;
|
1304
|
+
-moz-transition: none;
|
1305
|
+
-ms-transition: none;
|
1306
|
+
-o-transition: none;
|
1307
|
+
transition: none;
|
1308
|
+
}
|
1309
|
+
|
1348
1310
|
/* Linear sliding transition style */
|
1349
1311
|
.reveal[data-background-transition=slide]>.backgrounds .slide-background,
|
1350
1312
|
.reveal>.backgrounds .slide-background[data-background-transition=slide] {
|
@@ -1564,6 +1526,90 @@ body {
|
|
1564
1526
|
}
|
1565
1527
|
|
1566
1528
|
|
1529
|
+
/*********************************************
|
1530
|
+
* ROLLING LINKS
|
1531
|
+
*********************************************/
|
1532
|
+
|
1533
|
+
.reveal .roll {
|
1534
|
+
display: inline-block;
|
1535
|
+
line-height: 1.2;
|
1536
|
+
overflow: hidden;
|
1537
|
+
|
1538
|
+
vertical-align: top;
|
1539
|
+
|
1540
|
+
-webkit-perspective: 400px;
|
1541
|
+
-moz-perspective: 400px;
|
1542
|
+
-ms-perspective: 400px;
|
1543
|
+
perspective: 400px;
|
1544
|
+
|
1545
|
+
-webkit-perspective-origin: 50% 50%;
|
1546
|
+
-moz-perspective-origin: 50% 50%;
|
1547
|
+
-ms-perspective-origin: 50% 50%;
|
1548
|
+
perspective-origin: 50% 50%;
|
1549
|
+
}
|
1550
|
+
.reveal .roll:hover {
|
1551
|
+
background: none;
|
1552
|
+
text-shadow: none;
|
1553
|
+
}
|
1554
|
+
.reveal .roll span {
|
1555
|
+
display: block;
|
1556
|
+
position: relative;
|
1557
|
+
padding: 0 2px;
|
1558
|
+
|
1559
|
+
pointer-events: none;
|
1560
|
+
|
1561
|
+
-webkit-transition: all 400ms ease;
|
1562
|
+
-moz-transition: all 400ms ease;
|
1563
|
+
-ms-transition: all 400ms ease;
|
1564
|
+
transition: all 400ms ease;
|
1565
|
+
|
1566
|
+
-webkit-transform-origin: 50% 0%;
|
1567
|
+
-moz-transform-origin: 50% 0%;
|
1568
|
+
-ms-transform-origin: 50% 0%;
|
1569
|
+
transform-origin: 50% 0%;
|
1570
|
+
|
1571
|
+
-webkit-transform-style: preserve-3d;
|
1572
|
+
-moz-transform-style: preserve-3d;
|
1573
|
+
-ms-transform-style: preserve-3d;
|
1574
|
+
transform-style: preserve-3d;
|
1575
|
+
|
1576
|
+
-webkit-backface-visibility: hidden;
|
1577
|
+
-moz-backface-visibility: hidden;
|
1578
|
+
backface-visibility: hidden;
|
1579
|
+
}
|
1580
|
+
.reveal .roll:hover span {
|
1581
|
+
background: rgba(0,0,0,0.5);
|
1582
|
+
|
1583
|
+
-webkit-transform: translate3d( 0px, 0px, -45px ) rotateX( 90deg );
|
1584
|
+
-moz-transform: translate3d( 0px, 0px, -45px ) rotateX( 90deg );
|
1585
|
+
-ms-transform: translate3d( 0px, 0px, -45px ) rotateX( 90deg );
|
1586
|
+
transform: translate3d( 0px, 0px, -45px ) rotateX( 90deg );
|
1587
|
+
}
|
1588
|
+
.reveal .roll span:after {
|
1589
|
+
content: attr(data-title);
|
1590
|
+
|
1591
|
+
display: block;
|
1592
|
+
position: absolute;
|
1593
|
+
left: 0;
|
1594
|
+
top: 0;
|
1595
|
+
padding: 0 2px;
|
1596
|
+
|
1597
|
+
-webkit-backface-visibility: hidden;
|
1598
|
+
-moz-backface-visibility: hidden;
|
1599
|
+
backface-visibility: hidden;
|
1600
|
+
|
1601
|
+
-webkit-transform-origin: 50% 0%;
|
1602
|
+
-moz-transform-origin: 50% 0%;
|
1603
|
+
-ms-transform-origin: 50% 0%;
|
1604
|
+
transform-origin: 50% 0%;
|
1605
|
+
|
1606
|
+
-webkit-transform: translate3d( 0px, 110%, 0px ) rotateX( -90deg );
|
1607
|
+
-moz-transform: translate3d( 0px, 110%, 0px ) rotateX( -90deg );
|
1608
|
+
-ms-transform: translate3d( 0px, 110%, 0px ) rotateX( -90deg );
|
1609
|
+
transform: translate3d( 0px, 110%, 0px ) rotateX( -90deg );
|
1610
|
+
}
|
1611
|
+
|
1612
|
+
|
1567
1613
|
/*********************************************
|
1568
1614
|
* SPEAKER NOTES
|
1569
1615
|
*********************************************/
|
@@ -4,4 +4,4 @@
|
|
4
4
|
* MIT licensed
|
5
5
|
*
|
6
6
|
* Copyright (C) 2013 Hakim El Hattab, http://hakim.se
|
7
|
-
*/ html,body,.reveal div,.reveal span,.reveal applet,.reveal object,.reveal iframe,.reveal h1,.reveal h2,.reveal h3,.reveal h4,.reveal h5,.reveal h6,.reveal p,.reveal blockquote,.reveal pre,.reveal a,.reveal abbr,.reveal acronym,.reveal address,.reveal big,.reveal cite,.reveal code,.reveal del,.reveal dfn,.reveal em,.reveal img,.reveal ins,.reveal kbd,.reveal q,.reveal s,.reveal samp,.reveal small,.reveal strike,.reveal strong,.reveal sub,.reveal sup,.reveal tt,.reveal var,.reveal b,.reveal u,.reveal i,.reveal center,.reveal dl,.reveal dt,.reveal dd,.reveal ol,.reveal ul,.reveal li,.reveal fieldset,.reveal form,.reveal label,.reveal legend,.reveal table,.reveal caption,.reveal tbody,.reveal tfoot,.reveal thead,.reveal tr,.reveal th,.reveal td,.reveal article,.reveal aside,.reveal canvas,.reveal details,.reveal embed,.reveal figure,.reveal figcaption,.reveal footer,.reveal header,.reveal hgroup,.reveal menu,.reveal nav,.reveal output,.reveal ruby,.reveal section,.reveal summary,.reveal time,.reveal mark,.reveal audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}.reveal article,.reveal aside,.reveal details,.reveal figcaption,.reveal figure,.reveal footer,.reveal header,.reveal hgroup,.reveal menu,.reveal nav,.reveal section{display:block}html,body{width:100%;height:100%;overflow:hidden}body{position:relative;line-height:1}::selection{background:#FF5E99;color:#fff;text-shadow:none}.reveal h1,.reveal h2,.reveal h3,.reveal h4,.reveal h5,.reveal h6{-webkit-hyphens:auto;-moz-hyphens:auto;hyphens:auto;word-wrap:break-word;line-height:1}.reveal h1{font-size:3.77em}.reveal h2{font-size:2.11em}.reveal h3{font-size:1.55em}.reveal h4{font-size:1em}.reveal .slides section .fragment{opacity:0;-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-ms-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}.reveal .slides section .fragment.visible{opacity:1}.reveal .slides section .fragment.grow{opacity:1}.reveal .slides section .fragment.grow.visible{-webkit-transform:scale(1.3);-moz-transform:scale(1.3);-ms-transform:scale(1.3);-o-transform:scale(1.3);transform:scale(1.3)}.reveal .slides section .fragment.shrink{opacity:1}.reveal .slides section .fragment.shrink.visible{-webkit-transform:scale(0.7);-moz-transform:scale(0.7);-ms-transform:scale(0.7);-o-transform:scale(0.7);transform:scale(0.7)}.reveal .slides section .fragment.zoom-in{opacity:0;-webkit-transform:scale(0.1);-moz-transform:scale(0.1);-ms-transform:scale(0.1);-o-transform:scale(0.1);transform:scale(0.1)}.reveal .slides section .fragment.zoom-in.visible{opacity:1;-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}.reveal .slides section .fragment.roll-in{opacity:0;-webkit-transform:rotateX(90deg);-moz-transform:rotateX(90deg);-ms-transform:rotateX(90deg);-o-transform:rotateX(90deg);transform:rotateX(90deg)}.reveal .slides section .fragment.roll-in.visible{opacity:1;-webkit-transform:rotateX(0);-moz-transform:rotateX(0);-ms-transform:rotateX(0);-o-transform:rotateX(0);transform:rotateX(0)}.reveal .slides section .fragment.fade-out{opacity:1}.reveal .slides section .fragment.fade-out.visible{opacity:0}.reveal .slides section .fragment.semi-fade-out{opacity:1}.reveal .slides section .fragment.semi-fade-out.visible{opacity:.5}.reveal .slides section .fragment.highlight-red,.reveal .slides section .fragment.highlight-green,.reveal .slides section .fragment.highlight-blue{opacity:1}.reveal .slides section .fragment.highlight-red.visible{color:#ff2c2d}.reveal .slides section .fragment.highlight-green.visible{color:#17ff2e}.reveal .slides section .fragment.highlight-blue.visible{color:#1b91ff}.reveal:after{content:'';font-style:italic}.reveal img,.reveal video,.reveal iframe{max-width:95%;max-height:95%}.reveal a{position:relative}.reveal strong,.reveal b{font-weight:700}.reveal em,.reveal i{font-style:italic}.reveal ol,.reveal ul{display:inline-block;text-align:left;margin:0 0 0 1em}.reveal ol{list-style-type:decimal}.reveal ul{list-style-type:disc}.reveal ul ul{list-style-type:square}.reveal ul ul ul{list-style-type:circle}.reveal ul ul,.reveal ul ol,.reveal ol ol,.reveal ol ul{display:block;margin-left:40px}.reveal p{margin-bottom:10px;line-height:1.2em}.reveal q,.reveal blockquote{quotes:none}.reveal blockquote{display:block;position:relative;width:70%;margin:5px auto;padding:5px;font-style:italic;background:rgba(255,255,255,.05);box-shadow:0 0 2px rgba(0,0,0,.2)}.reveal blockquote p:first-child,.reveal blockquote p:last-child{display:inline-block}.reveal q{font-style:italic}.reveal pre{display:block;position:relative;width:90%;margin:15px auto;text-align:left;font-size:.55em;font-family:monospace;line-height:1.2em;word-wrap:break-word;box-shadow:0 0 6px rgba(0,0,0,.3)}.reveal code{font-family:monospace}.reveal pre code{padding:5px;overflow:auto;max-height:400px;word-wrap:normal}.reveal table th,.reveal table td{text-align:left;padding-right:.3em}.reveal table th{text-shadow:#fff 1px 1px 2px}.reveal sup{vertical-align:super}.reveal sub{vertical-align:sub}.reveal small{display:inline-block;font-size:.6em;line-height:1.2em;vertical-align:top}.reveal small *{vertical-align:top}.reveal .controls{display:none;position:fixed;width:110px;height:110px;z-index:30;right:10px;bottom:10px}.reveal .controls div{position:absolute;opacity:.05;width:0;height:0;border:12px solid transparent;-moz-transform:scale(.9999);-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-ms-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}.reveal .controls div.enabled{opacity:.7;cursor:pointer}.reveal .controls div.enabled:active{margin-top:1px}.reveal .controls div.navigate-left{top:42px;border-right-width:22px;border-right-color:#eee}.reveal .controls div.navigate-left.fragmented{opacity:.3}.reveal .controls div.navigate-right{left:74px;top:42px;border-left-width:22px;border-left-color:#eee}.reveal .controls div.navigate-right.fragmented{opacity:.3}.reveal .controls div.navigate-up{left:42px;border-bottom-width:22px;border-bottom-color:#eee}.reveal .controls div.navigate-up.fragmented{opacity:.3}.reveal .controls div.navigate-down{left:42px;top:74px;border-top-width:22px;border-top-color:#eee}.reveal .controls div.navigate-down.fragmented{opacity:.3}.reveal .progress{position:fixed;display:none;height:3px;width:100%;bottom:0;left:0;z-index:10}.reveal .progress:after{content:'';display:'block';position:absolute;height:20px;width:100%;top:-20px}.reveal .progress span{display:block;height:100%;width:0;-webkit-transition:width 800ms cubic-bezier(0.26,.86,.44,.985);-moz-transition:width 800ms cubic-bezier(0.26,.86,.44,.985);-ms-transition:width 800ms cubic-bezier(0.26,.86,.44,.985);-o-transition:width 800ms cubic-bezier(0.26,.86,.44,.985);transition:width 800ms cubic-bezier(0.26,.86,.44,.985)}.reveal .roll{display:inline-block;line-height:1.2;overflow:hidden;vertical-align:top;-webkit-perspective:400px;-moz-perspective:400px;-ms-perspective:400px;perspective:400px;-webkit-perspective-origin:50% 50%;-moz-perspective-origin:50% 50%;-ms-perspective-origin:50% 50%;perspective-origin:50% 50%}.reveal .roll:hover{background:0;text-shadow:none}.reveal .roll span{display:block;position:relative;padding:0 2px;pointer-events:none;-webkit-transition:all 400ms ease;-moz-transition:all 400ms ease;-ms-transition:all 400ms ease;transition:all 400ms ease;-webkit-transform-origin:50% 0;-moz-transform-origin:50% 0;-ms-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;-ms-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden}.reveal .roll:hover span{background:rgba(0,0,0,.5);-webkit-transform:translate3d(0px,0,-45px) rotateX(90deg);-moz-transform:translate3d(0px,0,-45px) rotateX(90deg);-ms-transform:translate3d(0px,0,-45px) rotateX(90deg);transform:translate3d(0px,0,-45px) rotateX(90deg)}.reveal .roll span:after{content:attr(data-title);display:block;position:absolute;left:0;top:0;padding:0 2px;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform-origin:50% 0;-moz-transform-origin:50% 0;-ms-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform:translate3d(0px,110%,0) rotateX(-90deg);-moz-transform:translate3d(0px,110%,0) rotateX(-90deg);-ms-transform:translate3d(0px,110%,0) rotateX(-90deg);transform:translate3d(0px,110%,0) rotateX(-90deg)}.reveal{position:relative;width:100%;height:100%;-ms-touch-action:none}.reveal .slides{position:absolute;width:100%;height:100%;left:50%;top:50%;overflow:visible;z-index:1;text-align:center;-webkit-transition:-webkit-perspective .4s ease;-moz-transition:-moz-perspective .4s ease;-ms-transition:-ms-perspective .4s ease;-o-transition:-o-perspective .4s ease;transition:perspective .4s ease;-webkit-perspective:600px;-moz-perspective:600px;-ms-perspective:600px;perspective:600px;-webkit-perspective-origin:0 -100px;-moz-perspective-origin:0 -100px;-ms-perspective-origin:0 -100px;perspective-origin:0 -100px}.reveal .slides>section,.reveal .slides>section>section{display:none;position:absolute;width:100%;padding:20px 0;z-index:10;line-height:1.2em;font-weight:400;-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;-ms-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transition:-webkit-transform-origin 800ms cubic-bezier(0.26,.86,.44,.985),-webkit-transform 800ms cubic-bezier(0.26,.86,.44,.985),visibility 800ms cubic-bezier(0.26,.86,.44,.985),opacity 800ms cubic-bezier(0.26,.86,.44,.985);-moz-transition:-moz-transform-origin 800ms cubic-bezier(0.26,.86,.44,.985),-moz-transform 800ms cubic-bezier(0.26,.86,.44,.985),visibility 800ms cubic-bezier(0.26,.86,.44,.985),opacity 800ms cubic-bezier(0.26,.86,.44,.985);-ms-transition:-ms-transform-origin 800ms cubic-bezier(0.26,.86,.44,.985),-ms-transform 800ms cubic-bezier(0.26,.86,.44,.985),visibility 800ms cubic-bezier(0.26,.86,.44,.985),opacity 800ms cubic-bezier(0.26,.86,.44,.985);-o-transition:-o-transform-origin 800ms cubic-bezier(0.26,.86,.44,.985),-o-transform 800ms cubic-bezier(0.26,.86,.44,.985),visibility 800ms cubic-bezier(0.26,.86,.44,.985),opacity 800ms cubic-bezier(0.26,.86,.44,.985);transition:transform-origin 800ms cubic-bezier(0.26,.86,.44,.985),transform 800ms cubic-bezier(0.26,.86,.44,.985),visibility 800ms cubic-bezier(0.26,.86,.44,.985),opacity 800ms cubic-bezier(0.26,.86,.44,.985)}.reveal[data-transition-speed=fast] .slides section{-webkit-transition-duration:400ms;-moz-transition-duration:400ms;-ms-transition-duration:400ms;transition-duration:400ms}.reveal[data-transition-speed=slow] .slides section{-webkit-transition-duration:1200ms;-moz-transition-duration:1200ms;-ms-transition-duration:1200ms;transition-duration:1200ms}.reveal .slides section[data-transition-speed=fast]{-webkit-transition-duration:400ms;-moz-transition-duration:400ms;-ms-transition-duration:400ms;transition-duration:400ms}.reveal .slides section[data-transition-speed=slow]{-webkit-transition-duration:1200ms;-moz-transition-duration:1200ms;-ms-transition-duration:1200ms;transition-duration:1200ms}.reveal .slides>section{left:-50%;top:-50%}.reveal .slides>section.stack{padding-top:0;padding-bottom:0}.reveal .slides>section.present,.reveal .slides>section>section.present{display:block;z-index:11;opacity:1}.reveal.center,.reveal.center .slides,.reveal.center .slides section{min-height:auto!important}.reveal .slides>section[data-transition=default].past,.reveal .slides>section.past{display:block;opacity:0;-webkit-transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0);-moz-transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0);transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0)}.reveal .slides>section[data-transition=default].future,.reveal .slides>section.future{display:block;opacity:0;-webkit-transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0);-moz-transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0);transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0)}.reveal .slides>section>section[data-transition=default].past,.reveal .slides>section>section.past{display:block;opacity:0;-webkit-transform:translate3d(0,-300px,0) rotateX(70deg) translate3d(0,-300px,0);-moz-transform:translate3d(0,-300px,0) rotateX(70deg) translate3d(0,-300px,0);-ms-transform:translate3d(0,-300px,0) rotateX(70deg) translate3d(0,-300px,0);transform:translate3d(0,-300px,0) rotateX(70deg) translate3d(0,-300px,0)}.reveal .slides>section>section[data-transition=default].future,.reveal .slides>section>section.future{display:block;opacity:0;-webkit-transform:translate3d(0,300px,0) rotateX(-70deg) translate3d(0,300px,0);-moz-transform:translate3d(0,300px,0) rotateX(-70deg) translate3d(0,300px,0);-ms-transform:translate3d(0,300px,0) rotateX(-70deg) translate3d(0,300px,0);transform:translate3d(0,300px,0) rotateX(-70deg) translate3d(0,300px,0)}.reveal .slides>section[data-transition=concave].past,.reveal.concave .slides>section.past{-webkit-transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0);-moz-transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0);transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0)}.reveal .slides>section[data-transition=concave].future,.reveal.concave .slides>section.future{-webkit-transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0);-moz-transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0);transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0)}.reveal .slides>section>section[data-transition=concave].past,.reveal.concave .slides>section>section.past{-webkit-transform:translate3d(0,-80%,0) rotateX(-70deg) translate3d(0,-80%,0);-moz-transform:translate3d(0,-80%,0) rotateX(-70deg) translate3d(0,-80%,0);-ms-transform:translate3d(0,-80%,0) rotateX(-70deg) translate3d(0,-80%,0);transform:translate3d(0,-80%,0) rotateX(-70deg) translate3d(0,-80%,0)}.reveal .slides>section>section[data-transition=concave].future,.reveal.concave .slides>section>section.future{-webkit-transform:translate3d(0,80%,0) rotateX(70deg) translate3d(0,80%,0);-moz-transform:translate3d(0,80%,0) rotateX(70deg) translate3d(0,80%,0);-ms-transform:translate3d(0,80%,0) rotateX(70deg) translate3d(0,80%,0);transform:translate3d(0,80%,0) rotateX(70deg) translate3d(0,80%,0)}.reveal .slides>section[data-transition=zoom].past,.reveal.zoom .slides>section.past{opacity:0;visibility:hidden;-webkit-transform:scale(16);-moz-transform:scale(16);-ms-transform:scale(16);-o-transform:scale(16);transform:scale(16)}.reveal .slides>section[data-transition=zoom].future,.reveal.zoom .slides>section.future{opacity:0;visibility:hidden;-webkit-transform:scale(0.2);-moz-transform:scale(0.2);-ms-transform:scale(0.2);-o-transform:scale(0.2);transform:scale(0.2)}.reveal .slides>section>section[data-transition=zoom].past,.reveal.zoom .slides>section>section.past{-webkit-transform:translate(0,-150%);-moz-transform:translate(0,-150%);-ms-transform:translate(0,-150%);-o-transform:translate(0,-150%);transform:translate(0,-150%)}.reveal .slides>section>section[data-transition=zoom].future,.reveal.zoom .slides>section>section.future{-webkit-transform:translate(0,150%);-moz-transform:translate(0,150%);-ms-transform:translate(0,150%);-o-transform:translate(0,150%);transform:translate(0,150%)}.reveal.linear section{-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden}.reveal .slides>section[data-transition=linear].past,.reveal.linear .slides>section.past{-webkit-transform:translate(-150%,0);-moz-transform:translate(-150%,0);-ms-transform:translate(-150%,0);-o-transform:translate(-150%,0);transform:translate(-150%,0)}.reveal .slides>section[data-transition=linear].future,.reveal.linear .slides>section.future{-webkit-transform:translate(150%,0);-moz-transform:translate(150%,0);-ms-transform:translate(150%,0);-o-transform:translate(150%,0);transform:translate(150%,0)}.reveal .slides>section>section[data-transition=linear].past,.reveal.linear .slides>section>section.past{-webkit-transform:translate(0,-150%);-moz-transform:translate(0,-150%);-ms-transform:translate(0,-150%);-o-transform:translate(0,-150%);transform:translate(0,-150%)}.reveal .slides>section>section[data-transition=linear].future,.reveal.linear .slides>section>section.future{-webkit-transform:translate(0,150%);-moz-transform:translate(0,150%);-ms-transform:translate(0,150%);-o-transform:translate(0,150%);transform:translate(0,150%)}.reveal.cube .slides{-webkit-perspective:1300px;-moz-perspective:1300px;-ms-perspective:1300px;perspective:1300px}.reveal.cube .slides section{padding:30px;min-height:700px;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.reveal.center.cube .slides section{min-height:auto}.reveal.cube .slides section:not(.stack):before{content:'';position:absolute;display:block;width:100%;height:100%;left:0;top:0;background:rgba(0,0,0,.1);border-radius:4px;-webkit-transform:translateZ(-20px);-moz-transform:translateZ(-20px);-ms-transform:translateZ(-20px);-o-transform:translateZ(-20px);transform:translateZ(-20px)}.reveal.cube .slides section:not(.stack):after{content:'';position:absolute;display:block;width:90%;height:30px;left:5%;bottom:0;background:0;z-index:1;border-radius:4px;box-shadow:0 95px 25px rgba(0,0,0,.2);-webkit-transform:translateZ(-90px) rotateX(65deg);-moz-transform:translateZ(-90px) rotateX(65deg);-ms-transform:translateZ(-90px) rotateX(65deg);-o-transform:translateZ(-90px) rotateX(65deg);transform:translateZ(-90px) rotateX(65deg)}.reveal.cube .slides>section.stack{padding:0;background:0}.reveal.cube .slides>section.past{-webkit-transform-origin:100% 0;-moz-transform-origin:100% 0;-ms-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:translate3d(-100%,0,0) rotateY(-90deg);-moz-transform:translate3d(-100%,0,0) rotateY(-90deg);-ms-transform:translate3d(-100%,0,0) rotateY(-90deg);transform:translate3d(-100%,0,0) rotateY(-90deg)}.reveal.cube .slides>section.future{-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translate3d(100%,0,0) rotateY(90deg);-moz-transform:translate3d(100%,0,0) rotateY(90deg);-ms-transform:translate3d(100%,0,0) rotateY(90deg);transform:translate3d(100%,0,0) rotateY(90deg)}.reveal.cube .slides>section>section.past{-webkit-transform-origin:0 100%;-moz-transform-origin:0 100%;-ms-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:translate3d(0,-100%,0) rotateX(90deg);-moz-transform:translate3d(0,-100%,0) rotateX(90deg);-ms-transform:translate3d(0,-100%,0) rotateX(90deg);transform:translate3d(0,-100%,0) rotateX(90deg)}.reveal.cube .slides>section>section.future{-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translate3d(0,100%,0) rotateX(-90deg);-moz-transform:translate3d(0,100%,0) rotateX(-90deg);-ms-transform:translate3d(0,100%,0) rotateX(-90deg);transform:translate3d(0,100%,0) rotateX(-90deg)}.reveal.page .slides{-webkit-perspective-origin:0 50%;-moz-perspective-origin:0 50%;-ms-perspective-origin:0 50%;perspective-origin:0 50%;-webkit-perspective:3000px;-moz-perspective:3000px;-ms-perspective:3000px;perspective:3000px}.reveal.page .slides section{padding:30px;min-height:700px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.reveal.page .slides section.past{z-index:12}.reveal.page .slides section:not(.stack):before{content:'';position:absolute;display:block;width:100%;height:100%;left:0;top:0;background:rgba(0,0,0,.1);-webkit-transform:translateZ(-20px);-moz-transform:translateZ(-20px);-ms-transform:translateZ(-20px);-o-transform:translateZ(-20px);transform:translateZ(-20px)}.reveal.page .slides section:not(.stack):after{content:'';position:absolute;display:block;width:90%;height:30px;left:5%;bottom:0;background:0;z-index:1;border-radius:4px;box-shadow:0 95px 25px rgba(0,0,0,.2);-webkit-transform:translateZ(-90px) rotateX(65deg)}.reveal.page .slides>section.stack{padding:0;background:0}.reveal.page .slides>section.past{-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translate3d(-40%,0,0) rotateY(-80deg);-moz-transform:translate3d(-40%,0,0) rotateY(-80deg);-ms-transform:translate3d(-40%,0,0) rotateY(-80deg);transform:translate3d(-40%,0,0) rotateY(-80deg)}.reveal.page .slides>section.future{-webkit-transform-origin:100% 0;-moz-transform-origin:100% 0;-ms-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.reveal.page .slides>section>section.past{-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translate3d(0,-40%,0) rotateX(80deg);-moz-transform:translate3d(0,-40%,0) rotateX(80deg);-ms-transform:translate3d(0,-40%,0) rotateX(80deg);transform:translate3d(0,-40%,0) rotateX(80deg)}.reveal.page .slides>section>section.future{-webkit-transform-origin:0 100%;-moz-transform-origin:0 100%;-ms-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.reveal .slides section[data-transition=fade],.reveal.fade .slides section,.reveal.fade .slides>section>section{-webkit-transform:none;-moz-transform:none;-ms-transform:none;-o-transform:none;transform:none;-webkit-transition:opacity .5s;-moz-transition:opacity .5s;-ms-transition:opacity .5s;-o-transition:opacity .5s;transition:opacity .5s}.reveal.fade.overview .slides section,.reveal.fade.overview .slides>section>section,.reveal.fade.exit-overview .slides section,.reveal.fade.exit-overview .slides>section>section{-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none}.reveal .slides section[data-transition=none],.reveal.none .slides section{-webkit-transform:none;-moz-transform:none;-ms-transform:none;-o-transform:none;transform:none;-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none}.reveal.overview .slides{-webkit-perspective-origin:0 0;-moz-perspective-origin:0 0;-ms-perspective-origin:0 0;perspective-origin:0 0;-webkit-perspective:700px;-moz-perspective:700px;-ms-perspective:700px;perspective:700px}.reveal.overview .slides section{height:600px;overflow:hidden;opacity:1!important;visibility:visible!important;cursor:pointer;background:rgba(0,0,0,.1)}.reveal.overview .slides section .fragment{opacity:1}.reveal.overview .slides section:after,.reveal.overview .slides section:before{display:none!important}.reveal.overview .slides section>section{opacity:1;cursor:pointer}.reveal.overview .slides section:hover{background:rgba(0,0,0,.3)}.reveal.overview .slides section.present{background:rgba(0,0,0,.3)}.reveal.overview .slides>section.stack{padding:0;background:0;overflow:visible}.reveal .pause-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#000;visibility:hidden;opacity:0;z-index:100;-webkit-transition:all 1s ease;-moz-transition:all 1s ease;-ms-transition:all 1s ease;-o-transition:all 1s ease;transition:all 1s ease}.reveal.paused .pause-overlay{visibility:visible;opacity:1}.no-transforms{overflow-y:auto}.no-transforms .reveal .slides{position:relative;width:80%;height:auto!important;top:0;left:50%;margin:0;text-align:center}.no-transforms .reveal .controls,.no-transforms .reveal .progress{display:none!important}.no-transforms .reveal .slides section{display:block!important;opacity:1!important;position:relative!important;height:auto;min-height:auto;top:0;left:-50%;margin:70px 0;-webkit-transform:none;-moz-transform:none;-ms-transform:none;-o-transform:none;transform:none}.no-transforms .reveal .slides section section{left:0}.reveal .no-transition,.reveal .no-transition *{-webkit-transition:none!important;-moz-transition:none!important;-ms-transition:none!important;-o-transition:none!important;transition:none!important}.reveal .state-background{position:absolute;width:100%;height:100%;background:rgba(0,0,0,0);-webkit-transition:background 800ms ease;-moz-transition:background 800ms ease;-ms-transition:background 800ms ease;-o-transition:background 800ms ease;transition:background 800ms ease}.alert .reveal .state-background{background:rgba(200,50,30,.6)}.soothe .reveal .state-background{background:rgba(50,200,90,.4)}.blackout .reveal .state-background{background:rgba(0,0,0,.6)}.whiteout .reveal .state-background{background:rgba(255,255,255,.6)}.cobalt .reveal .state-background{background:rgba(22,152,213,.6)}.mint .reveal .state-background{background:rgba(22,213,75,.6)}.submerge .reveal .state-background{background:rgba(12,25,77,.6)}.lila .reveal .state-background{background:rgba(180,50,140,.6)}.sunset .reveal .state-background{background:rgba(255,122,0,.6)}.reveal>.backgrounds{position:absolute;width:100%;height:100%}.reveal .slide-background{position:absolute;width:100%;height:100%;opacity:0;visibility:hidden;background-color:rgba(0,0,0,0);background-position:50% 50%;background-repeat:no-repeat;background-size:cover;-webkit-transition:all 600ms cubic-bezier(0.26,.86,.44,.985);-moz-transition:all 600ms cubic-bezier(0.26,.86,.44,.985);-ms-transition:all 600ms cubic-bezier(0.26,.86,.44,.985);-o-transition:all 600ms cubic-bezier(0.26,.86,.44,.985);transition:all 600ms cubic-bezier(0.26,.86,.44,.985)}.reveal .slide-background.present{opacity:1;visibility:visible}.print-pdf .reveal .slide-background{opacity:1!important;visibility:visible!important}.reveal[data-background-transition=slide]>.backgrounds .slide-background,.reveal>.backgrounds .slide-background[data-background-transition=slide]{opacity:1;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition-duration:800ms;-moz-transition-duration:800ms;-ms-transition-duration:800ms;-o-transition-duration:800ms;transition-duration:800ms}.reveal[data-background-transition=slide]>.backgrounds .slide-background.past,.reveal>.backgrounds .slide-background.past[data-background-transition=slide]{-webkit-transform:translate(-100%,0);-moz-transform:translate(-100%,0);-ms-transform:translate(-100%,0);-o-transform:translate(-100%,0);transform:translate(-100%,0)}.reveal[data-background-transition=slide]>.backgrounds .slide-background.future,.reveal>.backgrounds .slide-background.future[data-background-transition=slide]{-webkit-transform:translate(100%,0);-moz-transform:translate(100%,0);-ms-transform:translate(100%,0);-o-transform:translate(100%,0);transform:translate(100%,0)}.reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.past,.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=slide]{-webkit-transform:translate(0,-100%);-moz-transform:translate(0,-100%);-ms-transform:translate(0,-100%);-o-transform:translate(0,-100%);transform:translate(0,-100%)}.reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.future,.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=slide]{-webkit-transform:translate(0,100%);-moz-transform:translate(0,100%);-ms-transform:translate(0,100%);-o-transform:translate(0,100%);transform:translate(0,100%)}.reveal[data-transition-speed=fast]>.backgrounds .slide-background{-webkit-transition-duration:400ms;-moz-transition-duration:400ms;-ms-transition-duration:400ms;transition-duration:400ms}.reveal[data-transition-speed=slow]>.backgrounds .slide-background{-webkit-transition-duration:1200ms;-moz-transition-duration:1200ms;-ms-transition-duration:1200ms;transition-duration:1200ms}.reveal.rtl .slides,.reveal.rtl .slides h1,.reveal.rtl .slides h2,.reveal.rtl .slides h3,.reveal.rtl .slides h4,.reveal.rtl .slides h5,.reveal.rtl .slides h6{direction:rtl;font-family:sans-serif}.reveal.rtl pre,.reveal.rtl code{direction:ltr}.reveal.rtl ol,.reveal.rtl ul{text-align:right}.reveal.rtl .progress span{float:right}.reveal .preview-link-overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1000;background:rgba(0,0,0,.9);opacity:0;visibility:hidden;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-ms-transition:all .3s ease;transition:all .3s ease}.reveal .preview-link-overlay.visible{opacity:1;visibility:visible}.reveal .preview-link-overlay .spinner{position:absolute;display:block;top:50%;left:50%;width:32px;height:32px;margin:-16px 0 0 -16px;z-index:10;background-image:url(data:image/gif;base64,R0lGODlhIAAgAPMAAJmZmf%2F%2F%2F6%2Bvr8nJybW1tcDAwOjo6Nvb26ioqKOjo7Ozs%2FLy8vz8%2FAAAAAAAAAAAACH%2FC05FVFNDQVBFMi4wAwEAAAAh%2FhpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh%2BQQJCgAAACwAAAAAIAAgAAAE5xDISWlhperN52JLhSSdRgwVo1ICQZRUsiwHpTJT4iowNS8vyW2icCF6k8HMMBkCEDskxTBDAZwuAkkqIfxIQyhBQBFvAQSDITM5VDW6XNE4KagNh6Bgwe60smQUB3d4Rz1ZBApnFASDd0hihh12BkE9kjAJVlycXIg7CQIFA6SlnJ87paqbSKiKoqusnbMdmDC2tXQlkUhziYtyWTxIfy6BE8WJt5YJvpJivxNaGmLHT0VnOgSYf0dZXS7APdpB309RnHOG5gDqXGLDaC457D1zZ%2FV%2FnmOM82XiHRLYKhKP1oZmADdEAAAh%2BQQJCgAAACwAAAAAIAAgAAAE6hDISWlZpOrNp1lGNRSdRpDUolIGw5RUYhhHukqFu8DsrEyqnWThGvAmhVlteBvojpTDDBUEIFwMFBRAmBkSgOrBFZogCASwBDEY%2FCZSg7GSE0gSCjQBMVG023xWBhklAnoEdhQEfyNqMIcKjhRsjEdnezB%2BA4k8gTwJhFuiW4dokXiloUepBAp5qaKpp6%2BHo7aWW54wl7obvEe0kRuoplCGepwSx2jJvqHEmGt6whJpGpfJCHmOoNHKaHx61WiSR92E4lbFoq%2BB6QDtuetcaBPnW6%2BO7wDHpIiK9SaVK5GgV543tzjgGcghAgAh%2BQQJCgAAACwAAAAAIAAgAAAE7hDISSkxpOrN5zFHNWRdhSiVoVLHspRUMoyUakyEe8PTPCATW9A14E0UvuAKMNAZKYUZCiBMuBakSQKG8G2FzUWox2AUtAQFcBKlVQoLgQReZhQlCIJesQXI5B0CBnUMOxMCenoCfTCEWBsJColTMANldx15BGs8B5wlCZ9Po6OJkwmRpnqkqnuSrayqfKmqpLajoiW5HJq7FL1Gr2mMMcKUMIiJgIemy7xZtJsTmsM4xHiKv5KMCXqfyUCJEonXPN2rAOIAmsfB3uPoAK%2B%2BG%2Bw48edZPK%2BM6hLJpQg484enXIdQFSS1u6UhksENEQAAIfkECQoAAAAsAAAAACAAIAAABOcQyEmpGKLqzWcZRVUQnZYg1aBSh2GUVEIQ2aQOE%2BG%2BcD4ntpWkZQj1JIiZIogDFFyHI0UxQwFugMSOFIPJftfVAEoZLBbcLEFhlQiqGp1Vd140AUklUN3eCA51C1EWMzMCezCBBmkxVIVHBWd3HHl9JQOIJSdSnJ0TDKChCwUJjoWMPaGqDKannasMo6WnM562R5YluZRwur0wpgqZE7NKUm%2BFNRPIhjBJxKZteWuIBMN4zRMIVIhffcgojwCF117i4nlLnY5ztRLsnOk%2BaV%2BoJY7V7m76PdkS4trKcdg0Zc0tTcKkRAAAIfkECQoAAAAsAAAAACAAIAAABO4QyEkpKqjqzScpRaVkXZWQEximw1BSCUEIlDohrft6cpKCk5xid5MNJTaAIkekKGQkWyKHkvhKsR7ARmitkAYDYRIbUQRQjWBwJRzChi9CRlBcY1UN4g0%2FVNB0AlcvcAYHRyZPdEQFYV8ccwR5HWxEJ02YmRMLnJ1xCYp0Y5idpQuhopmmC2KgojKasUQDk5BNAwwMOh2RtRq5uQuPZKGIJQIGwAwGf6I0JXMpC8C7kXWDBINFMxS4DKMAWVWAGYsAdNqW5uaRxkSKJOZKaU3tPOBZ4DuK2LATgJhkPJMgTwKCdFjyPHEnKxFCDhEAACH5BAkKAAAALAAAAAAgACAAAATzEMhJaVKp6s2nIkolIJ2WkBShpkVRWqqQrhLSEu9MZJKK9y1ZrqYK9WiClmvoUaF8gIQSNeF1Er4MNFn4SRSDARWroAIETg1iVwuHjYB1kYc1mwruwXKC9gmsJXliGxc%2BXiUCby9ydh1sOSdMkpMTBpaXBzsfhoc5l58Gm5yToAaZhaOUqjkDgCWNHAULCwOLaTmzswadEqggQwgHuQsHIoZCHQMMQgQGubVEcxOPFAcMDAYUA85eWARmfSRQCdcMe0zeP1AAygwLlJtPNAAL19DARdPzBOWSm1brJBi45soRAWQAAkrQIykShQ9wVhHCwCQCACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiRMDjI0Fd30%2FiI2UA5GSS5UDj2l6NoqgOgN4gksEBgYFf0FDqKgHnyZ9OX8HrgYHdHpcHQULXAS2qKpENRg7eAMLC7kTBaixUYFkKAzWAAnLC7FLVxLWDBLKCwaKTULgEwbLA4hJtOkSBNqITT3xEgfLpBtzE%2FjiuL04RGEBgwWhShRgQExHBAAh%2BQQJCgAAACwAAAAAIAAgAAAE7xDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfZiCqGk5dTESJeaOAlClzsJsqwiJwiqnFrb2nS9kmIcgEsjQydLiIlHehhpejaIjzh9eomSjZR%2BipslWIRLAgMDOR2DOqKogTB9pCUJBagDBXR6XB0EBkIIsaRsGGMMAxoDBgYHTKJiUYEGDAzHC9EACcUGkIgFzgwZ0QsSBcXHiQvOwgDdEwfFs0sDzt4S6BK4xYjkDOzn0unFeBzOBijIm1Dgmg5YFQwsCMjp1oJ8LyIAACH5BAkKAAAALAAAAAAgACAAAATwEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GGl6NoiPOH16iZKNlH6KmyWFOggHhEEvAwwMA0N9GBsEC6amhnVcEwavDAazGwIDaH1ipaYLBUTCGgQDA8NdHz0FpqgTBwsLqAbWAAnIA4FWKdMLGdYGEgraigbT0OITBcg5QwPT4xLrROZL6AuQAPUS7bxLpoWidY0JtxLHKhwwMJBTHgPKdEQAACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GAULDJCRiXo1CpGXDJOUjY%2BYip9DhToJA4RBLwMLCwVDfRgbBAaqqoZ1XBMHswsHtxtFaH1iqaoGNgAIxRpbFAgfPQSqpbgGBqUD1wBXeCYp1AYZ19JJOYgH1KwA4UBvQwXUBxPqVD9L3sbp2BNk2xvvFPJd%2BMFCN6HAAIKgNggY0KtEBAAh%2BQQJCgAAACwAAAAAIAAgAAAE6BDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfYIDMaAFdTESJeaEDAIMxYFqrOUaNW4E4ObYcCXaiBVEgULe0NJaxxtYksjh2NLkZISgDgJhHthkpU4mW6blRiYmZOlh4JWkDqILwUGBnE6TYEbCgevr0N1gH4At7gHiRpFaLNrrq8HNgAJA70AWxQIH1%2BvsYMDAzZQPC9VCNkDWUhGkuE5PxJNwiUK4UfLzOlD4WvzAHaoG9nxPi5d%2BjYUqfAhhykOFwJWiAAAIfkECQoAAAAsAAAAACAAIAAABPAQyElpUqnqzaciSoVkXVUMFaFSwlpOCcMYlErAavhOMnNLNo8KsZsMZItJEIDIFSkLGQoQTNhIsFehRww2CQLKF0tYGKYSg%2BygsZIuNqJksKgbfgIGepNo2cIUB3V1B3IvNiBYNQaDSTtfhhx0CwVPI0UJe0%2Bbm4g5VgcGoqOcnjmjqDSdnhgEoamcsZuXO1aWQy8KAwOAuTYYGwi7w5h%2BKr0SJ8MFihpNbx%2B4Erq7BYBuzsdiH1jCAzoSfl0rVirNbRXlBBlLX%2BBP0XJLAPGzTkAuAOqb0WT5AH7OcdCm5B8TgRwSRKIHQtaLCwg1RAAAOwAAAAAAAAAAAA%3D%3D);visibility:visible;opacity:.6;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-ms-transition:all .3s ease;transition:all .3s ease}.reveal .preview-link-overlay header{position:absolute;left:0;top:0;width:100%;height:40px;z-index:2;border-bottom:1px solid #222}.reveal .preview-link-overlay header a{display:inline-block;width:40px;height:40px;padding:0 10px;float:right;opacity:.6;box-sizing:border-box}.reveal .preview-link-overlay header a:hover{opacity:1}.reveal .preview-link-overlay header a .icon{display:inline-block;width:20px;height:20px;background-position:50% 50%;background-size:100%;background-repeat:no-repeat}.reveal .preview-link-overlay header a.close .icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABkklEQVRYR8WX4VHDMAxG6wnoJrABZQPYBCaBTWAD2g1gE5gg6OOsXuxIlr40d81dfrSJ9V4c2VLK7spHuTJ/5wpM07QXuXc5X0opX2tEJcadjHuV80li/FgxTIEK/5QBCICBD6xEhSMGHgQPgBgLiYVAB1dpSqKDawxTohFw4JSEA3clzgIBPCURwE2JucBR7rhPJJv5OpJwDX+SfDjgx1wACQeJG1aChP9K/IMmdZ8DtESV1WyP3Bt4MwM6sj4NMxMYiqUWHQu4KYA/SYkIjOsm3BXYWMKFDwU2khjCQ4ELJUJ4SmClRArOCmSXGuKma0fYD5CbzHxFpCSGAhfAVSSUGDUk2BWZaff2g6GE15BsBQ9nwmpIGDiyHQddwNTMKkbZaf9fajXQca1EX44puJZUsnY0ObGmITE3GVLCbEhQUjGVt146j6oasWN+49Vph2w1pZ5EansNZqKBm1txbU57iRRcZ86RWMDdWtBJUHBHwoQPi1GV+JCbntmvok7iTX4/Up9mgyTc/FJYDTcndgH/AA5A/CHsyEkVAAAAAElFTkSuQmCC)}.reveal .preview-link-overlay header a.external .icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAcElEQVRYR+2WSQoAIQwEzf8f7XiOMkUQxUPlGkM3hVmiQfQR9GYnH1SsAQlI4DiBqkCMoNb9y2e90IAEJPAcgdznU9+engMaeJ7Azh5Y1U67gAho4DqBqmB1buAf0MB1AlVBek83ZPkmJMGc1wAR+AAqod/B97TRpQAAAABJRU5ErkJggg==)}.reveal .preview-link-overlay .viewport{position:absolute;top:40px;right:0;bottom:0;left:0}.reveal .preview-link-overlay .viewport iframe{width:100%;height:100%;max-width:100%;max-height:100%;border:0;opacity:0;visibility:hidden;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-ms-transition:all .3s ease;transition:all .3s ease}.reveal .preview-link-overlay.loaded .viewport iframe{opacity:1;visibility:visible}.reveal .preview-link-overlay.loaded .spinner{opacity:0;visibility:hidden;-webkit-transform:scale(0.2);-moz-transform:scale(0.2);-ms-transform:scale(0.2);transform:scale(0.2)}.reveal aside.notes{display:none}.zoomed .reveal *,.zoomed .reveal :before,.zoomed .reveal :after{-webkit-transform:none!important;-moz-transform:none!important;-ms-transform:none!important;transform:none!important;-webkit-backface-visibility:visible!important;-moz-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important}.zoomed .reveal .progress,.zoomed .reveal .controls{opacity:0}.zoomed .reveal .roll span{background:0}.zoomed .reveal .roll span:after{visibility:hidden}
|
7
|
+
*/ html,body,.reveal div,.reveal span,.reveal applet,.reveal object,.reveal iframe,.reveal h1,.reveal h2,.reveal h3,.reveal h4,.reveal h5,.reveal h6,.reveal p,.reveal blockquote,.reveal pre,.reveal a,.reveal abbr,.reveal acronym,.reveal address,.reveal big,.reveal cite,.reveal code,.reveal del,.reveal dfn,.reveal em,.reveal img,.reveal ins,.reveal kbd,.reveal q,.reveal s,.reveal samp,.reveal small,.reveal strike,.reveal strong,.reveal sub,.reveal sup,.reveal tt,.reveal var,.reveal b,.reveal u,.reveal i,.reveal center,.reveal dl,.reveal dt,.reveal dd,.reveal ol,.reveal ul,.reveal li,.reveal fieldset,.reveal form,.reveal label,.reveal legend,.reveal table,.reveal caption,.reveal tbody,.reveal tfoot,.reveal thead,.reveal tr,.reveal th,.reveal td,.reveal article,.reveal aside,.reveal canvas,.reveal details,.reveal embed,.reveal figure,.reveal figcaption,.reveal footer,.reveal header,.reveal hgroup,.reveal menu,.reveal nav,.reveal output,.reveal ruby,.reveal section,.reveal summary,.reveal time,.reveal mark,.reveal audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}.reveal article,.reveal aside,.reveal details,.reveal figcaption,.reveal figure,.reveal footer,.reveal header,.reveal hgroup,.reveal menu,.reveal nav,.reveal section{display:block}html,body{width:100%;height:100%;overflow:hidden}body{position:relative;line-height:1}::selection{background:#FF5E99;color:#fff;text-shadow:none}.reveal h1,.reveal h2,.reveal h3,.reveal h4,.reveal h5,.reveal h6{-webkit-hyphens:auto;-moz-hyphens:auto;hyphens:auto;word-wrap:break-word;line-height:1}.reveal h1{font-size:3.77em}.reveal h2{font-size:2.11em}.reveal h3{font-size:1.55em}.reveal h4{font-size:1em}.reveal .slides section .fragment{opacity:0;-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-ms-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}.reveal .slides section .fragment.visible{opacity:1}.reveal .slides section .fragment.grow{opacity:1}.reveal .slides section .fragment.grow.visible{-webkit-transform:scale(1.3);-moz-transform:scale(1.3);-ms-transform:scale(1.3);-o-transform:scale(1.3);transform:scale(1.3)}.reveal .slides section .fragment.shrink{opacity:1}.reveal .slides section .fragment.shrink.visible{-webkit-transform:scale(0.7);-moz-transform:scale(0.7);-ms-transform:scale(0.7);-o-transform:scale(0.7);transform:scale(0.7)}.reveal .slides section .fragment.zoom-in{opacity:0;-webkit-transform:scale(0.1);-moz-transform:scale(0.1);-ms-transform:scale(0.1);-o-transform:scale(0.1);transform:scale(0.1)}.reveal .slides section .fragment.zoom-in.visible{opacity:1;-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}.reveal .slides section .fragment.roll-in{opacity:0;-webkit-transform:rotateX(90deg);-moz-transform:rotateX(90deg);-ms-transform:rotateX(90deg);-o-transform:rotateX(90deg);transform:rotateX(90deg)}.reveal .slides section .fragment.roll-in.visible{opacity:1;-webkit-transform:rotateX(0);-moz-transform:rotateX(0);-ms-transform:rotateX(0);-o-transform:rotateX(0);transform:rotateX(0)}.reveal .slides section .fragment.fade-out{opacity:1}.reveal .slides section .fragment.fade-out.visible{opacity:0}.reveal .slides section .fragment.semi-fade-out{opacity:1}.reveal .slides section .fragment.semi-fade-out.visible{opacity:.5}.reveal .slides section .fragment.highlight-red,.reveal .slides section .fragment.highlight-green,.reveal .slides section .fragment.highlight-blue{opacity:1}.reveal .slides section .fragment.highlight-red.visible{color:#ff2c2d}.reveal .slides section .fragment.highlight-green.visible{color:#17ff2e}.reveal .slides section .fragment.highlight-blue.visible{color:#1b91ff}.reveal:after{content:'';font-style:italic}.reveal iframe{z-index:1}.reveal img,.reveal video,.reveal iframe{max-width:95%;max-height:95%}.reveal a{position:relative}.reveal strong,.reveal b{font-weight:700}.reveal em,.reveal i{font-style:italic}.reveal ol,.reveal ul{display:inline-block;text-align:left;margin:0 0 0 1em}.reveal ol{list-style-type:decimal}.reveal ul{list-style-type:disc}.reveal ul ul{list-style-type:square}.reveal ul ul ul{list-style-type:circle}.reveal ul ul,.reveal ul ol,.reveal ol ol,.reveal ol ul{display:block;margin-left:40px}.reveal p{margin-bottom:10px;line-height:1.2em}.reveal q,.reveal blockquote{quotes:none}.reveal blockquote{display:block;position:relative;width:70%;margin:5px auto;padding:5px;font-style:italic;background:rgba(255,255,255,.05);box-shadow:0 0 2px rgba(0,0,0,.2)}.reveal blockquote p:first-child,.reveal blockquote p:last-child{display:inline-block}.reveal q{font-style:italic}.reveal pre{display:block;position:relative;width:90%;margin:15px auto;text-align:left;font-size:.55em;font-family:monospace;line-height:1.2em;word-wrap:break-word;box-shadow:0 0 6px rgba(0,0,0,.3)}.reveal code{font-family:monospace}.reveal pre code{padding:5px;overflow:auto;max-height:400px;word-wrap:normal}.reveal pre.stretch code{height:100%;max-height:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.reveal table th,.reveal table td{text-align:left;padding-right:.3em}.reveal table th{text-shadow:#fff 1px 1px 2px}.reveal sup{vertical-align:super}.reveal sub{vertical-align:sub}.reveal small{display:inline-block;font-size:.6em;line-height:1.2em;vertical-align:top}.reveal small *{vertical-align:top}.reveal .stretch{max-width:none;max-height:none}.reveal .controls{display:none;position:fixed;width:110px;height:110px;z-index:30;right:10px;bottom:10px}.reveal .controls div{position:absolute;opacity:.05;width:0;height:0;border:12px solid transparent;-moz-transform:scale(.9999);-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-ms-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}.reveal .controls div.enabled{opacity:.7;cursor:pointer}.reveal .controls div.enabled:active{margin-top:1px}.reveal .controls div.navigate-left{top:42px;border-right-width:22px;border-right-color:#eee}.reveal .controls div.navigate-left.fragmented{opacity:.3}.reveal .controls div.navigate-right{left:74px;top:42px;border-left-width:22px;border-left-color:#eee}.reveal .controls div.navigate-right.fragmented{opacity:.3}.reveal .controls div.navigate-up{left:42px;border-bottom-width:22px;border-bottom-color:#eee}.reveal .controls div.navigate-up.fragmented{opacity:.3}.reveal .controls div.navigate-down{left:42px;top:74px;border-top-width:22px;border-top-color:#eee}.reveal .controls div.navigate-down.fragmented{opacity:.3}.reveal .progress{position:fixed;display:none;height:3px;width:100%;bottom:0;left:0;z-index:10}.reveal .progress:after{content:'';display:'block';position:absolute;height:20px;width:100%;top:-20px}.reveal .progress span{display:block;height:100%;width:0;-webkit-transition:width 800ms cubic-bezier(0.26,.86,.44,.985);-moz-transition:width 800ms cubic-bezier(0.26,.86,.44,.985);-ms-transition:width 800ms cubic-bezier(0.26,.86,.44,.985);-o-transition:width 800ms cubic-bezier(0.26,.86,.44,.985);transition:width 800ms cubic-bezier(0.26,.86,.44,.985)}.reveal{position:relative;width:100%;height:100%;-ms-touch-action:none}.reveal .slides{position:absolute;width:100%;height:100%;left:50%;top:50%;overflow:visible;z-index:1;text-align:center;-webkit-transition:-webkit-perspective .4s ease;-moz-transition:-moz-perspective .4s ease;-ms-transition:-ms-perspective .4s ease;-o-transition:-o-perspective .4s ease;transition:perspective .4s ease;-webkit-perspective:600px;-moz-perspective:600px;-ms-perspective:600px;perspective:600px;-webkit-perspective-origin:0 -100px;-moz-perspective-origin:0 -100px;-ms-perspective-origin:0 -100px;perspective-origin:0 -100px}.reveal .slides>section{-ms-perspective:600px}.reveal .slides>section,.reveal .slides>section>section{display:none;position:absolute;width:100%;padding:20px 0;z-index:10;line-height:1.2em;font-weight:400;-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;-ms-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transition:-webkit-transform-origin 800ms cubic-bezier(0.26,.86,.44,.985),-webkit-transform 800ms cubic-bezier(0.26,.86,.44,.985),visibility 800ms cubic-bezier(0.26,.86,.44,.985),opacity 800ms cubic-bezier(0.26,.86,.44,.985);-moz-transition:-moz-transform-origin 800ms cubic-bezier(0.26,.86,.44,.985),-moz-transform 800ms cubic-bezier(0.26,.86,.44,.985),visibility 800ms cubic-bezier(0.26,.86,.44,.985),opacity 800ms cubic-bezier(0.26,.86,.44,.985);-ms-transition:-ms-transform-origin 800ms cubic-bezier(0.26,.86,.44,.985),-ms-transform 800ms cubic-bezier(0.26,.86,.44,.985),visibility 800ms cubic-bezier(0.26,.86,.44,.985),opacity 800ms cubic-bezier(0.26,.86,.44,.985);-o-transition:-o-transform-origin 800ms cubic-bezier(0.26,.86,.44,.985),-o-transform 800ms cubic-bezier(0.26,.86,.44,.985),visibility 800ms cubic-bezier(0.26,.86,.44,.985),opacity 800ms cubic-bezier(0.26,.86,.44,.985);transition:transform-origin 800ms cubic-bezier(0.26,.86,.44,.985),transform 800ms cubic-bezier(0.26,.86,.44,.985),visibility 800ms cubic-bezier(0.26,.86,.44,.985),opacity 800ms cubic-bezier(0.26,.86,.44,.985)}.reveal[data-transition-speed=fast] .slides section{-webkit-transition-duration:400ms;-moz-transition-duration:400ms;-ms-transition-duration:400ms;transition-duration:400ms}.reveal[data-transition-speed=slow] .slides section{-webkit-transition-duration:1200ms;-moz-transition-duration:1200ms;-ms-transition-duration:1200ms;transition-duration:1200ms}.reveal .slides section[data-transition-speed=fast]{-webkit-transition-duration:400ms;-moz-transition-duration:400ms;-ms-transition-duration:400ms;transition-duration:400ms}.reveal .slides section[data-transition-speed=slow]{-webkit-transition-duration:1200ms;-moz-transition-duration:1200ms;-ms-transition-duration:1200ms;transition-duration:1200ms}.reveal .slides>section{left:-50%;top:-50%}.reveal .slides>section.stack{padding-top:0;padding-bottom:0}.reveal .slides>section.present,.reveal .slides>section>section.present{display:block;z-index:11;opacity:1}.reveal.center,.reveal.center .slides,.reveal.center .slides section{min-height:auto!important}.reveal .slides>section.future,.reveal .slides>section>section.future,.reveal .slides>section.past,.reveal .slides>section>section.past{pointer-events:none}.reveal.overview .slides>section,.reveal.overview .slides>section>section{pointer-events:auto}.reveal .slides>section[data-transition=default].past,.reveal .slides>section.past{display:block;opacity:0;-webkit-transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0);-moz-transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0);transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0)}.reveal .slides>section[data-transition=default].future,.reveal .slides>section.future{display:block;opacity:0;-webkit-transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0);-moz-transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0);transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0)}.reveal .slides>section>section[data-transition=default].past,.reveal .slides>section>section.past{display:block;opacity:0;-webkit-transform:translate3d(0,-300px,0) rotateX(70deg) translate3d(0,-300px,0);-moz-transform:translate3d(0,-300px,0) rotateX(70deg) translate3d(0,-300px,0);-ms-transform:translate3d(0,-300px,0) rotateX(70deg) translate3d(0,-300px,0);transform:translate3d(0,-300px,0) rotateX(70deg) translate3d(0,-300px,0)}.reveal .slides>section>section[data-transition=default].future,.reveal .slides>section>section.future{display:block;opacity:0;-webkit-transform:translate3d(0,300px,0) rotateX(-70deg) translate3d(0,300px,0);-moz-transform:translate3d(0,300px,0) rotateX(-70deg) translate3d(0,300px,0);-ms-transform:translate3d(0,300px,0) rotateX(-70deg) translate3d(0,300px,0);transform:translate3d(0,300px,0) rotateX(-70deg) translate3d(0,300px,0)}.reveal .slides>section[data-transition=concave].past,.reveal.concave .slides>section.past{-webkit-transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0);-moz-transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0);transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0)}.reveal .slides>section[data-transition=concave].future,.reveal.concave .slides>section.future{-webkit-transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0);-moz-transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0);transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0)}.reveal .slides>section>section[data-transition=concave].past,.reveal.concave .slides>section>section.past{-webkit-transform:translate3d(0,-80%,0) rotateX(-70deg) translate3d(0,-80%,0);-moz-transform:translate3d(0,-80%,0) rotateX(-70deg) translate3d(0,-80%,0);-ms-transform:translate3d(0,-80%,0) rotateX(-70deg) translate3d(0,-80%,0);transform:translate3d(0,-80%,0) rotateX(-70deg) translate3d(0,-80%,0)}.reveal .slides>section>section[data-transition=concave].future,.reveal.concave .slides>section>section.future{-webkit-transform:translate3d(0,80%,0) rotateX(70deg) translate3d(0,80%,0);-moz-transform:translate3d(0,80%,0) rotateX(70deg) translate3d(0,80%,0);-ms-transform:translate3d(0,80%,0) rotateX(70deg) translate3d(0,80%,0);transform:translate3d(0,80%,0) rotateX(70deg) translate3d(0,80%,0)}.reveal .slides>section[data-transition=zoom].past,.reveal.zoom .slides>section.past{opacity:0;visibility:hidden;-webkit-transform:scale(16);-moz-transform:scale(16);-ms-transform:scale(16);-o-transform:scale(16);transform:scale(16)}.reveal .slides>section[data-transition=zoom].future,.reveal.zoom .slides>section.future{opacity:0;visibility:hidden;-webkit-transform:scale(0.2);-moz-transform:scale(0.2);-ms-transform:scale(0.2);-o-transform:scale(0.2);transform:scale(0.2)}.reveal .slides>section>section[data-transition=zoom].past,.reveal.zoom .slides>section>section.past{-webkit-transform:translate(0,-150%);-moz-transform:translate(0,-150%);-ms-transform:translate(0,-150%);-o-transform:translate(0,-150%);transform:translate(0,-150%)}.reveal .slides>section>section[data-transition=zoom].future,.reveal.zoom .slides>section>section.future{-webkit-transform:translate(0,150%);-moz-transform:translate(0,150%);-ms-transform:translate(0,150%);-o-transform:translate(0,150%);transform:translate(0,150%)}.reveal.linear section{-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden}.reveal .slides>section[data-transition=linear].past,.reveal.linear .slides>section.past{-webkit-transform:translate(-150%,0);-moz-transform:translate(-150%,0);-ms-transform:translate(-150%,0);-o-transform:translate(-150%,0);transform:translate(-150%,0)}.reveal .slides>section[data-transition=linear].future,.reveal.linear .slides>section.future{-webkit-transform:translate(150%,0);-moz-transform:translate(150%,0);-ms-transform:translate(150%,0);-o-transform:translate(150%,0);transform:translate(150%,0)}.reveal .slides>section>section[data-transition=linear].past,.reveal.linear .slides>section>section.past{-webkit-transform:translate(0,-150%);-moz-transform:translate(0,-150%);-ms-transform:translate(0,-150%);-o-transform:translate(0,-150%);transform:translate(0,-150%)}.reveal .slides>section>section[data-transition=linear].future,.reveal.linear .slides>section>section.future{-webkit-transform:translate(0,150%);-moz-transform:translate(0,150%);-ms-transform:translate(0,150%);-o-transform:translate(0,150%);transform:translate(0,150%)}.reveal.cube .slides{-webkit-perspective:1300px;-moz-perspective:1300px;-ms-perspective:1300px;perspective:1300px}.reveal.cube .slides section{padding:30px;min-height:700px;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.reveal.center.cube .slides section{min-height:auto}.reveal.cube .slides section:not(.stack):before{content:'';position:absolute;display:block;width:100%;height:100%;left:0;top:0;background:rgba(0,0,0,.1);border-radius:4px;-webkit-transform:translateZ(-20px);-moz-transform:translateZ(-20px);-ms-transform:translateZ(-20px);-o-transform:translateZ(-20px);transform:translateZ(-20px)}.reveal.cube .slides section:not(.stack):after{content:'';position:absolute;display:block;width:90%;height:30px;left:5%;bottom:0;background:0;z-index:1;border-radius:4px;box-shadow:0 95px 25px rgba(0,0,0,.2);-webkit-transform:translateZ(-90px) rotateX(65deg);-moz-transform:translateZ(-90px) rotateX(65deg);-ms-transform:translateZ(-90px) rotateX(65deg);-o-transform:translateZ(-90px) rotateX(65deg);transform:translateZ(-90px) rotateX(65deg)}.reveal.cube .slides>section.stack{padding:0;background:0}.reveal.cube .slides>section.past{-webkit-transform-origin:100% 0;-moz-transform-origin:100% 0;-ms-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:translate3d(-100%,0,0) rotateY(-90deg);-moz-transform:translate3d(-100%,0,0) rotateY(-90deg);-ms-transform:translate3d(-100%,0,0) rotateY(-90deg);transform:translate3d(-100%,0,0) rotateY(-90deg)}.reveal.cube .slides>section.future{-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translate3d(100%,0,0) rotateY(90deg);-moz-transform:translate3d(100%,0,0) rotateY(90deg);-ms-transform:translate3d(100%,0,0) rotateY(90deg);transform:translate3d(100%,0,0) rotateY(90deg)}.reveal.cube .slides>section>section.past{-webkit-transform-origin:0 100%;-moz-transform-origin:0 100%;-ms-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:translate3d(0,-100%,0) rotateX(90deg);-moz-transform:translate3d(0,-100%,0) rotateX(90deg);-ms-transform:translate3d(0,-100%,0) rotateX(90deg);transform:translate3d(0,-100%,0) rotateX(90deg)}.reveal.cube .slides>section>section.future{-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translate3d(0,100%,0) rotateX(-90deg);-moz-transform:translate3d(0,100%,0) rotateX(-90deg);-ms-transform:translate3d(0,100%,0) rotateX(-90deg);transform:translate3d(0,100%,0) rotateX(-90deg)}.reveal.page .slides{-webkit-perspective-origin:0 50%;-moz-perspective-origin:0 50%;-ms-perspective-origin:0 50%;perspective-origin:0 50%;-webkit-perspective:3000px;-moz-perspective:3000px;-ms-perspective:3000px;perspective:3000px}.reveal.page .slides section{padding:30px;min-height:700px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.reveal.page .slides section.past{z-index:12}.reveal.page .slides section:not(.stack):before{content:'';position:absolute;display:block;width:100%;height:100%;left:0;top:0;background:rgba(0,0,0,.1);-webkit-transform:translateZ(-20px);-moz-transform:translateZ(-20px);-ms-transform:translateZ(-20px);-o-transform:translateZ(-20px);transform:translateZ(-20px)}.reveal.page .slides section:not(.stack):after{content:'';position:absolute;display:block;width:90%;height:30px;left:5%;bottom:0;background:0;z-index:1;border-radius:4px;box-shadow:0 95px 25px rgba(0,0,0,.2);-webkit-transform:translateZ(-90px) rotateX(65deg)}.reveal.page .slides>section.stack{padding:0;background:0}.reveal.page .slides>section.past{-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translate3d(-40%,0,0) rotateY(-80deg);-moz-transform:translate3d(-40%,0,0) rotateY(-80deg);-ms-transform:translate3d(-40%,0,0) rotateY(-80deg);transform:translate3d(-40%,0,0) rotateY(-80deg)}.reveal.page .slides>section.future{-webkit-transform-origin:100% 0;-moz-transform-origin:100% 0;-ms-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.reveal.page .slides>section>section.past{-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translate3d(0,-40%,0) rotateX(80deg);-moz-transform:translate3d(0,-40%,0) rotateX(80deg);-ms-transform:translate3d(0,-40%,0) rotateX(80deg);transform:translate3d(0,-40%,0) rotateX(80deg)}.reveal.page .slides>section>section.future{-webkit-transform-origin:0 100%;-moz-transform-origin:0 100%;-ms-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.reveal .slides section[data-transition=fade],.reveal.fade .slides section,.reveal.fade .slides>section>section{-webkit-transform:none;-moz-transform:none;-ms-transform:none;-o-transform:none;transform:none;-webkit-transition:opacity .5s;-moz-transition:opacity .5s;-ms-transition:opacity .5s;-o-transition:opacity .5s;transition:opacity .5s}.reveal.fade.overview .slides section,.reveal.fade.overview .slides>section>section,.reveal.fade.overview-deactivating .slides section,.reveal.fade.overview-deactivating .slides>section>section{-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none}.reveal .slides section[data-transition=none],.reveal.none .slides section{-webkit-transform:none;-moz-transform:none;-ms-transform:none;-o-transform:none;transform:none;-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none}.reveal.overview .slides{-webkit-perspective-origin:0 0;-moz-perspective-origin:0 0;-ms-perspective-origin:0 0;perspective-origin:0 0;-webkit-perspective:700px;-moz-perspective:700px;-ms-perspective:700px;perspective:700px}.reveal.overview .slides section{height:600px;top:-300px!important;overflow:hidden;opacity:1!important;visibility:visible!important;cursor:pointer;background:rgba(0,0,0,.1)}.reveal.overview .slides section .fragment{opacity:1}.reveal.overview .slides section:after,.reveal.overview .slides section:before{display:none!important}.reveal.overview .slides section>section{opacity:1;cursor:pointer}.reveal.overview .slides section:hover{background:rgba(0,0,0,.3)}.reveal.overview .slides section.present{background:rgba(0,0,0,.3)}.reveal.overview .slides>section.stack{padding:0;top:0!important;background:0;overflow:visible}.reveal .pause-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#000;visibility:hidden;opacity:0;z-index:100;-webkit-transition:all 1s ease;-moz-transition:all 1s ease;-ms-transition:all 1s ease;-o-transition:all 1s ease;transition:all 1s ease}.reveal.paused .pause-overlay{visibility:visible;opacity:1}.no-transforms{overflow-y:auto}.no-transforms .reveal .slides{position:relative;width:80%;height:auto!important;top:0;left:50%;margin:0;text-align:center}.no-transforms .reveal .controls,.no-transforms .reveal .progress{display:none!important}.no-transforms .reveal .slides section{display:block!important;opacity:1!important;position:relative!important;height:auto;min-height:auto;top:0;left:-50%;margin:70px 0;-webkit-transform:none;-moz-transform:none;-ms-transform:none;-o-transform:none;transform:none}.no-transforms .reveal .slides section section{left:0}.reveal .no-transition,.reveal .no-transition *{-webkit-transition:none!important;-moz-transition:none!important;-ms-transition:none!important;-o-transition:none!important;transition:none!important}.reveal .state-background{position:absolute;width:100%;height:100%;background:rgba(0,0,0,0);-webkit-transition:background 800ms ease;-moz-transition:background 800ms ease;-ms-transition:background 800ms ease;-o-transition:background 800ms ease;transition:background 800ms ease}.alert .reveal .state-background{background:rgba(200,50,30,.6)}.soothe .reveal .state-background{background:rgba(50,200,90,.4)}.blackout .reveal .state-background{background:rgba(0,0,0,.6)}.whiteout .reveal .state-background{background:rgba(255,255,255,.6)}.cobalt .reveal .state-background{background:rgba(22,152,213,.6)}.mint .reveal .state-background{background:rgba(22,213,75,.6)}.submerge .reveal .state-background{background:rgba(12,25,77,.6)}.lila .reveal .state-background{background:rgba(180,50,140,.6)}.sunset .reveal .state-background{background:rgba(255,122,0,.6)}.reveal>.backgrounds{position:absolute;width:100%;height:100%}.reveal .slide-background{position:absolute;width:100%;height:100%;opacity:0;visibility:hidden;background-color:rgba(0,0,0,0);background-position:50% 50%;background-repeat:no-repeat;background-size:cover;-webkit-transition:all 600ms cubic-bezier(0.26,.86,.44,.985);-moz-transition:all 600ms cubic-bezier(0.26,.86,.44,.985);-ms-transition:all 600ms cubic-bezier(0.26,.86,.44,.985);-o-transition:all 600ms cubic-bezier(0.26,.86,.44,.985);transition:all 600ms cubic-bezier(0.26,.86,.44,.985)}.reveal .slide-background.present{opacity:1;visibility:visible}.print-pdf .reveal .slide-background{opacity:1!important;visibility:visible!important}.reveal[data-background-transition=none]>.backgrounds .slide-background,.reveal>.backgrounds .slide-background[data-background-transition=none]{-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none}.reveal[data-background-transition=slide]>.backgrounds .slide-background,.reveal>.backgrounds .slide-background[data-background-transition=slide]{opacity:1;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition-duration:800ms;-moz-transition-duration:800ms;-ms-transition-duration:800ms;-o-transition-duration:800ms;transition-duration:800ms}.reveal[data-background-transition=slide]>.backgrounds .slide-background.past,.reveal>.backgrounds .slide-background.past[data-background-transition=slide]{-webkit-transform:translate(-100%,0);-moz-transform:translate(-100%,0);-ms-transform:translate(-100%,0);-o-transform:translate(-100%,0);transform:translate(-100%,0)}.reveal[data-background-transition=slide]>.backgrounds .slide-background.future,.reveal>.backgrounds .slide-background.future[data-background-transition=slide]{-webkit-transform:translate(100%,0);-moz-transform:translate(100%,0);-ms-transform:translate(100%,0);-o-transform:translate(100%,0);transform:translate(100%,0)}.reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.past,.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=slide]{-webkit-transform:translate(0,-100%);-moz-transform:translate(0,-100%);-ms-transform:translate(0,-100%);-o-transform:translate(0,-100%);transform:translate(0,-100%)}.reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.future,.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=slide]{-webkit-transform:translate(0,100%);-moz-transform:translate(0,100%);-ms-transform:translate(0,100%);-o-transform:translate(0,100%);transform:translate(0,100%)}.reveal[data-transition-speed=fast]>.backgrounds .slide-background{-webkit-transition-duration:400ms;-moz-transition-duration:400ms;-ms-transition-duration:400ms;transition-duration:400ms}.reveal[data-transition-speed=slow]>.backgrounds .slide-background{-webkit-transition-duration:1200ms;-moz-transition-duration:1200ms;-ms-transition-duration:1200ms;transition-duration:1200ms}.reveal.rtl .slides,.reveal.rtl .slides h1,.reveal.rtl .slides h2,.reveal.rtl .slides h3,.reveal.rtl .slides h4,.reveal.rtl .slides h5,.reveal.rtl .slides h6{direction:rtl;font-family:sans-serif}.reveal.rtl pre,.reveal.rtl code{direction:ltr}.reveal.rtl ol,.reveal.rtl ul{text-align:right}.reveal.rtl .progress span{float:right}.reveal .preview-link-overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1000;background:rgba(0,0,0,.9);opacity:0;visibility:hidden;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-ms-transition:all .3s ease;transition:all .3s ease}.reveal .preview-link-overlay.visible{opacity:1;visibility:visible}.reveal .preview-link-overlay .spinner{position:absolute;display:block;top:50%;left:50%;width:32px;height:32px;margin:-16px 0 0 -16px;z-index:10;background-image:url(data:image/gif;base64,R0lGODlhIAAgAPMAAJmZmf%2F%2F%2F6%2Bvr8nJybW1tcDAwOjo6Nvb26ioqKOjo7Ozs%2FLy8vz8%2FAAAAAAAAAAAACH%2FC05FVFNDQVBFMi4wAwEAAAAh%2FhpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh%2BQQJCgAAACwAAAAAIAAgAAAE5xDISWlhperN52JLhSSdRgwVo1ICQZRUsiwHpTJT4iowNS8vyW2icCF6k8HMMBkCEDskxTBDAZwuAkkqIfxIQyhBQBFvAQSDITM5VDW6XNE4KagNh6Bgwe60smQUB3d4Rz1ZBApnFASDd0hihh12BkE9kjAJVlycXIg7CQIFA6SlnJ87paqbSKiKoqusnbMdmDC2tXQlkUhziYtyWTxIfy6BE8WJt5YJvpJivxNaGmLHT0VnOgSYf0dZXS7APdpB309RnHOG5gDqXGLDaC457D1zZ%2FV%2FnmOM82XiHRLYKhKP1oZmADdEAAAh%2BQQJCgAAACwAAAAAIAAgAAAE6hDISWlZpOrNp1lGNRSdRpDUolIGw5RUYhhHukqFu8DsrEyqnWThGvAmhVlteBvojpTDDBUEIFwMFBRAmBkSgOrBFZogCASwBDEY%2FCZSg7GSE0gSCjQBMVG023xWBhklAnoEdhQEfyNqMIcKjhRsjEdnezB%2BA4k8gTwJhFuiW4dokXiloUepBAp5qaKpp6%2BHo7aWW54wl7obvEe0kRuoplCGepwSx2jJvqHEmGt6whJpGpfJCHmOoNHKaHx61WiSR92E4lbFoq%2BB6QDtuetcaBPnW6%2BO7wDHpIiK9SaVK5GgV543tzjgGcghAgAh%2BQQJCgAAACwAAAAAIAAgAAAE7hDISSkxpOrN5zFHNWRdhSiVoVLHspRUMoyUakyEe8PTPCATW9A14E0UvuAKMNAZKYUZCiBMuBakSQKG8G2FzUWox2AUtAQFcBKlVQoLgQReZhQlCIJesQXI5B0CBnUMOxMCenoCfTCEWBsJColTMANldx15BGs8B5wlCZ9Po6OJkwmRpnqkqnuSrayqfKmqpLajoiW5HJq7FL1Gr2mMMcKUMIiJgIemy7xZtJsTmsM4xHiKv5KMCXqfyUCJEonXPN2rAOIAmsfB3uPoAK%2B%2BG%2Bw48edZPK%2BM6hLJpQg484enXIdQFSS1u6UhksENEQAAIfkECQoAAAAsAAAAACAAIAAABOcQyEmpGKLqzWcZRVUQnZYg1aBSh2GUVEIQ2aQOE%2BG%2BcD4ntpWkZQj1JIiZIogDFFyHI0UxQwFugMSOFIPJftfVAEoZLBbcLEFhlQiqGp1Vd140AUklUN3eCA51C1EWMzMCezCBBmkxVIVHBWd3HHl9JQOIJSdSnJ0TDKChCwUJjoWMPaGqDKannasMo6WnM562R5YluZRwur0wpgqZE7NKUm%2BFNRPIhjBJxKZteWuIBMN4zRMIVIhffcgojwCF117i4nlLnY5ztRLsnOk%2BaV%2BoJY7V7m76PdkS4trKcdg0Zc0tTcKkRAAAIfkECQoAAAAsAAAAACAAIAAABO4QyEkpKqjqzScpRaVkXZWQEximw1BSCUEIlDohrft6cpKCk5xid5MNJTaAIkekKGQkWyKHkvhKsR7ARmitkAYDYRIbUQRQjWBwJRzChi9CRlBcY1UN4g0%2FVNB0AlcvcAYHRyZPdEQFYV8ccwR5HWxEJ02YmRMLnJ1xCYp0Y5idpQuhopmmC2KgojKasUQDk5BNAwwMOh2RtRq5uQuPZKGIJQIGwAwGf6I0JXMpC8C7kXWDBINFMxS4DKMAWVWAGYsAdNqW5uaRxkSKJOZKaU3tPOBZ4DuK2LATgJhkPJMgTwKCdFjyPHEnKxFCDhEAACH5BAkKAAAALAAAAAAgACAAAATzEMhJaVKp6s2nIkolIJ2WkBShpkVRWqqQrhLSEu9MZJKK9y1ZrqYK9WiClmvoUaF8gIQSNeF1Er4MNFn4SRSDARWroAIETg1iVwuHjYB1kYc1mwruwXKC9gmsJXliGxc%2BXiUCby9ydh1sOSdMkpMTBpaXBzsfhoc5l58Gm5yToAaZhaOUqjkDgCWNHAULCwOLaTmzswadEqggQwgHuQsHIoZCHQMMQgQGubVEcxOPFAcMDAYUA85eWARmfSRQCdcMe0zeP1AAygwLlJtPNAAL19DARdPzBOWSm1brJBi45soRAWQAAkrQIykShQ9wVhHCwCQCACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiRMDjI0Fd30%2FiI2UA5GSS5UDj2l6NoqgOgN4gksEBgYFf0FDqKgHnyZ9OX8HrgYHdHpcHQULXAS2qKpENRg7eAMLC7kTBaixUYFkKAzWAAnLC7FLVxLWDBLKCwaKTULgEwbLA4hJtOkSBNqITT3xEgfLpBtzE%2FjiuL04RGEBgwWhShRgQExHBAAh%2BQQJCgAAACwAAAAAIAAgAAAE7xDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfZiCqGk5dTESJeaOAlClzsJsqwiJwiqnFrb2nS9kmIcgEsjQydLiIlHehhpejaIjzh9eomSjZR%2BipslWIRLAgMDOR2DOqKogTB9pCUJBagDBXR6XB0EBkIIsaRsGGMMAxoDBgYHTKJiUYEGDAzHC9EACcUGkIgFzgwZ0QsSBcXHiQvOwgDdEwfFs0sDzt4S6BK4xYjkDOzn0unFeBzOBijIm1Dgmg5YFQwsCMjp1oJ8LyIAACH5BAkKAAAALAAAAAAgACAAAATwEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GGl6NoiPOH16iZKNlH6KmyWFOggHhEEvAwwMA0N9GBsEC6amhnVcEwavDAazGwIDaH1ipaYLBUTCGgQDA8NdHz0FpqgTBwsLqAbWAAnIA4FWKdMLGdYGEgraigbT0OITBcg5QwPT4xLrROZL6AuQAPUS7bxLpoWidY0JtxLHKhwwMJBTHgPKdEQAACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GAULDJCRiXo1CpGXDJOUjY%2BYip9DhToJA4RBLwMLCwVDfRgbBAaqqoZ1XBMHswsHtxtFaH1iqaoGNgAIxRpbFAgfPQSqpbgGBqUD1wBXeCYp1AYZ19JJOYgH1KwA4UBvQwXUBxPqVD9L3sbp2BNk2xvvFPJd%2BMFCN6HAAIKgNggY0KtEBAAh%2BQQJCgAAACwAAAAAIAAgAAAE6BDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfYIDMaAFdTESJeaEDAIMxYFqrOUaNW4E4ObYcCXaiBVEgULe0NJaxxtYksjh2NLkZISgDgJhHthkpU4mW6blRiYmZOlh4JWkDqILwUGBnE6TYEbCgevr0N1gH4At7gHiRpFaLNrrq8HNgAJA70AWxQIH1%2BvsYMDAzZQPC9VCNkDWUhGkuE5PxJNwiUK4UfLzOlD4WvzAHaoG9nxPi5d%2BjYUqfAhhykOFwJWiAAAIfkECQoAAAAsAAAAACAAIAAABPAQyElpUqnqzaciSoVkXVUMFaFSwlpOCcMYlErAavhOMnNLNo8KsZsMZItJEIDIFSkLGQoQTNhIsFehRww2CQLKF0tYGKYSg%2BygsZIuNqJksKgbfgIGepNo2cIUB3V1B3IvNiBYNQaDSTtfhhx0CwVPI0UJe0%2Bbm4g5VgcGoqOcnjmjqDSdnhgEoamcsZuXO1aWQy8KAwOAuTYYGwi7w5h%2BKr0SJ8MFihpNbx%2B4Erq7BYBuzsdiH1jCAzoSfl0rVirNbRXlBBlLX%2BBP0XJLAPGzTkAuAOqb0WT5AH7OcdCm5B8TgRwSRKIHQtaLCwg1RAAAOwAAAAAAAAAAAA%3D%3D);visibility:visible;opacity:.6;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-ms-transition:all .3s ease;transition:all .3s ease}.reveal .preview-link-overlay header{position:absolute;left:0;top:0;width:100%;height:40px;z-index:2;border-bottom:1px solid #222}.reveal .preview-link-overlay header a{display:inline-block;width:40px;height:40px;padding:0 10px;float:right;opacity:.6;box-sizing:border-box}.reveal .preview-link-overlay header a:hover{opacity:1}.reveal .preview-link-overlay header a .icon{display:inline-block;width:20px;height:20px;background-position:50% 50%;background-size:100%;background-repeat:no-repeat}.reveal .preview-link-overlay header a.close .icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABkklEQVRYR8WX4VHDMAxG6wnoJrABZQPYBCaBTWAD2g1gE5gg6OOsXuxIlr40d81dfrSJ9V4c2VLK7spHuTJ/5wpM07QXuXc5X0opX2tEJcadjHuV80li/FgxTIEK/5QBCICBD6xEhSMGHgQPgBgLiYVAB1dpSqKDawxTohFw4JSEA3clzgIBPCURwE2JucBR7rhPJJv5OpJwDX+SfDjgx1wACQeJG1aChP9K/IMmdZ8DtESV1WyP3Bt4MwM6sj4NMxMYiqUWHQu4KYA/SYkIjOsm3BXYWMKFDwU2khjCQ4ELJUJ4SmClRArOCmSXGuKma0fYD5CbzHxFpCSGAhfAVSSUGDUk2BWZaff2g6GE15BsBQ9nwmpIGDiyHQddwNTMKkbZaf9fajXQca1EX44puJZUsnY0ObGmITE3GVLCbEhQUjGVt146j6oasWN+49Vph2w1pZ5EansNZqKBm1txbU57iRRcZ86RWMDdWtBJUHBHwoQPi1GV+JCbntmvok7iTX4/Up9mgyTc/FJYDTcndgH/AA5A/CHsyEkVAAAAAElFTkSuQmCC)}.reveal .preview-link-overlay header a.external .icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAcElEQVRYR+2WSQoAIQwEzf8f7XiOMkUQxUPlGkM3hVmiQfQR9GYnH1SsAQlI4DiBqkCMoNb9y2e90IAEJPAcgdznU9+engMaeJ7Azh5Y1U67gAho4DqBqmB1buAf0MB1AlVBek83ZPkmJMGc1wAR+AAqod/B97TRpQAAAABJRU5ErkJggg==)}.reveal .preview-link-overlay .viewport{position:absolute;top:40px;right:0;bottom:0;left:0}.reveal .preview-link-overlay .viewport iframe{width:100%;height:100%;max-width:100%;max-height:100%;border:0;opacity:0;visibility:hidden;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-ms-transition:all .3s ease;transition:all .3s ease}.reveal .preview-link-overlay.loaded .viewport iframe{opacity:1;visibility:visible}.reveal .preview-link-overlay.loaded .spinner{opacity:0;visibility:hidden;-webkit-transform:scale(0.2);-moz-transform:scale(0.2);-ms-transform:scale(0.2);transform:scale(0.2)}.reveal .roll{display:inline-block;line-height:1.2;overflow:hidden;vertical-align:top;-webkit-perspective:400px;-moz-perspective:400px;-ms-perspective:400px;perspective:400px;-webkit-perspective-origin:50% 50%;-moz-perspective-origin:50% 50%;-ms-perspective-origin:50% 50%;perspective-origin:50% 50%}.reveal .roll:hover{background:0;text-shadow:none}.reveal .roll span{display:block;position:relative;padding:0 2px;pointer-events:none;-webkit-transition:all 400ms ease;-moz-transition:all 400ms ease;-ms-transition:all 400ms ease;transition:all 400ms ease;-webkit-transform-origin:50% 0;-moz-transform-origin:50% 0;-ms-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;-ms-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden}.reveal .roll:hover span{background:rgba(0,0,0,.5);-webkit-transform:translate3d(0px,0,-45px) rotateX(90deg);-moz-transform:translate3d(0px,0,-45px) rotateX(90deg);-ms-transform:translate3d(0px,0,-45px) rotateX(90deg);transform:translate3d(0px,0,-45px) rotateX(90deg)}.reveal .roll span:after{content:attr(data-title);display:block;position:absolute;left:0;top:0;padding:0 2px;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform-origin:50% 0;-moz-transform-origin:50% 0;-ms-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform:translate3d(0px,110%,0) rotateX(-90deg);-moz-transform:translate3d(0px,110%,0) rotateX(-90deg);-ms-transform:translate3d(0px,110%,0) rotateX(-90deg);transform:translate3d(0px,110%,0) rotateX(-90deg)}.reveal aside.notes{display:none}.zoomed .reveal *,.zoomed .reveal :before,.zoomed .reveal :after{-webkit-transform:none!important;-moz-transform:none!important;-ms-transform:none!important;transform:none!important;-webkit-backface-visibility:visible!important;-moz-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important}.zoomed .reveal .progress,.zoomed .reveal .controls{opacity:0}.zoomed .reveal .roll span{background:0}.zoomed .reveal .roll span:after{visibility:hidden}
|
data/reveal.js/index.html
CHANGED
@@ -167,12 +167,15 @@
|
|
167
167
|
<h2>Themes</h2>
|
168
168
|
<p>
|
169
169
|
Reveal.js comes with a few themes built in: <br>
|
170
|
+
<a href="?#/themes">Default</a> -
|
170
171
|
<a href="?theme=sky#/themes">Sky</a> -
|
171
172
|
<a href="?theme=beige#/themes">Beige</a> -
|
172
173
|
<a href="?theme=simple#/themes">Simple</a> -
|
173
174
|
<a href="?theme=serif#/themes">Serif</a> -
|
174
|
-
<a href="?theme=night#/themes">Night</a>
|
175
|
-
<a href="
|
175
|
+
<a href="?theme=night#/themes">Night</a> <br>
|
176
|
+
<a href="?theme=moon.css#/themes">Moon</a> -
|
177
|
+
<a href="?theme=simple.css#/themes">Simple</a> -
|
178
|
+
<a href="?theme=solarized.css#/themes">Solarized</a>
|
176
179
|
</p>
|
177
180
|
<p>
|
178
181
|
<small>
|
@@ -259,10 +262,10 @@ function linkify( selector ) {
|
|
259
262
|
for( var i = 0, len = nodes.length; i < len; i++ ) {
|
260
263
|
var node = nodes[i];
|
261
264
|
|
262
|
-
if( !node.className )
|
265
|
+
if( !node.className ) {
|
263
266
|
node.className += ' roll';
|
264
267
|
}
|
265
|
-
}
|
268
|
+
}
|
266
269
|
}
|
267
270
|
}
|
268
271
|
</code></pre>
|
@@ -371,8 +374,6 @@ function linkify( selector ) {
|
|
371
374
|
{ src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
|
372
375
|
{ src: 'plugin/zoom-js/zoom.js', async: true, condition: function() { return !!document.body.classList; } },
|
373
376
|
{ src: 'plugin/notes/notes.js', async: true, condition: function() { return !!document.body.classList; } }
|
374
|
-
// { src: 'plugin/search/search.js', async: true, condition: function() { return !!document.body.classList; } }
|
375
|
-
// { src: 'plugin/remotes/remotes.js', async: true, condition: function() { return !!document.body.classList; } }
|
376
377
|
]
|
377
378
|
});
|
378
379
|
|
data/reveal.js/js/reveal.js
CHANGED
@@ -59,6 +59,10 @@ var Reveal = (function(){
|
|
59
59
|
// Turns fragments on and off globally
|
60
60
|
fragments: true,
|
61
61
|
|
62
|
+
// Flags if the presentation is running in an embedded mode,
|
63
|
+
// i.e. contained within a limited portion of the screen
|
64
|
+
embedded: false,
|
65
|
+
|
62
66
|
// Number of milliseconds between automatically proceeding to the
|
63
67
|
// next slide, disabled when set to 0, this value can be overwritten
|
64
68
|
// by using a data-autoslide attribute on your slides
|
@@ -68,7 +72,7 @@ var Reveal = (function(){
|
|
68
72
|
mouseWheel: false,
|
69
73
|
|
70
74
|
// Apply a 3D roll to links on hover
|
71
|
-
rollingLinks:
|
75
|
+
rollingLinks: false,
|
72
76
|
|
73
77
|
// Opens links in an iframe preview overlay
|
74
78
|
previewLinks: false,
|
@@ -83,18 +87,24 @@ var Reveal = (function(){
|
|
83
87
|
transitionSpeed: 'default', // default/fast/slow
|
84
88
|
|
85
89
|
// Transition style for full page slide backgrounds
|
86
|
-
backgroundTransition: 'default', // default/linear
|
90
|
+
backgroundTransition: 'default', // default/linear/none
|
91
|
+
|
92
|
+
// Number of slides away from the current that are visible
|
93
|
+
viewDistance: 3,
|
87
94
|
|
88
95
|
// Script dependencies to load
|
89
96
|
dependencies: []
|
90
97
|
},
|
91
98
|
|
99
|
+
// Flags if reveal.js is loaded (has dispatched the 'ready' event)
|
100
|
+
loaded = false,
|
101
|
+
|
92
102
|
// The current auto-slide duration
|
93
103
|
autoSlide = 0,
|
94
104
|
|
95
105
|
// The horizontal and vertical index of the currently active slide
|
96
|
-
indexh
|
97
|
-
indexv
|
106
|
+
indexh,
|
107
|
+
indexv,
|
98
108
|
|
99
109
|
// The previous and current slide HTML elements
|
100
110
|
previousSlide,
|
@@ -111,19 +121,14 @@ var Reveal = (function(){
|
|
111
121
|
// Cached references to DOM elements
|
112
122
|
dom = {},
|
113
123
|
|
114
|
-
//
|
115
|
-
supports3DTransforms
|
116
|
-
'MozPerspective' in document.body.style ||
|
117
|
-
'msPerspective' in document.body.style ||
|
118
|
-
'OPerspective' in document.body.style ||
|
119
|
-
'perspective' in document.body.style,
|
124
|
+
// Client support for CSS 3D transforms, see #checkCapabilities()
|
125
|
+
supports3DTransforms,
|
120
126
|
|
121
|
-
//
|
122
|
-
supports2DTransforms
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
'transform' in document.body.style,
|
127
|
+
// Client support for CSS 2D transforms, see #checkCapabilities()
|
128
|
+
supports2DTransforms,
|
129
|
+
|
130
|
+
// Client is a mobile device, see #checkCapabilities()
|
131
|
+
isMobileDevice,
|
127
132
|
|
128
133
|
// Throttles mouse wheel navigation
|
129
134
|
lastMouseWheelStep = 0,
|
@@ -149,8 +154,8 @@ var Reveal = (function(){
|
|
149
154
|
startY: 0,
|
150
155
|
startSpan: 0,
|
151
156
|
startCount: 0,
|
152
|
-
|
153
|
-
threshold:
|
157
|
+
captured: false,
|
158
|
+
threshold: 40
|
154
159
|
};
|
155
160
|
|
156
161
|
/**
|
@@ -158,6 +163,8 @@ var Reveal = (function(){
|
|
158
163
|
*/
|
159
164
|
function initialize( options ) {
|
160
165
|
|
166
|
+
checkCapabilities();
|
167
|
+
|
161
168
|
if( !supports2DTransforms && !supports3DTransforms ) {
|
162
169
|
document.body.setAttribute( 'class', 'no-transforms' );
|
163
170
|
|
@@ -180,6 +187,136 @@ var Reveal = (function(){
|
|
180
187
|
|
181
188
|
}
|
182
189
|
|
190
|
+
/**
|
191
|
+
* Inspect the client to see what it's capable of, this
|
192
|
+
* should only happens once per runtime.
|
193
|
+
*/
|
194
|
+
function checkCapabilities() {
|
195
|
+
|
196
|
+
supports3DTransforms = 'WebkitPerspective' in document.body.style ||
|
197
|
+
'MozPerspective' in document.body.style ||
|
198
|
+
'msPerspective' in document.body.style ||
|
199
|
+
'OPerspective' in document.body.style ||
|
200
|
+
'perspective' in document.body.style;
|
201
|
+
|
202
|
+
supports2DTransforms = 'WebkitTransform' in document.body.style ||
|
203
|
+
'MozTransform' in document.body.style ||
|
204
|
+
'msTransform' in document.body.style ||
|
205
|
+
'OTransform' in document.body.style ||
|
206
|
+
'transform' in document.body.style;
|
207
|
+
|
208
|
+
isMobileDevice = navigator.userAgent.match( /(iphone|ipod|android)/gi );
|
209
|
+
|
210
|
+
}
|
211
|
+
|
212
|
+
/**
|
213
|
+
* Loads the dependencies of reveal.js. Dependencies are
|
214
|
+
* defined via the configuration option 'dependencies'
|
215
|
+
* and will be loaded prior to starting/binding reveal.js.
|
216
|
+
* Some dependencies may have an 'async' flag, if so they
|
217
|
+
* will load after reveal.js has been started up.
|
218
|
+
*/
|
219
|
+
function load() {
|
220
|
+
|
221
|
+
var scripts = [],
|
222
|
+
scriptsAsync = [];
|
223
|
+
|
224
|
+
for( var i = 0, len = config.dependencies.length; i < len; i++ ) {
|
225
|
+
var s = config.dependencies[i];
|
226
|
+
|
227
|
+
// Load if there's no condition or the condition is truthy
|
228
|
+
if( !s.condition || s.condition() ) {
|
229
|
+
if( s.async ) {
|
230
|
+
scriptsAsync.push( s.src );
|
231
|
+
}
|
232
|
+
else {
|
233
|
+
scripts.push( s.src );
|
234
|
+
}
|
235
|
+
|
236
|
+
// Extension may contain callback functions
|
237
|
+
if( typeof s.callback === 'function' ) {
|
238
|
+
head.ready( s.src.match( /([\w\d_\-]*)\.?js$|[^\\\/]*$/i )[0], s.callback );
|
239
|
+
}
|
240
|
+
}
|
241
|
+
}
|
242
|
+
|
243
|
+
// Called once synchronous scripts finish loading
|
244
|
+
function proceed() {
|
245
|
+
if( scriptsAsync.length ) {
|
246
|
+
// Load asynchronous scripts
|
247
|
+
head.js.apply( null, scriptsAsync );
|
248
|
+
}
|
249
|
+
|
250
|
+
start();
|
251
|
+
}
|
252
|
+
|
253
|
+
if( scripts.length ) {
|
254
|
+
head.ready( proceed );
|
255
|
+
|
256
|
+
// Load synchronous scripts
|
257
|
+
head.js.apply( null, scripts );
|
258
|
+
}
|
259
|
+
else {
|
260
|
+
proceed();
|
261
|
+
}
|
262
|
+
|
263
|
+
}
|
264
|
+
|
265
|
+
/**
|
266
|
+
* Starts up reveal.js by binding input events and navigating
|
267
|
+
* to the current URL deeplink if there is one.
|
268
|
+
*/
|
269
|
+
function start() {
|
270
|
+
|
271
|
+
// Make sure we've got all the DOM elements we need
|
272
|
+
setupDOM();
|
273
|
+
|
274
|
+
// Decorate the slide DOM elements with state classes (past/future)
|
275
|
+
setupSlides();
|
276
|
+
|
277
|
+
// Updates the presentation to match the current configuration values
|
278
|
+
configure();
|
279
|
+
|
280
|
+
// Read the initial hash
|
281
|
+
readURL();
|
282
|
+
|
283
|
+
// Notify listeners that the presentation is ready but use a 1ms
|
284
|
+
// timeout to ensure it's not fired synchronously after #initialize()
|
285
|
+
setTimeout( function() {
|
286
|
+
// Enable transitions now that we're loaded
|
287
|
+
dom.slides.classList.remove( 'no-transition' );
|
288
|
+
|
289
|
+
loaded = true;
|
290
|
+
|
291
|
+
dispatchEvent( 'ready', {
|
292
|
+
'indexh': indexh,
|
293
|
+
'indexv': indexv,
|
294
|
+
'currentSlide': currentSlide
|
295
|
+
} );
|
296
|
+
}, 1 );
|
297
|
+
|
298
|
+
}
|
299
|
+
|
300
|
+
/**
|
301
|
+
* Iterates through and decorates slides DOM elements with
|
302
|
+
* appropriate classes.
|
303
|
+
*/
|
304
|
+
function setupSlides() {
|
305
|
+
|
306
|
+
var horizontalSlides = toArray( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) );
|
307
|
+
horizontalSlides.forEach( function( horizontalSlide ) {
|
308
|
+
|
309
|
+
var verticalSlides = toArray( horizontalSlide.querySelectorAll( 'section' ) );
|
310
|
+
verticalSlides.forEach( function( verticalSlide, y ) {
|
311
|
+
|
312
|
+
if( y > 0 ) verticalSlide.classList.add( 'future' );
|
313
|
+
|
314
|
+
} );
|
315
|
+
|
316
|
+
} );
|
317
|
+
|
318
|
+
}
|
319
|
+
|
183
320
|
/**
|
184
321
|
* Finds and stores references to DOM elements which are
|
185
322
|
* required by the presentation. If a required element is
|
@@ -192,61 +329,59 @@ var Reveal = (function(){
|
|
192
329
|
dom.wrapper = document.querySelector( '.reveal' );
|
193
330
|
dom.slides = document.querySelector( '.reveal .slides' );
|
194
331
|
|
332
|
+
// Prevent transitions while we're loading
|
333
|
+
dom.slides.classList.add( 'no-transition' );
|
334
|
+
|
195
335
|
// Background element
|
196
|
-
|
197
|
-
dom.background = document.createElement( 'div' );
|
198
|
-
dom.background.classList.add( 'backgrounds' );
|
199
|
-
dom.wrapper.appendChild( dom.background );
|
200
|
-
}
|
336
|
+
dom.background = createSingletonNode( dom.wrapper, 'div', 'backgrounds', null );
|
201
337
|
|
202
338
|
// Progress bar
|
203
|
-
|
204
|
-
|
205
|
-
progressElement.classList.add( 'progress' );
|
206
|
-
progressElement.innerHTML = '<span></span>';
|
207
|
-
dom.wrapper.appendChild( progressElement );
|
208
|
-
}
|
339
|
+
dom.progress = createSingletonNode( dom.wrapper, 'div', 'progress', '<span></span>' );
|
340
|
+
dom.progressbar = dom.progress.querySelector( 'span' );
|
209
341
|
|
210
342
|
// Arrow controls
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
'<div class="navigate-up"></div>' +
|
217
|
-
'<div class="navigate-down"></div>';
|
218
|
-
dom.wrapper.appendChild( controlsElement );
|
219
|
-
}
|
343
|
+
createSingletonNode( dom.wrapper, 'aside', 'controls',
|
344
|
+
'<div class="navigate-left"></div>' +
|
345
|
+
'<div class="navigate-right"></div>' +
|
346
|
+
'<div class="navigate-up"></div>' +
|
347
|
+
'<div class="navigate-down"></div>' );
|
220
348
|
|
221
349
|
// State background element [DEPRECATED]
|
222
|
-
|
223
|
-
var stateBackgroundElement = document.createElement( 'div' );
|
224
|
-
stateBackgroundElement.classList.add( 'state-background' );
|
225
|
-
dom.wrapper.appendChild( stateBackgroundElement );
|
226
|
-
}
|
350
|
+
createSingletonNode( dom.wrapper, 'div', 'state-background', null );
|
227
351
|
|
228
352
|
// Overlay graphic which is displayed during the paused mode
|
229
|
-
|
230
|
-
var pausedElement = document.createElement( 'div' );
|
231
|
-
pausedElement.classList.add( 'pause-overlay' );
|
232
|
-
dom.wrapper.appendChild( pausedElement );
|
233
|
-
}
|
353
|
+
createSingletonNode( dom.wrapper, 'div', 'pause-overlay', null );
|
234
354
|
|
235
355
|
// Cache references to elements
|
236
|
-
dom.
|
237
|
-
|
356
|
+
dom.controls = document.querySelector( '.reveal .controls' );
|
357
|
+
|
358
|
+
// There can be multiple instances of controls throughout the page
|
359
|
+
dom.controlsLeft = toArray( document.querySelectorAll( '.navigate-left' ) );
|
360
|
+
dom.controlsRight = toArray( document.querySelectorAll( '.navigate-right' ) );
|
361
|
+
dom.controlsUp = toArray( document.querySelectorAll( '.navigate-up' ) );
|
362
|
+
dom.controlsDown = toArray( document.querySelectorAll( '.navigate-down' ) );
|
363
|
+
dom.controlsPrev = toArray( document.querySelectorAll( '.navigate-prev' ) );
|
364
|
+
dom.controlsNext = toArray( document.querySelectorAll( '.navigate-next' ) );
|
365
|
+
|
366
|
+
}
|
238
367
|
|
239
|
-
|
240
|
-
|
368
|
+
/**
|
369
|
+
* Creates an HTML element and returns a reference to it.
|
370
|
+
* If the element already exists the existing instance will
|
371
|
+
* be returned.
|
372
|
+
*/
|
373
|
+
function createSingletonNode( container, tagname, classname, innerHTML ) {
|
241
374
|
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
375
|
+
var node = container.querySelector( '.' + classname );
|
376
|
+
if( !node ) {
|
377
|
+
node = document.createElement( tagname );
|
378
|
+
node.classList.add( classname );
|
379
|
+
if( innerHTML !== null ) {
|
380
|
+
node.innerHTML = innerHTML;
|
381
|
+
}
|
382
|
+
container.appendChild( node );
|
249
383
|
}
|
384
|
+
return node;
|
250
385
|
|
251
386
|
}
|
252
387
|
|
@@ -334,99 +469,6 @@ var Reveal = (function(){
|
|
334
469
|
|
335
470
|
}
|
336
471
|
|
337
|
-
/**
|
338
|
-
* Hides the address bar if we're on a mobile device.
|
339
|
-
*/
|
340
|
-
function hideAddressBar() {
|
341
|
-
|
342
|
-
if( /iphone|ipod|android/gi.test( navigator.userAgent ) && !/crios/gi.test( navigator.userAgent ) ) {
|
343
|
-
// Events that should trigger the address bar to hide
|
344
|
-
window.addEventListener( 'load', removeAddressBar, false );
|
345
|
-
window.addEventListener( 'orientationchange', removeAddressBar, false );
|
346
|
-
}
|
347
|
-
|
348
|
-
}
|
349
|
-
|
350
|
-
/**
|
351
|
-
* Loads the dependencies of reveal.js. Dependencies are
|
352
|
-
* defined via the configuration option 'dependencies'
|
353
|
-
* and will be loaded prior to starting/binding reveal.js.
|
354
|
-
* Some dependencies may have an 'async' flag, if so they
|
355
|
-
* will load after reveal.js has been started up.
|
356
|
-
*/
|
357
|
-
function load() {
|
358
|
-
|
359
|
-
var scripts = [],
|
360
|
-
scriptsAsync = [];
|
361
|
-
|
362
|
-
for( var i = 0, len = config.dependencies.length; i < len; i++ ) {
|
363
|
-
var s = config.dependencies[i];
|
364
|
-
|
365
|
-
// Load if there's no condition or the condition is truthy
|
366
|
-
if( !s.condition || s.condition() ) {
|
367
|
-
if( s.async ) {
|
368
|
-
scriptsAsync.push( s.src );
|
369
|
-
}
|
370
|
-
else {
|
371
|
-
scripts.push( s.src );
|
372
|
-
}
|
373
|
-
|
374
|
-
// Extension may contain callback functions
|
375
|
-
if( typeof s.callback === 'function' ) {
|
376
|
-
head.ready( s.src.match( /([\w\d_\-]*)\.?js$|[^\\\/]*$/i )[0], s.callback );
|
377
|
-
}
|
378
|
-
}
|
379
|
-
}
|
380
|
-
|
381
|
-
// Called once synchronous scripts finish loading
|
382
|
-
function proceed() {
|
383
|
-
if( scriptsAsync.length ) {
|
384
|
-
// Load asynchronous scripts
|
385
|
-
head.js.apply( null, scriptsAsync );
|
386
|
-
}
|
387
|
-
|
388
|
-
start();
|
389
|
-
}
|
390
|
-
|
391
|
-
if( scripts.length ) {
|
392
|
-
head.ready( proceed );
|
393
|
-
|
394
|
-
// Load synchronous scripts
|
395
|
-
head.js.apply( null, scripts );
|
396
|
-
}
|
397
|
-
else {
|
398
|
-
proceed();
|
399
|
-
}
|
400
|
-
|
401
|
-
}
|
402
|
-
|
403
|
-
/**
|
404
|
-
* Starts up reveal.js by binding input events and navigating
|
405
|
-
* to the current URL deeplink if there is one.
|
406
|
-
*/
|
407
|
-
function start() {
|
408
|
-
|
409
|
-
// Make sure we've got all the DOM elements we need
|
410
|
-
setupDOM();
|
411
|
-
|
412
|
-
// Updates the presentation to match the current configuration values
|
413
|
-
configure();
|
414
|
-
|
415
|
-
// Read the initial hash
|
416
|
-
readURL();
|
417
|
-
|
418
|
-
// Notify listeners that the presentation is ready but use a 1ms
|
419
|
-
// timeout to ensure it's not fired synchronously after #initialize()
|
420
|
-
setTimeout( function() {
|
421
|
-
dispatchEvent( 'ready', {
|
422
|
-
'indexh': indexh,
|
423
|
-
'indexv': indexv,
|
424
|
-
'currentSlide': currentSlide
|
425
|
-
} );
|
426
|
-
}, 1 );
|
427
|
-
|
428
|
-
}
|
429
|
-
|
430
472
|
/**
|
431
473
|
* Applies the configuration settings from the config
|
432
474
|
* object. May be called multiple times.
|
@@ -447,13 +489,8 @@ var Reveal = (function(){
|
|
447
489
|
dom.wrapper.setAttribute( 'data-transition-speed', config.transitionSpeed );
|
448
490
|
dom.wrapper.setAttribute( 'data-background-transition', config.backgroundTransition );
|
449
491
|
|
450
|
-
|
451
|
-
|
452
|
-
}
|
453
|
-
|
454
|
-
if( dom.progress ) {
|
455
|
-
dom.progress.style.display = ( config.progress && dom.progress ) ? 'block' : 'none';
|
456
|
-
}
|
492
|
+
dom.controls.style.display = config.controls ? 'block' : 'none';
|
493
|
+
dom.progress.style.display = config.progress ? 'block' : 'none';
|
457
494
|
|
458
495
|
if( config.rtl ) {
|
459
496
|
dom.wrapper.classList.add( 'rtl' );
|
@@ -542,16 +579,14 @@ var Reveal = (function(){
|
|
542
579
|
dom.progress.addEventListener( 'click', onProgressClicked, false );
|
543
580
|
}
|
544
581
|
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
} );
|
554
|
-
}
|
582
|
+
[ 'touchstart', 'click' ].forEach( function( eventName ) {
|
583
|
+
dom.controlsLeft.forEach( function( el ) { el.addEventListener( eventName, onNavigateLeftClicked, false ); } );
|
584
|
+
dom.controlsRight.forEach( function( el ) { el.addEventListener( eventName, onNavigateRightClicked, false ); } );
|
585
|
+
dom.controlsUp.forEach( function( el ) { el.addEventListener( eventName, onNavigateUpClicked, false ); } );
|
586
|
+
dom.controlsDown.forEach( function( el ) { el.addEventListener( eventName, onNavigateDownClicked, false ); } );
|
587
|
+
dom.controlsPrev.forEach( function( el ) { el.addEventListener( eventName, onNavigatePrevClicked, false ); } );
|
588
|
+
dom.controlsNext.forEach( function( el ) { el.addEventListener( eventName, onNavigateNextClicked, false ); } );
|
589
|
+
} );
|
555
590
|
|
556
591
|
}
|
557
592
|
|
@@ -580,16 +615,14 @@ var Reveal = (function(){
|
|
580
615
|
dom.progress.removeEventListener( 'click', onProgressClicked, false );
|
581
616
|
}
|
582
617
|
|
583
|
-
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
} );
|
592
|
-
}
|
618
|
+
[ 'touchstart', 'click' ].forEach( function( eventName ) {
|
619
|
+
dom.controlsLeft.forEach( function( el ) { el.removeEventListener( eventName, onNavigateLeftClicked, false ); } );
|
620
|
+
dom.controlsRight.forEach( function( el ) { el.removeEventListener( eventName, onNavigateRightClicked, false ); } );
|
621
|
+
dom.controlsUp.forEach( function( el ) { el.removeEventListener( eventName, onNavigateUpClicked, false ); } );
|
622
|
+
dom.controlsDown.forEach( function( el ) { el.removeEventListener( eventName, onNavigateDownClicked, false ); } );
|
623
|
+
dom.controlsPrev.forEach( function( el ) { el.removeEventListener( eventName, onNavigatePrevClicked, false ); } );
|
624
|
+
dom.controlsNext.forEach( function( el ) { el.removeEventListener( eventName, onNavigateNextClicked, false ); } );
|
625
|
+
} );
|
593
626
|
|
594
627
|
}
|
595
628
|
|
@@ -630,6 +663,19 @@ var Reveal = (function(){
|
|
630
663
|
|
631
664
|
}
|
632
665
|
|
666
|
+
/**
|
667
|
+
* Applies a CSS transform to the target element.
|
668
|
+
*/
|
669
|
+
function transformElement( element, transform ) {
|
670
|
+
|
671
|
+
element.style.WebkitTransform = transform;
|
672
|
+
element.style.MozTransform = transform;
|
673
|
+
element.style.msTransform = transform;
|
674
|
+
element.style.OTransform = transform;
|
675
|
+
element.style.transform = transform;
|
676
|
+
|
677
|
+
}
|
678
|
+
|
633
679
|
/**
|
634
680
|
* Retrieves the height of the given element by looking
|
635
681
|
* at the position and height of its immediate children.
|
@@ -665,6 +711,48 @@ var Reveal = (function(){
|
|
665
711
|
|
666
712
|
}
|
667
713
|
|
714
|
+
/**
|
715
|
+
* Returns the remaining height within the parent of the
|
716
|
+
* target element after subtracting the height of all
|
717
|
+
* siblings.
|
718
|
+
*
|
719
|
+
* remaining height = [parent height] - [ siblings height]
|
720
|
+
*/
|
721
|
+
function getRemainingHeight( element, height ) {
|
722
|
+
|
723
|
+
height = height || 0;
|
724
|
+
|
725
|
+
if( element ) {
|
726
|
+
var parent = element.parentNode;
|
727
|
+
var siblings = parent.childNodes;
|
728
|
+
|
729
|
+
// Subtract the height of each sibling
|
730
|
+
toArray( siblings ).forEach( function( sibling ) {
|
731
|
+
|
732
|
+
if( typeof sibling.offsetHeight === 'number' && sibling !== element ) {
|
733
|
+
|
734
|
+
var styles = window.getComputedStyle( sibling ),
|
735
|
+
marginTop = parseInt( styles.marginTop, 10 ),
|
736
|
+
marginBottom = parseInt( styles.marginBottom, 10 );
|
737
|
+
|
738
|
+
height -= sibling.offsetHeight + marginTop + marginBottom;
|
739
|
+
|
740
|
+
}
|
741
|
+
|
742
|
+
} );
|
743
|
+
|
744
|
+
var elementStyles = window.getComputedStyle( element );
|
745
|
+
|
746
|
+
// Subtract the margins of the target element
|
747
|
+
height -= parseInt( elementStyles.marginTop, 10 ) +
|
748
|
+
parseInt( elementStyles.marginBottom, 10 );
|
749
|
+
|
750
|
+
}
|
751
|
+
|
752
|
+
return height;
|
753
|
+
|
754
|
+
}
|
755
|
+
|
668
756
|
/**
|
669
757
|
* Checks if this instance is being used to print a PDF.
|
670
758
|
*/
|
@@ -674,13 +762,27 @@ var Reveal = (function(){
|
|
674
762
|
|
675
763
|
}
|
676
764
|
|
765
|
+
/**
|
766
|
+
* Hides the address bar if we're on a mobile device.
|
767
|
+
*/
|
768
|
+
function hideAddressBar() {
|
769
|
+
|
770
|
+
if( isMobileDevice ) {
|
771
|
+
// Events that should trigger the address bar to hide
|
772
|
+
window.addEventListener( 'load', removeAddressBar, false );
|
773
|
+
window.addEventListener( 'orientationchange', removeAddressBar, false );
|
774
|
+
}
|
775
|
+
|
776
|
+
}
|
777
|
+
|
677
778
|
/**
|
678
779
|
* Causes the address bar to hide on mobile devices,
|
679
780
|
* more vertical space ftw.
|
680
781
|
*/
|
681
782
|
function removeAddressBar() {
|
682
783
|
|
683
|
-
|
784
|
+
// Portrait and not Chrome for iOS
|
785
|
+
if( window.orientation === 0 && !/crios/gi.test( navigator.userAgent ) ) {
|
684
786
|
document.documentElement.style.overflow = 'scroll';
|
685
787
|
document.body.style.height = '120%';
|
686
788
|
}
|
@@ -886,7 +988,11 @@ var Reveal = (function(){
|
|
886
988
|
|
887
989
|
// Dimensions of the content
|
888
990
|
var slideWidth = config.width,
|
889
|
-
slideHeight = config.height
|
991
|
+
slideHeight = config.height,
|
992
|
+
slidePadding = 20; // TODO Dig this out of DOM
|
993
|
+
|
994
|
+
// Layout the contents of the slides
|
995
|
+
layoutSlideContents( config.width, config.height, slidePadding );
|
890
996
|
|
891
997
|
// Slide width may be a percentage of available width
|
892
998
|
if( typeof slideWidth === 'string' && /%$/.test( slideWidth ) ) {
|
@@ -915,13 +1021,7 @@ var Reveal = (function(){
|
|
915
1021
|
}
|
916
1022
|
// Apply scale transform as a fallback
|
917
1023
|
else {
|
918
|
-
|
919
|
-
|
920
|
-
dom.slides.style.WebkitTransform = transform;
|
921
|
-
dom.slides.style.MozTransform = transform;
|
922
|
-
dom.slides.style.msTransform = transform;
|
923
|
-
dom.slides.style.OTransform = transform;
|
924
|
-
dom.slides.style.transform = transform;
|
1024
|
+
transformElement( dom.slides, 'translate(-50%, -50%) scale('+ scale +') translate(50%, 50%)' );
|
925
1025
|
}
|
926
1026
|
|
927
1027
|
// Select all slides, vertical and horizontal
|
@@ -942,7 +1042,7 @@ var Reveal = (function(){
|
|
942
1042
|
slide.style.top = 0;
|
943
1043
|
}
|
944
1044
|
else {
|
945
|
-
slide.style.top = Math.max( - ( getAbsoluteHeight( slide ) / 2 ) -
|
1045
|
+
slide.style.top = Math.max( - ( getAbsoluteHeight( slide ) / 2 ) - slidePadding, -slideHeight / 2 ) + 'px';
|
946
1046
|
}
|
947
1047
|
}
|
948
1048
|
else {
|
@@ -957,6 +1057,38 @@ var Reveal = (function(){
|
|
957
1057
|
|
958
1058
|
}
|
959
1059
|
|
1060
|
+
/**
|
1061
|
+
* Applies layout logic to the contents of all slides in
|
1062
|
+
* the presentation.
|
1063
|
+
*/
|
1064
|
+
function layoutSlideContents( width, height, padding ) {
|
1065
|
+
|
1066
|
+
// Handle sizing of elements with the 'stretch' class
|
1067
|
+
toArray( dom.slides.querySelectorAll( 'section > .stretch' ) ).forEach( function( element ) {
|
1068
|
+
|
1069
|
+
// Determine how much vertical space we can use
|
1070
|
+
var remainingHeight = getRemainingHeight( element, ( height - ( padding * 2 ) ) );
|
1071
|
+
|
1072
|
+
// Consider the aspect ratio of media elements
|
1073
|
+
if( /(img|video)/gi.test( element.nodeName ) ) {
|
1074
|
+
var nw = element.naturalWidth || element.videoWidth,
|
1075
|
+
nh = element.naturalHeight || element.videoHeight;
|
1076
|
+
|
1077
|
+
var es = Math.min( width / nw, remainingHeight / nh );
|
1078
|
+
|
1079
|
+
element.style.width = ( nw * es ) + 'px';
|
1080
|
+
element.style.height = ( nh * es ) + 'px';
|
1081
|
+
|
1082
|
+
}
|
1083
|
+
else {
|
1084
|
+
element.style.width = width + 'px';
|
1085
|
+
element.style.height = remainingHeight + 'px';
|
1086
|
+
}
|
1087
|
+
|
1088
|
+
} );
|
1089
|
+
|
1090
|
+
}
|
1091
|
+
|
960
1092
|
/**
|
961
1093
|
* Stores the vertical index of a stack so that the same
|
962
1094
|
* vertical slide can be selected when navigating to and
|
@@ -1010,8 +1142,11 @@ var Reveal = (function(){
|
|
1010
1142
|
|
1011
1143
|
var wasActive = dom.wrapper.classList.contains( 'overview' );
|
1012
1144
|
|
1145
|
+
// Vary the depth of the overview based on screen size
|
1146
|
+
var depth = window.innerWidth < 400 ? 1000 : 2500;
|
1147
|
+
|
1013
1148
|
dom.wrapper.classList.add( 'overview' );
|
1014
|
-
dom.wrapper.classList.remove( '
|
1149
|
+
dom.wrapper.classList.remove( 'overview-deactivating' );
|
1015
1150
|
|
1016
1151
|
clearTimeout( activateOverviewTimeout );
|
1017
1152
|
clearTimeout( deactivateOverviewTimeout );
|
@@ -1019,22 +1154,18 @@ var Reveal = (function(){
|
|
1019
1154
|
// Not the pretties solution, but need to let the overview
|
1020
1155
|
// class apply first so that slides are measured accurately
|
1021
1156
|
// before we can position them
|
1022
|
-
activateOverviewTimeout = setTimeout( function(){
|
1157
|
+
activateOverviewTimeout = setTimeout( function() {
|
1023
1158
|
|
1024
1159
|
var horizontalSlides = document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR );
|
1025
1160
|
|
1026
1161
|
for( var i = 0, len1 = horizontalSlides.length; i < len1; i++ ) {
|
1027
1162
|
var hslide = horizontalSlides[i],
|
1028
|
-
hoffset = config.rtl ? -105 : 105
|
1029
|
-
htransform = 'translateZ(-2500px) translate(' + ( ( i - indexh ) * hoffset ) + '%, 0%)';
|
1163
|
+
hoffset = config.rtl ? -105 : 105;
|
1030
1164
|
|
1031
1165
|
hslide.setAttribute( 'data-index-h', i );
|
1032
|
-
|
1033
|
-
|
1034
|
-
hslide
|
1035
|
-
hslide.style.msTransform = htransform;
|
1036
|
-
hslide.style.OTransform = htransform;
|
1037
|
-
hslide.style.transform = htransform;
|
1166
|
+
|
1167
|
+
// Apply CSS transform
|
1168
|
+
transformElement( hslide, 'translateZ(-'+ depth +'px) translate(' + ( ( i - indexh ) * hoffset ) + '%, 0%)' );
|
1038
1169
|
|
1039
1170
|
if( hslide.classList.contains( 'stack' ) ) {
|
1040
1171
|
|
@@ -1043,17 +1174,13 @@ var Reveal = (function(){
|
|
1043
1174
|
for( var j = 0, len2 = verticalSlides.length; j < len2; j++ ) {
|
1044
1175
|
var verticalIndex = i === indexh ? indexv : getPreviousVerticalIndex( hslide );
|
1045
1176
|
|
1046
|
-
var vslide = verticalSlides[j]
|
1047
|
-
vtransform = 'translate(0%, ' + ( ( j - verticalIndex ) * 105 ) + '%)';
|
1177
|
+
var vslide = verticalSlides[j];
|
1048
1178
|
|
1049
1179
|
vslide.setAttribute( 'data-index-h', i );
|
1050
1180
|
vslide.setAttribute( 'data-index-v', j );
|
1051
|
-
|
1052
|
-
|
1053
|
-
vslide
|
1054
|
-
vslide.style.msTransform = vtransform;
|
1055
|
-
vslide.style.OTransform = vtransform;
|
1056
|
-
vslide.style.transform = vtransform;
|
1181
|
+
|
1182
|
+
// Apply CSS transform
|
1183
|
+
transformElement( vslide, 'translate(0%, ' + ( ( j - verticalIndex ) * 105 ) + '%)' );
|
1057
1184
|
|
1058
1185
|
// Navigate to this slide on click
|
1059
1186
|
vslide.addEventListener( 'click', onOverviewSlideClicked, true );
|
@@ -1068,6 +1195,8 @@ var Reveal = (function(){
|
|
1068
1195
|
}
|
1069
1196
|
}
|
1070
1197
|
|
1198
|
+
updateSlidesVisibility();
|
1199
|
+
|
1071
1200
|
layout();
|
1072
1201
|
|
1073
1202
|
if( !wasActive ) {
|
@@ -1102,29 +1231,19 @@ var Reveal = (function(){
|
|
1102
1231
|
// Temporarily add a class so that transitions can do different things
|
1103
1232
|
// depending on whether they are exiting/entering overview, or just
|
1104
1233
|
// moving from slide to slide
|
1105
|
-
dom.wrapper.classList.add( '
|
1234
|
+
dom.wrapper.classList.add( 'overview-deactivating' );
|
1106
1235
|
|
1107
1236
|
deactivateOverviewTimeout = setTimeout( function () {
|
1108
|
-
dom.wrapper.classList.remove( '
|
1109
|
-
},
|
1237
|
+
dom.wrapper.classList.remove( 'overview-deactivating' );
|
1238
|
+
}, 1 );
|
1110
1239
|
|
1111
1240
|
// Select all slides
|
1112
|
-
|
1113
|
-
|
1114
|
-
for( var i = 0, len = slides.length; i < len; i++ ) {
|
1115
|
-
var element = slides[i];
|
1116
|
-
|
1117
|
-
element.style.display = '';
|
1118
|
-
|
1241
|
+
toArray( document.querySelectorAll( SLIDES_SELECTOR ) ).forEach( function( slide ) {
|
1119
1242
|
// Resets all transforms to use the external styles
|
1120
|
-
|
1121
|
-
element.style.MozTransform = '';
|
1122
|
-
element.style.msTransform = '';
|
1123
|
-
element.style.OTransform = '';
|
1124
|
-
element.style.transform = '';
|
1243
|
+
transformElement( slide, '' );
|
1125
1244
|
|
1126
|
-
|
1127
|
-
}
|
1245
|
+
slide.removeEventListener( 'click', onOverviewSlideClicked, true );
|
1246
|
+
} );
|
1128
1247
|
|
1129
1248
|
slide( indexh, indexv );
|
1130
1249
|
|
@@ -1182,7 +1301,7 @@ var Reveal = (function(){
|
|
1182
1301
|
// Prefer slide argument, otherwise use current slide
|
1183
1302
|
slide = slide ? slide : currentSlide;
|
1184
1303
|
|
1185
|
-
return slide && !!slide.parentNode.nodeName.match( /section/i );
|
1304
|
+
return slide && slide.parentNode && !!slide.parentNode.nodeName.match( /section/i );
|
1186
1305
|
|
1187
1306
|
}
|
1188
1307
|
|
@@ -1302,13 +1421,16 @@ var Reveal = (function(){
|
|
1302
1421
|
// Reset the state array
|
1303
1422
|
state.length = 0;
|
1304
1423
|
|
1305
|
-
var indexhBefore = indexh,
|
1306
|
-
indexvBefore = indexv;
|
1424
|
+
var indexhBefore = indexh || 0,
|
1425
|
+
indexvBefore = indexv || 0;
|
1307
1426
|
|
1308
1427
|
// Activate and transition to the new slide
|
1309
1428
|
indexh = updateSlides( HORIZONTAL_SLIDES_SELECTOR, h === undefined ? indexh : h );
|
1310
1429
|
indexv = updateSlides( VERTICAL_SLIDES_SELECTOR, v === undefined ? indexv : v );
|
1311
1430
|
|
1431
|
+
// Update the visibility of slides now that the indices have changed
|
1432
|
+
updateSlidesVisibility();
|
1433
|
+
|
1312
1434
|
layout();
|
1313
1435
|
|
1314
1436
|
// Apply the new state
|
@@ -1338,10 +1460,6 @@ var Reveal = (function(){
|
|
1338
1460
|
activateOverview();
|
1339
1461
|
}
|
1340
1462
|
|
1341
|
-
// Update the URL hash after a delay since updating it mid-transition
|
1342
|
-
// is likely to cause visual lag
|
1343
|
-
writeURL( 1500 );
|
1344
|
-
|
1345
1463
|
// Find the current horizontal slide and any possible vertical slides
|
1346
1464
|
// within it
|
1347
1465
|
var currentHorizontalSlide = horizontalSlides[ indexh ],
|
@@ -1413,6 +1531,9 @@ var Reveal = (function(){
|
|
1413
1531
|
updateProgress();
|
1414
1532
|
updateBackground();
|
1415
1533
|
|
1534
|
+
// Update the URL hash
|
1535
|
+
writeURL();
|
1536
|
+
|
1416
1537
|
}
|
1417
1538
|
|
1418
1539
|
/**
|
@@ -1481,16 +1602,6 @@ var Reveal = (function(){
|
|
1481
1602
|
for( var i = 0; i < slidesLength; i++ ) {
|
1482
1603
|
var element = slides[i];
|
1483
1604
|
|
1484
|
-
// Optimization; hide all slides that are three or more steps
|
1485
|
-
// away from the present slide
|
1486
|
-
if( isOverview() === false ) {
|
1487
|
-
// The distance loops so that it measures 1 between the first
|
1488
|
-
// and last slides
|
1489
|
-
var distance = Math.abs( ( index - i ) % ( slidesLength - 3 ) ) || 0;
|
1490
|
-
|
1491
|
-
element.style.display = distance > 3 ? 'none' : 'block';
|
1492
|
-
}
|
1493
|
-
|
1494
1605
|
var reverse = config.rtl && !isVerticalSlide( element );
|
1495
1606
|
|
1496
1607
|
element.classList.remove( 'past' );
|
@@ -1507,6 +1618,13 @@ var Reveal = (function(){
|
|
1507
1618
|
else if( i > index ) {
|
1508
1619
|
// Any element subsequent to index is given the 'future' class
|
1509
1620
|
element.classList.add( reverse ? 'past' : 'future' );
|
1621
|
+
|
1622
|
+
var fragments = toArray( element.querySelectorAll( '.fragment.visible' ) );
|
1623
|
+
|
1624
|
+
// No fragments in future slides should be visible ahead of time
|
1625
|
+
while( fragments.length ) {
|
1626
|
+
fragments.pop().classList.remove( 'visible' );
|
1627
|
+
}
|
1510
1628
|
}
|
1511
1629
|
|
1512
1630
|
// If this element contains vertical slides
|
@@ -1526,7 +1644,7 @@ var Reveal = (function(){
|
|
1526
1644
|
state = state.concat( slideState.split( ' ' ) );
|
1527
1645
|
}
|
1528
1646
|
|
1529
|
-
// If this slide has a data-autoslide
|
1647
|
+
// If this slide has a data-autoslide attribute associated use this as
|
1530
1648
|
// autoSlide value otherwise use the global configured time
|
1531
1649
|
var slideAutoSlide = slides[index].getAttribute( 'data-autoslide' );
|
1532
1650
|
if( slideAutoSlide ) {
|
@@ -1536,6 +1654,8 @@ var Reveal = (function(){
|
|
1536
1654
|
autoSlide = config.autoSlide;
|
1537
1655
|
}
|
1538
1656
|
|
1657
|
+
cueAutoSlide();
|
1658
|
+
|
1539
1659
|
}
|
1540
1660
|
else {
|
1541
1661
|
// Since there are no slides we can't be anywhere beyond the
|
@@ -1547,6 +1667,61 @@ var Reveal = (function(){
|
|
1547
1667
|
|
1548
1668
|
}
|
1549
1669
|
|
1670
|
+
/**
|
1671
|
+
* Optimization method; hide all slides that are far away
|
1672
|
+
* from the present slide.
|
1673
|
+
*/
|
1674
|
+
function updateSlidesVisibility() {
|
1675
|
+
|
1676
|
+
// Select all slides and convert the NodeList result to
|
1677
|
+
// an array
|
1678
|
+
var horizontalSlides = toArray( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) ),
|
1679
|
+
horizontalSlidesLength = horizontalSlides.length,
|
1680
|
+
distanceX,
|
1681
|
+
distanceY;
|
1682
|
+
|
1683
|
+
if( horizontalSlidesLength ) {
|
1684
|
+
|
1685
|
+
// The number of steps away from the present slide that will
|
1686
|
+
// be visible
|
1687
|
+
var viewDistance = isOverview() ? 10 : config.viewDistance;
|
1688
|
+
|
1689
|
+
// Limit view distance on weaker devices
|
1690
|
+
if( isMobileDevice ) {
|
1691
|
+
viewDistance = isOverview() ? 6 : 1;
|
1692
|
+
}
|
1693
|
+
|
1694
|
+
for( var x = 0; x < horizontalSlidesLength; x++ ) {
|
1695
|
+
var horizontalSlide = horizontalSlides[x];
|
1696
|
+
|
1697
|
+
var verticalSlides = toArray( horizontalSlide.querySelectorAll( 'section' ) ),
|
1698
|
+
verticalSlidesLength = verticalSlides.length;
|
1699
|
+
|
1700
|
+
// Loops so that it measures 1 between the first and last slides
|
1701
|
+
distanceX = Math.abs( ( indexh - x ) % ( horizontalSlidesLength - viewDistance ) ) || 0;
|
1702
|
+
|
1703
|
+
// Show the horizontal slide if it's within the view distance
|
1704
|
+
horizontalSlide.style.display = distanceX > viewDistance ? 'none' : 'block';
|
1705
|
+
|
1706
|
+
if( verticalSlidesLength ) {
|
1707
|
+
|
1708
|
+
var oy = getPreviousVerticalIndex( horizontalSlide );
|
1709
|
+
|
1710
|
+
for( var y = 0; y < verticalSlidesLength; y++ ) {
|
1711
|
+
var verticalSlide = verticalSlides[y];
|
1712
|
+
|
1713
|
+
distanceY = x === indexh ? Math.abs( indexv - y ) : Math.abs( y - oy );
|
1714
|
+
|
1715
|
+
verticalSlide.style.display = ( distanceX + distanceY ) > viewDistance ? 'none' : 'block';
|
1716
|
+
}
|
1717
|
+
|
1718
|
+
}
|
1719
|
+
}
|
1720
|
+
|
1721
|
+
}
|
1722
|
+
|
1723
|
+
}
|
1724
|
+
|
1550
1725
|
/**
|
1551
1726
|
* Updates the progress bar to reflect the current slide.
|
1552
1727
|
*/
|
@@ -1601,48 +1776,45 @@ var Reveal = (function(){
|
|
1601
1776
|
*/
|
1602
1777
|
function updateControls() {
|
1603
1778
|
|
1604
|
-
|
1605
|
-
|
1606
|
-
|
1607
|
-
|
1608
|
-
|
1609
|
-
|
1610
|
-
|
1611
|
-
|
1612
|
-
|
1613
|
-
|
1614
|
-
|
1615
|
-
|
1616
|
-
node.classList.remove( 'fragmented' );
|
1617
|
-
} );
|
1779
|
+
var routes = availableRoutes();
|
1780
|
+
var fragments = availableFragments();
|
1781
|
+
|
1782
|
+
// Remove the 'enabled' class from all directions
|
1783
|
+
dom.controlsLeft.concat( dom.controlsRight )
|
1784
|
+
.concat( dom.controlsUp )
|
1785
|
+
.concat( dom.controlsDown )
|
1786
|
+
.concat( dom.controlsPrev )
|
1787
|
+
.concat( dom.controlsNext ).forEach( function( node ) {
|
1788
|
+
node.classList.remove( 'enabled' );
|
1789
|
+
node.classList.remove( 'fragmented' );
|
1790
|
+
} );
|
1618
1791
|
|
1619
|
-
|
1620
|
-
|
1621
|
-
|
1622
|
-
|
1623
|
-
|
1792
|
+
// Add the 'enabled' class to the available routes
|
1793
|
+
if( routes.left ) dom.controlsLeft.forEach( function( el ) { el.classList.add( 'enabled' ); } );
|
1794
|
+
if( routes.right ) dom.controlsRight.forEach( function( el ) { el.classList.add( 'enabled' ); } );
|
1795
|
+
if( routes.up ) dom.controlsUp.forEach( function( el ) { el.classList.add( 'enabled' ); } );
|
1796
|
+
if( routes.down ) dom.controlsDown.forEach( function( el ) { el.classList.add( 'enabled' ); } );
|
1624
1797
|
|
1625
|
-
|
1626
|
-
|
1627
|
-
|
1798
|
+
// Prev/next buttons
|
1799
|
+
if( routes.left || routes.up ) dom.controlsPrev.forEach( function( el ) { el.classList.add( 'enabled' ); } );
|
1800
|
+
if( routes.right || routes.down ) dom.controlsNext.forEach( function( el ) { el.classList.add( 'enabled' ); } );
|
1628
1801
|
|
1629
|
-
|
1630
|
-
|
1802
|
+
// Highlight fragment directions
|
1803
|
+
if( currentSlide ) {
|
1631
1804
|
|
1632
|
-
|
1633
|
-
|
1634
|
-
|
1805
|
+
// Always apply fragment decorator to prev/next buttons
|
1806
|
+
if( fragments.prev ) dom.controlsPrev.forEach( function( el ) { el.classList.add( 'fragmented', 'enabled' ); } );
|
1807
|
+
if( fragments.next ) dom.controlsNext.forEach( function( el ) { el.classList.add( 'fragmented', 'enabled' ); } );
|
1635
1808
|
|
1636
|
-
|
1637
|
-
|
1638
|
-
|
1639
|
-
|
1640
|
-
|
1641
|
-
|
1642
|
-
|
1643
|
-
|
1644
|
-
|
1645
|
-
}
|
1809
|
+
// Apply fragment decorators to directional buttons based on
|
1810
|
+
// what slide axis they are in
|
1811
|
+
if( isVerticalSlide( currentSlide ) ) {
|
1812
|
+
if( fragments.prev ) dom.controlsUp.forEach( function( el ) { el.classList.add( 'fragmented', 'enabled' ); } );
|
1813
|
+
if( fragments.next ) dom.controlsDown.forEach( function( el ) { el.classList.add( 'fragmented', 'enabled' ); } );
|
1814
|
+
}
|
1815
|
+
else {
|
1816
|
+
if( fragments.prev ) dom.controlsLeft.forEach( function( el ) { el.classList.add( 'fragmented', 'enabled' ); } );
|
1817
|
+
if( fragments.next ) dom.controlsRight.forEach( function( el ) { el.classList.add( 'fragmented', 'enabled' ); } );
|
1646
1818
|
}
|
1647
1819
|
|
1648
1820
|
}
|
@@ -1803,7 +1975,7 @@ var Reveal = (function(){
|
|
1803
1975
|
}
|
1804
1976
|
// If the slide doesn't exist, navigate to the current slide
|
1805
1977
|
else {
|
1806
|
-
slide( indexh, indexv );
|
1978
|
+
slide( indexh || 0, indexv || 0 );
|
1807
1979
|
}
|
1808
1980
|
}
|
1809
1981
|
else {
|
@@ -1811,7 +1983,9 @@ var Reveal = (function(){
|
|
1811
1983
|
var h = parseInt( bits[0], 10 ) || 0,
|
1812
1984
|
v = parseInt( bits[1], 10 ) || 0;
|
1813
1985
|
|
1814
|
-
|
1986
|
+
if( h !== indexh || v !== indexv ) {
|
1987
|
+
slide( h, v );
|
1988
|
+
}
|
1815
1989
|
}
|
1816
1990
|
|
1817
1991
|
}
|
@@ -1888,8 +2062,9 @@ var Reveal = (function(){
|
|
1888
2062
|
}
|
1889
2063
|
|
1890
2064
|
if( !slide && currentSlide ) {
|
1891
|
-
var
|
1892
|
-
if(
|
2065
|
+
var hasFragments = currentSlide.querySelectorAll( '.fragment' ).length > 0;
|
2066
|
+
if( hasFragments ) {
|
2067
|
+
var visibleFragments = currentSlide.querySelectorAll( '.fragment.visible' );
|
1893
2068
|
f = visibleFragments.length;
|
1894
2069
|
}
|
1895
2070
|
}
|
@@ -2119,7 +2294,7 @@ var Reveal = (function(){
|
|
2119
2294
|
|
2120
2295
|
var value = config.keyboard[ key ];
|
2121
2296
|
|
2122
|
-
//
|
2297
|
+
// Callback function
|
2123
2298
|
if( typeof value === 'function' ) {
|
2124
2299
|
value.apply( null, [ event ] );
|
2125
2300
|
}
|
@@ -2178,7 +2353,8 @@ var Reveal = (function(){
|
|
2178
2353
|
if( triggered ) {
|
2179
2354
|
event.preventDefault();
|
2180
2355
|
}
|
2181
|
-
|
2356
|
+
// ESC or O key
|
2357
|
+
else if ( ( event.keyCode === 27 || event.keyCode === 79 ) && supports3DTransforms ) {
|
2182
2358
|
toggleOverview();
|
2183
2359
|
|
2184
2360
|
event.preventDefault();
|
@@ -2220,11 +2396,11 @@ var Reveal = (function(){
|
|
2220
2396
|
function onTouchMove( event ) {
|
2221
2397
|
|
2222
2398
|
// Each touch should only trigger one action
|
2223
|
-
if( !touch.
|
2399
|
+
if( !touch.captured ) {
|
2224
2400
|
var currentX = event.touches[0].clientX;
|
2225
2401
|
var currentY = event.touches[0].clientY;
|
2226
2402
|
|
2227
|
-
// If the touch started
|
2403
|
+
// If the touch started with two points and still has
|
2228
2404
|
// two active touches; test for the pinch gesture
|
2229
2405
|
if( event.touches.length === 2 && touch.startCount === 2 && config.overview ) {
|
2230
2406
|
|
@@ -2240,7 +2416,7 @@ var Reveal = (function(){
|
|
2240
2416
|
// If the span is larger than the desire amount we've got
|
2241
2417
|
// ourselves a pinch
|
2242
2418
|
if( Math.abs( touch.startSpan - currentSpan ) > touch.threshold ) {
|
2243
|
-
touch.
|
2419
|
+
touch.captured = true;
|
2244
2420
|
|
2245
2421
|
if( currentSpan < touch.startSpan ) {
|
2246
2422
|
activateOverview();
|
@@ -2260,23 +2436,34 @@ var Reveal = (function(){
|
|
2260
2436
|
deltaY = currentY - touch.startY;
|
2261
2437
|
|
2262
2438
|
if( deltaX > touch.threshold && Math.abs( deltaX ) > Math.abs( deltaY ) ) {
|
2263
|
-
touch.
|
2439
|
+
touch.captured = true;
|
2264
2440
|
navigateLeft();
|
2265
2441
|
}
|
2266
2442
|
else if( deltaX < -touch.threshold && Math.abs( deltaX ) > Math.abs( deltaY ) ) {
|
2267
|
-
touch.
|
2443
|
+
touch.captured = true;
|
2268
2444
|
navigateRight();
|
2269
2445
|
}
|
2270
2446
|
else if( deltaY > touch.threshold ) {
|
2271
|
-
touch.
|
2447
|
+
touch.captured = true;
|
2272
2448
|
navigateUp();
|
2273
2449
|
}
|
2274
2450
|
else if( deltaY < -touch.threshold ) {
|
2275
|
-
touch.
|
2451
|
+
touch.captured = true;
|
2276
2452
|
navigateDown();
|
2277
2453
|
}
|
2278
2454
|
|
2279
|
-
|
2455
|
+
// If we're embedded, only block touch events if they have
|
2456
|
+
// triggered an action
|
2457
|
+
if( config.embedded ) {
|
2458
|
+
if( touch.captured || isVerticalSlide( currentSlide ) ) {
|
2459
|
+
event.preventDefault();
|
2460
|
+
}
|
2461
|
+
}
|
2462
|
+
// Not embedded? Block them all to avoid needless tossing
|
2463
|
+
// around of the viewport in iOS
|
2464
|
+
else {
|
2465
|
+
event.preventDefault();
|
2466
|
+
}
|
2280
2467
|
|
2281
2468
|
}
|
2282
2469
|
}
|
@@ -2293,7 +2480,7 @@ var Reveal = (function(){
|
|
2293
2480
|
*/
|
2294
2481
|
function onTouchEnd( event ) {
|
2295
2482
|
|
2296
|
-
touch.
|
2483
|
+
touch.captured = false;
|
2297
2484
|
|
2298
2485
|
}
|
2299
2486
|
|
@@ -2553,12 +2740,22 @@ var Reveal = (function(){
|
|
2553
2740
|
|
2554
2741
|
// Returns true if we're currently on the last slide
|
2555
2742
|
isLastSlide: function() {
|
2556
|
-
if( currentSlide
|
2557
|
-
|
2558
|
-
|
2559
|
-
|
2560
|
-
|
2743
|
+
if( currentSlide ) {
|
2744
|
+
// Does this slide has next a sibling?
|
2745
|
+
if( currentSlide.nextElementSibling ) return false;
|
2746
|
+
|
2747
|
+
// If it's vertical, does its parent have a next sibling?
|
2748
|
+
if( isVerticalSlide( currentSlide ) && currentSlide.parentNode.nextElementSibling ) return false;
|
2749
|
+
|
2750
|
+
return true;
|
2561
2751
|
}
|
2752
|
+
|
2753
|
+
return false;
|
2754
|
+
},
|
2755
|
+
|
2756
|
+
// Checks if reveal.js has been loaded and is ready for use
|
2757
|
+
isReady: function() {
|
2758
|
+
return loaded;
|
2562
2759
|
},
|
2563
2760
|
|
2564
2761
|
// Forward event binding to the reveal DOM element
|