blob: 31b493b371d69bebb02a404795cdedb94e5681af [file] [log] [blame]
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001/**
JJ Allaireefa6ad42016-01-30 13:12:05 -05002 * reveal.js
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02003 * http://revealjs.com
JJ Allaireefa6ad42016-01-30 13:12:05 -05004 * MIT licensed
5 *
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02006 * Copyright (C) Hakim El Hattab, https://hakim.se
JJ Allaireefa6ad42016-01-30 13:12:05 -05007 */
8
Marc Kupietzcf6e9982026-08-15 15:37:40 +02009@use "sass:math";
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +020010@import 'layout';
JJ Allaireefa6ad42016-01-30 13:12:05 -050011
12/*********************************************
13 * GLOBAL STYLES
14 *********************************************/
15
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +020016html.reveal-full-page {
JJ Allaireefa6ad42016-01-30 13:12:05 -050017 width: 100%;
18 height: 100%;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +020019 height: 100vh;
20 height: calc( var(--vh, 1vh) * 100 );
Marc Kupietzcf6e9982026-08-15 15:37:40 +020021 height: 100dvh;
JJ Allaireefa6ad42016-01-30 13:12:05 -050022 overflow: hidden;
23}
24
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +020025.reveal-viewport {
26 height: 100%;
27 overflow: hidden;
JJ Allaireefa6ad42016-01-30 13:12:05 -050028 position: relative;
29 line-height: 1;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +020030 margin: 0;
JJ Allaireefa6ad42016-01-30 13:12:05 -050031
32 background-color: #fff;
33 color: #000;
Marc Kupietz9c036a42024-05-14 13:17:25 +020034
35 --r-controls-spacing: 12px;
Marc Kupietzcf6e9982026-08-15 15:37:40 +020036 --r-overlay-header-height: 40px;
37 --r-overlay-margin: 0px;
38 --r-overlay-padding: 6px;
39 --r-overlay-gap: 5px;
40}
41
42@media screen and (max-width: 1024px), (max-height: 768px) {
43 .reveal-viewport {
44 --r-overlay-header-height: 26px;
45 }
JJ Allaireefa6ad42016-01-30 13:12:05 -050046}
47
Marc Kupietz09b75752023-10-07 09:32:19 +020048// Force the presentation to cover the full viewport when we
49// enter fullscreen mode. Fixes sizing issues in Safari.
50.reveal-viewport:fullscreen {
51 top: 0 !important;
52 left: 0 !important;
53 width: 100% !important;
54 height: 100% !important;
55 transform: none !important;
56}
57
JJ Allaireefa6ad42016-01-30 13:12:05 -050058
59/*********************************************
60 * VIEW FRAGMENTS
61 *********************************************/
62
Marc Kupietz09b75752023-10-07 09:32:19 +020063.reveal .fragment {
JJ Allaireefa6ad42016-01-30 13:12:05 -050064 transition: all .2s ease;
Marc Kupietz09b75752023-10-07 09:32:19 +020065
66 &:not(.custom) {
67 opacity: 0;
68 visibility: hidden;
69 will-change: opacity;
70 }
JJ Allaireefa6ad42016-01-30 13:12:05 -050071
72 &.visible {
73 opacity: 1;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +020074 visibility: inherit;
75 }
76
77 &.disabled {
78 transition: none;
JJ Allaireefa6ad42016-01-30 13:12:05 -050079 }
80}
81
Marc Kupietz09b75752023-10-07 09:32:19 +020082.reveal .fragment.grow {
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( 1.3 );
88 }
89}
90
Marc Kupietz09b75752023-10-07 09:32:19 +020091.reveal .fragment.shrink {
JJ Allaireefa6ad42016-01-30 13:12:05 -050092 opacity: 1;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +020093 visibility: inherit;
JJ Allaireefa6ad42016-01-30 13:12:05 -050094
95 &.visible {
96 transform: scale( 0.7 );
97 }
98}
99
Marc Kupietz09b75752023-10-07 09:32:19 +0200100.reveal .fragment.zoom-in {
JJ Allaireefa6ad42016-01-30 13:12:05 -0500101 transform: scale( 0.1 );
102
103 &.visible {
104 transform: none;
105 }
106}
107
Marc Kupietz09b75752023-10-07 09:32:19 +0200108.reveal .fragment.fade-out {
JJ Allaireefa6ad42016-01-30 13:12:05 -0500109 opacity: 1;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200110 visibility: inherit;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500111
112 &.visible {
113 opacity: 0;
114 visibility: hidden;
115 }
116}
117
Marc Kupietz09b75752023-10-07 09:32:19 +0200118.reveal .fragment.semi-fade-out {
JJ Allaireefa6ad42016-01-30 13:12:05 -0500119 opacity: 1;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200120 visibility: inherit;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500121
122 &.visible {
123 opacity: 0.5;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200124 visibility: inherit;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500125 }
126}
127
Marc Kupietz09b75752023-10-07 09:32:19 +0200128.reveal .fragment.strike {
JJ Allaireefa6ad42016-01-30 13:12:05 -0500129 opacity: 1;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200130 visibility: inherit;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500131
132 &.visible {
133 text-decoration: line-through;
134 }
135}
136
Marc Kupietz09b75752023-10-07 09:32:19 +0200137.reveal .fragment.fade-up {
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200138 transform: translate(0, 40px);
Bruce's Thinkpad72710882016-07-14 01:12:07 +0800139
140 &.visible {
141 transform: translate(0, 0);
142 }
143}
144
Marc Kupietz09b75752023-10-07 09:32:19 +0200145.reveal .fragment.fade-down {
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200146 transform: translate(0, -40px);
Bruce's Thinkpad72710882016-07-14 01:12:07 +0800147
148 &.visible {
149 transform: translate(0, 0);
150 }
151}
152
Marc Kupietz09b75752023-10-07 09:32:19 +0200153.reveal .fragment.fade-right {
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200154 transform: translate(-40px, 0);
Bruce's Thinkpad72710882016-07-14 01:12:07 +0800155
156 &.visible {
157 transform: translate(0, 0);
158 }
159}
160
Marc Kupietz09b75752023-10-07 09:32:19 +0200161.reveal .fragment.fade-left {
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200162 transform: translate(40px, 0);
Bruce's Thinkpad72710882016-07-14 01:12:07 +0800163
164 &.visible {
165 transform: translate(0, 0);
166 }
167}
168
Marc Kupietz09b75752023-10-07 09:32:19 +0200169.reveal .fragment.fade-in-then-out,
170.reveal .fragment.current-visible {
JJ Allaireefa6ad42016-01-30 13:12:05 -0500171 opacity: 0;
172 visibility: hidden;
173
174 &.current-fragment {
175 opacity: 1;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200176 visibility: inherit;
177 }
178}
179
Marc Kupietz09b75752023-10-07 09:32:19 +0200180.reveal .fragment.fade-in-then-semi-out {
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200181 opacity: 0;
182 visibility: hidden;
183
184 &.visible {
185 opacity: 0.5;
186 visibility: inherit;
187 }
188
189 &.current-fragment {
190 opacity: 1;
191 visibility: inherit;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500192 }
193}
194
Marc Kupietz09b75752023-10-07 09:32:19 +0200195.reveal .fragment.highlight-red,
196.reveal .fragment.highlight-current-red,
197.reveal .fragment.highlight-green,
198.reveal .fragment.highlight-current-green,
199.reveal .fragment.highlight-blue,
200.reveal .fragment.highlight-current-blue {
JJ Allaireefa6ad42016-01-30 13:12:05 -0500201 opacity: 1;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200202 visibility: inherit;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500203}
Marc Kupietz09b75752023-10-07 09:32:19 +0200204 .reveal .fragment.highlight-red.visible {
JJ Allaireefa6ad42016-01-30 13:12:05 -0500205 color: #ff2c2d
206 }
Marc Kupietz09b75752023-10-07 09:32:19 +0200207 .reveal .fragment.highlight-green.visible {
JJ Allaireefa6ad42016-01-30 13:12:05 -0500208 color: #17ff2e;
209 }
Marc Kupietz09b75752023-10-07 09:32:19 +0200210 .reveal .fragment.highlight-blue.visible {
JJ Allaireefa6ad42016-01-30 13:12:05 -0500211 color: #1b91ff;
212 }
213
Marc Kupietz09b75752023-10-07 09:32:19 +0200214.reveal .fragment.highlight-current-red.current-fragment {
JJ Allaireefa6ad42016-01-30 13:12:05 -0500215 color: #ff2c2d
216}
Marc Kupietz09b75752023-10-07 09:32:19 +0200217.reveal .fragment.highlight-current-green.current-fragment {
JJ Allaireefa6ad42016-01-30 13:12:05 -0500218 color: #17ff2e;
219}
Marc Kupietz09b75752023-10-07 09:32:19 +0200220.reveal .fragment.highlight-current-blue.current-fragment {
JJ Allaireefa6ad42016-01-30 13:12:05 -0500221 color: #1b91ff;
222}
223
224
225/*********************************************
226 * DEFAULT ELEMENT STYLES
227 *********************************************/
228
229/* Fixes issue in Chrome where italic fonts did not appear when printing to PDF */
230.reveal:after {
231 content: '';
232 font-style: italic;
233}
234
235.reveal iframe {
236 z-index: 1;
237}
238
239/** Prevents layering issues in certain browser/transition combinations */
240.reveal a {
241 position: relative;
242}
243
JJ Allaireefa6ad42016-01-30 13:12:05 -0500244
245/*********************************************
246 * CONTROLS
247 *********************************************/
248
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200249@keyframes bounce-right {
250 0%, 10%, 25%, 40%, 50% {transform: translateX(0);}
251 20% {transform: translateX(10px);}
252 30% {transform: translateX(-5px);}
253}
254
255@keyframes bounce-left {
256 0%, 10%, 25%, 40%, 50% {transform: translateX(0);}
257 20% {transform: translateX(-10px);}
258 30% {transform: translateX(5px);}
259}
260
261@keyframes bounce-down {
262 0%, 10%, 25%, 40%, 50% {transform: translateY(0);}
263 20% {transform: translateY(10px);}
264 30% {transform: translateY(-5px);}
265}
266
267$controlArrowSize: 3.6em;
268$controlArrowSpacing: 1.4em;
269$controlArrowLength: 2.6em;
270$controlArrowThickness: 0.5em;
271$controlsArrowAngle: 45deg;
272$controlsArrowAngleHover: 40deg;
273$controlsArrowAngleActive: 36deg;
274
275@mixin controlsArrowTransform( $angle ) {
276 &:before {
Christophe Dervieux8afae132021-12-06 15:16:42 +0100277 transform: translateX(($controlArrowSize - $controlArrowLength)*0.5) translateY(($controlArrowSize - $controlArrowThickness)*0.5) rotate( $angle );
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200278 }
279
280 &:after {
Christophe Dervieux8afae132021-12-06 15:16:42 +0100281 transform: translateX(($controlArrowSize - $controlArrowLength)*0.5) translateY(($controlArrowSize - $controlArrowThickness)*0.5) rotate( -$angle );
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200282 }
283}
284
JJ Allaireefa6ad42016-01-30 13:12:05 -0500285.reveal .controls {
286 display: none;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500287 position: absolute;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200288 top: auto;
Marc Kupietz9c036a42024-05-14 13:17:25 +0200289 bottom: var(--r-controls-spacing);
290 right: var(--r-controls-spacing);
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200291 left: auto;
292 z-index: 11;
293 color: #000;
294 pointer-events: none;
295 font-size: 10px;
296
297 button {
298 position: absolute;
299 padding: 0;
300 background-color: transparent;
301 border: 0;
302 outline: 0;
303 cursor: pointer;
304 color: currentColor;
305 transform: scale(.9999);
306 transition: color 0.2s ease,
307 opacity 0.2s ease,
308 transform 0.2s ease;
309 z-index: 2; // above slides
310 pointer-events: auto;
311 font-size: inherit;
312
313 visibility: hidden;
314 opacity: 0;
315
316 -webkit-appearance: none;
317 -webkit-tap-highlight-color: rgba( 0, 0, 0, 0 );
318 }
319
320 .controls-arrow:before,
321 .controls-arrow:after {
322 content: '';
323 position: absolute;
324 top: 0;
325 left: 0;
326 width: $controlArrowLength;
327 height: $controlArrowThickness;
Christophe Dervieux8afae132021-12-06 15:16:42 +0100328 border-radius: $controlArrowThickness*0.5;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200329 background-color: currentColor;
330
331 transition: all 0.15s ease, background-color 0.8s ease;
Christophe Dervieux8afae132021-12-06 15:16:42 +0100332 transform-origin: math.div(floor(($controlArrowThickness*0.5)*10), 10) 50%;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200333 will-change: transform;
334 }
335
336 .controls-arrow {
337 position: relative;
338 width: $controlArrowSize;
339 height: $controlArrowSize;
340
341 @include controlsArrowTransform( $controlsArrowAngle );
342
343 &:hover {
344 @include controlsArrowTransform( $controlsArrowAngleHover );
345 }
346
347 &:active {
348 @include controlsArrowTransform( $controlsArrowAngleActive );
349 }
350 }
351
352 .navigate-left {
353 right: $controlArrowSize + $controlArrowSpacing*2;
Christophe Dervieux8afae132021-12-06 15:16:42 +0100354 bottom: $controlArrowSpacing + $controlArrowSize*0.5;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200355 transform: translateX( -10px );
356
357 &.highlight {
358 animation: bounce-left 2s 50 both ease-out;
359 }
360 }
361
362 .navigate-right {
363 right: 0;
Christophe Dervieux8afae132021-12-06 15:16:42 +0100364 bottom: $controlArrowSpacing + $controlArrowSize*0.5;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200365 transform: translateX( 10px );
366
367 .controls-arrow {
368 transform: rotate( 180deg );
369 }
370
371 &.highlight {
372 animation: bounce-right 2s 50 both ease-out;
373 }
374 }
375
376 .navigate-up {
Christophe Dervieux8afae132021-12-06 15:16:42 +0100377 right: $controlArrowSpacing + $controlArrowSize*0.5;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200378 bottom: $controlArrowSpacing*2 + $controlArrowSize;
379 transform: translateY( -10px );
380
381 .controls-arrow {
382 transform: rotate( 90deg );
383 }
384 }
385
386 .navigate-down {
Christophe Dervieux8afae132021-12-06 15:16:42 +0100387 right: $controlArrowSpacing + $controlArrowSize*0.5;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200388 bottom: -$controlArrowSpacing;
389 padding-bottom: $controlArrowSpacing;
390 transform: translateY( 10px );
391
392 .controls-arrow {
393 transform: rotate( -90deg );
394 }
395
396 &.highlight {
397 animation: bounce-down 2s 50 both ease-out;
398 }
399 }
400
401 // Back arrow style: "faded":
402 // Deemphasize backwards navigation arrows in favor of drawing
403 // attention to forwards navigation
404 &[data-controls-back-arrows="faded"] .navigate-up.enabled {
405 opacity: 0.3;
406
407 &:hover {
408 opacity: 1;
409 }
410 }
411
412 // Back arrow style: "hidden":
413 // Never show arrows for backwards navigation
414 &[data-controls-back-arrows="hidden"] .navigate-up.enabled {
415 opacity: 0;
416 visibility: hidden;
417 }
418
419 // Any control button that can be clicked is "enabled"
420 .enabled {
421 visibility: visible;
422 opacity: 0.9;
423 cursor: pointer;
424 transform: none;
425 }
426
427 // Any control button that leads to showing or hiding
428 // a fragment
429 .enabled.fragmented {
430 opacity: 0.5;
431 }
432
433 .enabled:hover,
434 .enabled.fragmented:hover {
435 opacity: 1;
436 }
JJ Allaireefa6ad42016-01-30 13:12:05 -0500437}
438
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200439.reveal:not(.rtl) .controls {
440 // Back arrow style: "faded":
441 // Deemphasize left arrow
442 &[data-controls-back-arrows="faded"] .navigate-left.enabled {
443 opacity: 0.3;
444
445 &:hover {
446 opacity: 1;
447 }
448 }
449
450 // Back arrow style: "hidden":
451 // Never show left arrow
452 &[data-controls-back-arrows="hidden"] .navigate-left.enabled {
453 opacity: 0;
454 visibility: hidden;
455 }
JJ Allaireefa6ad42016-01-30 13:12:05 -0500456}
457
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200458.reveal.rtl .controls {
459 // Back arrow style: "faded":
460 // Deemphasize right arrow in RTL mode
461 &[data-controls-back-arrows="faded"] .navigate-right.enabled {
462 opacity: 0.3;
463
464 &:hover {
465 opacity: 1;
466 }
467 }
468
469 // Back arrow style: "hidden":
470 // Never show right arrow in RTL mode
471 &[data-controls-back-arrows="hidden"] .navigate-right.enabled {
472 opacity: 0;
473 visibility: hidden;
474 }
JJ Allaireefa6ad42016-01-30 13:12:05 -0500475}
476
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200477.reveal[data-navigation-mode="linear"].has-horizontal-slides .navigate-up,
478.reveal[data-navigation-mode="linear"].has-horizontal-slides .navigate-down {
479 display: none;
480}
JJ Allaireefa6ad42016-01-30 13:12:05 -0500481
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200482// Adjust the layout when there are no vertical slides
483.reveal[data-navigation-mode="linear"].has-horizontal-slides .navigate-left,
484.reveal:not(.has-vertical-slides) .controls .navigate-left {
485 bottom: $controlArrowSpacing;
486 right: 0.5em + $controlArrowSpacing + $controlArrowSize;
487}
488
489.reveal[data-navigation-mode="linear"].has-horizontal-slides .navigate-right,
490.reveal:not(.has-vertical-slides) .controls .navigate-right {
491 bottom: $controlArrowSpacing;
492 right: 0.5em;
493}
494
495// Adjust the layout when there are no horizontal slides
496.reveal:not(.has-horizontal-slides) .controls .navigate-up {
497 right: $controlArrowSpacing;
498 bottom: $controlArrowSpacing + $controlArrowSize;
499}
500.reveal:not(.has-horizontal-slides) .controls .navigate-down {
501 right: $controlArrowSpacing;
502 bottom: 0.5em;
503}
504
505// Invert arrows based on background color
506.reveal.has-dark-background .controls {
507 color: #fff;
508}
509.reveal.has-light-background .controls {
510 color: #000;
511}
512
513// Disable active states on touch devices
514.reveal.no-hover .controls .controls-arrow:hover,
515.reveal.no-hover .controls .controls-arrow:active {
516 @include controlsArrowTransform( $controlsArrowAngle );
517}
518
519// Edge aligned controls layout
520@media screen and (min-width: 500px) {
521
Marc Kupietz9c036a42024-05-14 13:17:25 +0200522 .reveal-viewport {
523 --r-controls-spacing: 0.8em;
524 }
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200525
526 .reveal .controls[data-controls-layout="edges"] {
527 & {
528 top: 0;
529 right: 0;
530 bottom: 0;
531 left: 0;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500532 }
533
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200534 .navigate-left,
535 .navigate-right,
536 .navigate-up,
537 .navigate-down {
538 bottom: auto;
539 right: auto;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500540 }
541
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200542 .navigate-left {
543 top: 50%;
Marc Kupietz9c036a42024-05-14 13:17:25 +0200544 left: var(--r-controls-spacing);
Christophe Dervieux8afae132021-12-06 15:16:42 +0100545 margin-top: -$controlArrowSize*0.5;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500546 }
547
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200548 .navigate-right {
549 top: 50%;
Marc Kupietz9c036a42024-05-14 13:17:25 +0200550 right: var(--r-controls-spacing);
Christophe Dervieux8afae132021-12-06 15:16:42 +0100551 margin-top: -$controlArrowSize*0.5;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500552 }
553
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200554 .navigate-up {
Marc Kupietz9c036a42024-05-14 13:17:25 +0200555 top: var(--r-controls-spacing);
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200556 left: 50%;
Christophe Dervieux8afae132021-12-06 15:16:42 +0100557 margin-left: -$controlArrowSize*0.5;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200558 }
559
560 .navigate-down {
Marc Kupietz9c036a42024-05-14 13:17:25 +0200561 bottom: calc(var(--r-controls-spacing) - #{$controlArrowSpacing} + 0.3em);
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200562 left: 50%;
Christophe Dervieux8afae132021-12-06 15:16:42 +0100563 margin-left: -$controlArrowSize*0.5;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200564 }
565 }
566
567}
568
JJ Allaireefa6ad42016-01-30 13:12:05 -0500569
570/*********************************************
571 * PROGRESS BAR
572 *********************************************/
573
574.reveal .progress {
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200575 position: absolute;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500576 display: none;
577 height: 3px;
578 width: 100%;
579 bottom: 0;
580 left: 0;
581 z-index: 10;
582
583 background-color: rgba( 0, 0, 0, 0.2 );
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200584 color: #fff;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500585}
586 .reveal .progress:after {
587 content: '';
588 display: block;
589 position: absolute;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200590 height: 10px;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500591 width: 100%;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200592 top: -10px;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500593 }
594 .reveal .progress span {
595 display: block;
596 height: 100%;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200597 width: 100%;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500598
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200599 background-color: currentColor;
600 transition: transform 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
601 transform-origin: 0 0;
602 transform: scaleX(0);
JJ Allaireefa6ad42016-01-30 13:12:05 -0500603 }
604
605/*********************************************
606 * SLIDE NUMBER
607 *********************************************/
608
609.reveal .slide-number {
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200610 position: absolute;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500611 display: block;
612 right: 8px;
613 bottom: 8px;
614 z-index: 31;
615 font-family: Helvetica, sans-serif;
616 font-size: 12px;
617 line-height: 1;
618 color: #fff;
619 background-color: rgba( 0, 0, 0, 0.4 );
620 padding: 5px;
621}
622
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200623.reveal .slide-number a {
624 color: currentColor;
625}
626
JJ Allaireefa6ad42016-01-30 13:12:05 -0500627.reveal .slide-number-delimiter {
628 margin: 0 3px;
629}
630
631/*********************************************
632 * SLIDES
633 *********************************************/
634
635.reveal {
636 position: relative;
637 width: 100%;
638 height: 100%;
639 overflow: hidden;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200640 touch-action: pinch-zoom;
641}
642
Marc Kupietz9c036a42024-05-14 13:17:25 +0200643// Swiping on an embedded deck should not block page scrolling...
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200644.reveal.embedded {
645 touch-action: pan-y;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500646}
647
Marc Kupietz9c036a42024-05-14 13:17:25 +0200648// ... unless we're on a vertical slide
649.reveal.embedded.is-vertical-slide {
650 touch-action: none;
651}
652
JJ Allaireefa6ad42016-01-30 13:12:05 -0500653.reveal .slides {
654 position: absolute;
655 width: 100%;
656 height: 100%;
657 top: 0;
658 right: 0;
659 bottom: 0;
660 left: 0;
661 margin: auto;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200662 pointer-events: none;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500663
664 overflow: visible;
665 z-index: 1;
666 text-align: center;
667 perspective: 600px;
668 perspective-origin: 50% 40%;
669}
670
671.reveal .slides>section {
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200672 perspective: 600px;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500673}
674
675.reveal .slides>section,
676.reveal .slides>section>section {
677 display: none;
678 position: absolute;
679 width: 100%;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200680 pointer-events: auto;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500681
682 z-index: 10;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200683 transform-style: flat;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500684 transition: transform-origin 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985),
685 transform 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985),
686 visibility 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985),
687 opacity 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
688}
689
690/* Global transition speed settings */
691.reveal[data-transition-speed="fast"] .slides section {
692 transition-duration: 400ms;
693}
694.reveal[data-transition-speed="slow"] .slides section {
695 transition-duration: 1200ms;
696}
697
698/* Slide-specific transition speed overrides */
699.reveal .slides section[data-transition-speed="fast"] {
700 transition-duration: 400ms;
701}
702.reveal .slides section[data-transition-speed="slow"] {
703 transition-duration: 1200ms;
704}
705
706.reveal .slides>section.stack {
707 padding-top: 0;
708 padding-bottom: 0;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200709 pointer-events: none;
710 height: 100%;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500711}
712
713.reveal .slides>section.present,
714.reveal .slides>section>section.present {
715 display: block;
716 z-index: 11;
717 opacity: 1;
718}
719
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200720.reveal .slides>section:empty,
721.reveal .slides>section>section:empty,
722.reveal .slides>section[data-background-interactive],
723.reveal .slides>section>section[data-background-interactive] {
724 pointer-events: none;
725}
726
JJ Allaireefa6ad42016-01-30 13:12:05 -0500727.reveal.center,
728.reveal.center .slides,
729.reveal.center .slides section {
730 min-height: 0 !important;
731}
732
733/* Don't allow interaction with invisible slides */
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200734.reveal .slides>section:not(.present),
735.reveal .slides>section>section:not(.present) {
JJ Allaireefa6ad42016-01-30 13:12:05 -0500736 pointer-events: none;
737}
738
739.reveal.overview .slides>section,
740.reveal.overview .slides>section>section {
741 pointer-events: auto;
742}
743
744.reveal .slides>section.past,
745.reveal .slides>section.future,
Marc Kupietz09b75752023-10-07 09:32:19 +0200746.reveal .slides>section.past>section,
747.reveal .slides>section.future>section,
JJ Allaireefa6ad42016-01-30 13:12:05 -0500748.reveal .slides>section>section.past,
749.reveal .slides>section>section.future {
750 opacity: 0;
751}
752
753
754/*********************************************
755 * Mixins for readability of transitions
756 *********************************************/
757
758@mixin transition-global($style) {
759 .reveal .slides section[data-transition=#{$style}],
760 .reveal.#{$style} .slides section:not([data-transition]) {
761 @content;
762 }
763}
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200764@mixin transition-stack($style) {
765 .reveal .slides section[data-transition=#{$style}].stack,
766 .reveal.#{$style} .slides section.stack {
767 @content;
768 }
769}
JJ Allaireefa6ad42016-01-30 13:12:05 -0500770@mixin transition-horizontal-past($style) {
771 .reveal .slides>section[data-transition=#{$style}].past,
772 .reveal .slides>section[data-transition~=#{$style}-out].past,
773 .reveal.#{$style} .slides>section:not([data-transition]).past {
774 @content;
775 }
776}
777@mixin transition-horizontal-future($style) {
778 .reveal .slides>section[data-transition=#{$style}].future,
779 .reveal .slides>section[data-transition~=#{$style}-in].future,
780 .reveal.#{$style} .slides>section:not([data-transition]).future {
781 @content;
782 }
783}
784
785@mixin transition-vertical-past($style) {
786 .reveal .slides>section>section[data-transition=#{$style}].past,
787 .reveal .slides>section>section[data-transition~=#{$style}-out].past,
788 .reveal.#{$style} .slides>section>section:not([data-transition]).past {
789 @content;
790 }
791}
792@mixin transition-vertical-future($style) {
793 .reveal .slides>section>section[data-transition=#{$style}].future,
794 .reveal .slides>section>section[data-transition~=#{$style}-in].future,
795 .reveal.#{$style} .slides>section>section:not([data-transition]).future {
796 @content;
797 }
798}
799
800/*********************************************
801 * SLIDE TRANSITION
802 * Aliased 'linear' for backwards compatibility
803 *********************************************/
804
805@each $stylename in slide, linear {
JJ Allaireefa6ad42016-01-30 13:12:05 -0500806 @include transition-horizontal-past(#{$stylename}) {
807 transform: translate(-150%, 0);
808 }
809 @include transition-horizontal-future(#{$stylename}) {
810 transform: translate(150%, 0);
811 }
812 @include transition-vertical-past(#{$stylename}) {
813 transform: translate(0, -150%);
814 }
815 @include transition-vertical-future(#{$stylename}) {
816 transform: translate(0, 150%);
817 }
818}
819
820/*********************************************
821 * CONVEX TRANSITION
822 * Aliased 'default' for backwards compatibility
823 *********************************************/
824
825@each $stylename in default, convex {
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200826 @include transition-stack(#{$stylename}) {
827 transform-style: preserve-3d;
828 }
829
JJ Allaireefa6ad42016-01-30 13:12:05 -0500830 @include transition-horizontal-past(#{$stylename}) {
831 transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0);
832 }
833 @include transition-horizontal-future(#{$stylename}) {
834 transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0);
835 }
836 @include transition-vertical-past(#{$stylename}) {
837 transform: translate3d(0, -300px, 0) rotateX(70deg) translate3d(0, -300px, 0);
838 }
839 @include transition-vertical-future(#{$stylename}) {
840 transform: translate3d(0, 300px, 0) rotateX(-70deg) translate3d(0, 300px, 0);
841 }
842}
843
844/*********************************************
845 * CONCAVE TRANSITION
846 *********************************************/
847
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200848@include transition-stack(concave) {
849 transform-style: preserve-3d;
850}
851
JJ Allaireefa6ad42016-01-30 13:12:05 -0500852@include transition-horizontal-past(concave) {
853 transform: translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0);
854}
855@include transition-horizontal-future(concave) {
856 transform: translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0);
857}
858@include transition-vertical-past(concave) {
859 transform: translate3d(0, -80%, 0) rotateX(-70deg) translate3d(0, -80%, 0);
860}
861@include transition-vertical-future(concave) {
862 transform: translate3d(0, 80%, 0) rotateX(70deg) translate3d(0, 80%, 0);
863}
864
865
866/*********************************************
867 * ZOOM TRANSITION
868 *********************************************/
869
870@include transition-global(zoom) {
871 transition-timing-function: ease;
872}
873@include transition-horizontal-past(zoom) {
874 visibility: hidden;
875 transform: scale(16);
876}
877@include transition-horizontal-future(zoom) {
878 visibility: hidden;
879 transform: scale(0.2);
880}
881@include transition-vertical-past(zoom) {
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200882 transform: scale(16);
JJ Allaireefa6ad42016-01-30 13:12:05 -0500883}
884@include transition-vertical-future(zoom) {
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200885 transform: scale(0.2);
JJ Allaireefa6ad42016-01-30 13:12:05 -0500886}
887
888
889/*********************************************
890 * CUBE TRANSITION
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200891 *
892 * WARNING:
893 * this is deprecated and will be removed in a
894 * future version.
JJ Allaireefa6ad42016-01-30 13:12:05 -0500895 *********************************************/
896
897.reveal.cube .slides {
898 perspective: 1300px;
899}
900
901.reveal.cube .slides section {
902 padding: 30px;
903 min-height: 700px;
904 backface-visibility: hidden;
905 box-sizing: border-box;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200906 transform-style: preserve-3d;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500907}
908 .reveal.center.cube .slides section {
909 min-height: 0;
910 }
911 .reveal.cube .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 border-radius: 4px;
921 transform: translateZ( -20px );
922 }
923 .reveal.cube .slides section:not(.stack):after {
924 content: '';
925 position: absolute;
926 display: block;
927 width: 90%;
928 height: 30px;
929 left: 5%;
930 bottom: 0;
931 background: none;
932 z-index: 1;
933
934 border-radius: 4px;
935 box-shadow: 0px 95px 25px rgba(0,0,0,0.2);
936 transform: translateZ(-90px) rotateX( 65deg );
937 }
938
939.reveal.cube .slides>section.stack {
940 padding: 0;
941 background: none;
942}
943
944.reveal.cube .slides>section.past {
945 transform-origin: 100% 0%;
946 transform: translate3d(-100%, 0, 0) rotateY(-90deg);
947}
948
949.reveal.cube .slides>section.future {
950 transform-origin: 0% 0%;
951 transform: translate3d(100%, 0, 0) rotateY(90deg);
952}
953
954.reveal.cube .slides>section>section.past {
955 transform-origin: 0% 100%;
956 transform: translate3d(0, -100%, 0) rotateX(90deg);
957}
958
959.reveal.cube .slides>section>section.future {
960 transform-origin: 0% 0%;
961 transform: translate3d(0, 100%, 0) rotateX(-90deg);
962}
963
964
965/*********************************************
966 * PAGE TRANSITION
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200967 *
968 * WARNING:
969 * this is deprecated and will be removed in a
970 * future version.
JJ Allaireefa6ad42016-01-30 13:12:05 -0500971 *********************************************/
972
973.reveal.page .slides {
974 perspective-origin: 0% 50%;
975 perspective: 3000px;
976}
977
978.reveal.page .slides section {
979 padding: 30px;
980 min-height: 700px;
981 box-sizing: border-box;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +0200982 transform-style: preserve-3d;
JJ Allaireefa6ad42016-01-30 13:12:05 -0500983}
984 .reveal.page .slides section.past {
985 z-index: 12;
986 }
987 .reveal.page .slides section:not(.stack):before {
988 content: '';
989 position: absolute;
990 display: block;
991 width: 100%;
992 height: 100%;
993 left: 0;
994 top: 0;
995 background: rgba(0,0,0,0.1);
996 transform: translateZ( -20px );
997 }
998 .reveal.page .slides section:not(.stack):after {
999 content: '';
1000 position: absolute;
1001 display: block;
1002 width: 90%;
1003 height: 30px;
1004 left: 5%;
1005 bottom: 0;
1006 background: none;
1007 z-index: 1;
1008
1009 border-radius: 4px;
1010 box-shadow: 0px 95px 25px rgba(0,0,0,0.2);
1011
Marc Kupietzcf6e9982026-08-15 15:37:40 +02001012 transform: translateZ(-90px) rotateX( 65deg );
JJ Allaireefa6ad42016-01-30 13:12:05 -05001013 }
1014
1015.reveal.page .slides>section.stack {
1016 padding: 0;
1017 background: none;
1018}
1019
1020.reveal.page .slides>section.past {
1021 transform-origin: 0% 0%;
1022 transform: translate3d(-40%, 0, 0) rotateY(-80deg);
1023}
1024
1025.reveal.page .slides>section.future {
1026 transform-origin: 100% 0%;
1027 transform: translate3d(0, 0, 0);
1028}
1029
1030.reveal.page .slides>section>section.past {
1031 transform-origin: 0% 0%;
1032 transform: translate3d(0, -40%, 0) rotateX(80deg);
1033}
1034
1035.reveal.page .slides>section>section.future {
1036 transform-origin: 0% 100%;
1037 transform: translate3d(0, 0, 0);
1038}
1039
1040
1041/*********************************************
1042 * FADE TRANSITION
1043 *********************************************/
1044
1045.reveal .slides section[data-transition=fade],
1046.reveal.fade .slides section:not([data-transition]),
1047.reveal.fade .slides>section>section:not([data-transition]) {
1048 transform: none;
1049 transition: opacity 0.5s;
1050}
1051
1052
1053.reveal.fade.overview .slides section,
1054.reveal.fade.overview .slides>section>section {
1055 transition: none;
1056}
1057
1058
1059/*********************************************
1060 * NO TRANSITION
1061 *********************************************/
1062
1063@include transition-global(none) {
1064 transform: none;
1065 transition: none;
1066}
1067
1068
1069/*********************************************
1070 * PAUSED MODE
1071 *********************************************/
1072
1073.reveal .pause-overlay {
1074 position: absolute;
1075 top: 0;
1076 left: 0;
1077 width: 100%;
1078 height: 100%;
1079 background: black;
1080 visibility: hidden;
1081 opacity: 0;
1082 z-index: 100;
1083 transition: all 1s ease;
1084}
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001085
1086.reveal .pause-overlay .resume-button {
1087 position: absolute;
1088 bottom: 20px;
1089 right: 20px;
1090 color: #ccc;
1091 border-radius: 2px;
1092 padding: 6px 14px;
1093 border: 2px solid #ccc;
1094 font-size: 16px;
1095 background: transparent;
1096 cursor: pointer;
1097
1098 &:hover {
1099 color: #fff;
1100 border-color: #fff;
1101 }
1102}
1103
JJ Allaireefa6ad42016-01-30 13:12:05 -05001104.reveal.paused .pause-overlay {
1105 visibility: visible;
1106 opacity: 1;
1107}
1108
1109
1110/*********************************************
1111 * FALLBACK
1112 *********************************************/
1113
JJ Allaireefa6ad42016-01-30 13:12:05 -05001114.reveal .no-transition,
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001115.reveal .no-transition *,
1116.reveal .slides.disable-slide-transitions section {
JJ Allaireefa6ad42016-01-30 13:12:05 -05001117 transition: none !important;
1118}
1119
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001120.reveal .slides.disable-slide-transitions section {
1121 transform: none !important;
1122}
1123
JJ Allaireefa6ad42016-01-30 13:12:05 -05001124
1125/*********************************************
1126 * PER-SLIDE BACKGROUNDS
1127 *********************************************/
1128
1129.reveal .backgrounds {
1130 position: absolute;
1131 width: 100%;
1132 height: 100%;
1133 top: 0;
1134 left: 0;
1135 perspective: 600px;
1136}
1137 .reveal .slide-background {
1138 display: none;
1139 position: absolute;
1140 width: 100%;
1141 height: 100%;
1142 opacity: 0;
1143 visibility: hidden;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001144 overflow: hidden;
JJ Allaireefa6ad42016-01-30 13:12:05 -05001145
1146 background-color: rgba( 0, 0, 0, 0 );
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001147
1148 transition: all 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
1149 }
1150
1151 .reveal .slide-background-content {
1152 position: absolute;
1153 width: 100%;
1154 height: 100%;
1155
JJ Allaireefa6ad42016-01-30 13:12:05 -05001156 background-position: 50% 50%;
1157 background-repeat: no-repeat;
1158 background-size: cover;
JJ Allaireefa6ad42016-01-30 13:12:05 -05001159 }
1160
1161 .reveal .slide-background.stack {
1162 display: block;
1163 }
1164
1165 .reveal .slide-background.present {
1166 opacity: 1;
1167 visibility: visible;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001168 z-index: 2;
JJ Allaireefa6ad42016-01-30 13:12:05 -05001169 }
1170
1171 .print-pdf .reveal .slide-background {
1172 opacity: 1 !important;
1173 visibility: visible !important;
1174 }
1175
1176/* Video backgrounds */
1177.reveal .slide-background video {
1178 position: absolute;
1179 width: 100%;
1180 height: 100%;
1181 max-width: none;
1182 max-height: none;
1183 top: 0;
1184 left: 0;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001185 object-fit: cover;
JJ Allaireefa6ad42016-01-30 13:12:05 -05001186}
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001187 .reveal .slide-background[data-background-size="contain"] video {
1188 object-fit: contain;
1189 }
JJ Allaireefa6ad42016-01-30 13:12:05 -05001190
1191/* Immediate transition style */
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001192.reveal[data-background-transition=none]>.backgrounds .slide-background:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001193.reveal>.backgrounds .slide-background[data-background-transition=none] {
1194 transition: none;
1195}
1196
1197/* Slide */
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001198.reveal[data-background-transition=slide]>.backgrounds .slide-background:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001199.reveal>.backgrounds .slide-background[data-background-transition=slide] {
1200 opacity: 1;
JJ Allaireefa6ad42016-01-30 13:12:05 -05001201}
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001202 .reveal[data-background-transition=slide]>.backgrounds .slide-background.past:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001203 .reveal>.backgrounds .slide-background.past[data-background-transition=slide] {
1204 transform: translate(-100%, 0);
1205 }
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001206 .reveal[data-background-transition=slide]>.backgrounds .slide-background.future:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001207 .reveal>.backgrounds .slide-background.future[data-background-transition=slide] {
1208 transform: translate(100%, 0);
1209 }
1210
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001211 .reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.past:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001212 .reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=slide] {
1213 transform: translate(0, -100%);
1214 }
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001215 .reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.future:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001216 .reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=slide] {
1217 transform: translate(0, 100%);
1218 }
1219
1220
1221/* Convex */
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001222.reveal[data-background-transition=convex]>.backgrounds .slide-background.past:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001223.reveal>.backgrounds .slide-background.past[data-background-transition=convex] {
1224 opacity: 0;
1225 transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0);
1226}
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001227.reveal[data-background-transition=convex]>.backgrounds .slide-background.future:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001228.reveal>.backgrounds .slide-background.future[data-background-transition=convex] {
1229 opacity: 0;
1230 transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0);
1231}
1232
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001233.reveal[data-background-transition=convex]>.backgrounds .slide-background>.slide-background.past:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001234.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=convex] {
1235 opacity: 0;
1236 transform: translate3d(0, -100%, 0) rotateX(90deg) translate3d(0, -100%, 0);
1237}
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001238.reveal[data-background-transition=convex]>.backgrounds .slide-background>.slide-background.future:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001239.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=convex] {
1240 opacity: 0;
1241 transform: translate3d(0, 100%, 0) rotateX(-90deg) translate3d(0, 100%, 0);
1242}
1243
1244
1245/* Concave */
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001246.reveal[data-background-transition=concave]>.backgrounds .slide-background.past:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001247.reveal>.backgrounds .slide-background.past[data-background-transition=concave] {
1248 opacity: 0;
1249 transform: translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0);
1250}
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001251.reveal[data-background-transition=concave]>.backgrounds .slide-background.future:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001252.reveal>.backgrounds .slide-background.future[data-background-transition=concave] {
1253 opacity: 0;
1254 transform: translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0);
1255}
1256
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001257.reveal[data-background-transition=concave]>.backgrounds .slide-background>.slide-background.past:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001258.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=concave] {
1259 opacity: 0;
1260 transform: translate3d(0, -100%, 0) rotateX(-90deg) translate3d(0, -100%, 0);
1261}
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001262.reveal[data-background-transition=concave]>.backgrounds .slide-background>.slide-background.future:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001263.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=concave] {
1264 opacity: 0;
1265 transform: translate3d(0, 100%, 0) rotateX(90deg) translate3d(0, 100%, 0);
1266}
1267
1268/* Zoom */
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001269.reveal[data-background-transition=zoom]>.backgrounds .slide-background:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001270.reveal>.backgrounds .slide-background[data-background-transition=zoom] {
1271 transition-timing-function: ease;
1272}
1273
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001274.reveal[data-background-transition=zoom]>.backgrounds .slide-background.past:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001275.reveal>.backgrounds .slide-background.past[data-background-transition=zoom] {
1276 opacity: 0;
1277 visibility: hidden;
1278 transform: scale(16);
1279}
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001280.reveal[data-background-transition=zoom]>.backgrounds .slide-background.future:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001281.reveal>.backgrounds .slide-background.future[data-background-transition=zoom] {
1282 opacity: 0;
1283 visibility: hidden;
1284 transform: scale(0.2);
1285}
1286
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001287.reveal[data-background-transition=zoom]>.backgrounds .slide-background>.slide-background.past:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001288.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=zoom] {
1289 opacity: 0;
1290 visibility: hidden;
1291 transform: scale(16);
1292}
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001293.reveal[data-background-transition=zoom]>.backgrounds .slide-background>.slide-background.future:not([data-background-transition]),
JJ Allaireefa6ad42016-01-30 13:12:05 -05001294.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=zoom] {
1295 opacity: 0;
1296 visibility: hidden;
1297 transform: scale(0.2);
1298}
1299
1300
1301/* Global transition speed settings */
1302.reveal[data-transition-speed="fast"]>.backgrounds .slide-background {
1303 transition-duration: 400ms;
1304}
1305.reveal[data-transition-speed="slow"]>.backgrounds .slide-background {
1306 transition-duration: 1200ms;
1307}
1308
1309
1310/*********************************************
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001311 * AUTO ANIMATE
1312 *********************************************/
1313
1314.reveal [data-auto-animate-target^="unmatched"] {
1315 will-change: opacity;
1316}
1317
1318.reveal section[data-auto-animate]:not(.stack):not([data-auto-animate="running"]) [data-auto-animate-target^="unmatched"] {
1319 opacity: 0;
1320}
1321
1322
1323/*********************************************
JJ Allaireefa6ad42016-01-30 13:12:05 -05001324 * OVERVIEW
1325 *********************************************/
1326
1327.reveal.overview {
1328 perspective-origin: 50% 50%;
1329 perspective: 700px;
1330
1331 .slides section {
Bruce's Thinkpad72710882016-07-14 01:12:07 +08001332 height: 100%;
1333 top: 0 !important;
JJ Allaireefa6ad42016-01-30 13:12:05 -05001334 opacity: 1 !important;
1335 overflow: hidden;
1336 visibility: visible !important;
1337 cursor: pointer;
1338 box-sizing: border-box;
1339 }
1340 .slides section:hover,
1341 .slides section.present {
1342 outline: 10px solid rgba(150,150,150,0.4);
1343 outline-offset: 10px;
1344 }
1345 .slides section .fragment {
1346 opacity: 1;
1347 transition: none;
1348 }
1349 .slides section:after,
1350 .slides section:before {
1351 display: none !important;
1352 }
1353 .slides>section.stack {
1354 padding: 0;
1355 top: 0 !important;
1356 background: none;
1357 outline: none;
1358 overflow: visible;
1359 }
1360
1361 .backgrounds {
1362 perspective: inherit;
1363 }
1364
1365 .backgrounds .slide-background {
1366 opacity: 1;
1367 visibility: visible;
1368
1369 // This can't be applied to the slide itself in Safari
1370 outline: 10px solid rgba(150,150,150,0.1);
1371 outline-offset: 10px;
1372 }
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001373
1374 .backgrounds .slide-background.stack {
1375 overflow: visible;
1376 }
JJ Allaireefa6ad42016-01-30 13:12:05 -05001377}
1378
1379// Disable transitions transitions while we're activating
1380// or deactivating the overview mode.
1381.reveal.overview .slides section,
1382.reveal.overview-deactivating .slides section {
1383 transition: none;
1384}
1385
1386.reveal.overview .backgrounds .slide-background,
1387.reveal.overview-deactivating .backgrounds .slide-background {
1388 transition: none;
1389}
1390
JJ Allaireefa6ad42016-01-30 13:12:05 -05001391
1392/*********************************************
1393 * RTL SUPPORT
1394 *********************************************/
1395
1396.reveal.rtl .slides,
1397.reveal.rtl .slides h1,
1398.reveal.rtl .slides h2,
1399.reveal.rtl .slides h3,
1400.reveal.rtl .slides h4,
1401.reveal.rtl .slides h5,
1402.reveal.rtl .slides h6 {
1403 direction: rtl;
1404 font-family: sans-serif;
1405}
1406
1407.reveal.rtl pre,
1408.reveal.rtl code {
1409 direction: ltr;
1410}
1411
1412.reveal.rtl ol,
1413.reveal.rtl ul {
1414 text-align: right;
1415}
1416
1417.reveal.rtl .progress span {
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001418 transform-origin: 100% 0;
JJ Allaireefa6ad42016-01-30 13:12:05 -05001419}
1420
1421/*********************************************
1422 * PARALLAX BACKGROUND
1423 *********************************************/
1424
1425.reveal.has-parallax-background .backgrounds {
1426 transition: all 0.8s ease;
1427}
1428
1429/* Global transition speed settings */
1430.reveal.has-parallax-background[data-transition-speed="fast"] .backgrounds {
1431 transition-duration: 400ms;
1432}
1433.reveal.has-parallax-background[data-transition-speed="slow"] .backgrounds {
1434 transition-duration: 1200ms;
1435}
1436
1437
1438/*********************************************
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001439 * OVERLAY FOR LINK PREVIEWS AND HELP
JJ Allaireefa6ad42016-01-30 13:12:05 -05001440 *********************************************/
1441
Marc Kupietzcf6e9982026-08-15 15:37:40 +02001442@keyframes fade-in {
1443 from { opacity: 0; }
1444 to { opacity: 1; }
1445}
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001446
Marc Kupietzcf6e9982026-08-15 15:37:40 +02001447@keyframes scale-up {
1448 from { transform: scale( 0.95 ); }
1449 to { transform: scale( 1 ); }
1450}
1451
1452.reveal [data-preview-image],
1453.reveal [data-preview-video],
1454.reveal [data-preview-link]:not(a):not([data-preview-link=false]) {
1455 cursor: zoom-in;
1456}
1457
1458.r-overlay {
JJ Allaireefa6ad42016-01-30 13:12:05 -05001459 position: absolute;
Marc Kupietzcf6e9982026-08-15 15:37:40 +02001460 top: var(--r-overlay-margin);
1461 right: var(--r-overlay-margin);
1462 bottom: var(--r-overlay-margin);
1463 left: var(--r-overlay-margin);
1464 border-radius: min( var(--r-overlay-margin), 6px );
1465 z-index: 99;
1466 background: rgba( 0, 0, 0, 0.95 );
1467 backdrop-filter: blur( 10px );
1468 transition: all 0.3s ease;
1469 color: #fff;
1470 animation: fade-in 0.3s ease;
1471 font-family: ui-sans-serif, system-ui, -apple-system, Helvetica, sans-serif;
1472}
1473
1474.r-overlay-viewport {
1475 position: absolute;
1476 top: var(--r-overlay-padding);
1477 right: var(--r-overlay-padding);
1478 bottom: var(--r-overlay-padding);
1479 left: var(--r-overlay-padding);
1480 gap: var(--r-overlay-gap);
1481 display: flex;
1482 flex-direction: column;
1483}
1484
1485.r-overlay-header {
1486 display: flex;
1487 z-index: 2;
1488 box-sizing: border-box;
1489 align-items: center;
1490 justify-content: flex-end;
1491 height: var(--r-overlay-header-height);
1492 gap: 6px;
1493}
1494.r-overlay-header .r-overlay-button {
1495 all: unset;
1496 display: flex;
1497 align-items: center;
1498 justify-content: center;
1499 min-width: var(--r-overlay-header-height);
1500 min-height: var(--r-overlay-header-height);
1501 padding: 0 calc(var(--r-overlay-header-height) / 4);
1502 opacity: 1;
1503 border-radius: 6px;
1504 font-size: 18px;
1505 gap: 8px;
1506 cursor: pointer;
1507
1508 box-sizing: border-box;
1509}
1510.r-overlay-header .r-overlay-button:hover {
1511 opacity: 1;
1512 background-color: rgba( 255, 255, 255, 0.15 );
1513}
1514.r-overlay-header .icon {
1515 display: inline-block;
1516 width: 20px;
1517 height: 20px;
1518
1519 background-position: 50% 50%;
1520 background-size: 100%;
1521 background-repeat: no-repeat;
1522}
1523.r-overlay-close .icon {
1524 background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTIuODU0IDIuODU0YS41LjUgMCAwIDAtLjcwOC0uNzA4TDcuNSA2Ljc5MyAyLjg1NCAyLjE0NmEuNS41IDAgMSAwLS43MDguNzA4TDYuNzkzIDcuNWwtNC42NDcgNC42NDZhLjUuNSAwIDAgMCAuNzA4LjcwOEw3LjUgOC4yMDdsNC42NDYgNC42NDdhLjUuNSAwIDAgMCAuNzA4LS43MDhMOC4yMDcgNy41bDQuNjQ3LTQuNjQ2WiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PC9zdmc+);
1525}
1526.r-overlay-external .icon {
1527 background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMyAyYTEgMSAwIDAgMC0xIDF2OWExIDEgMCAwIDAgMSAxaDlhMSAxIDAgMCAwIDEtMVY4LjVhLjUuNSAwIDAgMC0xIDBWMTJIM1YzaDMuNWEuNS41IDAgMCAwIDAtMUgzWm05Ljg1NC4xNDZhLjUuNSAwIDAgMSAuMTQ2LjM1MVY1LjVhLjUuNSAwIDAgMS0xIDBWMy43MDdMNi44NTQgOC44NTRhLjUuNSAwIDEgMS0uNzA4LS43MDhMMTEuMjkzIDNIOS41YS41LjUgMCAwIDEgMC0xaDNhLjQ5OS40OTkgMCAwIDEgLjM1NC4xNDZaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=);
1528}
1529
1530.r-overlay-content {
1531 position: relative;
1532 display: grid;
1533 place-items: center;
1534 border-radius: 6px;
1535 overflow: hidden;
1536 flex-grow: 1;
1537 background-color: rgba(20, 20, 20, 0.8);
1538 animation: scale-up 0.5s cubic-bezier(0.260, 0.860, 0.440, 0.985);
1539}
1540
1541.r-overlay-spinner {
1542 position: absolute;
1543 display: block;
1544 top: 50%;
1545 left: 50%;
1546 width: 32px;
1547 height: 32px;
1548 margin: -16px 0 0 -16px;
1549 z-index: 10;
1550 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);
1551
1552 visibility: hidden;
1553 opacity: 0;
1554}
1555
1556// Preview overlay
1557.r-overlay-preview .r-overlay-content iframe {
JJ Allaireefa6ad42016-01-30 13:12:05 -05001558 width: 100%;
1559 height: 100%;
Marc Kupietzcf6e9982026-08-15 15:37:40 +02001560 max-width: 100%;
1561 max-height: 100%;
1562 border: 0;
1563
1564 opacity: 0;
1565 visibility: hidden;
JJ Allaireefa6ad42016-01-30 13:12:05 -05001566 transition: all 0.3s ease;
1567}
JJ Allaireefa6ad42016-01-30 13:12:05 -05001568
Marc Kupietzcf6e9982026-08-15 15:37:40 +02001569.r-overlay-preview[data-state="loaded"] iframe {
1570 opacity: 1;
1571 visibility: visible;
1572}
JJ Allaireefa6ad42016-01-30 13:12:05 -05001573
Marc Kupietzcf6e9982026-08-15 15:37:40 +02001574.r-overlay-preview .r-overlay-content img,
1575.r-overlay-preview .r-overlay-content video {
1576 position: absolute;
1577 max-width: 100%;
1578 max-height: 100%;
1579 width: 100%;
1580 height: 100%;
1581 margin: 0;
1582 object-fit: scale-down;
1583}
JJ Allaireefa6ad42016-01-30 13:12:05 -05001584
Marc Kupietzcf6e9982026-08-15 15:37:40 +02001585.r-overlay-preview[data-preview-fit="none"] img,
1586.r-overlay-preview[data-preview-fit="none"] video {
1587 object-fit: none;
1588}
JJ Allaireefa6ad42016-01-30 13:12:05 -05001589
Marc Kupietzcf6e9982026-08-15 15:37:40 +02001590.r-overlay-preview[data-preview-fit="scale-down"] img,
1591.r-overlay-preview[data-preview-fit="scale-down"] video {
1592 object-fit: scale-down;
1593}
JJ Allaireefa6ad42016-01-30 13:12:05 -05001594
Marc Kupietzcf6e9982026-08-15 15:37:40 +02001595.r-overlay-preview[data-preview-fit="contain"] img,
1596.r-overlay-preview[data-preview-fit="contain"] video {
1597 object-fit: contain;
1598}
JJ Allaireefa6ad42016-01-30 13:12:05 -05001599
Marc Kupietzcf6e9982026-08-15 15:37:40 +02001600.r-overlay-preview[data-preview-fit="cover"] img,
1601.r-overlay-preview[data-preview-fit="cover"] video {
1602 object-fit: cover;
1603}
JJ Allaireefa6ad42016-01-30 13:12:05 -05001604
Marc Kupietzcf6e9982026-08-15 15:37:40 +02001605.r-overlay-preview[data-state="loaded"] .r-overlay-content-inner {
1606 position: absolute;
1607 z-index: -1;
1608 left: 0;
1609 top: 45%;
1610 width: 100%;
1611 text-align: center;
1612 letter-spacing: normal;
1613}
1614.r-overlay-preview .r-overlay-error {
1615 font-size: 18px;
1616 color: orange;
1617}
JJ Allaireefa6ad42016-01-30 13:12:05 -05001618
Marc Kupietzcf6e9982026-08-15 15:37:40 +02001619.r-overlay-preview .x-frame-error {
1620 opacity: 0;
1621 transition: opacity 0.3s ease 0.3s;
1622}
1623.r-overlay-preview[data-state="loaded"] .x-frame-error {
1624 opacity: 1;
1625}
JJ Allaireefa6ad42016-01-30 13:12:05 -05001626
Marc Kupietzcf6e9982026-08-15 15:37:40 +02001627.r-overlay-preview[data-state="loading"] .r-overlay-spinner {
1628 opacity: 0.6;
1629 visibility: visible;
1630}
JJ Allaireefa6ad42016-01-30 13:12:05 -05001631
Marc Kupietzcf6e9982026-08-15 15:37:40 +02001632// Help overlay
1633.r-overlay-help .r-overlay-content {
1634 overflow: auto;
1635}
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001636
Marc Kupietzcf6e9982026-08-15 15:37:40 +02001637.r-overlay-help-content {
1638 max-width: 560px;
1639 padding: 20px 0;
1640 margin: auto;
1641 text-align: center;
1642 letter-spacing: normal;
1643}
JJ Allaireefa6ad42016-01-30 13:12:05 -05001644
Marc Kupietzcf6e9982026-08-15 15:37:40 +02001645.r-overlay-help-content .title {
1646 font-size: 20px;
1647 margin-top: 0;
1648}
JJ Allaireefa6ad42016-01-30 13:12:05 -05001649
Marc Kupietzcf6e9982026-08-15 15:37:40 +02001650/* Specificity battle with reveal.js theme table styles */
1651.r-overlay-help .r-overlay-help-content table {
1652 border: 1px solid #fff;
1653 border-collapse: collapse;
1654 font-size: 16px;
1655 text-align: left;
1656}
JJ Allaireefa6ad42016-01-30 13:12:05 -05001657
Marc Kupietzcf6e9982026-08-15 15:37:40 +02001658.r-overlay-help .r-overlay-help-content table th,
1659.r-overlay-help .r-overlay-help-content table td {
1660 width: 240px;
1661 padding: 14px;
1662 border: 1px solid #fff;
1663 vertical-align: middle;
1664}
JJ Allaireefa6ad42016-01-30 13:12:05 -05001665
Marc Kupietzcf6e9982026-08-15 15:37:40 +02001666.r-overlay-help .r-overlay-help-content table th {
1667 padding-top: 20px;
1668 padding-bottom: 20px;
1669}
JJ Allaireefa6ad42016-01-30 13:12:05 -05001670
JJ Allaireefa6ad42016-01-30 13:12:05 -05001671/*********************************************
1672 * PLAYBACK COMPONENT
1673 *********************************************/
1674
1675.reveal .playback {
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001676 position: absolute;
JJ Allaireefa6ad42016-01-30 13:12:05 -05001677 left: 15px;
1678 bottom: 20px;
1679 z-index: 30;
1680 cursor: pointer;
1681 transition: all 400ms ease;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001682 -webkit-tap-highlight-color: rgba( 0, 0, 0, 0 );
JJ Allaireefa6ad42016-01-30 13:12:05 -05001683}
1684
1685.reveal.overview .playback {
1686 opacity: 0;
1687 visibility: hidden;
1688}
1689
1690
1691/*********************************************
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001692 * CODE HIGHLGIHTING
1693 *********************************************/
1694
1695.reveal .hljs {
1696 min-height: 100%;
1697}
1698
1699.reveal .hljs table {
1700 margin: initial;
1701}
1702
1703.reveal .hljs-ln-code,
1704.reveal .hljs-ln-numbers {
1705 padding: 0;
1706 border: 0;
1707}
1708
1709.reveal .hljs-ln-numbers {
1710 opacity: 0.6;
1711 padding-right: 0.75em;
1712 text-align: right;
1713 vertical-align: top;
1714}
1715
1716.reveal .hljs.has-highlights tr:not(.highlight-line) {
1717 opacity: 0.4;
1718}
1719
Marc Kupietz09b75752023-10-07 09:32:19 +02001720.reveal .hljs.has-highlights.fragment {
1721 transition: all .2s ease;
1722}
1723
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001724.reveal .hljs:not(:first-child).fragment {
1725 position: absolute;
1726 top: 0;
1727 left: 0;
1728 width: 100%;
1729 box-sizing: border-box;
1730}
1731
1732.reveal pre[data-auto-animate-target] {
1733 overflow: hidden;
1734}
1735.reveal pre[data-auto-animate-target] code {
1736 height: 100%;
1737}
1738
1739
1740/*********************************************
JJ Allaireefa6ad42016-01-30 13:12:05 -05001741 * ROLLING LINKS
1742 *********************************************/
1743
1744.reveal .roll {
1745 display: inline-block;
1746 line-height: 1.2;
1747 overflow: hidden;
1748
1749 vertical-align: top;
1750 perspective: 400px;
1751 perspective-origin: 50% 50%;
1752}
1753 .reveal .roll:hover {
1754 background: none;
1755 text-shadow: none;
1756 }
1757.reveal .roll span {
1758 display: block;
1759 position: relative;
1760 padding: 0 2px;
1761
1762 pointer-events: none;
1763 transition: all 400ms ease;
1764 transform-origin: 50% 0%;
1765 transform-style: preserve-3d;
1766 backface-visibility: hidden;
1767}
1768 .reveal .roll:hover span {
1769 background: rgba(0,0,0,0.5);
1770 transform: translate3d( 0px, 0px, -45px ) rotateX( 90deg );
1771 }
1772.reveal .roll span:after {
1773 content: attr(data-title);
1774
1775 display: block;
1776 position: absolute;
1777 left: 0;
1778 top: 0;
1779 padding: 0 2px;
1780 backface-visibility: hidden;
1781 transform-origin: 50% 0%;
1782 transform: translate3d( 0px, 110%, 0px ) rotateX( -90deg );
1783}
1784
1785
1786/*********************************************
1787 * SPEAKER NOTES
1788 *********************************************/
1789
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001790$notesWidthPercent: 25%;
1791
JJ Allaireefa6ad42016-01-30 13:12:05 -05001792// Hide on-page notes
1793.reveal aside.notes {
1794 display: none;
1795}
1796
1797// An interface element that can optionally be used to show the
1798// speaker notes to all viewers, on top of the presentation
1799.reveal .speaker-notes {
1800 display: none;
1801 position: absolute;
Christophe Dervieux8afae132021-12-06 15:16:42 +01001802 width: math.div($notesWidthPercent, (1 - math.div($notesWidthPercent,100))) * 1%;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001803 height: 100%;
1804 top: 0;
1805 left: 100%;
1806 padding: 14px 18px 14px 18px;
JJ Allaireefa6ad42016-01-30 13:12:05 -05001807 z-index: 1;
1808 font-size: 18px;
1809 line-height: 1.4;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001810 border: 1px solid rgba( 0, 0, 0, 0.05 );
1811 color: #222;
1812 background-color: #f5f5f5;
JJ Allaireefa6ad42016-01-30 13:12:05 -05001813 overflow: auto;
1814 box-sizing: border-box;
1815 text-align: left;
1816 font-family: Helvetica, sans-serif;
1817 -webkit-overflow-scrolling: touch;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001818
1819 .notes-placeholder {
1820 color: #ccc;
1821 font-style: italic;
1822 }
1823
1824 &:focus {
1825 outline: none;
1826 }
1827
1828 &:before {
1829 content: 'Speaker notes';
1830 display: block;
1831 margin-bottom: 10px;
1832 opacity: 0.5;
1833 }
JJ Allaireefa6ad42016-01-30 13:12:05 -05001834}
1835
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001836
1837.reveal.show-notes {
1838 max-width: 100% - $notesWidthPercent;
1839 overflow: visible;
1840}
1841
1842.reveal.show-notes .speaker-notes {
JJ Allaireefa6ad42016-01-30 13:12:05 -05001843 display: block;
1844}
1845
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001846@media screen and (min-width: 1600px) {
JJ Allaireefa6ad42016-01-30 13:12:05 -05001847 .reveal .speaker-notes {
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001848 font-size: 20px;
1849 }
1850}
1851
1852@media screen and (max-width: 1024px) {
1853 .reveal.show-notes {
1854 border-left: 0;
1855 max-width: none;
1856 max-height: 70%;
1857 max-height: 70vh;
1858 overflow: visible;
1859 }
1860
1861 .reveal.show-notes .speaker-notes {
1862 top: 100%;
1863 left: 0;
1864 width: 100%;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001865 height: 30vh;
1866 border: 0;
JJ Allaireefa6ad42016-01-30 13:12:05 -05001867 }
1868}
1869
1870@media screen and (max-width: 600px) {
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001871 .reveal.show-notes {
1872 max-height: 60%;
1873 max-height: 60vh;
1874 }
1875
1876 .reveal.show-notes .speaker-notes {
1877 top: 100%;
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001878 height: 40vh;
1879 }
1880
JJ Allaireefa6ad42016-01-30 13:12:05 -05001881 .reveal .speaker-notes {
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001882 font-size: 14px;
JJ Allaireefa6ad42016-01-30 13:12:05 -05001883 }
1884}
1885
1886
1887/*********************************************
Marc Kupietz09b75752023-10-07 09:32:19 +02001888 * JUMP-TO-SLIDE COMPONENT
1889 *********************************************/
1890
1891 .reveal .jump-to-slide {
1892 position: absolute;
1893 top: 15px;
1894 left: 15px;
1895 z-index: 30;
1896 font-size: 32px;
1897 -webkit-tap-highlight-color: rgba( 0, 0, 0, 0 );
1898}
1899
1900.reveal .jump-to-slide-input {
1901 background: transparent;
1902 padding: 8px;
1903 font-size: inherit;
1904 color: currentColor;
1905 border: 0;
1906}
1907.reveal .jump-to-slide-input::placeholder {
1908 color: currentColor;
1909 opacity: 0.5;
1910}
1911
1912.reveal.has-dark-background .jump-to-slide-input {
1913 color: #fff;
1914}
1915.reveal.has-light-background .jump-to-slide-input {
1916 color: #222;
1917}
1918
1919.reveal .jump-to-slide-input:focus {
1920 outline: none;
1921}
1922
1923
1924/*********************************************
JJ Allaireefa6ad42016-01-30 13:12:05 -05001925 * ZOOM PLUGIN
1926 *********************************************/
1927
1928.zoomed .reveal *,
1929.zoomed .reveal *:before,
1930.zoomed .reveal *:after {
1931 backface-visibility: visible !important;
1932}
1933
1934.zoomed .reveal .progress,
1935.zoomed .reveal .controls {
1936 opacity: 0;
1937}
1938
1939.zoomed .reveal .roll span {
1940 background: none;
1941}
1942
1943.zoomed .reveal .roll span:after {
1944 visibility: hidden;
1945}
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02001946
1947
1948/*********************************************
Marc Kupietz9c036a42024-05-14 13:17:25 +02001949 * SCROLL VIEW
1950 *********************************************/
1951.reveal-viewport.loading-scroll-mode {
1952 visibility: hidden;
1953}
1954
1955.reveal-viewport.reveal-scroll {
1956 & {
1957 margin: 0 auto;
1958 overflow: auto;
1959 overflow-x: hidden;
1960 overflow-y: auto;
1961 z-index: 1;
1962
1963 --r-scrollbar-width: 7px;
1964 --r-scrollbar-trigger-size: 5px;
1965 --r-controls-spacing: 8px;
1966 }
1967
1968 @media screen and (max-width: 500px) {
1969 --r-scrollbar-width: 3px;
1970 --r-scrollbar-trigger-size: 3px;
1971 }
1972
1973 .controls,
1974 .progress,
1975 .playback,
1976 .backgrounds,
1977 .slide-number,
1978 .speaker-notes {
1979 display: none !important;
1980 }
1981
Marc Kupietzcf6e9982026-08-15 15:37:40 +02001982 .r-overlay,
Marc Kupietz9c036a42024-05-14 13:17:25 +02001983 .pause-overlay {
1984 position: fixed;
1985 }
1986
1987 .reveal {
1988 overflow: visible;
1989 touch-action: manipulation;
1990 }
1991
1992 .slides {
1993 position: static;
1994 pointer-events: initial;
1995
1996 left: auto;
1997 top: auto;
1998 width: 100% !important;
1999 margin: 0;
2000 padding: 0;
2001
2002 overflow: visible;
2003 display: block;
2004
2005 perspective: none;
2006 perspective-origin: 50% 50%;
2007 }
2008
2009 .scroll-page {
2010 position: relative;
2011 width: 100%;
2012 height: calc(var(--page-height) + var(--page-scroll-padding));
2013 z-index: 1;
2014 overflow: visible;
2015 }
2016
2017 .scroll-page-sticky {
2018 position: sticky;
2019 height: var(--page-height);
2020 top: 0px;
2021 }
2022
2023 .scroll-page-content {
2024 position: absolute;
2025 top: 0;
2026 left: 0;
2027 width: 100%;
2028 height: 100%;
2029 overflow: hidden;
2030 }
2031
2032 .scroll-page section {
2033 visibility: visible !important;
2034 display: block !important;
2035 position: absolute !important;
2036 width: var(--slide-width) !important;
2037 height: var(--slide-height) !important;
2038 top: 50% !important;
2039 left: 50% !important;
2040 opacity: 1 !important;
2041 transform: scale(var(--slide-scale)) translate(-50%, -50%) !important;
2042 transform-style: flat !important;
2043 transform-origin: 0 0 !important;
2044 }
2045
2046 .slide-background {
2047 display: block !important;
2048 position: absolute;
2049 top: 0;
2050 left: 0;
2051 width: 100%;
2052 height: 100%;
2053 z-index: auto !important;
2054 visibility: visible;
2055 opacity: 1;
2056 touch-action: manipulation;
2057 }
2058}
2059
2060// Chromium
2061.reveal-viewport.reveal-scroll[data-scrollbar="true"]::-webkit-scrollbar,
2062.reveal-viewport.reveal-scroll[data-scrollbar="auto"]::-webkit-scrollbar {
2063 display: none;
2064}
2065
2066// Firefox
2067.reveal-viewport.reveal-scroll[data-scrollbar="true"],
2068.reveal-viewport.reveal-scroll[data-scrollbar="auto"] {
2069 scrollbar-width: none;
2070}
2071
2072.reveal.has-dark-background,
2073.reveal-viewport.has-dark-background {
2074 --r-overlay-element-bg-color: 240, 240, 240;
2075 --r-overlay-element-fg-color: 0, 0, 0;
2076}
2077.reveal.has-light-background,
2078.reveal-viewport.has-light-background {
2079 --r-overlay-element-bg-color: 0, 0, 0;
2080 --r-overlay-element-fg-color: 240, 240, 240;
2081}
2082
2083.reveal-viewport.reveal-scroll .scrollbar {
2084 position: sticky;
2085 top: 50%;
2086 z-index: 20;
2087 opacity: 0;
2088 transition: all 0.3s ease;
2089
2090 &.visible,
2091 &:hover {
2092 opacity: 1;
2093 }
2094
2095 .scrollbar-inner {
2096 position: absolute;
2097 width: var(--r-scrollbar-width);
2098 height: calc(var(--viewport-height) - var(--r-controls-spacing) * 2);
2099 right: var(--r-controls-spacing);
2100 top: 0;
2101 transform: translateY(-50%);
2102 border-radius: var(--r-scrollbar-width);
2103 z-index: 10;
2104 }
2105
2106 .scrollbar-playhead {
2107 position: absolute;
2108 width: var(--r-scrollbar-width);
2109 height: var(--r-scrollbar-width);
2110 top: 0;
2111 left: 0;
2112 border-radius: var(--r-scrollbar-width);
2113 background-color: rgba(var(--r-overlay-element-bg-color), 1);
2114 z-index: 11;
2115 transition: background-color 0.2s ease;
2116 }
2117
2118 .scrollbar-slide {
2119 position: absolute;
2120 width: 100%;
2121 background-color: rgba(var(--r-overlay-element-bg-color), 0.2);
2122 box-shadow: 0 0 0px 1px rgba(var(--r-overlay-element-fg-color), 0.1);
2123 border-radius: var(--r-scrollbar-width);
2124 transition: background-color 0.2s ease;
2125 }
2126
2127 // Hit area
2128 .scrollbar-slide:after {
2129 content: '';
2130 position: absolute;
2131 width: 200%;
2132 height: 100%;
2133 top: 0;
2134 left: -50%;
2135 background: rgba( 0, 0, 0, 0 );
2136 z-index: -1;
2137 }
2138
2139 .scrollbar-slide:hover,
2140 .scrollbar-slide.active {
2141 background-color: rgba(var(--r-overlay-element-bg-color), 0.4);
2142 }
2143
2144 .scrollbar-trigger {
2145 position: absolute;
2146 width: 100%;
2147 transition: background-color 0.2s ease;
2148 }
2149
2150 .scrollbar-slide.active.has-triggers {
2151 background-color: rgba(var(--r-overlay-element-bg-color), 0.4);
2152 z-index: 10;
2153 }
2154
2155 .scrollbar-slide.active .scrollbar-trigger:after {
2156 content: '';
2157 position: absolute;
2158 width: var(--r-scrollbar-trigger-size);
2159 height: var(--r-scrollbar-trigger-size);
2160 border-radius: 20px;
2161 top: 50%;
2162 left: 50%;
2163 transform: translate(-50%, -50%);
2164 background-color: rgba(var(--r-overlay-element-bg-color), 1);
2165 transition: transform 0.2s ease, opacity 0.2s ease;
2166 opacity: 0.4;
2167 }
2168
2169 .scrollbar-slide.active .scrollbar-trigger.active:after,
2170 .scrollbar-slide.active .scrollbar-trigger.active ~ .scrollbar-trigger:after {
2171 opacity: 1;
2172 }
2173
2174 .scrollbar-slide.active .scrollbar-trigger ~ .scrollbar-trigger.active:after {
2175 transform: translate(calc( var(--r-scrollbar-width) * -2), 0);
2176 background-color: rgba(var(--r-overlay-element-bg-color), 1);
2177 }
2178}
2179
2180
2181/*********************************************
Christophe Dervieuxe1893ae2021-10-07 17:09:02 +02002182 * PRINT STYLES
2183 *********************************************/
2184
2185@import 'print/pdf.scss';
2186@import 'print/paper.scss';
2187