github.com/mweagle/Sparta@v1.15.0/docs_source/static/presentations/reveal.js-3.9.2/css/reveal.scss (about)

     1  /*!
     2   * reveal.js
     3   * http://revealjs.com
     4   * MIT licensed
     5   *
     6   * Copyright (C) 2020 Hakim El Hattab, http://hakim.se
     7   */
     8  
     9  
    10  /*********************************************
    11   * GLOBAL STYLES
    12   *********************************************/
    13  
    14  html {
    15  	width: 100%;
    16  	height: 100%;
    17  	height: 100vh;
    18  	height: calc( var(--vh, 1vh) * 100 );
    19  	overflow: hidden;
    20  }
    21  
    22  body {
    23  	height: 100%;
    24  	overflow: hidden;
    25  	position: relative;
    26  	line-height: 1;
    27  	margin: 0;
    28  
    29  	background-color: #fff;
    30  	color: #000;
    31  }
    32  
    33  
    34  /*********************************************
    35   * VIEW FRAGMENTS
    36   *********************************************/
    37  
    38  .reveal .slides section .fragment {
    39  	opacity: 0;
    40  	visibility: hidden;
    41  	transition: all .2s ease;
    42  
    43  	&.visible {
    44  		opacity: 1;
    45  		visibility: inherit;
    46  	}
    47  }
    48  
    49  .reveal .slides section .fragment.grow {
    50  	opacity: 1;
    51  	visibility: inherit;
    52  
    53  	&.visible {
    54  		transform: scale( 1.3 );
    55  	}
    56  }
    57  
    58  .reveal .slides section .fragment.shrink {
    59  	opacity: 1;
    60  	visibility: inherit;
    61  
    62  	&.visible {
    63  		transform: scale( 0.7 );
    64  	}
    65  }
    66  
    67  .reveal .slides section .fragment.zoom-in {
    68  	transform: scale( 0.1 );
    69  
    70  	&.visible {
    71  		transform: none;
    72  	}
    73  }
    74  
    75  .reveal .slides section .fragment.fade-out {
    76  	opacity: 1;
    77  	visibility: inherit;
    78  
    79  	&.visible {
    80  		opacity: 0;
    81  		visibility: hidden;
    82  	}
    83  }
    84  
    85  .reveal .slides section .fragment.semi-fade-out {
    86  	opacity: 1;
    87  	visibility: inherit;
    88  
    89  	&.visible {
    90  		opacity: 0.5;
    91  		visibility: inherit;
    92  	}
    93  }
    94  
    95  .reveal .slides section .fragment.strike {
    96  	opacity: 1;
    97  	visibility: inherit;
    98  
    99  	&.visible {
   100  		text-decoration: line-through;
   101  	}
   102  }
   103  
   104  .reveal .slides section .fragment.fade-up {
   105  	transform: translate(0, 40px);
   106  
   107  	&.visible {
   108  		transform: translate(0, 0);
   109  	}
   110  }
   111  
   112  .reveal .slides section .fragment.fade-down {
   113  	transform: translate(0, -40px);
   114  
   115  	&.visible {
   116  		transform: translate(0, 0);
   117  	}
   118  }
   119  
   120  .reveal .slides section .fragment.fade-right {
   121  	transform: translate(-40px, 0);
   122  
   123  	&.visible {
   124  		transform: translate(0, 0);
   125  	}
   126  }
   127  
   128  .reveal .slides section .fragment.fade-left {
   129  	transform: translate(40px, 0);
   130  
   131  	&.visible {
   132  		transform: translate(0, 0);
   133  	}
   134  }
   135  
   136  .reveal .slides section .fragment.fade-in-then-out,
   137  .reveal .slides section .fragment.current-visible {
   138  	opacity: 0;
   139  	visibility: hidden;
   140  
   141  	&.current-fragment {
   142  		opacity: 1;
   143  		visibility: inherit;
   144  	}
   145  }
   146  
   147  .reveal .slides section .fragment.fade-in-then-semi-out {
   148  	opacity: 0;
   149  	visibility: hidden;
   150  
   151  	&.visible {
   152  		opacity: 0.5;
   153  		visibility: inherit;
   154  	}
   155  
   156  	&.current-fragment {
   157  		opacity: 1;
   158  		visibility: inherit;
   159  	}
   160  }
   161  
   162  .reveal .slides section .fragment.highlight-red,
   163  .reveal .slides section .fragment.highlight-current-red,
   164  .reveal .slides section .fragment.highlight-green,
   165  .reveal .slides section .fragment.highlight-current-green,
   166  .reveal .slides section .fragment.highlight-blue,
   167  .reveal .slides section .fragment.highlight-current-blue {
   168  	opacity: 1;
   169  	visibility: inherit;
   170  }
   171  	.reveal .slides section .fragment.highlight-red.visible {
   172  		color: #ff2c2d
   173  	}
   174  	.reveal .slides section .fragment.highlight-green.visible {
   175  		color: #17ff2e;
   176  	}
   177  	.reveal .slides section .fragment.highlight-blue.visible {
   178  		color: #1b91ff;
   179  	}
   180  
   181  .reveal .slides section .fragment.highlight-current-red.current-fragment {
   182  	color: #ff2c2d
   183  }
   184  .reveal .slides section .fragment.highlight-current-green.current-fragment {
   185  	color: #17ff2e;
   186  }
   187  .reveal .slides section .fragment.highlight-current-blue.current-fragment {
   188  	color: #1b91ff;
   189  }
   190  
   191  
   192  /*********************************************
   193   * DEFAULT ELEMENT STYLES
   194   *********************************************/
   195  
   196  /* Fixes issue in Chrome where italic fonts did not appear when printing to PDF */
   197  .reveal:after {
   198    content: '';
   199    font-style: italic;
   200  }
   201  
   202  .reveal iframe {
   203  	z-index: 1;
   204  }
   205  
   206  /** Prevents layering issues in certain browser/transition combinations */
   207  .reveal a {
   208  	position: relative;
   209  }
   210  
   211  .reveal .stretch {
   212  	max-width: none;
   213  	max-height: none;
   214  }
   215  
   216  .reveal pre.stretch code {
   217  	height: 100%;
   218  	max-height: 100%;
   219  	box-sizing: border-box;
   220  }
   221  
   222  
   223  /*********************************************
   224   * CONTROLS
   225   *********************************************/
   226  
   227  @keyframes bounce-right {
   228  	0%, 10%, 25%, 40%, 50% {transform: translateX(0);}
   229  	20% {transform: translateX(10px);}
   230  	30% {transform: translateX(-5px);}
   231  }
   232  
   233  @keyframes bounce-down {
   234  	0%, 10%, 25%, 40%, 50% {transform: translateY(0);}
   235  	20% {transform: translateY(10px);}
   236  	30% {transform: translateY(-5px);}
   237  }
   238  
   239  $controlArrowSize: 3.6em;
   240  $controlArrowSpacing: 1.4em;
   241  $controlArrowLength: 2.6em;
   242  $controlArrowThickness: 0.5em;
   243  $controlsArrowAngle: 45deg;
   244  $controlsArrowAngleHover: 40deg;
   245  $controlsArrowAngleActive: 36deg;
   246  
   247  @mixin controlsArrowTransform( $angle ) {
   248  	&:before {
   249  		transform: translateX(($controlArrowSize - $controlArrowLength)/2) translateY(($controlArrowSize - $controlArrowThickness)/2) rotate( $angle );
   250  	}
   251  
   252  	&:after {
   253  		transform: translateX(($controlArrowSize - $controlArrowLength)/2) translateY(($controlArrowSize - $controlArrowThickness)/2) rotate( -$angle );
   254  	}
   255  }
   256  
   257  .reveal .controls {
   258  	$spacing: 12px;
   259  
   260  	display: none;
   261  	position: absolute;
   262  	top: auto;
   263  	bottom: $spacing;
   264  	right: $spacing;
   265  	left: auto;
   266  	z-index: 11;
   267  	color: #000;
   268  	pointer-events: none;
   269  	font-size: 10px;
   270  
   271  	button {
   272  		position: absolute;
   273  		padding: 0;
   274  		background-color: transparent;
   275  		border: 0;
   276  		outline: 0;
   277  		cursor: pointer;
   278  		color: currentColor;
   279  		transform: scale(.9999);
   280  		transition: color 0.2s ease,
   281  					opacity 0.2s ease,
   282  					transform 0.2s ease;
   283  		z-index: 2; // above slides
   284  		pointer-events: auto;
   285  		font-size: inherit;
   286  
   287  		visibility: hidden;
   288  		opacity: 0;
   289  
   290  		-webkit-appearance: none;
   291  		-webkit-tap-highlight-color: rgba( 0, 0, 0, 0 );
   292  	}
   293  
   294  	.controls-arrow:before,
   295  	.controls-arrow:after {
   296  		content: '';
   297  		position: absolute;
   298  		top: 0;
   299  		left: 0;
   300  		width: $controlArrowLength;
   301  		height: $controlArrowThickness;
   302  		border-radius: $controlArrowThickness/2;
   303  		background-color: currentColor;
   304  
   305  		transition: all 0.15s ease, background-color 0.8s ease;
   306  		transform-origin: floor(($controlArrowThickness/2)*10)/10 50%;
   307  		will-change: transform;
   308  	}
   309  
   310  	.controls-arrow {
   311  		position: relative;
   312  		width: $controlArrowSize;
   313  		height: $controlArrowSize;
   314  
   315  		@include controlsArrowTransform( $controlsArrowAngle );
   316  
   317  		&:hover {
   318  			@include controlsArrowTransform( $controlsArrowAngleHover );
   319  		}
   320  
   321  		&:active {
   322  			@include controlsArrowTransform( $controlsArrowAngleActive );
   323  		}
   324  	}
   325  
   326  	.navigate-left {
   327  		right: $controlArrowSize + $controlArrowSpacing*2;
   328  		bottom: $controlArrowSpacing + $controlArrowSize/2;
   329  		transform: translateX( -10px );
   330  	}
   331  
   332  	.navigate-right {
   333  		right: 0;
   334  		bottom: $controlArrowSpacing + $controlArrowSize/2;
   335  		transform: translateX( 10px );
   336  
   337  		.controls-arrow {
   338  			transform: rotate( 180deg );
   339  		}
   340  
   341  		&.highlight {
   342  			animation: bounce-right 2s 50 both ease-out;
   343  		}
   344  	}
   345  
   346  	.navigate-up {
   347  		right: $controlArrowSpacing + $controlArrowSize/2;
   348  		bottom: $controlArrowSpacing*2 + $controlArrowSize;
   349  		transform: translateY( -10px );
   350  
   351  		.controls-arrow {
   352  			transform: rotate( 90deg );
   353  		}
   354  	}
   355  
   356  	.navigate-down {
   357  		right: $controlArrowSpacing + $controlArrowSize/2;
   358  		bottom: -$controlArrowSpacing;
   359  		padding-bottom: $controlArrowSpacing;
   360  		transform: translateY( 10px );
   361  
   362  		.controls-arrow {
   363  			transform: rotate( -90deg );
   364  		}
   365  
   366  		&.highlight {
   367  			animation: bounce-down 2s 50 both ease-out;
   368  		}
   369  	}
   370  
   371  	// Back arrow style: "faded":
   372  	// Deemphasize backwards navigation arrows in favor of drawing
   373  	// attention to forwards navigation
   374  	&[data-controls-back-arrows="faded"] .navigate-left.enabled,
   375  	&[data-controls-back-arrows="faded"] .navigate-up.enabled {
   376  		opacity: 0.3;
   377  
   378  		&:hover {
   379  			opacity: 1;
   380  		}
   381  	}
   382  
   383  	// Back arrow style: "hidden":
   384  	// Never show arrows for backwards navigation
   385  	&[data-controls-back-arrows="hidden"] .navigate-left.enabled,
   386  	&[data-controls-back-arrows="hidden"] .navigate-up.enabled {
   387  		opacity: 0;
   388  		visibility: hidden;
   389  	}
   390  
   391  	// Any control button that can be clicked is "enabled"
   392  	.enabled {
   393  		visibility: visible;
   394  		opacity: 0.9;
   395  		cursor: pointer;
   396  		transform: none;
   397  	}
   398  
   399  	// Any control button that leads to showing or hiding
   400  	// a fragment
   401  	.enabled.fragmented {
   402  		opacity: 0.5;
   403  	}
   404  
   405  	.enabled:hover,
   406  	.enabled.fragmented:hover {
   407  		opacity: 1;
   408  	}
   409  }
   410  
   411  .reveal[data-navigation-mode="linear"].has-horizontal-slides .navigate-up,
   412  .reveal[data-navigation-mode="linear"].has-horizontal-slides .navigate-down {
   413  	display: none;
   414  }
   415  
   416  // Adjust the layout when there are no vertical slides
   417  .reveal[data-navigation-mode="linear"].has-horizontal-slides .navigate-left,
   418  .reveal:not(.has-vertical-slides) .controls .navigate-left {
   419  	bottom: $controlArrowSpacing;
   420  	right: 0.5em + $controlArrowSpacing + $controlArrowSize;
   421  }
   422  
   423  .reveal[data-navigation-mode="linear"].has-horizontal-slides .navigate-right,
   424  .reveal:not(.has-vertical-slides) .controls .navigate-right {
   425  	bottom: $controlArrowSpacing;
   426  	right: 0.5em;
   427  }
   428  
   429  // Adjust the layout when there are no horizontal slides
   430  .reveal:not(.has-horizontal-slides) .controls .navigate-up {
   431  	right: $controlArrowSpacing;
   432  	bottom: $controlArrowSpacing + $controlArrowSize;
   433  }
   434  .reveal:not(.has-horizontal-slides) .controls .navigate-down {
   435  	right: $controlArrowSpacing;
   436  	bottom: 0.5em;
   437  }
   438  
   439  // Invert arrows based on background color
   440  .reveal.has-dark-background .controls {
   441  	color: #fff;
   442  }
   443  .reveal.has-light-background .controls {
   444  	color: #000;
   445  }
   446  
   447  // Disable active states on touch devices
   448  .reveal.no-hover .controls .controls-arrow:hover,
   449  .reveal.no-hover .controls .controls-arrow:active {
   450  	@include controlsArrowTransform( $controlsArrowAngle );
   451  }
   452  
   453  // Edge aligned controls layout
   454  @media screen and (min-width: 500px) {
   455  
   456  	$spacing: 0.8em;
   457  
   458  	.reveal .controls[data-controls-layout="edges"] {
   459  		& {
   460  			top: 0;
   461  			right: 0;
   462  			bottom: 0;
   463  			left: 0;
   464  		}
   465  
   466  		.navigate-left,
   467  		.navigate-right,
   468  		.navigate-up,
   469  		.navigate-down {
   470  			bottom: auto;
   471  			right: auto;
   472  		}
   473  
   474  		.navigate-left {
   475  			top: 50%;
   476  			left: $spacing;
   477  			margin-top: -$controlArrowSize/2;
   478  		}
   479  
   480  		.navigate-right {
   481  			top: 50%;
   482  			right: $spacing;
   483  			margin-top: -$controlArrowSize/2;
   484  		}
   485  
   486  		.navigate-up {
   487  			top: $spacing;
   488  			left: 50%;
   489  			margin-left: -$controlArrowSize/2;
   490  		}
   491  
   492  		.navigate-down {
   493  			bottom: $spacing - $controlArrowSpacing + 0.3em;
   494  			left: 50%;
   495  			margin-left: -$controlArrowSize/2;
   496  		}
   497  	}
   498  
   499  }
   500  
   501  
   502  /*********************************************
   503   * PROGRESS BAR
   504   *********************************************/
   505  
   506  .reveal .progress {
   507  	position: absolute;
   508  	display: none;
   509  	height: 3px;
   510  	width: 100%;
   511  	bottom: 0;
   512  	left: 0;
   513  	z-index: 10;
   514  
   515  	background-color: rgba( 0, 0, 0, 0.2 );
   516  	color: #fff;
   517  }
   518  	.reveal .progress:after {
   519  		content: '';
   520  		display: block;
   521  		position: absolute;
   522  		height: 10px;
   523  		width: 100%;
   524  		top: -10px;
   525  	}
   526  	.reveal .progress span {
   527  		display: block;
   528  		height: 100%;
   529  		width: 0px;
   530  
   531  		background-color: currentColor;
   532  		transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
   533  	}
   534  
   535  /*********************************************
   536   * SLIDE NUMBER
   537   *********************************************/
   538  
   539  .reveal .slide-number {
   540  	position: absolute;
   541  	display: block;
   542  	right: 8px;
   543  	bottom: 8px;
   544  	z-index: 31;
   545  	font-family: Helvetica, sans-serif;
   546  	font-size: 12px;
   547  	line-height: 1;
   548  	color: #fff;
   549  	background-color: rgba( 0, 0, 0, 0.4 );
   550  	padding: 5px;
   551  }
   552  
   553  .reveal .slide-number a {
   554  	color: currentColor;
   555  }
   556  
   557  .reveal .slide-number-delimiter {
   558  	margin: 0 3px;
   559  }
   560  
   561  /*********************************************
   562   * SLIDES
   563   *********************************************/
   564  
   565  .reveal {
   566  	position: relative;
   567  	width: 100%;
   568  	height: 100%;
   569  	overflow: hidden;
   570  	touch-action: pinch-zoom;
   571  }
   572  
   573  .reveal .slides {
   574  	position: absolute;
   575  	width: 100%;
   576  	height: 100%;
   577  	top: 0;
   578  	right: 0;
   579  	bottom: 0;
   580  	left: 0;
   581  	margin: auto;
   582  	pointer-events: none;
   583  
   584  	overflow: visible;
   585  	z-index: 1;
   586  	text-align: center;
   587  	perspective: 600px;
   588  	perspective-origin: 50% 40%;
   589  }
   590  
   591  .reveal .slides>section {
   592  	perspective: 600px;
   593  }
   594  
   595  .reveal .slides>section,
   596  .reveal .slides>section>section {
   597  	display: none;
   598  	position: absolute;
   599  	width: 100%;
   600  	padding: 20px 0px;
   601  	pointer-events: auto;
   602  
   603  	z-index: 10;
   604  	transform-style: flat;
   605  	transition: transform-origin 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985),
   606  				transform 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985),
   607  				visibility 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985),
   608  				opacity 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
   609  }
   610  
   611  /* Global transition speed settings */
   612  .reveal[data-transition-speed="fast"] .slides section {
   613  	transition-duration: 400ms;
   614  }
   615  .reveal[data-transition-speed="slow"] .slides section {
   616  	transition-duration: 1200ms;
   617  }
   618  
   619  /* Slide-specific transition speed overrides */
   620  .reveal .slides section[data-transition-speed="fast"] {
   621  	transition-duration: 400ms;
   622  }
   623  .reveal .slides section[data-transition-speed="slow"] {
   624  	transition-duration: 1200ms;
   625  }
   626  
   627  .reveal .slides>section.stack {
   628  	padding-top: 0;
   629  	padding-bottom: 0;
   630  	pointer-events: none;
   631  	height: 100%;
   632  }
   633  
   634  .reveal .slides>section.present,
   635  .reveal .slides>section>section.present {
   636  	display: block;
   637  	z-index: 11;
   638  	opacity: 1;
   639  }
   640  
   641  .reveal .slides>section:empty,
   642  .reveal .slides>section>section:empty,
   643  .reveal .slides>section[data-background-interactive],
   644  .reveal .slides>section>section[data-background-interactive] {
   645  	pointer-events: none;
   646  }
   647  
   648  .reveal.center,
   649  .reveal.center .slides,
   650  .reveal.center .slides section {
   651  	min-height: 0 !important;
   652  }
   653  
   654  /* Don't allow interaction with invisible slides */
   655  .reveal .slides>section.future,
   656  .reveal .slides>section>section.future,
   657  .reveal .slides>section.past,
   658  .reveal .slides>section>section.past {
   659  	pointer-events: none;
   660  }
   661  
   662  .reveal.overview .slides>section,
   663  .reveal.overview .slides>section>section {
   664  	pointer-events: auto;
   665  }
   666  
   667  .reveal .slides>section.past,
   668  .reveal .slides>section.future,
   669  .reveal .slides>section>section.past,
   670  .reveal .slides>section>section.future {
   671  	opacity: 0;
   672  }
   673  
   674  
   675  /*********************************************
   676   * Mixins for readability of transitions
   677   *********************************************/
   678  
   679  @mixin transition-global($style) {
   680  	.reveal .slides section[data-transition=#{$style}],
   681  	.reveal.#{$style} .slides section:not([data-transition]) {
   682  		@content;
   683  	}
   684  }
   685  @mixin transition-stack($style) {
   686  	.reveal .slides section[data-transition=#{$style}].stack,
   687  	.reveal.#{$style} .slides section.stack {
   688  		@content;
   689  	}
   690  }
   691  @mixin transition-horizontal-past($style) {
   692  	.reveal .slides>section[data-transition=#{$style}].past,
   693  	.reveal .slides>section[data-transition~=#{$style}-out].past,
   694  	.reveal.#{$style} .slides>section:not([data-transition]).past {
   695  		@content;
   696  	}
   697  }
   698  @mixin transition-horizontal-future($style) {
   699  	.reveal .slides>section[data-transition=#{$style}].future,
   700  	.reveal .slides>section[data-transition~=#{$style}-in].future,
   701  	.reveal.#{$style} .slides>section:not([data-transition]).future {
   702  		@content;
   703  	}
   704  }
   705  
   706  @mixin transition-vertical-past($style) {
   707  	.reveal .slides>section>section[data-transition=#{$style}].past,
   708  	.reveal .slides>section>section[data-transition~=#{$style}-out].past,
   709  	.reveal.#{$style} .slides>section>section:not([data-transition]).past {
   710  		@content;
   711  	}
   712  }
   713  @mixin transition-vertical-future($style) {
   714  	.reveal .slides>section>section[data-transition=#{$style}].future,
   715  	.reveal .slides>section>section[data-transition~=#{$style}-in].future,
   716  	.reveal.#{$style} .slides>section>section:not([data-transition]).future {
   717  		@content;
   718  	}
   719  }
   720  
   721  /*********************************************
   722   * SLIDE TRANSITION
   723   * Aliased 'linear' for backwards compatibility
   724   *********************************************/
   725  
   726  @each $stylename in slide, linear {
   727  	.reveal.#{$stylename} section {
   728  		backface-visibility: hidden;
   729  	}
   730  	@include transition-horizontal-past(#{$stylename}) {
   731  		transform: translate(-150%, 0);
   732  	}
   733  	@include transition-horizontal-future(#{$stylename}) {
   734  		transform: translate(150%, 0);
   735  	}
   736  	@include transition-vertical-past(#{$stylename}) {
   737  		transform: translate(0, -150%);
   738  	}
   739  	@include transition-vertical-future(#{$stylename}) {
   740  		transform: translate(0, 150%);
   741  	}
   742  }
   743  
   744  /*********************************************
   745   * CONVEX TRANSITION
   746   * Aliased 'default' for backwards compatibility
   747   *********************************************/
   748  
   749  @each $stylename in default, convex {
   750  	@include transition-stack(#{$stylename}) {
   751  		transform-style: preserve-3d;
   752  	}
   753  
   754  	@include transition-horizontal-past(#{$stylename}) {
   755  		transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0);
   756  	}
   757  	@include transition-horizontal-future(#{$stylename}) {
   758  		transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0);
   759  	}
   760  	@include transition-vertical-past(#{$stylename}) {
   761  		transform: translate3d(0, -300px, 0) rotateX(70deg) translate3d(0, -300px, 0);
   762  	}
   763  	@include transition-vertical-future(#{$stylename}) {
   764  		transform: translate3d(0, 300px, 0) rotateX(-70deg) translate3d(0, 300px, 0);
   765  	}
   766  }
   767  
   768  /*********************************************
   769   * CONCAVE TRANSITION
   770   *********************************************/
   771  
   772  @include transition-stack(concave) {
   773  	transform-style: preserve-3d;
   774  }
   775  
   776  @include transition-horizontal-past(concave) {
   777  	transform: translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0);
   778  }
   779  @include transition-horizontal-future(concave) {
   780  	transform: translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0);
   781  }
   782  @include transition-vertical-past(concave) {
   783  	transform: translate3d(0, -80%, 0) rotateX(-70deg) translate3d(0, -80%, 0);
   784  }
   785  @include transition-vertical-future(concave) {
   786  	transform: translate3d(0, 80%, 0) rotateX(70deg) translate3d(0, 80%, 0);
   787  }
   788  
   789  
   790  /*********************************************
   791   * ZOOM TRANSITION
   792   *********************************************/
   793  
   794  @include transition-global(zoom) {
   795  	transition-timing-function: ease;
   796  }
   797  @include transition-horizontal-past(zoom) {
   798  	visibility: hidden;
   799  	transform: scale(16);
   800  }
   801  @include transition-horizontal-future(zoom) {
   802  	visibility: hidden;
   803  	transform: scale(0.2);
   804  }
   805  @include transition-vertical-past(zoom) {
   806  	transform: scale(16);
   807  }
   808  @include transition-vertical-future(zoom) {
   809  	transform: scale(0.2);
   810  }
   811  
   812  
   813  /*********************************************
   814   * CUBE TRANSITION
   815   *
   816   * WARNING:
   817   * this is deprecated and will be removed in a
   818   * future version.
   819   *********************************************/
   820  
   821  .reveal.cube .slides {
   822  	perspective: 1300px;
   823  }
   824  
   825  .reveal.cube .slides section {
   826  	padding: 30px;
   827  	min-height: 700px;
   828  	backface-visibility: hidden;
   829  	box-sizing: border-box;
   830  	transform-style: preserve-3d;
   831  }
   832  	.reveal.center.cube .slides section {
   833  		min-height: 0;
   834  	}
   835  	.reveal.cube .slides section:not(.stack):before {
   836  		content: '';
   837  		position: absolute;
   838  		display: block;
   839  		width: 100%;
   840  		height: 100%;
   841  		left: 0;
   842  		top: 0;
   843  		background: rgba(0,0,0,0.1);
   844  		border-radius: 4px;
   845  		transform: translateZ( -20px );
   846  	}
   847  	.reveal.cube .slides section:not(.stack):after {
   848  		content: '';
   849  		position: absolute;
   850  		display: block;
   851  		width: 90%;
   852  		height: 30px;
   853  		left: 5%;
   854  		bottom: 0;
   855  		background: none;
   856  		z-index: 1;
   857  
   858  		border-radius: 4px;
   859  		box-shadow: 0px 95px 25px rgba(0,0,0,0.2);
   860  		transform: translateZ(-90px) rotateX( 65deg );
   861  	}
   862  
   863  .reveal.cube .slides>section.stack {
   864  	padding: 0;
   865  	background: none;
   866  }
   867  
   868  .reveal.cube .slides>section.past {
   869  	transform-origin: 100% 0%;
   870  	transform: translate3d(-100%, 0, 0) rotateY(-90deg);
   871  }
   872  
   873  .reveal.cube .slides>section.future {
   874  	transform-origin: 0% 0%;
   875  	transform: translate3d(100%, 0, 0) rotateY(90deg);
   876  }
   877  
   878  .reveal.cube .slides>section>section.past {
   879  	transform-origin: 0% 100%;
   880  	transform: translate3d(0, -100%, 0) rotateX(90deg);
   881  }
   882  
   883  .reveal.cube .slides>section>section.future {
   884  	transform-origin: 0% 0%;
   885  	transform: translate3d(0, 100%, 0) rotateX(-90deg);
   886  }
   887  
   888  
   889  /*********************************************
   890   * PAGE TRANSITION
   891   *
   892   * WARNING:
   893   * this is deprecated and will be removed in a
   894   * future version.
   895   *********************************************/
   896  
   897  .reveal.page .slides {
   898  	perspective-origin: 0% 50%;
   899  	perspective: 3000px;
   900  }
   901  
   902  .reveal.page .slides section {
   903  	padding: 30px;
   904  	min-height: 700px;
   905  	box-sizing: border-box;
   906  	transform-style: preserve-3d;
   907  }
   908  	.reveal.page .slides section.past {
   909  		z-index: 12;
   910  	}
   911  	.reveal.page .slides section:not(.stack):before {
   912  		content: '';
   913  		position: absolute;
   914  		display: block;
   915  		width: 100%;
   916  		height: 100%;
   917  		left: 0;
   918  		top: 0;
   919  		background: rgba(0,0,0,0.1);
   920  		transform: translateZ( -20px );
   921  	}
   922  	.reveal.page .slides section:not(.stack):after {
   923  		content: '';
   924  		position: absolute;
   925  		display: block;
   926  		width: 90%;
   927  		height: 30px;
   928  		left: 5%;
   929  		bottom: 0;
   930  		background: none;
   931  		z-index: 1;
   932  
   933  		border-radius: 4px;
   934  		box-shadow: 0px 95px 25px rgba(0,0,0,0.2);
   935  
   936  		-webkit-transform: translateZ(-90px) rotateX( 65deg );
   937  	}
   938  
   939  .reveal.page .slides>section.stack {
   940  	padding: 0;
   941  	background: none;
   942  }
   943  
   944  .reveal.page .slides>section.past {
   945  	transform-origin: 0% 0%;
   946  	transform: translate3d(-40%, 0, 0) rotateY(-80deg);
   947  }
   948  
   949  .reveal.page .slides>section.future {
   950  	transform-origin: 100% 0%;
   951  	transform: translate3d(0, 0, 0);
   952  }
   953  
   954  .reveal.page .slides>section>section.past {
   955  	transform-origin: 0% 0%;
   956  	transform: translate3d(0, -40%, 0) rotateX(80deg);
   957  }
   958  
   959  .reveal.page .slides>section>section.future {
   960  	transform-origin: 0% 100%;
   961  	transform: translate3d(0, 0, 0);
   962  }
   963  
   964  
   965  /*********************************************
   966   * FADE TRANSITION
   967   *********************************************/
   968  
   969  .reveal .slides section[data-transition=fade],
   970  .reveal.fade .slides section:not([data-transition]),
   971  .reveal.fade .slides>section>section:not([data-transition]) {
   972  	transform: none;
   973  	transition: opacity 0.5s;
   974  }
   975  
   976  
   977  .reveal.fade.overview .slides section,
   978  .reveal.fade.overview .slides>section>section {
   979  	transition: none;
   980  }
   981  
   982  
   983  /*********************************************
   984   * NO TRANSITION
   985   *********************************************/
   986  
   987  @include transition-global(none) {
   988  	transform: none;
   989  	transition: none;
   990  }
   991  
   992  
   993  /*********************************************
   994   * PAUSED MODE
   995   *********************************************/
   996  
   997  .reveal .pause-overlay {
   998  	position: absolute;
   999  	top: 0;
  1000  	left: 0;
  1001  	width: 100%;
  1002  	height: 100%;
  1003  	background: black;
  1004  	visibility: hidden;
  1005  	opacity: 0;
  1006  	z-index: 100;
  1007  	transition: all 1s ease;
  1008  }
  1009  
  1010  .reveal .pause-overlay .resume-button {
  1011  	position: absolute;
  1012  	bottom: 20px;
  1013  	right: 20px;
  1014  	color: #ccc;
  1015  	border-radius: 2px;
  1016  	padding: 6px 14px;
  1017  	border: 2px solid #ccc;
  1018  	font-size: 16px;
  1019  	background: transparent;
  1020  	cursor: pointer;
  1021  
  1022  	&:hover {
  1023  		color: #fff;
  1024  		border-color: #fff;
  1025  	}
  1026  }
  1027  
  1028  .reveal.paused .pause-overlay {
  1029  	visibility: visible;
  1030  	opacity: 1;
  1031  }
  1032  
  1033  
  1034  /*********************************************
  1035   * FALLBACK
  1036   *********************************************/
  1037  
  1038  .no-transforms {
  1039  	overflow-y: auto;
  1040  }
  1041  
  1042  .no-transforms .reveal {
  1043  	overflow: visible;
  1044  }
  1045  
  1046  .no-transforms .reveal .slides {
  1047  	position: relative;
  1048  	width: 80%;
  1049  	max-width: 1280px;
  1050  	height: auto;
  1051  	top: 0;
  1052  	margin: 0 auto;
  1053  	text-align: center;
  1054  }
  1055  
  1056  .no-transforms .reveal .controls,
  1057  .no-transforms .reveal .progress {
  1058  	display: none;
  1059  }
  1060  
  1061  .no-transforms .reveal .slides section {
  1062  	display: block;
  1063  	opacity: 1;
  1064  	position: relative;
  1065  	height: auto;
  1066  	min-height: 0;
  1067  	top: 0;
  1068  	left: 0;
  1069  	margin: 10vh 0;
  1070  	margin: 70px 0;
  1071  	transform: none;
  1072  }
  1073  
  1074  .reveal .no-transition,
  1075  .reveal .no-transition * {
  1076  	transition: none !important;
  1077  }
  1078  
  1079  
  1080  /*********************************************
  1081   * PER-SLIDE BACKGROUNDS
  1082   *********************************************/
  1083  
  1084  .reveal .backgrounds {
  1085  	position: absolute;
  1086  	width: 100%;
  1087  	height: 100%;
  1088  	top: 0;
  1089  	left: 0;
  1090  	perspective: 600px;
  1091  }
  1092  	.reveal .slide-background {
  1093  		display: none;
  1094  		position: absolute;
  1095  		width: 100%;
  1096  		height: 100%;
  1097  		opacity: 0;
  1098  		visibility: hidden;
  1099  		overflow: hidden;
  1100  
  1101  		background-color: rgba( 0, 0, 0, 0 );
  1102  
  1103  		transition: all 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
  1104  	}
  1105  
  1106  	.reveal .slide-background-content {
  1107  		position: absolute;
  1108  		width: 100%;
  1109  		height: 100%;
  1110  
  1111  		background-position: 50% 50%;
  1112  		background-repeat: no-repeat;
  1113  		background-size: cover;
  1114  	}
  1115  
  1116  	.reveal .slide-background.stack {
  1117  		display: block;
  1118  	}
  1119  
  1120  	.reveal .slide-background.present {
  1121  		opacity: 1;
  1122  		visibility: visible;
  1123  		z-index: 2;
  1124  	}
  1125  
  1126  	.print-pdf .reveal .slide-background {
  1127  		opacity: 1 !important;
  1128  		visibility: visible !important;
  1129  	}
  1130  
  1131  /* Video backgrounds */
  1132  .reveal .slide-background video {
  1133  	position: absolute;
  1134  	width: 100%;
  1135  	height: 100%;
  1136  	max-width: none;
  1137  	max-height: none;
  1138  	top: 0;
  1139  	left: 0;
  1140  	object-fit: cover;
  1141  }
  1142  	.reveal .slide-background[data-background-size="contain"] video {
  1143  		object-fit: contain;
  1144  	}
  1145  
  1146  /* Immediate transition style */
  1147  .reveal[data-background-transition=none]>.backgrounds .slide-background,
  1148  .reveal>.backgrounds .slide-background[data-background-transition=none] {
  1149  	transition: none;
  1150  }
  1151  
  1152  /* Slide */
  1153  .reveal[data-background-transition=slide]>.backgrounds .slide-background,
  1154  .reveal>.backgrounds .slide-background[data-background-transition=slide] {
  1155  	opacity: 1;
  1156  	backface-visibility: hidden;
  1157  }
  1158  	.reveal[data-background-transition=slide]>.backgrounds .slide-background.past,
  1159  	.reveal>.backgrounds .slide-background.past[data-background-transition=slide] {
  1160  		transform: translate(-100%, 0);
  1161  	}
  1162  	.reveal[data-background-transition=slide]>.backgrounds .slide-background.future,
  1163  	.reveal>.backgrounds .slide-background.future[data-background-transition=slide] {
  1164  		transform: translate(100%, 0);
  1165  	}
  1166  
  1167  	.reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.past,
  1168  	.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=slide] {
  1169  		transform: translate(0, -100%);
  1170  	}
  1171  	.reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.future,
  1172  	.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=slide] {
  1173  		transform: translate(0, 100%);
  1174  	}
  1175  
  1176  
  1177  /* Convex */
  1178  .reveal[data-background-transition=convex]>.backgrounds .slide-background.past,
  1179  .reveal>.backgrounds .slide-background.past[data-background-transition=convex] {
  1180  	opacity: 0;
  1181  	transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0);
  1182  }
  1183  .reveal[data-background-transition=convex]>.backgrounds .slide-background.future,
  1184  .reveal>.backgrounds .slide-background.future[data-background-transition=convex] {
  1185  	opacity: 0;
  1186  	transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0);
  1187  }
  1188  
  1189  .reveal[data-background-transition=convex]>.backgrounds .slide-background>.slide-background.past,
  1190  .reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=convex] {
  1191  	opacity: 0;
  1192  	transform: translate3d(0, -100%, 0) rotateX(90deg) translate3d(0, -100%, 0);
  1193  }
  1194  .reveal[data-background-transition=convex]>.backgrounds .slide-background>.slide-background.future,
  1195  .reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=convex] {
  1196  	opacity: 0;
  1197  	transform: translate3d(0, 100%, 0) rotateX(-90deg) translate3d(0, 100%, 0);
  1198  }
  1199  
  1200  
  1201  /* Concave */
  1202  .reveal[data-background-transition=concave]>.backgrounds .slide-background.past,
  1203  .reveal>.backgrounds .slide-background.past[data-background-transition=concave] {
  1204  	opacity: 0;
  1205  	transform: translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0);
  1206  }
  1207  .reveal[data-background-transition=concave]>.backgrounds .slide-background.future,
  1208  .reveal>.backgrounds .slide-background.future[data-background-transition=concave] {
  1209  	opacity: 0;
  1210  	transform: translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0);
  1211  }
  1212  
  1213  .reveal[data-background-transition=concave]>.backgrounds .slide-background>.slide-background.past,
  1214  .reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=concave] {
  1215  	opacity: 0;
  1216  	transform: translate3d(0, -100%, 0) rotateX(-90deg) translate3d(0, -100%, 0);
  1217  }
  1218  .reveal[data-background-transition=concave]>.backgrounds .slide-background>.slide-background.future,
  1219  .reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=concave] {
  1220  	opacity: 0;
  1221  	transform: translate3d(0, 100%, 0) rotateX(90deg) translate3d(0, 100%, 0);
  1222  }
  1223  
  1224  /* Zoom */
  1225  .reveal[data-background-transition=zoom]>.backgrounds .slide-background,
  1226  .reveal>.backgrounds .slide-background[data-background-transition=zoom] {
  1227  	transition-timing-function: ease;
  1228  }
  1229  
  1230  .reveal[data-background-transition=zoom]>.backgrounds .slide-background.past,
  1231  .reveal>.backgrounds .slide-background.past[data-background-transition=zoom] {
  1232  	opacity: 0;
  1233  	visibility: hidden;
  1234  	transform: scale(16);
  1235  }
  1236  .reveal[data-background-transition=zoom]>.backgrounds .slide-background.future,
  1237  .reveal>.backgrounds .slide-background.future[data-background-transition=zoom] {
  1238  	opacity: 0;
  1239  	visibility: hidden;
  1240  	transform: scale(0.2);
  1241  }
  1242  
  1243  .reveal[data-background-transition=zoom]>.backgrounds .slide-background>.slide-background.past,
  1244  .reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=zoom] {
  1245  	opacity: 0;
  1246  		visibility: hidden;
  1247  		transform: scale(16);
  1248  }
  1249  .reveal[data-background-transition=zoom]>.backgrounds .slide-background>.slide-background.future,
  1250  .reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=zoom] {
  1251  	opacity: 0;
  1252  	visibility: hidden;
  1253  	transform: scale(0.2);
  1254  }
  1255  
  1256  
  1257  /* Global transition speed settings */
  1258  .reveal[data-transition-speed="fast"]>.backgrounds .slide-background {
  1259  	transition-duration: 400ms;
  1260  }
  1261  .reveal[data-transition-speed="slow"]>.backgrounds .slide-background {
  1262  	transition-duration: 1200ms;
  1263  }
  1264  
  1265  
  1266  /*********************************************
  1267   * OVERVIEW
  1268   *********************************************/
  1269  
  1270  .reveal.overview {
  1271  	perspective-origin: 50% 50%;
  1272  	perspective: 700px;
  1273  
  1274  	.slides {
  1275  		// Fixes overview rendering errors in FF48+, not applied to
  1276  		// other browsers since it degrades performance
  1277  		-moz-transform-style: preserve-3d;
  1278  	}
  1279  
  1280  	.slides section {
  1281  		height: 100%;
  1282  		top: 0 !important;
  1283  		opacity: 1 !important;
  1284  		overflow: hidden;
  1285  		visibility: visible !important;
  1286  		cursor: pointer;
  1287  		box-sizing: border-box;
  1288  	}
  1289  	.slides section:hover,
  1290  	.slides section.present {
  1291  		outline: 10px solid rgba(150,150,150,0.4);
  1292  		outline-offset: 10px;
  1293  	}
  1294  	.slides section .fragment {
  1295  		opacity: 1;
  1296  		transition: none;
  1297  	}
  1298  	.slides section:after,
  1299  	.slides section:before {
  1300  		display: none !important;
  1301  	}
  1302  	.slides>section.stack {
  1303  		padding: 0;
  1304  		top: 0 !important;
  1305  		background: none;
  1306  		outline: none;
  1307  		overflow: visible;
  1308  	}
  1309  
  1310  	.backgrounds {
  1311  		perspective: inherit;
  1312  
  1313  		// Fixes overview rendering errors in FF48+, not applied to
  1314  		// other browsers since it degrades performance
  1315  		-moz-transform-style: preserve-3d;
  1316  	}
  1317  
  1318  	.backgrounds .slide-background {
  1319  		opacity: 1;
  1320  		visibility: visible;
  1321  
  1322  		// This can't be applied to the slide itself in Safari
  1323  		outline: 10px solid rgba(150,150,150,0.1);
  1324  		outline-offset: 10px;
  1325  	}
  1326  
  1327  	.backgrounds .slide-background.stack {
  1328  		overflow: visible;
  1329  	}
  1330  }
  1331  
  1332  // Disable transitions transitions while we're activating
  1333  // or deactivating the overview mode.
  1334  .reveal.overview .slides section,
  1335  .reveal.overview-deactivating .slides section {
  1336  	transition: none;
  1337  }
  1338  
  1339  .reveal.overview .backgrounds .slide-background,
  1340  .reveal.overview-deactivating .backgrounds .slide-background {
  1341  	transition: none;
  1342  }
  1343  
  1344  
  1345  /*********************************************
  1346   * RTL SUPPORT
  1347   *********************************************/
  1348  
  1349  .reveal.rtl .slides,
  1350  .reveal.rtl .slides h1,
  1351  .reveal.rtl .slides h2,
  1352  .reveal.rtl .slides h3,
  1353  .reveal.rtl .slides h4,
  1354  .reveal.rtl .slides h5,
  1355  .reveal.rtl .slides h6 {
  1356  	direction: rtl;
  1357  	font-family: sans-serif;
  1358  }
  1359  
  1360  .reveal.rtl pre,
  1361  .reveal.rtl code {
  1362  	direction: ltr;
  1363  }
  1364  
  1365  .reveal.rtl ol,
  1366  .reveal.rtl ul {
  1367  	text-align: right;
  1368  }
  1369  
  1370  .reveal.rtl .progress span {
  1371  	float: right
  1372  }
  1373  
  1374  /*********************************************
  1375   * PARALLAX BACKGROUND
  1376   *********************************************/
  1377  
  1378  .reveal.has-parallax-background .backgrounds {
  1379  	transition: all 0.8s ease;
  1380  }
  1381  
  1382  /* Global transition speed settings */
  1383  .reveal.has-parallax-background[data-transition-speed="fast"] .backgrounds {
  1384  	transition-duration: 400ms;
  1385  }
  1386  .reveal.has-parallax-background[data-transition-speed="slow"] .backgrounds {
  1387  	transition-duration: 1200ms;
  1388  }
  1389  
  1390  
  1391  /*********************************************
  1392   * OVERLAY FOR LINK PREVIEWS AND HELP
  1393   *********************************************/
  1394  
  1395  .reveal > .overlay {
  1396  	position: absolute;
  1397  	top: 0;
  1398  	left: 0;
  1399  	width: 100%;
  1400  	height: 100%;
  1401  	z-index: 1000;
  1402  	background: rgba( 0, 0, 0, 0.9 );
  1403  	opacity: 0;
  1404  	visibility: hidden;
  1405  	transition: all 0.3s ease;
  1406  }
  1407  	.reveal > .overlay.visible {
  1408  		opacity: 1;
  1409  		visibility: visible;
  1410  	}
  1411  
  1412  	.reveal > .overlay .spinner {
  1413  		position: absolute;
  1414  		display: block;
  1415  		top: 50%;
  1416  		left: 50%;
  1417  		width: 32px;
  1418  		height: 32px;
  1419  		margin: -16px 0 0 -16px;
  1420  		z-index: 10;
  1421  		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);
  1422  
  1423  		visibility: visible;
  1424  		opacity: 0.6;
  1425  		transition: all 0.3s ease;
  1426  	}
  1427  
  1428  	.reveal > .overlay header {
  1429  		position: absolute;
  1430  		left: 0;
  1431  		top: 0;
  1432  		width: 100%;
  1433  		height: 40px;
  1434  		z-index: 2;
  1435  		border-bottom: 1px solid #222;
  1436  	}
  1437  		.reveal > .overlay header a {
  1438  			display: inline-block;
  1439  			width: 40px;
  1440  			height: 40px;
  1441  			line-height: 36px;
  1442  			padding: 0 10px;
  1443  			float: right;
  1444  			opacity: 0.6;
  1445  
  1446  			box-sizing: border-box;
  1447  		}
  1448  			.reveal > .overlay header a:hover {
  1449  				opacity: 1;
  1450  			}
  1451  			.reveal > .overlay header a .icon {
  1452  				display: inline-block;
  1453  				width: 20px;
  1454  				height: 20px;
  1455  
  1456  				background-position: 50% 50%;
  1457  				background-size: 100%;
  1458  				background-repeat: no-repeat;
  1459  			}
  1460  			.reveal > .overlay header a.close .icon {
  1461  				background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABkklEQVRYR8WX4VHDMAxG6wnoJrABZQPYBCaBTWAD2g1gE5gg6OOsXuxIlr40d81dfrSJ9V4c2VLK7spHuTJ/5wpM07QXuXc5X0opX2tEJcadjHuV80li/FgxTIEK/5QBCICBD6xEhSMGHgQPgBgLiYVAB1dpSqKDawxTohFw4JSEA3clzgIBPCURwE2JucBR7rhPJJv5OpJwDX+SfDjgx1wACQeJG1aChP9K/IMmdZ8DtESV1WyP3Bt4MwM6sj4NMxMYiqUWHQu4KYA/SYkIjOsm3BXYWMKFDwU2khjCQ4ELJUJ4SmClRArOCmSXGuKma0fYD5CbzHxFpCSGAhfAVSSUGDUk2BWZaff2g6GE15BsBQ9nwmpIGDiyHQddwNTMKkbZaf9fajXQca1EX44puJZUsnY0ObGmITE3GVLCbEhQUjGVt146j6oasWN+49Vph2w1pZ5EansNZqKBm1txbU57iRRcZ86RWMDdWtBJUHBHwoQPi1GV+JCbntmvok7iTX4/Up9mgyTc/FJYDTcndgH/AA5A/CHsyEkVAAAAAElFTkSuQmCC);
  1462  			}
  1463  			.reveal > .overlay header a.external .icon {
  1464  				background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAcElEQVRYR+2WSQoAIQwEzf8f7XiOMkUQxUPlGkM3hVmiQfQR9GYnH1SsAQlI4DiBqkCMoNb9y2e90IAEJPAcgdznU9+engMaeJ7Azh5Y1U67gAho4DqBqmB1buAf0MB1AlVBek83ZPkmJMGc1wAR+AAqod/B97TRpQAAAABJRU5ErkJggg==);
  1465  			}
  1466  
  1467  	.reveal > .overlay .viewport {
  1468  		position: absolute;
  1469  		display: flex;
  1470  		top: 40px;
  1471  		right: 0;
  1472  		bottom: 0;
  1473  		left: 0;
  1474  	}
  1475  
  1476  	.reveal > .overlay.overlay-preview .viewport iframe {
  1477  		width: 100%;
  1478  		height: 100%;
  1479  		max-width: 100%;
  1480  		max-height: 100%;
  1481  		border: 0;
  1482  
  1483  		opacity: 0;
  1484  		visibility: hidden;
  1485  		transition: all 0.3s ease;
  1486  	}
  1487  
  1488  	.reveal > .overlay.overlay-preview.loaded .viewport iframe {
  1489  		opacity: 1;
  1490  		visibility: visible;
  1491  	}
  1492  
  1493  	.reveal > .overlay.overlay-preview.loaded .viewport-inner  {
  1494  		position: absolute;
  1495  		z-index: -1;
  1496  		left: 0;
  1497  		top: 45%;
  1498  		width: 100%;
  1499  		text-align: center;
  1500  		letter-spacing: normal;
  1501  	}
  1502  	.reveal > .overlay.overlay-preview .x-frame-error  {
  1503  		opacity: 0;
  1504  		transition: opacity 0.3s ease 0.3s;
  1505  	}
  1506  	.reveal > .overlay.overlay-preview.loaded .x-frame-error  {
  1507  		opacity: 1;
  1508  	}
  1509  
  1510  	.reveal > .overlay.overlay-preview.loaded .spinner {
  1511  		opacity: 0;
  1512  		visibility: hidden;
  1513  		transform: scale(0.2);
  1514  	}
  1515  
  1516  	.reveal > .overlay.overlay-help .viewport {
  1517  		overflow: auto;
  1518  		color: #fff;
  1519  	}
  1520  
  1521  	.reveal > .overlay.overlay-help .viewport .viewport-inner {
  1522  		width: 600px;
  1523  		margin: auto;
  1524  		padding: 20px 20px 80px 20px;
  1525  		text-align: center;
  1526  		letter-spacing: normal;
  1527  	}
  1528  
  1529  	.reveal > .overlay.overlay-help .viewport .viewport-inner .title {
  1530  		font-size: 20px;
  1531  	}
  1532  
  1533  	.reveal > .overlay.overlay-help .viewport .viewport-inner table {
  1534  		border: 1px solid #fff;
  1535  		border-collapse: collapse;
  1536  		font-size: 16px;
  1537  	}
  1538  
  1539  	.reveal > .overlay.overlay-help .viewport .viewport-inner table th,
  1540  	.reveal > .overlay.overlay-help .viewport .viewport-inner table td {
  1541  		width: 200px;
  1542  		padding: 14px;
  1543  		border: 1px solid #fff;
  1544  		vertical-align: middle;
  1545  	}
  1546  
  1547  	.reveal > .overlay.overlay-help .viewport .viewport-inner table th {
  1548  		padding-top: 20px;
  1549  		padding-bottom: 20px;
  1550  	}
  1551  
  1552  
  1553  /*********************************************
  1554   * PLAYBACK COMPONENT
  1555   *********************************************/
  1556  
  1557  .reveal .playback {
  1558  	position: absolute;
  1559  	left: 15px;
  1560  	bottom: 20px;
  1561  	z-index: 30;
  1562  	cursor: pointer;
  1563  	transition: all 400ms ease;
  1564  	-webkit-tap-highlight-color: rgba( 0, 0, 0, 0 );
  1565  }
  1566  
  1567  .reveal.overview .playback {
  1568  	opacity: 0;
  1569  	visibility: hidden;
  1570  }
  1571  
  1572  
  1573  /*********************************************
  1574   * CODE HIGHLGIHTING
  1575   *********************************************/
  1576  
  1577  .reveal .hljs table {
  1578  	margin: initial;
  1579  }
  1580  
  1581  .reveal .hljs-ln-code,
  1582  .reveal .hljs-ln-numbers {
  1583  	padding: 0;
  1584  	border: 0;
  1585  }
  1586  
  1587  .reveal .hljs-ln-numbers {
  1588  	opacity: 0.6;
  1589  	padding-right: 0.75em;
  1590  	text-align: right;
  1591  	vertical-align: top;
  1592  }
  1593  
  1594  .reveal .hljs.has-highlights tr:not(.highlight-line) {
  1595  	opacity: 0.4;
  1596  }
  1597  
  1598  .reveal .hljs:not(:first-child).fragment {
  1599  	position: absolute;
  1600  	top: 0;
  1601  	left: 0;
  1602  	width: 100%;
  1603  	box-sizing: border-box;
  1604  }
  1605  
  1606  
  1607  /*********************************************
  1608   * ROLLING LINKS
  1609   *********************************************/
  1610  
  1611  .reveal .roll {
  1612  	display: inline-block;
  1613  	line-height: 1.2;
  1614  	overflow: hidden;
  1615  
  1616  	vertical-align: top;
  1617  	perspective: 400px;
  1618  	perspective-origin: 50% 50%;
  1619  }
  1620  	.reveal .roll:hover {
  1621  		background: none;
  1622  		text-shadow: none;
  1623  	}
  1624  .reveal .roll span {
  1625  	display: block;
  1626  	position: relative;
  1627  	padding: 0 2px;
  1628  
  1629  	pointer-events: none;
  1630  	transition: all 400ms ease;
  1631  	transform-origin: 50% 0%;
  1632  	transform-style: preserve-3d;
  1633  	backface-visibility: hidden;
  1634  }
  1635  	.reveal .roll:hover span {
  1636  	    background: rgba(0,0,0,0.5);
  1637  	    transform: translate3d( 0px, 0px, -45px ) rotateX( 90deg );
  1638  	}
  1639  .reveal .roll span:after {
  1640  	content: attr(data-title);
  1641  
  1642  	display: block;
  1643  	position: absolute;
  1644  	left: 0;
  1645  	top: 0;
  1646  	padding: 0 2px;
  1647  	backface-visibility: hidden;
  1648  	transform-origin: 50% 0%;
  1649  	transform: translate3d( 0px, 110%, 0px ) rotateX( -90deg );
  1650  }
  1651  
  1652  
  1653  /*********************************************
  1654   * SPEAKER NOTES
  1655   *********************************************/
  1656  
  1657  $notesWidthPercent: 25%;
  1658  
  1659  // Hide on-page notes
  1660  .reveal aside.notes {
  1661  	display: none;
  1662  }
  1663  
  1664  // An interface element that can optionally be used to show the
  1665  // speaker notes to all viewers, on top of the presentation
  1666  .reveal .speaker-notes {
  1667  	display: none;
  1668  	position: absolute;
  1669  	width: $notesWidthPercent / (1-$notesWidthPercent/100) * 1%;
  1670  	height: 100%;
  1671  	top: 0;
  1672  	left: 100%;
  1673  	padding: 14px 18px 14px 18px;
  1674  	z-index: 1;
  1675  	font-size: 18px;
  1676  	line-height: 1.4;
  1677  	border: 1px solid rgba( 0, 0, 0, 0.05 );
  1678  	color: #222;
  1679  	background-color: #f5f5f5;
  1680  	overflow: auto;
  1681  	box-sizing: border-box;
  1682  	text-align: left;
  1683  	font-family: Helvetica, sans-serif;
  1684  	-webkit-overflow-scrolling: touch;
  1685  
  1686  	.notes-placeholder {
  1687  		color: #ccc;
  1688  		font-style: italic;
  1689  	}
  1690  
  1691  	&:focus {
  1692  		outline: none;
  1693  	}
  1694  
  1695  	&:before {
  1696  		content: 'Speaker notes';
  1697  		display: block;
  1698  		margin-bottom: 10px;
  1699  		opacity: 0.5;
  1700  	}
  1701  }
  1702  
  1703  
  1704  .reveal.show-notes {
  1705  	max-width: 100% - $notesWidthPercent;
  1706  	overflow: visible;
  1707  }
  1708  
  1709  .reveal.show-notes .speaker-notes {
  1710  	display: block;
  1711  }
  1712  
  1713  @media screen and (min-width: 1600px) {
  1714  	.reveal .speaker-notes {
  1715  		font-size: 20px;
  1716  	}
  1717  }
  1718  
  1719  @media screen and (max-width: 1024px) {
  1720  	.reveal.show-notes {
  1721  		border-left: 0;
  1722  		max-width: none;
  1723  		max-height: 70%;
  1724  		max-height: 70vh;
  1725  		overflow: visible;
  1726  	}
  1727  
  1728  	.reveal.show-notes .speaker-notes {
  1729  		top: 100%;
  1730  		left: 0;
  1731  		width: 100%;
  1732  		height: (30/0.7)*1%;
  1733  		height: 30vh;
  1734  		border: 0;
  1735  	}
  1736  }
  1737  
  1738  @media screen and (max-width: 600px) {
  1739  	.reveal.show-notes {
  1740  		max-height: 60%;
  1741  		max-height: 60vh;
  1742  	}
  1743  
  1744  	.reveal.show-notes .speaker-notes {
  1745  		top: 100%;
  1746  		height: (40/0.6)*1%;
  1747  		height: 40vh;
  1748  	}
  1749  
  1750  	.reveal .speaker-notes {
  1751  		font-size: 14px;
  1752  	}
  1753  }
  1754  
  1755  
  1756  /*********************************************
  1757   * ZOOM PLUGIN
  1758   *********************************************/
  1759  
  1760  .zoomed .reveal *,
  1761  .zoomed .reveal *:before,
  1762  .zoomed .reveal *:after {
  1763  	backface-visibility: visible !important;
  1764  }
  1765  
  1766  .zoomed .reveal .progress,
  1767  .zoomed .reveal .controls {
  1768  	opacity: 0;
  1769  }
  1770  
  1771  .zoomed .reveal .roll span {
  1772  	background: none;
  1773  }
  1774  
  1775  .zoomed .reveal .roll span:after {
  1776  	visibility: hidden;
  1777  }