blob: 0bd0da35fdc8cf67ec85c8319331266f590ca8f1 [file] [log] [blame]
Christophe Dervieux8afae132021-12-06 15:16:42 +01001@use "sass:math";
2
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02003/**
JJ Allaireefa6ad42016-01-30 13:12:05 -05004 * reveal.js
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02005 * http://revealjs.com
JJ Allaireefa6ad42016-01-30 13:12:05 -05006 * MIT licensed
7 *
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02008 * Copyright (C) Hakim El Hattab, https://hakim.se
JJ Allaireefa6ad42016-01-30 13:12:05 -05009 */
10
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +020011@import 'layout';
JJ Allaireefa6ad42016-01-30 13:12:05 -050012
13/*********************************************
14 * GLOBAL STYLES
15 *********************************************/
16
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +020017html.reveal-full-page {
JJ Allaireefa6ad42016-01-30 13:12:05 -050018 width: 100%;
19 height: 100%;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +020020 height: 100vh;
21 height: calc( var(--vh, 1vh) * 100 );
Marc Kupietz9c036a42024-05-14 13:17:25 +020022 height: 100svh;
JJ Allaireefa6ad42016-01-30 13:12:05 -050023 overflow: hidden;
24}
25
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +020026.reveal-viewport {
27 height: 100%;
28 overflow: hidden;
JJ Allaireefa6ad42016-01-30 13:12:05 -050029 position: relative;
30 line-height: 1;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +020031 margin: 0;
JJ Allaireefa6ad42016-01-30 13:12:05 -050032
33 background-color: #fff;
34 color: #000;
Marc Kupietz9c036a42024-05-14 13:17:25 +020035
36 --r-controls-spacing: 12px;
JJ Allaireefa6ad42016-01-30 13:12:05 -050037}
38
Marc Kupietz09b75752023-10-07 09:32:19 +020039// Force the presentation to cover the full viewport when we
40// enter fullscreen mode. Fixes sizing issues in Safari.
41.reveal-viewport:fullscreen {
42 top: 0 !important;
43 left: 0 !important;
44 width: 100% !important;
45 height: 100% !important;
46 transform: none !important;
47}
48
JJ Allaireefa6ad42016-01-30 13:12:05 -050049
50/*********************************************
51 * VIEW FRAGMENTS
52 *********************************************/
53
Marc Kupietz09b75752023-10-07 09:32:19 +020054.reveal .fragment {
JJ Allaireefa6ad42016-01-30 13:12:05 -050055 transition: all .2s ease;
Marc Kupietz09b75752023-10-07 09:32:19 +020056
57 &:not(.custom) {
58 opacity: 0;
59 visibility: hidden;
60 will-change: opacity;
61 }
JJ Allaireefa6ad42016-01-30 13:12:05 -050062
63 &.visible {
64 opacity: 1;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +020065 visibility: inherit;
66 }
67
68 &.disabled {
69 transition: none;
JJ Allaireefa6ad42016-01-30 13:12:05 -050070 }
71}
72
Marc Kupietz09b75752023-10-07 09:32:19 +020073.reveal .fragment.grow {
JJ Allaireefa6ad42016-01-30 13:12:05 -050074 opacity: 1;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +020075 visibility: inherit;
JJ Allaireefa6ad42016-01-30 13:12:05 -050076
77 &.visible {
78 transform: scale( 1.3 );
79 }
80}
81
Marc Kupietz09b75752023-10-07 09:32:19 +020082.reveal .fragment.shrink {
JJ Allaireefa6ad42016-01-30 13:12:05 -050083 opacity: 1;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +020084 visibility: inherit;
JJ Allaireefa6ad42016-01-30 13:12:05 -050085
86 &.visible {
87 transform: scale( 0.7 );
88 }
89}
90
Marc Kupietz09b75752023-10-07 09:32:19 +020091.reveal .fragment.zoom-in {
JJ Allaireefa6ad42016-01-30 13:12:05 -050092 transform: scale( 0.1 );
93
94 &.visible {
95 transform: none;
96 }
97}
98
Marc Kupietz09b75752023-10-07 09:32:19 +020099.reveal .fragment.fade-out {
JJ Allaireefa6ad42016-01-30 13:12:05 -0500100 opacity: 1;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200101 visibility: inherit;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500102
103 &.visible {
104 opacity: 0;
105 visibility: hidden;
106 }
107}
108
Marc Kupietz09b75752023-10-07 09:32:19 +0200109.reveal .fragment.semi-fade-out {
JJ Allaireefa6ad42016-01-30 13:12:05 -0500110 opacity: 1;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200111 visibility: inherit;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500112
113 &.visible {
114 opacity: 0.5;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200115 visibility: inherit;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500116 }
117}
118
Marc Kupietz09b75752023-10-07 09:32:19 +0200119.reveal .fragment.strike {
JJ Allaireefa6ad42016-01-30 13:12:05 -0500120 opacity: 1;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200121 visibility: inherit;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500122
123 &.visible {
124 text-decoration: line-through;
125 }
126}
127
Marc Kupietz09b75752023-10-07 09:32:19 +0200128.reveal .fragment.fade-up {
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200129 transform: translate(0, 40px);
Bruce's Thinkpad72710882016-07-14 01:12:07 +0800130
131 &.visible {
132 transform: translate(0, 0);
133 }
134}
135
Marc Kupietz09b75752023-10-07 09:32:19 +0200136.reveal .fragment.fade-down {
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200137 transform: translate(0, -40px);
Bruce's Thinkpad72710882016-07-14 01:12:07 +0800138
139 &.visible {
140 transform: translate(0, 0);
141 }
142}
143
Marc Kupietz09b75752023-10-07 09:32:19 +0200144.reveal .fragment.fade-right {
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200145 transform: translate(-40px, 0);
Bruce's Thinkpad72710882016-07-14 01:12:07 +0800146
147 &.visible {
148 transform: translate(0, 0);
149 }
150}
151
Marc Kupietz09b75752023-10-07 09:32:19 +0200152.reveal .fragment.fade-left {
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200153 transform: translate(40px, 0);
Bruce's Thinkpad72710882016-07-14 01:12:07 +0800154
155 &.visible {
156 transform: translate(0, 0);
157 }
158}
159
Marc Kupietz09b75752023-10-07 09:32:19 +0200160.reveal .fragment.fade-in-then-out,
161.reveal .fragment.current-visible {
JJ Allaireefa6ad42016-01-30 13:12:05 -0500162 opacity: 0;
163 visibility: hidden;
164
165 &.current-fragment {
166 opacity: 1;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200167 visibility: inherit;
168 }
169}
170
Marc Kupietz09b75752023-10-07 09:32:19 +0200171.reveal .fragment.fade-in-then-semi-out {
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200172 opacity: 0;
173 visibility: hidden;
174
175 &.visible {
176 opacity: 0.5;
177 visibility: inherit;
178 }
179
180 &.current-fragment {
181 opacity: 1;
182 visibility: inherit;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500183 }
184}
185
Marc Kupietz09b75752023-10-07 09:32:19 +0200186.reveal .fragment.highlight-red,
187.reveal .fragment.highlight-current-red,
188.reveal .fragment.highlight-green,
189.reveal .fragment.highlight-current-green,
190.reveal .fragment.highlight-blue,
191.reveal .fragment.highlight-current-blue {
JJ Allaireefa6ad42016-01-30 13:12:05 -0500192 opacity: 1;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200193 visibility: inherit;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500194}
Marc Kupietz09b75752023-10-07 09:32:19 +0200195 .reveal .fragment.highlight-red.visible {
JJ Allaireefa6ad42016-01-30 13:12:05 -0500196 color: #ff2c2d
197 }
Marc Kupietz09b75752023-10-07 09:32:19 +0200198 .reveal .fragment.highlight-green.visible {
JJ Allaireefa6ad42016-01-30 13:12:05 -0500199 color: #17ff2e;
200 }
Marc Kupietz09b75752023-10-07 09:32:19 +0200201 .reveal .fragment.highlight-blue.visible {
JJ Allaireefa6ad42016-01-30 13:12:05 -0500202 color: #1b91ff;
203 }
204
Marc Kupietz09b75752023-10-07 09:32:19 +0200205.reveal .fragment.highlight-current-red.current-fragment {
JJ Allaireefa6ad42016-01-30 13:12:05 -0500206 color: #ff2c2d
207}
Marc Kupietz09b75752023-10-07 09:32:19 +0200208.reveal .fragment.highlight-current-green.current-fragment {
JJ Allaireefa6ad42016-01-30 13:12:05 -0500209 color: #17ff2e;
210}
Marc Kupietz09b75752023-10-07 09:32:19 +0200211.reveal .fragment.highlight-current-blue.current-fragment {
JJ Allaireefa6ad42016-01-30 13:12:05 -0500212 color: #1b91ff;
213}
214
215
216/*********************************************
217 * DEFAULT ELEMENT STYLES
218 *********************************************/
219
220/* Fixes issue in Chrome where italic fonts did not appear when printing to PDF */
221.reveal:after {
222 content: '';
223 font-style: italic;
224}
225
226.reveal iframe {
227 z-index: 1;
228}
229
230/** Prevents layering issues in certain browser/transition combinations */
231.reveal a {
232 position: relative;
233}
234
JJ Allaireefa6ad42016-01-30 13:12:05 -0500235
236/*********************************************
237 * CONTROLS
238 *********************************************/
239
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200240@keyframes bounce-right {
241 0%, 10%, 25%, 40%, 50% {transform: translateX(0);}
242 20% {transform: translateX(10px);}
243 30% {transform: translateX(-5px);}
244}
245
246@keyframes bounce-left {
247 0%, 10%, 25%, 40%, 50% {transform: translateX(0);}
248 20% {transform: translateX(-10px);}
249 30% {transform: translateX(5px);}
250}
251
252@keyframes bounce-down {
253 0%, 10%, 25%, 40%, 50% {transform: translateY(0);}
254 20% {transform: translateY(10px);}
255 30% {transform: translateY(-5px);}
256}
257
258$controlArrowSize: 3.6em;
259$controlArrowSpacing: 1.4em;
260$controlArrowLength: 2.6em;
261$controlArrowThickness: 0.5em;
262$controlsArrowAngle: 45deg;
263$controlsArrowAngleHover: 40deg;
264$controlsArrowAngleActive: 36deg;
265
266@mixin controlsArrowTransform( $angle ) {
267 &:before {
Christophe Dervieux8afae132021-12-06 15:16:42 +0100268 transform: translateX(($controlArrowSize - $controlArrowLength)*0.5) translateY(($controlArrowSize - $controlArrowThickness)*0.5) rotate( $angle );
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200269 }
270
271 &:after {
Christophe Dervieux8afae132021-12-06 15:16:42 +0100272 transform: translateX(($controlArrowSize - $controlArrowLength)*0.5) translateY(($controlArrowSize - $controlArrowThickness)*0.5) rotate( -$angle );
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200273 }
274}
275
JJ Allaireefa6ad42016-01-30 13:12:05 -0500276.reveal .controls {
277 display: none;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500278 position: absolute;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200279 top: auto;
Marc Kupietz9c036a42024-05-14 13:17:25 +0200280 bottom: var(--r-controls-spacing);
281 right: var(--r-controls-spacing);
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200282 left: auto;
283 z-index: 11;
284 color: #000;
285 pointer-events: none;
286 font-size: 10px;
287
288 button {
289 position: absolute;
290 padding: 0;
291 background-color: transparent;
292 border: 0;
293 outline: 0;
294 cursor: pointer;
295 color: currentColor;
296 transform: scale(.9999);
297 transition: color 0.2s ease,
298 opacity 0.2s ease,
299 transform 0.2s ease;
300 z-index: 2; // above slides
301 pointer-events: auto;
302 font-size: inherit;
303
304 visibility: hidden;
305 opacity: 0;
306
307 -webkit-appearance: none;
308 -webkit-tap-highlight-color: rgba( 0, 0, 0, 0 );
309 }
310
311 .controls-arrow:before,
312 .controls-arrow:after {
313 content: '';
314 position: absolute;
315 top: 0;
316 left: 0;
317 width: $controlArrowLength;
318 height: $controlArrowThickness;
Christophe Dervieux8afae132021-12-06 15:16:42 +0100319 border-radius: $controlArrowThickness*0.5;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200320 background-color: currentColor;
321
322 transition: all 0.15s ease, background-color 0.8s ease;
Christophe Dervieux8afae132021-12-06 15:16:42 +0100323 transform-origin: math.div(floor(($controlArrowThickness*0.5)*10), 10) 50%;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200324 will-change: transform;
325 }
326
327 .controls-arrow {
328 position: relative;
329 width: $controlArrowSize;
330 height: $controlArrowSize;
331
332 @include controlsArrowTransform( $controlsArrowAngle );
333
334 &:hover {
335 @include controlsArrowTransform( $controlsArrowAngleHover );
336 }
337
338 &:active {
339 @include controlsArrowTransform( $controlsArrowAngleActive );
340 }
341 }
342
343 .navigate-left {
344 right: $controlArrowSize + $controlArrowSpacing*2;
Christophe Dervieux8afae132021-12-06 15:16:42 +0100345 bottom: $controlArrowSpacing + $controlArrowSize*0.5;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200346 transform: translateX( -10px );
347
348 &.highlight {
349 animation: bounce-left 2s 50 both ease-out;
350 }
351 }
352
353 .navigate-right {
354 right: 0;
Christophe Dervieux8afae132021-12-06 15:16:42 +0100355 bottom: $controlArrowSpacing + $controlArrowSize*0.5;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200356 transform: translateX( 10px );
357
358 .controls-arrow {
359 transform: rotate( 180deg );
360 }
361
362 &.highlight {
363 animation: bounce-right 2s 50 both ease-out;
364 }
365 }
366
367 .navigate-up {
Christophe Dervieux8afae132021-12-06 15:16:42 +0100368 right: $controlArrowSpacing + $controlArrowSize*0.5;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200369 bottom: $controlArrowSpacing*2 + $controlArrowSize;
370 transform: translateY( -10px );
371
372 .controls-arrow {
373 transform: rotate( 90deg );
374 }
375 }
376
377 .navigate-down {
Christophe Dervieux8afae132021-12-06 15:16:42 +0100378 right: $controlArrowSpacing + $controlArrowSize*0.5;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200379 bottom: -$controlArrowSpacing;
380 padding-bottom: $controlArrowSpacing;
381 transform: translateY( 10px );
382
383 .controls-arrow {
384 transform: rotate( -90deg );
385 }
386
387 &.highlight {
388 animation: bounce-down 2s 50 both ease-out;
389 }
390 }
391
392 // Back arrow style: "faded":
393 // Deemphasize backwards navigation arrows in favor of drawing
394 // attention to forwards navigation
395 &[data-controls-back-arrows="faded"] .navigate-up.enabled {
396 opacity: 0.3;
397
398 &:hover {
399 opacity: 1;
400 }
401 }
402
403 // Back arrow style: "hidden":
404 // Never show arrows for backwards navigation
405 &[data-controls-back-arrows="hidden"] .navigate-up.enabled {
406 opacity: 0;
407 visibility: hidden;
408 }
409
410 // Any control button that can be clicked is "enabled"
411 .enabled {
412 visibility: visible;
413 opacity: 0.9;
414 cursor: pointer;
415 transform: none;
416 }
417
418 // Any control button that leads to showing or hiding
419 // a fragment
420 .enabled.fragmented {
421 opacity: 0.5;
422 }
423
424 .enabled:hover,
425 .enabled.fragmented:hover {
426 opacity: 1;
427 }
JJ Allaireefa6ad42016-01-30 13:12:05 -0500428}
429
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200430.reveal:not(.rtl) .controls {
431 // Back arrow style: "faded":
432 // Deemphasize left arrow
433 &[data-controls-back-arrows="faded"] .navigate-left.enabled {
434 opacity: 0.3;
435
436 &:hover {
437 opacity: 1;
438 }
439 }
440
441 // Back arrow style: "hidden":
442 // Never show left arrow
443 &[data-controls-back-arrows="hidden"] .navigate-left.enabled {
444 opacity: 0;
445 visibility: hidden;
446 }
JJ Allaireefa6ad42016-01-30 13:12:05 -0500447}
448
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200449.reveal.rtl .controls {
450 // Back arrow style: "faded":
451 // Deemphasize right arrow in RTL mode
452 &[data-controls-back-arrows="faded"] .navigate-right.enabled {
453 opacity: 0.3;
454
455 &:hover {
456 opacity: 1;
457 }
458 }
459
460 // Back arrow style: "hidden":
461 // Never show right arrow in RTL mode
462 &[data-controls-back-arrows="hidden"] .navigate-right.enabled {
463 opacity: 0;
464 visibility: hidden;
465 }
JJ Allaireefa6ad42016-01-30 13:12:05 -0500466}
467
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200468.reveal[data-navigation-mode="linear"].has-horizontal-slides .navigate-up,
469.reveal[data-navigation-mode="linear"].has-horizontal-slides .navigate-down {
470 display: none;
471}
JJ Allaireefa6ad42016-01-30 13:12:05 -0500472
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200473// Adjust the layout when there are no vertical slides
474.reveal[data-navigation-mode="linear"].has-horizontal-slides .navigate-left,
475.reveal:not(.has-vertical-slides) .controls .navigate-left {
476 bottom: $controlArrowSpacing;
477 right: 0.5em + $controlArrowSpacing + $controlArrowSize;
478}
479
480.reveal[data-navigation-mode="linear"].has-horizontal-slides .navigate-right,
481.reveal:not(.has-vertical-slides) .controls .navigate-right {
482 bottom: $controlArrowSpacing;
483 right: 0.5em;
484}
485
486// Adjust the layout when there are no horizontal slides
487.reveal:not(.has-horizontal-slides) .controls .navigate-up {
488 right: $controlArrowSpacing;
489 bottom: $controlArrowSpacing + $controlArrowSize;
490}
491.reveal:not(.has-horizontal-slides) .controls .navigate-down {
492 right: $controlArrowSpacing;
493 bottom: 0.5em;
494}
495
496// Invert arrows based on background color
497.reveal.has-dark-background .controls {
498 color: #fff;
499}
500.reveal.has-light-background .controls {
501 color: #000;
502}
503
504// Disable active states on touch devices
505.reveal.no-hover .controls .controls-arrow:hover,
506.reveal.no-hover .controls .controls-arrow:active {
507 @include controlsArrowTransform( $controlsArrowAngle );
508}
509
510// Edge aligned controls layout
511@media screen and (min-width: 500px) {
512
Marc Kupietz9c036a42024-05-14 13:17:25 +0200513 .reveal-viewport {
514 --r-controls-spacing: 0.8em;
515 }
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200516
517 .reveal .controls[data-controls-layout="edges"] {
518 & {
519 top: 0;
520 right: 0;
521 bottom: 0;
522 left: 0;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500523 }
524
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200525 .navigate-left,
526 .navigate-right,
527 .navigate-up,
528 .navigate-down {
529 bottom: auto;
530 right: auto;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500531 }
532
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200533 .navigate-left {
534 top: 50%;
Marc Kupietz9c036a42024-05-14 13:17:25 +0200535 left: var(--r-controls-spacing);
Christophe Dervieux8afae132021-12-06 15:16:42 +0100536 margin-top: -$controlArrowSize*0.5;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500537 }
538
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200539 .navigate-right {
540 top: 50%;
Marc Kupietz9c036a42024-05-14 13:17:25 +0200541 right: var(--r-controls-spacing);
Christophe Dervieux8afae132021-12-06 15:16:42 +0100542 margin-top: -$controlArrowSize*0.5;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500543 }
544
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200545 .navigate-up {
Marc Kupietz9c036a42024-05-14 13:17:25 +0200546 top: var(--r-controls-spacing);
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200547 left: 50%;
Christophe Dervieux8afae132021-12-06 15:16:42 +0100548 margin-left: -$controlArrowSize*0.5;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200549 }
550
551 .navigate-down {
Marc Kupietz9c036a42024-05-14 13:17:25 +0200552 bottom: calc(var(--r-controls-spacing) - #{$controlArrowSpacing} + 0.3em);
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200553 left: 50%;
Christophe Dervieux8afae132021-12-06 15:16:42 +0100554 margin-left: -$controlArrowSize*0.5;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200555 }
556 }
557
558}
559
JJ Allaireefa6ad42016-01-30 13:12:05 -0500560
561/*********************************************
562 * PROGRESS BAR
563 *********************************************/
564
565.reveal .progress {
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200566 position: absolute;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500567 display: none;
568 height: 3px;
569 width: 100%;
570 bottom: 0;
571 left: 0;
572 z-index: 10;
573
574 background-color: rgba( 0, 0, 0, 0.2 );
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200575 color: #fff;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500576}
577 .reveal .progress:after {
578 content: '';
579 display: block;
580 position: absolute;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200581 height: 10px;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500582 width: 100%;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200583 top: -10px;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500584 }
585 .reveal .progress span {
586 display: block;
587 height: 100%;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200588 width: 100%;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500589
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200590 background-color: currentColor;
591 transition: transform 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
592 transform-origin: 0 0;
593 transform: scaleX(0);
JJ Allaireefa6ad42016-01-30 13:12:05 -0500594 }
595
596/*********************************************
597 * SLIDE NUMBER
598 *********************************************/
599
600.reveal .slide-number {
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200601 position: absolute;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500602 display: block;
603 right: 8px;
604 bottom: 8px;
605 z-index: 31;
606 font-family: Helvetica, sans-serif;
607 font-size: 12px;
608 line-height: 1;
609 color: #fff;
610 background-color: rgba( 0, 0, 0, 0.4 );
611 padding: 5px;
612}
613
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200614.reveal .slide-number a {
615 color: currentColor;
616}
617
JJ Allaireefa6ad42016-01-30 13:12:05 -0500618.reveal .slide-number-delimiter {
619 margin: 0 3px;
620}
621
622/*********************************************
623 * SLIDES
624 *********************************************/
625
626.reveal {
627 position: relative;
628 width: 100%;
629 height: 100%;
630 overflow: hidden;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200631 touch-action: pinch-zoom;
632}
633
Marc Kupietz9c036a42024-05-14 13:17:25 +0200634// Swiping on an embedded deck should not block page scrolling...
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200635.reveal.embedded {
636 touch-action: pan-y;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500637}
638
Marc Kupietz9c036a42024-05-14 13:17:25 +0200639// ... unless we're on a vertical slide
640.reveal.embedded.is-vertical-slide {
641 touch-action: none;
642}
643
JJ Allaireefa6ad42016-01-30 13:12:05 -0500644.reveal .slides {
645 position: absolute;
646 width: 100%;
647 height: 100%;
648 top: 0;
649 right: 0;
650 bottom: 0;
651 left: 0;
652 margin: auto;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200653 pointer-events: none;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500654
655 overflow: visible;
656 z-index: 1;
657 text-align: center;
658 perspective: 600px;
659 perspective-origin: 50% 40%;
660}
661
662.reveal .slides>section {
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200663 perspective: 600px;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500664}
665
666.reveal .slides>section,
667.reveal .slides>section>section {
668 display: none;
669 position: absolute;
670 width: 100%;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200671 pointer-events: auto;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500672
673 z-index: 10;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200674 transform-style: flat;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500675 transition: transform-origin 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985),
676 transform 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985),
677 visibility 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985),
678 opacity 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
679}
680
681/* Global transition speed settings */
682.reveal[data-transition-speed="fast"] .slides section {
683 transition-duration: 400ms;
684}
685.reveal[data-transition-speed="slow"] .slides section {
686 transition-duration: 1200ms;
687}
688
689/* Slide-specific transition speed overrides */
690.reveal .slides section[data-transition-speed="fast"] {
691 transition-duration: 400ms;
692}
693.reveal .slides section[data-transition-speed="slow"] {
694 transition-duration: 1200ms;
695}
696
697.reveal .slides>section.stack {
698 padding-top: 0;
699 padding-bottom: 0;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200700 pointer-events: none;
701 height: 100%;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500702}
703
704.reveal .slides>section.present,
705.reveal .slides>section>section.present {
706 display: block;
707 z-index: 11;
708 opacity: 1;
709}
710
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200711.reveal .slides>section:empty,
712.reveal .slides>section>section:empty,
713.reveal .slides>section[data-background-interactive],
714.reveal .slides>section>section[data-background-interactive] {
715 pointer-events: none;
716}
717
JJ Allaireefa6ad42016-01-30 13:12:05 -0500718.reveal.center,
719.reveal.center .slides,
720.reveal.center .slides section {
721 min-height: 0 !important;
722}
723
724/* Don't allow interaction with invisible slides */
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200725.reveal .slides>section:not(.present),
726.reveal .slides>section>section:not(.present) {
JJ Allaireefa6ad42016-01-30 13:12:05 -0500727 pointer-events: none;
728}
729
730.reveal.overview .slides>section,
731.reveal.overview .slides>section>section {
732 pointer-events: auto;
733}
734
735.reveal .slides>section.past,
736.reveal .slides>section.future,
Marc Kupietz09b75752023-10-07 09:32:19 +0200737.reveal .slides>section.past>section,
738.reveal .slides>section.future>section,
JJ Allaireefa6ad42016-01-30 13:12:05 -0500739.reveal .slides>section>section.past,
740.reveal .slides>section>section.future {
741 opacity: 0;
742}
743
744
745/*********************************************
746 * Mixins for readability of transitions
747 *********************************************/
748
749@mixin transition-global($style) {
750 .reveal .slides section[data-transition=#{$style}],
751 .reveal.#{$style} .slides section:not([data-transition]) {
752 @content;
753 }
754}
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200755@mixin transition-stack($style) {
756 .reveal .slides section[data-transition=#{$style}].stack,
757 .reveal.#{$style} .slides section.stack {
758 @content;
759 }
760}
JJ Allaireefa6ad42016-01-30 13:12:05 -0500761@mixin transition-horizontal-past($style) {
762 .reveal .slides>section[data-transition=#{$style}].past,
763 .reveal .slides>section[data-transition~=#{$style}-out].past,
764 .reveal.#{$style} .slides>section:not([data-transition]).past {
765 @content;
766 }
767}
768@mixin transition-horizontal-future($style) {
769 .reveal .slides>section[data-transition=#{$style}].future,
770 .reveal .slides>section[data-transition~=#{$style}-in].future,
771 .reveal.#{$style} .slides>section:not([data-transition]).future {
772 @content;
773 }
774}
775
776@mixin transition-vertical-past($style) {
777 .reveal .slides>section>section[data-transition=#{$style}].past,
778 .reveal .slides>section>section[data-transition~=#{$style}-out].past,
779 .reveal.#{$style} .slides>section>section:not([data-transition]).past {
780 @content;
781 }
782}
783@mixin transition-vertical-future($style) {
784 .reveal .slides>section>section[data-transition=#{$style}].future,
785 .reveal .slides>section>section[data-transition~=#{$style}-in].future,
786 .reveal.#{$style} .slides>section>section:not([data-transition]).future {
787 @content;
788 }
789}
790
791/*********************************************
792 * SLIDE TRANSITION
793 * Aliased 'linear' for backwards compatibility
794 *********************************************/
795
796@each $stylename in slide, linear {
JJ Allaireefa6ad42016-01-30 13:12:05 -0500797 @include transition-horizontal-past(#{$stylename}) {
798 transform: translate(-150%, 0);
799 }
800 @include transition-horizontal-future(#{$stylename}) {
801 transform: translate(150%, 0);
802 }
803 @include transition-vertical-past(#{$stylename}) {
804 transform: translate(0, -150%);
805 }
806 @include transition-vertical-future(#{$stylename}) {
807 transform: translate(0, 150%);
808 }
809}
810
811/*********************************************
812 * CONVEX TRANSITION
813 * Aliased 'default' for backwards compatibility
814 *********************************************/
815
816@each $stylename in default, convex {
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200817 @include transition-stack(#{$stylename}) {
818 transform-style: preserve-3d;
819 }
820
JJ Allaireefa6ad42016-01-30 13:12:05 -0500821 @include transition-horizontal-past(#{$stylename}) {
822 transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0);
823 }
824 @include transition-horizontal-future(#{$stylename}) {
825 transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0);
826 }
827 @include transition-vertical-past(#{$stylename}) {
828 transform: translate3d(0, -300px, 0) rotateX(70deg) translate3d(0, -300px, 0);
829 }
830 @include transition-vertical-future(#{$stylename}) {
831 transform: translate3d(0, 300px, 0) rotateX(-70deg) translate3d(0, 300px, 0);
832 }
833}
834
835/*********************************************
836 * CONCAVE TRANSITION
837 *********************************************/
838
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200839@include transition-stack(concave) {
840 transform-style: preserve-3d;
841}
842
JJ Allaireefa6ad42016-01-30 13:12:05 -0500843@include transition-horizontal-past(concave) {
844 transform: translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0);
845}
846@include transition-horizontal-future(concave) {
847 transform: translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0);
848}
849@include transition-vertical-past(concave) {
850 transform: translate3d(0, -80%, 0) rotateX(-70deg) translate3d(0, -80%, 0);
851}
852@include transition-vertical-future(concave) {
853 transform: translate3d(0, 80%, 0) rotateX(70deg) translate3d(0, 80%, 0);
854}
855
856
857/*********************************************
858 * ZOOM TRANSITION
859 *********************************************/
860
861@include transition-global(zoom) {
862 transition-timing-function: ease;
863}
864@include transition-horizontal-past(zoom) {
865 visibility: hidden;
866 transform: scale(16);
867}
868@include transition-horizontal-future(zoom) {
869 visibility: hidden;
870 transform: scale(0.2);
871}
872@include transition-vertical-past(zoom) {
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200873 transform: scale(16);
JJ Allaireefa6ad42016-01-30 13:12:05 -0500874}
875@include transition-vertical-future(zoom) {
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200876 transform: scale(0.2);
JJ Allaireefa6ad42016-01-30 13:12:05 -0500877}
878
879
880/*********************************************
881 * CUBE TRANSITION
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200882 *
883 * WARNING:
884 * this is deprecated and will be removed in a
885 * future version.
JJ Allaireefa6ad42016-01-30 13:12:05 -0500886 *********************************************/
887
888.reveal.cube .slides {
889 perspective: 1300px;
890}
891
892.reveal.cube .slides section {
893 padding: 30px;
894 min-height: 700px;
895 backface-visibility: hidden;
896 box-sizing: border-box;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200897 transform-style: preserve-3d;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500898}
899 .reveal.center.cube .slides section {
900 min-height: 0;
901 }
902 .reveal.cube .slides section:not(.stack):before {
903 content: '';
904 position: absolute;
905 display: block;
906 width: 100%;
907 height: 100%;
908 left: 0;
909 top: 0;
910 background: rgba(0,0,0,0.1);
911 border-radius: 4px;
912 transform: translateZ( -20px );
913 }
914 .reveal.cube .slides section:not(.stack):after {
915 content: '';
916 position: absolute;
917 display: block;
918 width: 90%;
919 height: 30px;
920 left: 5%;
921 bottom: 0;
922 background: none;
923 z-index: 1;
924
925 border-radius: 4px;
926 box-shadow: 0px 95px 25px rgba(0,0,0,0.2);
927 transform: translateZ(-90px) rotateX( 65deg );
928 }
929
930.reveal.cube .slides>section.stack {
931 padding: 0;
932 background: none;
933}
934
935.reveal.cube .slides>section.past {
936 transform-origin: 100% 0%;
937 transform: translate3d(-100%, 0, 0) rotateY(-90deg);
938}
939
940.reveal.cube .slides>section.future {
941 transform-origin: 0% 0%;
942 transform: translate3d(100%, 0, 0) rotateY(90deg);
943}
944
945.reveal.cube .slides>section>section.past {
946 transform-origin: 0% 100%;
947 transform: translate3d(0, -100%, 0) rotateX(90deg);
948}
949
950.reveal.cube .slides>section>section.future {
951 transform-origin: 0% 0%;
952 transform: translate3d(0, 100%, 0) rotateX(-90deg);
953}
954
955
956/*********************************************
957 * PAGE TRANSITION
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200958 *
959 * WARNING:
960 * this is deprecated and will be removed in a
961 * future version.
JJ Allaireefa6ad42016-01-30 13:12:05 -0500962 *********************************************/
963
964.reveal.page .slides {
965 perspective-origin: 0% 50%;
966 perspective: 3000px;
967}
968
969.reveal.page .slides section {
970 padding: 30px;
971 min-height: 700px;
972 box-sizing: border-box;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200973 transform-style: preserve-3d;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500974}
975 .reveal.page .slides section.past {
976 z-index: 12;
977 }
978 .reveal.page .slides section:not(.stack):before {
979 content: '';
980 position: absolute;
981 display: block;
982 width: 100%;
983 height: 100%;
984 left: 0;
985 top: 0;
986 background: rgba(0,0,0,0.1);
987 transform: translateZ( -20px );
988 }
989 .reveal.page .slides section:not(.stack):after {
990 content: '';
991 position: absolute;
992 display: block;
993 width: 90%;
994 height: 30px;
995 left: 5%;
996 bottom: 0;
997 background: none;
998 z-index: 1;
999
1000 border-radius: 4px;
1001 box-shadow: 0px 95px 25px rgba(0,0,0,0.2);
1002
1003 -webkit-transform: translateZ(-90px) rotateX( 65deg );
1004 }
1005
1006.reveal.page .slides>section.stack {
1007 padding: 0;
1008 background: none;
1009}
1010
1011.reveal.page .slides>section.past {
1012 transform-origin: 0% 0%;
1013 transform: translate3d(-40%, 0, 0) rotateY(-80deg);
1014}
1015
1016.reveal.page .slides>section.future {
1017 transform-origin: 100% 0%;
1018 transform: translate3d(0, 0, 0);
1019}
1020
1021.reveal.page .slides>section>section.past {
1022 transform-origin: 0% 0%;
1023 transform: translate3d(0, -40%, 0) rotateX(80deg);
1024}
1025
1026.reveal.page .slides>section>section.future {
1027 transform-origin: 0% 100%;
1028 transform: translate3d(0, 0, 0);
1029}
1030
1031
1032/*********************************************
1033 * FADE TRANSITION
1034 *********************************************/
1035
1036.reveal .slides section[data-transition=fade],
1037.reveal.fade .slides section:not([data-transition]),
1038.reveal.fade .slides>section>section:not([data-transition]) {
1039 transform: none;
1040 transition: opacity 0.5s;
1041}
1042
1043
1044.reveal.fade.overview .slides section,
1045.reveal.fade.overview .slides>section>section {
1046 transition: none;
1047}
1048
1049
1050/*********************************************
1051 * NO TRANSITION
1052 *********************************************/
1053
1054@include transition-global(none) {
1055 transform: none;
1056 transition: none;
1057}
1058
1059
1060/*********************************************
1061 * PAUSED MODE
1062 *********************************************/
1063
1064.reveal .pause-overlay {
1065 position: absolute;
1066 top: 0;
1067 left: 0;
1068 width: 100%;
1069 height: 100%;
1070 background: black;
1071 visibility: hidden;
1072 opacity: 0;
1073 z-index: 100;
1074 transition: all 1s ease;
1075}
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001076
1077.reveal .pause-overlay .resume-button {
1078 position: absolute;
1079 bottom: 20px;
1080 right: 20px;
1081 color: #ccc;
1082 border-radius: 2px;
1083 padding: 6px 14px;
1084 border: 2px solid #ccc;
1085 font-size: 16px;
1086 background: transparent;
1087 cursor: pointer;
1088
1089 &:hover {
1090 color: #fff;
1091 border-color: #fff;
1092 }
1093}
1094
JJ Allaireefa6ad42016-01-30 13:12:05 -05001095.reveal.paused .pause-overlay {
1096 visibility: visible;
1097 opacity: 1;
1098}
1099
1100
1101/*********************************************
1102 * FALLBACK
1103 *********************************************/
1104
JJ Allaireefa6ad42016-01-30 13:12:05 -05001105.reveal .no-transition,
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001106.reveal .no-transition *,
1107.reveal .slides.disable-slide-transitions section {
JJ Allaireefa6ad42016-01-30 13:12:05 -05001108 transition: none !important;
1109}
1110
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001111.reveal .slides.disable-slide-transitions section {
1112 transform: none !important;
1113}
1114
JJ Allaireefa6ad42016-01-30 13:12:05 -05001115
1116/*********************************************
1117 * PER-SLIDE BACKGROUNDS
1118 *********************************************/
1119
1120.reveal .backgrounds {
1121 position: absolute;
1122 width: 100%;
1123 height: 100%;
1124 top: 0;
1125 left: 0;
1126 perspective: 600px;
1127}
1128 .reveal .slide-background {
1129 display: none;
1130 position: absolute;
1131 width: 100%;
1132 height: 100%;
1133 opacity: 0;
1134 visibility: hidden;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001135 overflow: hidden;
JJ Allaireefa6ad42016-01-30 13:12:05 -05001136
1137 background-color: rgba( 0, 0, 0, 0 );
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001138
1139 transition: all 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
1140 }
1141
1142 .reveal .slide-background-content {
1143 position: absolute;
1144 width: 100%;
1145 height: 100%;
1146
JJ Allaireefa6ad42016-01-30 13:12:05 -05001147 background-position: 50% 50%;
1148 background-repeat: no-repeat;
1149 background-size: cover;
JJ Allaireefa6ad42016-01-30 13:12:05 -05001150 }
1151
1152 .reveal .slide-background.stack {
1153 display: block;
1154 }
1155
1156 .reveal .slide-background.present {
1157 opacity: 1;
1158 visibility: visible;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001159 z-index: 2;
JJ Allaireefa6ad42016-01-30 13:12:05 -05001160 }
1161
1162 .print-pdf .reveal .slide-background {
1163 opacity: 1 !important;
1164 visibility: visible !important;
1165 }
1166
1167/* Video backgrounds */
1168.reveal .slide-background video {
1169 position: absolute;
1170 width: 100%;
1171 height: 100%;
1172 max-width: none;
1173 max-height: none;
1174 top: 0;
1175 left: 0;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001176 object-fit: cover;
JJ Allaireefa6ad42016-01-30 13:12:05 -05001177}
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001178 .reveal .slide-background[data-background-size="contain"] video {
1179 object-fit: contain;
1180 }
JJ Allaireefa6ad42016-01-30 13:12:05 -05001181
1182/* Immediate transition style */
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001183.reveal[data-background-transition=none]>.backgrounds .slide-background:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001184.reveal>.backgrounds .slide-background[data-background-transition=none] {
1185 transition: none;
1186}
1187
1188/* Slide */
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001189.reveal[data-background-transition=slide]>.backgrounds .slide-background:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001190.reveal>.backgrounds .slide-background[data-background-transition=slide] {
1191 opacity: 1;
JJ Allaireefa6ad42016-01-30 13:12:05 -05001192}
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001193 .reveal[data-background-transition=slide]>.backgrounds .slide-background.past:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001194 .reveal>.backgrounds .slide-background.past[data-background-transition=slide] {
1195 transform: translate(-100%, 0);
1196 }
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001197 .reveal[data-background-transition=slide]>.backgrounds .slide-background.future:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001198 .reveal>.backgrounds .slide-background.future[data-background-transition=slide] {
1199 transform: translate(100%, 0);
1200 }
1201
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001202 .reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.past:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001203 .reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=slide] {
1204 transform: translate(0, -100%);
1205 }
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001206 .reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.future:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001207 .reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=slide] {
1208 transform: translate(0, 100%);
1209 }
1210
1211
1212/* Convex */
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001213.reveal[data-background-transition=convex]>.backgrounds .slide-background.past:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001214.reveal>.backgrounds .slide-background.past[data-background-transition=convex] {
1215 opacity: 0;
1216 transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0);
1217}
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001218.reveal[data-background-transition=convex]>.backgrounds .slide-background.future:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001219.reveal>.backgrounds .slide-background.future[data-background-transition=convex] {
1220 opacity: 0;
1221 transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0);
1222}
1223
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001224.reveal[data-background-transition=convex]>.backgrounds .slide-background>.slide-background.past:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001225.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=convex] {
1226 opacity: 0;
1227 transform: translate3d(0, -100%, 0) rotateX(90deg) translate3d(0, -100%, 0);
1228}
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001229.reveal[data-background-transition=convex]>.backgrounds .slide-background>.slide-background.future:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001230.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=convex] {
1231 opacity: 0;
1232 transform: translate3d(0, 100%, 0) rotateX(-90deg) translate3d(0, 100%, 0);
1233}
1234
1235
1236/* Concave */
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001237.reveal[data-background-transition=concave]>.backgrounds .slide-background.past:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001238.reveal>.backgrounds .slide-background.past[data-background-transition=concave] {
1239 opacity: 0;
1240 transform: translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0);
1241}
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001242.reveal[data-background-transition=concave]>.backgrounds .slide-background.future:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001243.reveal>.backgrounds .slide-background.future[data-background-transition=concave] {
1244 opacity: 0;
1245 transform: translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0);
1246}
1247
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001248.reveal[data-background-transition=concave]>.backgrounds .slide-background>.slide-background.past:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001249.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=concave] {
1250 opacity: 0;
1251 transform: translate3d(0, -100%, 0) rotateX(-90deg) translate3d(0, -100%, 0);
1252}
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001253.reveal[data-background-transition=concave]>.backgrounds .slide-background>.slide-background.future:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001254.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=concave] {
1255 opacity: 0;
1256 transform: translate3d(0, 100%, 0) rotateX(90deg) translate3d(0, 100%, 0);
1257}
1258
1259/* Zoom */
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001260.reveal[data-background-transition=zoom]>.backgrounds .slide-background:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001261.reveal>.backgrounds .slide-background[data-background-transition=zoom] {
1262 transition-timing-function: ease;
1263}
1264
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001265.reveal[data-background-transition=zoom]>.backgrounds .slide-background.past:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001266.reveal>.backgrounds .slide-background.past[data-background-transition=zoom] {
1267 opacity: 0;
1268 visibility: hidden;
1269 transform: scale(16);
1270}
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001271.reveal[data-background-transition=zoom]>.backgrounds .slide-background.future:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001272.reveal>.backgrounds .slide-background.future[data-background-transition=zoom] {
1273 opacity: 0;
1274 visibility: hidden;
1275 transform: scale(0.2);
1276}
1277
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001278.reveal[data-background-transition=zoom]>.backgrounds .slide-background>.slide-background.past:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001279.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=zoom] {
1280 opacity: 0;
1281 visibility: hidden;
1282 transform: scale(16);
1283}
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001284.reveal[data-background-transition=zoom]>.backgrounds .slide-background>.slide-background.future:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001285.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=zoom] {
1286 opacity: 0;
1287 visibility: hidden;
1288 transform: scale(0.2);
1289}
1290
1291
1292/* Global transition speed settings */
1293.reveal[data-transition-speed="fast"]>.backgrounds .slide-background {
1294 transition-duration: 400ms;
1295}
1296.reveal[data-transition-speed="slow"]>.backgrounds .slide-background {
1297 transition-duration: 1200ms;
1298}
1299
1300
1301/*********************************************
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001302 * AUTO ANIMATE
1303 *********************************************/
1304
1305.reveal [data-auto-animate-target^="unmatched"] {
1306 will-change: opacity;
1307}
1308
1309.reveal section[data-auto-animate]:not(.stack):not([data-auto-animate="running"]) [data-auto-animate-target^="unmatched"] {
1310 opacity: 0;
1311}
1312
1313
1314/*********************************************
JJ Allaireefa6ad42016-01-30 13:12:05 -05001315 * OVERVIEW
1316 *********************************************/
1317
1318.reveal.overview {
1319 perspective-origin: 50% 50%;
1320 perspective: 700px;
1321
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001322 .slides {
1323 // Fixes overview rendering errors in FF48+, not applied to
1324 // other browsers since it degrades performance
1325 -moz-transform-style: preserve-3d;
1326 }
1327
JJ Allaireefa6ad42016-01-30 13:12:05 -05001328 .slides section {
Bruce's Thinkpad72710882016-07-14 01:12:07 +08001329 height: 100%;
1330 top: 0 !important;
JJ Allaireefa6ad42016-01-30 13:12:05 -05001331 opacity: 1 !important;
1332 overflow: hidden;
1333 visibility: visible !important;
1334 cursor: pointer;
1335 box-sizing: border-box;
1336 }
1337 .slides section:hover,
1338 .slides section.present {
1339 outline: 10px solid rgba(150,150,150,0.4);
1340 outline-offset: 10px;
1341 }
1342 .slides section .fragment {
1343 opacity: 1;
1344 transition: none;
1345 }
1346 .slides section:after,
1347 .slides section:before {
1348 display: none !important;
1349 }
1350 .slides>section.stack {
1351 padding: 0;
1352 top: 0 !important;
1353 background: none;
1354 outline: none;
1355 overflow: visible;
1356 }
1357
1358 .backgrounds {
1359 perspective: inherit;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001360
1361 // Fixes overview rendering errors in FF48+, not applied to
1362 // other browsers since it degrades performance
1363 -moz-transform-style: preserve-3d;
JJ Allaireefa6ad42016-01-30 13:12:05 -05001364 }
1365
1366 .backgrounds .slide-background {
1367 opacity: 1;
1368 visibility: visible;
1369
1370 // This can't be applied to the slide itself in Safari
1371 outline: 10px solid rgba(150,150,150,0.1);
1372 outline-offset: 10px;
1373 }
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001374
1375 .backgrounds .slide-background.stack {
1376 overflow: visible;
1377 }
JJ Allaireefa6ad42016-01-30 13:12:05 -05001378}
1379
1380// Disable transitions transitions while we're activating
1381// or deactivating the overview mode.
1382.reveal.overview .slides section,
1383.reveal.overview-deactivating .slides section {
1384 transition: none;
1385}
1386
1387.reveal.overview .backgrounds .slide-background,
1388.reveal.overview-deactivating .backgrounds .slide-background {
1389 transition: none;
1390}
1391
JJ Allaireefa6ad42016-01-30 13:12:05 -05001392
1393/*********************************************
1394 * RTL SUPPORT
1395 *********************************************/
1396
1397.reveal.rtl .slides,
1398.reveal.rtl .slides h1,
1399.reveal.rtl .slides h2,
1400.reveal.rtl .slides h3,
1401.reveal.rtl .slides h4,
1402.reveal.rtl .slides h5,
1403.reveal.rtl .slides h6 {
1404 direction: rtl;
1405 font-family: sans-serif;
1406}
1407
1408.reveal.rtl pre,
1409.reveal.rtl code {
1410 direction: ltr;
1411}
1412
1413.reveal.rtl ol,
1414.reveal.rtl ul {
1415 text-align: right;
1416}
1417
1418.reveal.rtl .progress span {
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001419 transform-origin: 100% 0;
JJ Allaireefa6ad42016-01-30 13:12:05 -05001420}
1421
1422/*********************************************
1423 * PARALLAX BACKGROUND
1424 *********************************************/
1425
1426.reveal.has-parallax-background .backgrounds {
1427 transition: all 0.8s ease;
1428}
1429
1430/* Global transition speed settings */
1431.reveal.has-parallax-background[data-transition-speed="fast"] .backgrounds {
1432 transition-duration: 400ms;
1433}
1434.reveal.has-parallax-background[data-transition-speed="slow"] .backgrounds {
1435 transition-duration: 1200ms;
1436}
1437
1438
1439/*********************************************
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001440 * OVERLAY FOR LINK PREVIEWS AND HELP
JJ Allaireefa6ad42016-01-30 13:12:05 -05001441 *********************************************/
1442
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001443$overlayHeaderHeight: 40px;
1444$overlayHeaderPadding: 5px;
1445
1446.reveal > .overlay {
JJ Allaireefa6ad42016-01-30 13:12:05 -05001447 position: absolute;
1448 top: 0;
1449 left: 0;
1450 width: 100%;
1451 height: 100%;
1452 z-index: 1000;
Marc Kupietz9c036a42024-05-14 13:17:25 +02001453 background: rgba( 0, 0, 0, 0.95 );
1454 backdrop-filter: blur( 6px );
JJ Allaireefa6ad42016-01-30 13:12:05 -05001455 transition: all 0.3s ease;
1456}
JJ Allaireefa6ad42016-01-30 13:12:05 -05001457
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001458 .reveal > .overlay .spinner {
JJ Allaireefa6ad42016-01-30 13:12:05 -05001459 position: absolute;
1460 display: block;
1461 top: 50%;
1462 left: 50%;
1463 width: 32px;
1464 height: 32px;
1465 margin: -16px 0 0 -16px;
1466 z-index: 10;
1467 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);
1468
1469 visibility: visible;
1470 opacity: 0.6;
1471 transition: all 0.3s ease;
1472 }
1473
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001474 .reveal > .overlay header {
JJ Allaireefa6ad42016-01-30 13:12:05 -05001475 position: absolute;
1476 left: 0;
1477 top: 0;
1478 width: 100%;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001479 padding: $overlayHeaderPadding;
JJ Allaireefa6ad42016-01-30 13:12:05 -05001480 z-index: 2;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001481 box-sizing: border-box;
JJ Allaireefa6ad42016-01-30 13:12:05 -05001482 }
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001483 .reveal > .overlay header a {
JJ Allaireefa6ad42016-01-30 13:12:05 -05001484 display: inline-block;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001485 width: $overlayHeaderHeight;
1486 height: $overlayHeaderHeight;
1487 line-height: 36px;
JJ Allaireefa6ad42016-01-30 13:12:05 -05001488 padding: 0 10px;
1489 float: right;
1490 opacity: 0.6;
1491
1492 box-sizing: border-box;
1493 }
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001494 .reveal > .overlay header a:hover {
JJ Allaireefa6ad42016-01-30 13:12:05 -05001495 opacity: 1;
1496 }
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001497 .reveal > .overlay header a .icon {
JJ Allaireefa6ad42016-01-30 13:12:05 -05001498 display: inline-block;
1499 width: 20px;
1500 height: 20px;
1501
1502 background-position: 50% 50%;
1503 background-size: 100%;
1504 background-repeat: no-repeat;
1505 }
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001506 .reveal > .overlay header a.close .icon {
JJ Allaireefa6ad42016-01-30 13:12:05 -05001507 background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABkklEQVRYR8WX4VHDMAxG6wnoJrABZQPYBCaBTWAD2g1gE5gg6OOsXuxIlr40d81dfrSJ9V4c2VLK7spHuTJ/5wpM07QXuXc5X0opX2tEJcadjHuV80li/FgxTIEK/5QBCICBD6xEhSMGHgQPgBgLiYVAB1dpSqKDawxTohFw4JSEA3clzgIBPCURwE2JucBR7rhPJJv5OpJwDX+SfDjgx1wACQeJG1aChP9K/IMmdZ8DtESV1WyP3Bt4MwM6sj4NMxMYiqUWHQu4KYA/SYkIjOsm3BXYWMKFDwU2khjCQ4ELJUJ4SmClRArOCmSXGuKma0fYD5CbzHxFpCSGAhfAVSSUGDUk2BWZaff2g6GE15BsBQ9nwmpIGDiyHQddwNTMKkbZaf9fajXQca1EX44puJZUsnY0ObGmITE3GVLCbEhQUjGVt146j6oasWN+49Vph2w1pZ5EansNZqKBm1txbU57iRRcZ86RWMDdWtBJUHBHwoQPi1GV+JCbntmvok7iTX4/Up9mgyTc/FJYDTcndgH/AA5A/CHsyEkVAAAAAElFTkSuQmCC);
1508 }
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001509 .reveal > .overlay header a.external .icon {
JJ Allaireefa6ad42016-01-30 13:12:05 -05001510 background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAcElEQVRYR+2WSQoAIQwEzf8f7XiOMkUQxUPlGkM3hVmiQfQR9GYnH1SsAQlI4DiBqkCMoNb9y2e90IAEJPAcgdznU9+engMaeJ7Azh5Y1U67gAho4DqBqmB1buAf0MB1AlVBek83ZPkmJMGc1wAR+AAqod/B97TRpQAAAABJRU5ErkJggg==);
1511 }
1512
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001513 .reveal > .overlay .viewport {
JJ Allaireefa6ad42016-01-30 13:12:05 -05001514 position: absolute;
Bruce's Thinkpad72710882016-07-14 01:12:07 +08001515 display: flex;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001516 top: $overlayHeaderHeight + $overlayHeaderPadding*2;
JJ Allaireefa6ad42016-01-30 13:12:05 -05001517 right: 0;
1518 bottom: 0;
1519 left: 0;
1520 }
1521
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001522 .reveal > .overlay.overlay-preview .viewport iframe {
JJ Allaireefa6ad42016-01-30 13:12:05 -05001523 width: 100%;
1524 height: 100%;
1525 max-width: 100%;
1526 max-height: 100%;
1527 border: 0;
1528
1529 opacity: 0;
1530 visibility: hidden;
1531 transition: all 0.3s ease;
1532 }
1533
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001534 .reveal > .overlay.overlay-preview.loaded .viewport iframe {
JJ Allaireefa6ad42016-01-30 13:12:05 -05001535 opacity: 1;
1536 visibility: visible;
1537 }
1538
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001539 .reveal > .overlay.overlay-preview.loaded .viewport-inner {
1540 position: absolute;
1541 z-index: -1;
1542 left: 0;
1543 top: 45%;
1544 width: 100%;
1545 text-align: center;
1546 letter-spacing: normal;
1547 }
1548 .reveal > .overlay.overlay-preview .x-frame-error {
1549 opacity: 0;
1550 transition: opacity 0.3s ease 0.3s;
1551 }
1552 .reveal > .overlay.overlay-preview.loaded .x-frame-error {
1553 opacity: 1;
1554 }
1555
1556 .reveal > .overlay.overlay-preview.loaded .spinner {
JJ Allaireefa6ad42016-01-30 13:12:05 -05001557 opacity: 0;
1558 visibility: hidden;
1559 transform: scale(0.2);
1560 }
1561
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001562 .reveal > .overlay.overlay-help .viewport {
JJ Allaireefa6ad42016-01-30 13:12:05 -05001563 overflow: auto;
1564 color: #fff;
1565 }
1566
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001567 .reveal > .overlay.overlay-help .viewport .viewport-inner {
JJ Allaireefa6ad42016-01-30 13:12:05 -05001568 width: 600px;
Bruce's Thinkpad72710882016-07-14 01:12:07 +08001569 margin: auto;
1570 padding: 20px 20px 80px 20px;
JJ Allaireefa6ad42016-01-30 13:12:05 -05001571 text-align: center;
1572 letter-spacing: normal;
1573 }
1574
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001575 .reveal > .overlay.overlay-help .viewport .viewport-inner .title {
JJ Allaireefa6ad42016-01-30 13:12:05 -05001576 font-size: 20px;
1577 }
1578
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001579 .reveal > .overlay.overlay-help .viewport .viewport-inner table {
JJ Allaireefa6ad42016-01-30 13:12:05 -05001580 border: 1px solid #fff;
1581 border-collapse: collapse;
Bruce's Thinkpad72710882016-07-14 01:12:07 +08001582 font-size: 16px;
JJ Allaireefa6ad42016-01-30 13:12:05 -05001583 }
1584
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001585 .reveal > .overlay.overlay-help .viewport .viewport-inner table th,
1586 .reveal > .overlay.overlay-help .viewport .viewport-inner table td {
JJ Allaireefa6ad42016-01-30 13:12:05 -05001587 width: 200px;
Bruce's Thinkpad72710882016-07-14 01:12:07 +08001588 padding: 14px;
JJ Allaireefa6ad42016-01-30 13:12:05 -05001589 border: 1px solid #fff;
1590 vertical-align: middle;
1591 }
1592
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001593 .reveal > .overlay.overlay-help .viewport .viewport-inner table th {
JJ Allaireefa6ad42016-01-30 13:12:05 -05001594 padding-top: 20px;
1595 padding-bottom: 20px;
1596 }
1597
JJ Allaireefa6ad42016-01-30 13:12:05 -05001598/*********************************************
1599 * PLAYBACK COMPONENT
1600 *********************************************/
1601
1602.reveal .playback {
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001603 position: absolute;
JJ Allaireefa6ad42016-01-30 13:12:05 -05001604 left: 15px;
1605 bottom: 20px;
1606 z-index: 30;
1607 cursor: pointer;
1608 transition: all 400ms ease;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001609 -webkit-tap-highlight-color: rgba( 0, 0, 0, 0 );
JJ Allaireefa6ad42016-01-30 13:12:05 -05001610}
1611
1612.reveal.overview .playback {
1613 opacity: 0;
1614 visibility: hidden;
1615}
1616
1617
1618/*********************************************
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001619 * CODE HIGHLGIHTING
1620 *********************************************/
1621
1622.reveal .hljs {
1623 min-height: 100%;
1624}
1625
1626.reveal .hljs table {
1627 margin: initial;
1628}
1629
1630.reveal .hljs-ln-code,
1631.reveal .hljs-ln-numbers {
1632 padding: 0;
1633 border: 0;
1634}
1635
1636.reveal .hljs-ln-numbers {
1637 opacity: 0.6;
1638 padding-right: 0.75em;
1639 text-align: right;
1640 vertical-align: top;
1641}
1642
1643.reveal .hljs.has-highlights tr:not(.highlight-line) {
1644 opacity: 0.4;
1645}
1646
Marc Kupietz09b75752023-10-07 09:32:19 +02001647.reveal .hljs.has-highlights.fragment {
1648 transition: all .2s ease;
1649}
1650
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001651.reveal .hljs:not(:first-child).fragment {
1652 position: absolute;
1653 top: 0;
1654 left: 0;
1655 width: 100%;
1656 box-sizing: border-box;
1657}
1658
1659.reveal pre[data-auto-animate-target] {
1660 overflow: hidden;
1661}
1662.reveal pre[data-auto-animate-target] code {
1663 height: 100%;
1664}
1665
1666
1667/*********************************************
JJ Allaireefa6ad42016-01-30 13:12:05 -05001668 * ROLLING LINKS
1669 *********************************************/
1670
1671.reveal .roll {
1672 display: inline-block;
1673 line-height: 1.2;
1674 overflow: hidden;
1675
1676 vertical-align: top;
1677 perspective: 400px;
1678 perspective-origin: 50% 50%;
1679}
1680 .reveal .roll:hover {
1681 background: none;
1682 text-shadow: none;
1683 }
1684.reveal .roll span {
1685 display: block;
1686 position: relative;
1687 padding: 0 2px;
1688
1689 pointer-events: none;
1690 transition: all 400ms ease;
1691 transform-origin: 50% 0%;
1692 transform-style: preserve-3d;
1693 backface-visibility: hidden;
1694}
1695 .reveal .roll:hover span {
1696 background: rgba(0,0,0,0.5);
1697 transform: translate3d( 0px, 0px, -45px ) rotateX( 90deg );
1698 }
1699.reveal .roll span:after {
1700 content: attr(data-title);
1701
1702 display: block;
1703 position: absolute;
1704 left: 0;
1705 top: 0;
1706 padding: 0 2px;
1707 backface-visibility: hidden;
1708 transform-origin: 50% 0%;
1709 transform: translate3d( 0px, 110%, 0px ) rotateX( -90deg );
1710}
1711
1712
1713/*********************************************
1714 * SPEAKER NOTES
1715 *********************************************/
1716
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001717$notesWidthPercent: 25%;
1718
JJ Allaireefa6ad42016-01-30 13:12:05 -05001719// Hide on-page notes
1720.reveal aside.notes {
1721 display: none;
1722}
1723
1724// An interface element that can optionally be used to show the
1725// speaker notes to all viewers, on top of the presentation
1726.reveal .speaker-notes {
1727 display: none;
1728 position: absolute;
Christophe Dervieux8afae132021-12-06 15:16:42 +01001729 width: math.div($notesWidthPercent, (1 - math.div($notesWidthPercent,100))) * 1%;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001730 height: 100%;
1731 top: 0;
1732 left: 100%;
1733 padding: 14px 18px 14px 18px;
JJ Allaireefa6ad42016-01-30 13:12:05 -05001734 z-index: 1;
1735 font-size: 18px;
1736 line-height: 1.4;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001737 border: 1px solid rgba( 0, 0, 0, 0.05 );
1738 color: #222;
1739 background-color: #f5f5f5;
JJ Allaireefa6ad42016-01-30 13:12:05 -05001740 overflow: auto;
1741 box-sizing: border-box;
1742 text-align: left;
1743 font-family: Helvetica, sans-serif;
1744 -webkit-overflow-scrolling: touch;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001745
1746 .notes-placeholder {
1747 color: #ccc;
1748 font-style: italic;
1749 }
1750
1751 &:focus {
1752 outline: none;
1753 }
1754
1755 &:before {
1756 content: 'Speaker notes';
1757 display: block;
1758 margin-bottom: 10px;
1759 opacity: 0.5;
1760 }
JJ Allaireefa6ad42016-01-30 13:12:05 -05001761}
1762
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001763
1764.reveal.show-notes {
1765 max-width: 100% - $notesWidthPercent;
1766 overflow: visible;
1767}
1768
1769.reveal.show-notes .speaker-notes {
JJ Allaireefa6ad42016-01-30 13:12:05 -05001770 display: block;
1771}
1772
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001773@media screen and (min-width: 1600px) {
JJ Allaireefa6ad42016-01-30 13:12:05 -05001774 .reveal .speaker-notes {
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001775 font-size: 20px;
1776 }
1777}
1778
1779@media screen and (max-width: 1024px) {
1780 .reveal.show-notes {
1781 border-left: 0;
1782 max-width: none;
1783 max-height: 70%;
1784 max-height: 70vh;
1785 overflow: visible;
1786 }
1787
1788 .reveal.show-notes .speaker-notes {
1789 top: 100%;
1790 left: 0;
1791 width: 100%;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001792 height: 30vh;
1793 border: 0;
JJ Allaireefa6ad42016-01-30 13:12:05 -05001794 }
1795}
1796
1797@media screen and (max-width: 600px) {
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001798 .reveal.show-notes {
1799 max-height: 60%;
1800 max-height: 60vh;
1801 }
1802
1803 .reveal.show-notes .speaker-notes {
1804 top: 100%;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001805 height: 40vh;
1806 }
1807
JJ Allaireefa6ad42016-01-30 13:12:05 -05001808 .reveal .speaker-notes {
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001809 font-size: 14px;
JJ Allaireefa6ad42016-01-30 13:12:05 -05001810 }
1811}
1812
1813
1814/*********************************************
Marc Kupietz09b75752023-10-07 09:32:19 +02001815 * JUMP-TO-SLIDE COMPONENT
1816 *********************************************/
1817
1818 .reveal .jump-to-slide {
1819 position: absolute;
1820 top: 15px;
1821 left: 15px;
1822 z-index: 30;
1823 font-size: 32px;
1824 -webkit-tap-highlight-color: rgba( 0, 0, 0, 0 );
1825}
1826
1827.reveal .jump-to-slide-input {
1828 background: transparent;
1829 padding: 8px;
1830 font-size: inherit;
1831 color: currentColor;
1832 border: 0;
1833}
1834.reveal .jump-to-slide-input::placeholder {
1835 color: currentColor;
1836 opacity: 0.5;
1837}
1838
1839.reveal.has-dark-background .jump-to-slide-input {
1840 color: #fff;
1841}
1842.reveal.has-light-background .jump-to-slide-input {
1843 color: #222;
1844}
1845
1846.reveal .jump-to-slide-input:focus {
1847 outline: none;
1848}
1849
1850
1851/*********************************************
JJ Allaireefa6ad42016-01-30 13:12:05 -05001852 * ZOOM PLUGIN
1853 *********************************************/
1854
1855.zoomed .reveal *,
1856.zoomed .reveal *:before,
1857.zoomed .reveal *:after {
1858 backface-visibility: visible !important;
1859}
1860
1861.zoomed .reveal .progress,
1862.zoomed .reveal .controls {
1863 opacity: 0;
1864}
1865
1866.zoomed .reveal .roll span {
1867 background: none;
1868}
1869
1870.zoomed .reveal .roll span:after {
1871 visibility: hidden;
1872}
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001873
1874
1875/*********************************************
Marc Kupietz9c036a42024-05-14 13:17:25 +02001876 * SCROLL VIEW
1877 *********************************************/
1878.reveal-viewport.loading-scroll-mode {
1879 visibility: hidden;
1880}
1881
1882.reveal-viewport.reveal-scroll {
1883 & {
1884 margin: 0 auto;
1885 overflow: auto;
1886 overflow-x: hidden;
1887 overflow-y: auto;
1888 z-index: 1;
1889
1890 --r-scrollbar-width: 7px;
1891 --r-scrollbar-trigger-size: 5px;
1892 --r-controls-spacing: 8px;
1893 }
1894
1895 @media screen and (max-width: 500px) {
1896 --r-scrollbar-width: 3px;
1897 --r-scrollbar-trigger-size: 3px;
1898 }
1899
1900 .controls,
1901 .progress,
1902 .playback,
1903 .backgrounds,
1904 .slide-number,
1905 .speaker-notes {
1906 display: none !important;
1907 }
1908
1909 .overlay,
1910 .pause-overlay {
1911 position: fixed;
1912 }
1913
1914 .reveal {
1915 overflow: visible;
1916 touch-action: manipulation;
1917 }
1918
1919 .slides {
1920 position: static;
1921 pointer-events: initial;
1922
1923 left: auto;
1924 top: auto;
1925 width: 100% !important;
1926 margin: 0;
1927 padding: 0;
1928
1929 overflow: visible;
1930 display: block;
1931
1932 perspective: none;
1933 perspective-origin: 50% 50%;
1934 }
1935
1936 .scroll-page {
1937 position: relative;
1938 width: 100%;
1939 height: calc(var(--page-height) + var(--page-scroll-padding));
1940 z-index: 1;
1941 overflow: visible;
1942 }
1943
1944 .scroll-page-sticky {
1945 position: sticky;
1946 height: var(--page-height);
1947 top: 0px;
1948 }
1949
1950 .scroll-page-content {
1951 position: absolute;
1952 top: 0;
1953 left: 0;
1954 width: 100%;
1955 height: 100%;
1956 overflow: hidden;
1957 }
1958
1959 .scroll-page section {
1960 visibility: visible !important;
1961 display: block !important;
1962 position: absolute !important;
1963 width: var(--slide-width) !important;
1964 height: var(--slide-height) !important;
1965 top: 50% !important;
1966 left: 50% !important;
1967 opacity: 1 !important;
1968 transform: scale(var(--slide-scale)) translate(-50%, -50%) !important;
1969 transform-style: flat !important;
1970 transform-origin: 0 0 !important;
1971 }
1972
1973 .slide-background {
1974 display: block !important;
1975 position: absolute;
1976 top: 0;
1977 left: 0;
1978 width: 100%;
1979 height: 100%;
1980 z-index: auto !important;
1981 visibility: visible;
1982 opacity: 1;
1983 touch-action: manipulation;
1984 }
1985}
1986
1987// Chromium
1988.reveal-viewport.reveal-scroll[data-scrollbar="true"]::-webkit-scrollbar,
1989.reveal-viewport.reveal-scroll[data-scrollbar="auto"]::-webkit-scrollbar {
1990 display: none;
1991}
1992
1993// Firefox
1994.reveal-viewport.reveal-scroll[data-scrollbar="true"],
1995.reveal-viewport.reveal-scroll[data-scrollbar="auto"] {
1996 scrollbar-width: none;
1997}
1998
1999.reveal.has-dark-background,
2000.reveal-viewport.has-dark-background {
2001 --r-overlay-element-bg-color: 240, 240, 240;
2002 --r-overlay-element-fg-color: 0, 0, 0;
2003}
2004.reveal.has-light-background,
2005.reveal-viewport.has-light-background {
2006 --r-overlay-element-bg-color: 0, 0, 0;
2007 --r-overlay-element-fg-color: 240, 240, 240;
2008}
2009
2010.reveal-viewport.reveal-scroll .scrollbar {
2011 position: sticky;
2012 top: 50%;
2013 z-index: 20;
2014 opacity: 0;
2015 transition: all 0.3s ease;
2016
2017 &.visible,
2018 &:hover {
2019 opacity: 1;
2020 }
2021
2022 .scrollbar-inner {
2023 position: absolute;
2024 width: var(--r-scrollbar-width);
2025 height: calc(var(--viewport-height) - var(--r-controls-spacing) * 2);
2026 right: var(--r-controls-spacing);
2027 top: 0;
2028 transform: translateY(-50%);
2029 border-radius: var(--r-scrollbar-width);
2030 z-index: 10;
2031 }
2032
2033 .scrollbar-playhead {
2034 position: absolute;
2035 width: var(--r-scrollbar-width);
2036 height: var(--r-scrollbar-width);
2037 top: 0;
2038 left: 0;
2039 border-radius: var(--r-scrollbar-width);
2040 background-color: rgba(var(--r-overlay-element-bg-color), 1);
2041 z-index: 11;
2042 transition: background-color 0.2s ease;
2043 }
2044
2045 .scrollbar-slide {
2046 position: absolute;
2047 width: 100%;
2048 background-color: rgba(var(--r-overlay-element-bg-color), 0.2);
2049 box-shadow: 0 0 0px 1px rgba(var(--r-overlay-element-fg-color), 0.1);
2050 border-radius: var(--r-scrollbar-width);
2051 transition: background-color 0.2s ease;
2052 }
2053
2054 // Hit area
2055 .scrollbar-slide:after {
2056 content: '';
2057 position: absolute;
2058 width: 200%;
2059 height: 100%;
2060 top: 0;
2061 left: -50%;
2062 background: rgba( 0, 0, 0, 0 );
2063 z-index: -1;
2064 }
2065
2066 .scrollbar-slide:hover,
2067 .scrollbar-slide.active {
2068 background-color: rgba(var(--r-overlay-element-bg-color), 0.4);
2069 }
2070
2071 .scrollbar-trigger {
2072 position: absolute;
2073 width: 100%;
2074 transition: background-color 0.2s ease;
2075 }
2076
2077 .scrollbar-slide.active.has-triggers {
2078 background-color: rgba(var(--r-overlay-element-bg-color), 0.4);
2079 z-index: 10;
2080 }
2081
2082 .scrollbar-slide.active .scrollbar-trigger:after {
2083 content: '';
2084 position: absolute;
2085 width: var(--r-scrollbar-trigger-size);
2086 height: var(--r-scrollbar-trigger-size);
2087 border-radius: 20px;
2088 top: 50%;
2089 left: 50%;
2090 transform: translate(-50%, -50%);
2091 background-color: rgba(var(--r-overlay-element-bg-color), 1);
2092 transition: transform 0.2s ease, opacity 0.2s ease;
2093 opacity: 0.4;
2094 }
2095
2096 .scrollbar-slide.active .scrollbar-trigger.active:after,
2097 .scrollbar-slide.active .scrollbar-trigger.active ~ .scrollbar-trigger:after {
2098 opacity: 1;
2099 }
2100
2101 .scrollbar-slide.active .scrollbar-trigger ~ .scrollbar-trigger.active:after {
2102 transform: translate(calc( var(--r-scrollbar-width) * -2), 0);
2103 background-color: rgba(var(--r-overlay-element-bg-color), 1);
2104 }
2105}
2106
2107
2108/*********************************************
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02002109 * PRINT STYLES
2110 *********************************************/
2111
2112@import 'print/pdf.scss';
2113@import 'print/paper.scss';
2114