diff --git a/inst/reveal.js-5.2.1/css/theme/README.md b/inst/reveal.js-5.2.1/css/theme/README.md
new file mode 100644
index 0000000..30916c4
--- /dev/null
+++ b/inst/reveal.js-5.2.1/css/theme/README.md
@@ -0,0 +1,21 @@
+## Dependencies
+
+Themes are written using Sass to keep things modular and reduce the need for repeated selectors across files. Make sure that you have the reveal.js development environment installed before proceeding: https://revealjs.com/installation/#full-setup
+
+## Creating a Theme
+
+To create your own theme, start by duplicating a ```.scss``` file in [/css/theme/source](https://github.com/hakimel/reveal.js/blob/master/css/theme/source). It will be automatically compiled from Sass to CSS (see the [gulpfile](https://github.com/hakimel/reveal.js/blob/master/gulpfile.js)) when you run `npm run build -- css-themes`.
+
+Each theme file does four things in the following order:
+
+1. **Include [/css/theme/template/mixins.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/mixins.scss)**
+Shared utility functions.
+
+2. **Include [/css/theme/template/settings.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/settings.scss)**
+Declares a set of custom variables that the template file (step 4) expects. Can be overridden in step 3.
+
+3. **Override**
+This is where you override the default theme. Either by specifying variables (see [settings.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/settings.scss) for reference) or by adding any selectors and styles you please.
+
+4. **Include [/css/theme/template/theme.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/theme.scss)**
+The template theme file which will generate final CSS output based on the currently defined variables.
diff --git a/inst/reveal.js-5.2.1/css/theme/source/beige.scss b/inst/reveal.js-5.2.1/css/theme/source/beige.scss
new file mode 100644
index 0000000..ab3fd92
--- /dev/null
+++ b/inst/reveal.js-5.2.1/css/theme/source/beige.scss
@@ -0,0 +1,45 @@
+/**
+ * Beige theme for reveal.js.
+ *
+ * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
+ */
+
+
+// Default mixins and settings -----------------
+@use "sass:color";
+@import "../template/mixins";
+@import "../template/settings";
+// ---------------------------------------------
+
+
+
+// Include theme-specific fonts
+@import url(./fonts/league-gothic/league-gothic.css);
+@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
+
+
+// Override theme settings (see ../template/settings.scss)
+$mainColor: #333;
+$headingColor: #333;
+$headingTextShadow: none;
+$backgroundColor: #f7f3de;
+$linkColor: #8b743d;
+$linkColorHover: color.scale( $linkColor, $lightness: 20% );
+$selectionBackgroundColor: rgba(79, 64, 28, 0.99);
+$heading1TextShadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,.1), 0 0 5px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.3), 0 3px 5px rgba(0,0,0,.2), 0 5px 10px rgba(0,0,0,.25), 0 20px 20px rgba(0,0,0,.15);
+
+$overlayElementBgColor: 0, 0, 0;
+$overlayElementFgColor: 240, 240, 240;
+
+// Background generator
+@mixin bodyBackground() {
+	@include radial-gradient( rgba(247,242,211,1), rgba(255,255,255,1) );
+}
+
+// Change text colors against dark slide backgrounds
+@include dark-bg-text-color(#fff);
+
+
+// Theme template ------------------------------
+@import "../template/theme";
+// ---------------------------------------------
diff --git a/inst/reveal.js-5.2.1/css/theme/source/black-contrast.scss b/inst/reveal.js-5.2.1/css/theme/source/black-contrast.scss
new file mode 100644
index 0000000..32c1d91
--- /dev/null
+++ b/inst/reveal.js-5.2.1/css/theme/source/black-contrast.scss
@@ -0,0 +1,50 @@
+/**
+ * Black compact & high contrast reveal.js theme, with headers not in capitals.
+ *
+ * By Peter Kehl. Based on black.(s)css by Hakim El Hattab, http://hakim.se
+ *
+ * - Keep the source similar to black.css - for easy comparison.
+ * - $mainFontSize controls code blocks, too (although under some ratio).
+ */
+
+
+// Default mixins and settings -----------------
+@use "sass:color";
+@import "../template/mixins";
+@import "../template/settings";
+// ---------------------------------------------
+
+
+// Include theme-specific fonts
+@import url(./fonts/source-sans-pro/source-sans-pro.css);
+
+
+// Override theme settings (see ../template/settings.scss)
+$backgroundColor: #000000;
+
+$mainColor: #fff;
+$headingColor: #fff;
+
+$mainFontSize: 42px;
+$mainFont: 'Source Sans Pro', Helvetica, sans-serif;
+$headingFont: 'Source Sans Pro', Helvetica, sans-serif;
+$headingTextShadow: none;
+$headingLetterSpacing: normal;
+$headingTextTransform: uppercase;
+$headingFontWeight: 600;
+$linkColor: #42affa;
+$linkColorHover: color.scale( $linkColor, $lightness: 15% );
+$selectionBackgroundColor: color.scale( $linkColor, $lightness: 25% );
+
+$heading1Size: 2.5em;
+$heading2Size: 1.6em;
+$heading3Size: 1.3em;
+$heading4Size: 1.0em;
+
+// Change text colors against light slide backgrounds
+@include light-bg-text-color(#000);
+
+
+// Theme template ------------------------------
+@import "../template/theme";
+// ---------------------------------------------
diff --git a/inst/reveal.js-5.2.1/css/theme/source/black.scss b/inst/reveal.js-5.2.1/css/theme/source/black.scss
new file mode 100644
index 0000000..124a755
--- /dev/null
+++ b/inst/reveal.js-5.2.1/css/theme/source/black.scss
@@ -0,0 +1,47 @@
+/**
+ * Black theme for reveal.js. This is the opposite of the 'white' theme.
+ *
+ * By Hakim El Hattab, http://hakim.se
+ */
+
+
+// Default mixins and settings -----------------
+@use "sass:color";
+@import "../template/mixins";
+@import "../template/settings";
+// ---------------------------------------------
+
+
+// Include theme-specific fonts
+@import url(./fonts/source-sans-pro/source-sans-pro.css);
+
+
+// Override theme settings (see ../template/settings.scss)
+$backgroundColor: #191919;
+
+$mainColor: #fff;
+$headingColor: #fff;
+
+$mainFontSize: 42px;
+$mainFont: 'Source Sans Pro', Helvetica, sans-serif;
+$headingFont: 'Source Sans Pro', Helvetica, sans-serif;
+$headingTextShadow: none;
+$headingLetterSpacing: normal;
+$headingTextTransform: uppercase;
+$headingFontWeight: 600;
+$linkColor: #42affa;
+$linkColorHover: color.scale( $linkColor, $lightness: 15% );
+$selectionBackgroundColor: rgba( $linkColor, 0.75 );
+
+$heading1Size: 2.5em;
+$heading2Size: 1.6em;
+$heading3Size: 1.3em;
+$heading4Size: 1.0em;
+
+// Change text colors against light slide backgrounds
+@include light-bg-text-color(#222);
+
+
+// Theme template ------------------------------
+@import "../template/theme";
+// ---------------------------------------------
diff --git a/inst/reveal.js-5.2.1/css/theme/source/blood.scss b/inst/reveal.js-5.2.1/css/theme/source/blood.scss
new file mode 100644
index 0000000..75e5c20
--- /dev/null
+++ b/inst/reveal.js-5.2.1/css/theme/source/blood.scss
@@ -0,0 +1,88 @@
+/**
+ * Blood theme for reveal.js
+ * Author: Walther http://github.com/Walther
+ *
+ * Designed to be used with highlight.js theme
+ * "monokai_sublime.css" available from
+ * https://github.com/isagalaev/highlight.js/
+ *
+ * For other themes, change $codeBackground accordingly.
+ *
+ */
+
+// Default mixins and settings -----------------
+@use "sass:color";
+@import "../template/mixins";
+@import "../template/settings";
+// ---------------------------------------------
+
+// Include theme-specific fonts
+
+@import url(https://fonts.googleapis.com/css?family=Ubuntu:300,700,300italic,700italic);
+
+// Colors used in the theme
+$blood: #a23;
+$coal: #222;
+$codeBackground: #23241f;
+
+$backgroundColor: $coal;
+
+// Main text
+$mainFont: Ubuntu, 'sans-serif';
+$mainColor: #eee;
+
+// Headings
+$headingFont: Ubuntu, 'sans-serif';
+$headingTextShadow: 2px 2px 2px $coal;
+
+// h1 shadow, borrowed humbly from 
+// (c) Default theme by Hakim El Hattab
+$heading1TextShadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,.1), 0 0 5px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.3), 0 3px 5px rgba(0,0,0,.2), 0 5px 10px rgba(0,0,0,.25), 0 20px 20px rgba(0,0,0,.15);
+
+// Links
+$linkColor: $blood;
+$linkColorHover: color.scale( $linkColor, $lightness: 20% );
+
+// Text selection
+$selectionBackgroundColor: $blood;
+$selectionColor: #fff;
+
+// Change text colors against dark slide backgrounds
+@include light-bg-text-color(#222);
+
+
+// Theme template ------------------------------
+@import "../template/theme";
+// ---------------------------------------------
+
+// some overrides after theme template import
+
+.reveal p {
+    font-weight: 300;
+    text-shadow: 1px 1px $coal;
+}
+
+section.has-light-background {
+	p, h1, h2, h3, h4 {
+		text-shadow: none;
+	}
+}
+
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+    font-weight: 700;
+}
+
+.reveal p code {
+    background-color: $codeBackground;
+    display: inline-block;
+    border-radius: 7px;
+}
+
+.reveal small code {
+    vertical-align: baseline;
+}
\ No newline at end of file
diff --git a/inst/reveal.js-5.2.1/css/theme/source/dracula.scss b/inst/reveal.js-5.2.1/css/theme/source/dracula.scss
new file mode 100644
index 0000000..ae968b8
--- /dev/null
+++ b/inst/reveal.js-5.2.1/css/theme/source/dracula.scss
@@ -0,0 +1,106 @@
+/**
+ * Dracula Dark theme for reveal.js.
+ * Based on https://draculatheme.com
+ */
+
+
+// Default mixins and settings -----------------
+@import "../template/mixins";
+@import "../template/settings";
+// ---------------------------------------------
+
+
+
+// Include theme-specific fonts
+$systemFontsSansSerif: -apple-system,
+					   BlinkMacSystemFont,
+					   avenir next,
+					   avenir,
+					   segoe ui,
+					   helvetica neue,
+					   helvetica,
+					   Cantarell,
+					   Ubuntu,
+					   roboto,
+					   noto,
+					   arial,
+					   sans-serif;
+$systemFontsMono: Menlo,
+				  Consolas,
+				  Monaco,
+				  Liberation Mono,
+				  Lucida Console,
+				  monospace;
+
+/**
+ * Dracula colors by Zeno Rocha
+ * https://draculatheme.com/contribute
+ */
+html * {
+	color-profile: sRGB;
+	rendering-intent: auto;
+}
+
+$background: #282A36;
+$foreground: #F8F8F2;
+$selection: #44475A;
+$comment: #6272A4;
+$red: #FF5555;
+$orange: #FFB86C;
+$yellow: #F1FA8C;
+$green: #50FA7B;
+$purple: #BD93F9;
+$cyan: #8BE9FD;
+$pink: #FF79C6;
+
+
+
+// Override theme settings (see ../template/settings.scss)
+$mainColor: $foreground;
+$headingColor: $purple;
+$headingTextShadow: none;
+$headingTextTransform: none;
+$backgroundColor: $background;
+$linkColor: $pink;
+$linkColorHover: $cyan;
+$selectionBackgroundColor: $selection;
+$inlineCodeColor: $green;
+$listBulletColor: $cyan;
+
+$mainFont: $systemFontsSansSerif;
+$codeFont: "Fira Code", $systemFontsMono;
+
+// Change text colors against light slide backgrounds
+@include light-bg-text-color($background);
+
+// Theme template ------------------------------
+@import "../template/theme";
+// ---------------------------------------------
+
+// Define additional color effects based on Dracula spec
+// https://spec.draculatheme.com/
+:root {
+	--r-bold-color: #{$orange};
+	--r-italic-color: #{$yellow};
+	--r-inline-code-color: #{$inlineCodeColor};
+	--r-list-bullet-color: #{$listBulletColor};
+}
+
+.reveal {
+	strong, b {
+		color: var(--r-bold-color);
+	}
+	em, i, blockquote {
+		color: var(--r-italic-color);
+	}
+	code {
+		color: var(--r-inline-code-color);
+	}
+	// Dracula colored list bullets and numbers
+	ul, ol {
+		li::marker {
+			color: var(--r-list-bullet-color);
+		}
+	}
+}
+
diff --git a/inst/reveal.js-5.2.1/css/theme/source/ids.scss b/inst/reveal.js-5.2.1/css/theme/source/ids.scss
new file mode 100644
index 0000000..9791304
--- /dev/null
+++ b/inst/reveal.js-5.2.1/css/theme/source/ids.scss
@@ -0,0 +1,680 @@
+/**
+ * IDS theme for reveal.js
+ *
+ * By Marc Kupietz
+ */
+
+
+// Default mixins and settings -----------------
+@import "../template/mixins";
+@import "../template/settings";
+// ---------------------------------------------
+
+
+// Include theme-specific fonts
+// NB: https://korap.ids-mannheim.de/font/{fira-condensed,libertinus}.css both
+// return 404, so the condensed and bold faces never loaded and headings fell
+// back to a regular-width, regular-weight face. Google Fonts serves the real
+// Fira Sans Condensed incl. weights 700/800 (this is where the IDS reference
+// decks get it from too); the others are kept for locally installed copies.
+@import url('https://fonts.googleapis.com/css2?family=Fira+Sans+Condensed:wght@300;400;700;800&family=Fira+Sans:wght@200;300;400;700&family=Fira+Sans+Extra+Condensed:wght@300;700&display=swap');
+@import url('https://code.cdn.mozilla.net/fonts/fira.css');
+@import url('https://korap.ids-mannheim.de/font/libertinus.css');
+
+$idsOrange: #f6a800;
+
+// Override theme settings (see ../template/settings.scss)
+$backgroundColor: #fff;
+
+$mainColor: #222;
+$headingColor: $idsOrange;
+
+$mainFontSize: 42px;
+$mainFont: 'Libertinus Serif', Helvetica, sans-serif;
+$headingFont: 'Fira Sans Extra Condensed', 'Fira Sans Condensed', 'Fira Sans', Helvetica, sans-serif;
+$headingTextShadow: none;
+$headingLetterSpacing: 0.05ex;
+$headingTextTransform: uppercase;
+$headingFontWeight: 700;
+$linkColor: #2a76dd;
+$linkColorHover: lighten( $linkColor, 15% );
+$selectionBackgroundColor: lighten( $linkColor, 25% );
+
+$heading1Size: 2em;
+$heading2Size: 1.35em;
+$heading3Size: 0.9em;
+$heading4Size: 0.7em;
+
+$listBulletColor: $idsOrange;
+
+// Change text colors against dark slide backgrounds
+@include dark-bg-text-color(#fff);
+
+
+// Theme template ------------------------------
+@import "../template/theme";
+// ---------------------------------------------
+
+// Bar/logo sizes, expressed as fractions of the slide's own height (reveal.js
+// exposes the configured slide size as --slide-width / --slide-height custom
+// properties). Sizing relative to the slide rather than the raw viewport (vh
+// units) keeps things pinned to the true slide edges instead of drifting
+// into the letter-/pillarboxed margins when the window's aspect ratio
+// doesn't exactly match the configured one.
+$idsBarWidthRatio: 0.05;
+$idsLogoWidthRatio: 0.25;
+$idsBarWidth: calc(var(--slide-height) * #{$idsBarWidthRatio});
+$idsHeadingGap: 24px;
+
+// Vertical gap between the title and the subtitle. The subtitle's bar segment
+// reaches up by this much to bridge it, so the two segments read as one bar.
+$idsHeadingSpacing: 8px;
+
+// Rendered height of one subtitle line. Slides without a subtitle reserve
+// exactly this much, so the bar and the start of the body content stay put
+// from slide to slide instead of jumping. Must stay in sync with
+// $heading3Size (0.9em) and $headingLineHeight (1.2, from template/settings).
+$idsSubtitleHeight: 0.9 * $mainFontSize * 1.2;
+
+// The two bar segments abut at a fractional pixel, which browsers round into a
+// visible hairline. Overlapping them slightly makes the join seamless.
+$idsBarOverlap: 2px;
+
+// reveal.js centres the scaled slide in the viewport, so whenever the window's
+// aspect ratio does not match the deck's, an empty band is left beside (or
+// above) the slide and the bar would not reach the window's physical edge.
+// Working out how wide that band is needs viewport / scale, and CSS cannot
+// divide a length by a length -- which is why the hand-written IDS decks solve
+// this in JavaScript. revealjs_presentation()'s template therefore publishes
+// the band widths, in slide coordinates, as --ids-band-left / --ids-band-top,
+// and the bar simply shifts out by that much. Falling back to 0px keeps this
+// correct whenever the aspect ratios do match, and if the script never runs.
+$idsBandLeft: var(--ids-band-left, 0px);
+
+// revealjs_presentation() sets reveal.js' own `margin` option to 0, so that the
+// slide box is the whole viewport and the orange bar can sit flush in its top
+// left corner. That would otherwise leave the body content running edge to
+// edge, so the breathing room reveal.js' margin used to provide is added back
+// here as slide padding; the bar and the headings reach back out to the edge
+// with matching negative margins below. The inset is the bar plus its gap, so
+// body content lines up with the heading text rather than with the bar.
+$idsContentInset: calc(#{$idsBarWidth} + #{$idsHeadingGap});
+
+.reveal .slides section:not(.stack) {
+  box-sizing: border-box !important;
+  padding-left: #{$idsContentInset} !important;
+  padding-right: #{$idsContentInset} !important;
+}
+
+// Body content is left aligned with the headings; the title frame keeps its
+// own centered layout.
+.reveal .slides section:not(.stack):not(.title-frame) {
+  text-align: left !important;
+}
+
+// reveal.js centers lists by making them inline-block; make them ordinary
+// blocks so they line up with the headings.
+//
+// The markers are NOT native ::marker glyphs: browsers anchor outside-position
+// markers at slightly different offsets per engine (and per scale), and even
+// ::before font glyphs carry font-specific side bearings, so a padding(text)-
+// based alignment of the bullet column with the heading text can never be
+// pixel-exact everywhere. Instead we DRAW the markers as CSS boxes in
+// absolutely positioned li::before rules. Geometry (all values in the item's
+// own font size, so the hierarchy scales with the 0.8em per-level sizing from
+// the NESTED LISTS section below):
+//
+//   - item text starts at (list left edge) + 0.65em
+//   - the marker box starts exactly at the list's left edge; on content
+//     slides that edge coincides with the heading text's left edge, i.e. the
+//     bullet column is flush with the slide title, deterministically in every
+//     browser and at every window size
+//
+// For nested lists the ::before offset has to be divided by the 0.8 font-size
+// factor, because the list's padding is computed in the PARENT item's font
+// size while the ::before offset is computed in the (smaller) child size.
+$idsListIndent: 0.65em;
+$idsListShrink: 0.8;
+$idsMarkerSize: 0.22em;
+$idsMarkerTop: calc((1.3em - #{$idsMarkerSize}) / 2);
+
+.reveal .slides section:not(.title-frame) ul,
+.reveal .slides section:not(.title-frame) ol {
+  display: block !important;
+  text-align: left !important;
+  margin-left: 0 !important;
+  padding-left: $idsListIndent !important;
+  list-style: none !important;
+}
+
+.reveal .slides section:not(.title-frame) li {
+  position: relative !important;
+}
+
+.reveal .slides section:not(.title-frame) li::before {
+  position: absolute !important;
+  left: calc(-1 * #{$idsListIndent}) !important;
+  color: var(--r-list-bullet-color) !important;
+}
+
+.reveal .slides section:not(.title-frame) li li::before {
+  left: calc(-1 * #{$idsListIndent} / #{$idsListShrink}) !important;
+}
+
+// Unordered-list markers: drawn boxes (round dot, square, ring for deeper
+// levels), vertically centered on the item's first line.
+.reveal .slides section:not(.title-frame) ul > li::before {
+  content: "" !important;
+  top: $idsMarkerTop !important;
+  width: $idsMarkerSize !important;
+  height: $idsMarkerSize !important;
+  box-sizing: border-box !important;
+  border-radius: 50% !important;
+  background: var(--r-list-bullet-color) !important;
+}
+
+.reveal .slides section:not(.title-frame) ul ul > li::before {
+  border-radius: 0 !important;              // square
+}
+
+.reveal .slides section:not(.title-frame) ul ul ul > li::before {
+  background: transparent !important;       // ring
+  border: 0.055em solid var(--r-list-bullet-color) !important;
+  border-radius: 50% !important;
+}
+
+// Ordered lists: the CSS list-item counter honours the HTML start/value
+// attributes, so pandoc's `start`/`value` lists keep their numbers. Numbers
+// are right-aligned into the indent, ending just before the item text.
+.reveal .slides section:not(.title-frame) ol > li::before {
+  content: counter(list-item, decimal) "." !important;
+  width: calc(#{$idsListIndent} - 0.12em) !important;
+  text-align: right !important;
+}
+
+// Checkbox (pandoc task) lists keep their checkboxes, no markers on top.
+.reveal .slides section:not(.title-frame) ul.task-list li::before {
+  content: none !important;
+}
+
+// reveal.js centres code blocks (width: 90%; margin: auto); make them fill the
+// slide's text column so they start on the same left edge as the headings.
+.reveal .slides section:not(.title-frame) pre {
+  width: auto !important;
+  margin-left: 0 !important;
+  margin-right: 0 !important;
+}
+
+// The IDS logo stays a slide-wide watermark (top right of every slide,
+// including the title page). The top offset is chosen so the logo's cap line
+// meets the top of the heading text rather than sitting below it; the SVG
+// carries a little transparent padding of its own, which this accounts for.
+$idsLogoTop: 10px;
+$idsLogoRight: 8px;
+
+.reveal .slides {
+  background-image: url('https://corpora.ids-mannheim.de/slides/reveal.js.ids/images/IDS-Logo-2019.svg');
+  background-repeat: no-repeat;
+  background-position: top #{$idsLogoTop} right #{$idsLogoRight};
+  background-size: calc(var(--slide-height) * #{$idsLogoWidthRatio}) auto;
+}
+
+// The orange bar is drawn as a ::before on the headings rather than on the
+// slide, in two segments: one behind the title and one behind the subtitle.
+// Because each segment is sized as a percentage of its own heading's box, the
+// bar always ends exactly at the bottom of the last heading -- it follows a
+// subtitle when there is one, stops at the title when there isn't, and grows
+// by itself when a heading wraps onto a second line. No fixed heights, and no
+// JavaScript. Headings carry no vertical padding, so they sit as high on the
+// slide as the bar does. Every rule is !important because this theme has to
+// win against plugin- and document-level CSS loaded after it.
+.reveal .slides section:not(.title-frame) > h1:first-child,
+.reveal .slides section:not(.title-frame) > h2:first-child {
+  position: relative !important;
+  display: block !important;
+  text-align: left !important;
+  margin: 0 calc(-1 * #{$idsContentInset}) #{$idsHeadingSpacing} calc(-1 * #{$idsContentInset}) !important;
+  padding: 0 0 0 #{$idsContentInset} !important;
+  font-weight: var(--r-heading-font-weight) !important;
+}
+
+.reveal .slides section:not(.title-frame) > h1:first-child::before,
+.reveal .slides section:not(.title-frame) > h2:first-child::before,
+.reveal .slides section:not(.title-frame) > h2:first-child + h3::before {
+  content: "" !important;
+  position: absolute !important;
+  width: #{$idsBarWidth} !important;
+  // A flat fill rather than orange_bar.png: that image is two-toned (a lighter
+  // band across its top), so stretching it over each segment separately left a
+  // pale seam where the two met. The IDS reference decks draw a flat #f6a800.
+  background: #{$idsOrange} !important;
+}
+
+// Title segment: pulled out to the window's physical left edge.
+.reveal .slides section:not(.title-frame) > h1:first-child::before,
+.reveal .slides section:not(.title-frame) > h2:first-child::before {
+  top: 0 !important;
+  left: calc(-1 * #{$idsBandLeft}) !important;
+  height: 100% !important;
+}
+
+// A slide without a subtitle reserves the room one would have taken, so the
+// bar keeps the same height and the body content starts at the same place on
+// every slide. :has() is what lets us ask "is a subtitle coming?" in CSS; where
+// it is unsupported such slides simply keep a title-height bar.
+.reveal .slides section:not(.title-frame) > h1:first-child:not(:has(+ h3)),
+.reveal .slides section:not(.title-frame) > h2:first-child:not(:has(+ h3)) {
+  margin-bottom: calc(#{$idsHeadingSpacing} + #{$idsSubtitleHeight} + #{$blockMargin}) !important;
+}
+
+.reveal .slides section:not(.title-frame) > h1:first-child:not(:has(+ h3))::before,
+.reveal .slides section:not(.title-frame) > h2:first-child:not(:has(+ h3))::before {
+  height: calc(100% + #{$idsHeadingSpacing} + #{$idsSubtitleHeight}) !important;
+}
+
+// The subtitle sits in the slide's normal text column, so its segment has to
+// reach back out to the slide edge, and up over the gap to the title.
+.reveal .slides section:not(.title-frame) > h2:first-child + h3 {
+  position: relative !important;
+  text-align: left !important;
+  margin-top: 0 !important;
+  margin-left: 0 !important;
+  margin-bottom: $blockMargin !important;
+}
+
+.reveal .slides section:not(.title-frame) > h2:first-child + h3::before {
+  top: calc(-1 * (#{$idsHeadingSpacing} + #{$idsBarOverlap})) !important;
+  left: calc(-1 * (#{$idsContentInset} + #{$idsBandLeft})) !important;
+  height: calc(100% + #{$idsHeadingSpacing} + #{$idsBarOverlap}) !important;
+}
+
+// Section-divider slides: a level 1 heading alone on a slide (pandoc marks
+// these .level1). The IDS reference decks centre that title on the slide while
+// the bar stays in its usual top left corner, so here the bar cannot hang off
+// the heading -- it is painted on the slide itself, at the height it has on
+// every other slide, and the heading gets none of the top-left treatment.
+$idsTitleHeight: 1.35 * $mainFontSize * 1.2;
+$idsBarBlockHeight: $idsTitleHeight + $idsHeadingSpacing + $idsSubtitleHeight;
+
+.reveal .slides section.level1:not(.title-frame) {
+  height: 100% !important;
+  display: flex !important;
+  flex-direction: column !important;
+  justify-content: center !important;
+}
+
+.reveal .slides section.level1:not(.title-frame)::before {
+  content: "" !important;
+  position: absolute !important;
+  top: 0 !important;
+  left: calc(-1 * #{$idsBandLeft}) !important;
+  width: #{$idsBarWidth} !important;
+  height: #{$idsBarBlockHeight} !important;
+  background: #{$idsOrange} !important;
+}
+
+.reveal .slides section.level1:not(.title-frame) > h1:first-child {
+  text-align: center !important;
+  margin: 0 !important;
+  padding: 0 !important;
+}
+
+.reveal .slides section.level1:not(.title-frame) > h1:first-child::before {
+  content: none !important;
+}
+
+// Define additional color effects based on Dracula spec
+// https://spec.draculatheme.com/
+:root {
+  --r-bold-color: #{$idsOrange};
+  --r-list-bullet-color: #{$listBulletColor};
+}
+
+.reveal {
+  strong, b {
+          color: var(--r-bold-color);
+  }
+
+  // Dracula colored list bullets and numbers
+  ul, ol {
+          li::marker {
+                  color: var(--r-list-bullet-color) !important;
+          }
+  }
+}
+
+// Nested list items are set progressively smaller, both to emphasise the
+// hierarchy and to keep deeply nested lists from visually competing with the
+// first level. The em size compounds down the nesting levels, so each deeper
+// level is 80% of its parent (level 2: 80%, level 3: 64%, level 4: 51%).
+// Markers and the hanging indentation (padding-left: 0.7em above) scale with
+// the text automatically.
+.reveal li li {
+  font-size: 0.8em;
+}
+
+
+/*********************************************
+ * FOOTER
+ *********************************************/
+ #ids-footer:not(title-slide) {
+  opacity: 1;
+  background: white;
+  color: #444444;
+  border-top: dotted orange 2px;
+  transition: opacity 800ms ease-in-out;
+  position: fixed;
+  height: 6%;
+  line-height: 6%;
+  z-index: -20;
+  width: 100%;
+  letter-spacing: 0em;
+  text-align: center;
+  display: table;
+}
+
+#ids-footer span {
+  height: 100%;
+  line-height: 100%;
+  z-index: -20;
+  font-size: 1.8vh;
+  font-family: "Fira Sans Condensed", "Fira Sans", "Roboto Condensed", "League Gothic", Impact, sans-serif;
+  display: inline-block;
+  display: table-cell;
+  vertical-align: middle;
+}
+
+/* Bottom position for the IDS-Footer footer when both progress bar and TOC-Progress are visible */
+div.progress[style="display: block;"] ~ #ids-footer {
+  bottom: calc(3px + 0vh);
+}
+
+/* Bottom position for the IDS-Footer footer when TOC-Progress is visible */
+#ids-footer {
+  bottom: 3px;
+}
+
+#ids-footer a {
+  color: #555555;
+}
+
+/* Bottom position for the IDS-Footer footer when progress bar is visible */
+div.progress[style="display: block;"] ~ footer:last-of-type#ids-footer {
+  bottom: 3px;
+}
+
+/* Bottom position for the IDS-Footer footer when neither progress bar nor TOC-Progress are visible */
+footer:last-of-type#ids-footer {
+  bottom: 0px;
+}
+
+/* Make IDS-Footer invisible if explicitly indicated */
+.no-ids-footer #ids-footer {
+  opacity: 0;
+  transition: opacity 800ms ease-in-out;
+}
+
+.title-frame #ids-footer {
+  opacity: 0;
+  transition: opacity 800ms ease-in-out;
+}
+
+.no-toc-progress #ids-footer {
+  opacity: 0;
+  transition: opacity 800ms ease-in-out;
+}
+
+/* Make IDS-Footer invisible in overview mode */
+.overview #ids-footer {
+  opacity: 0;
+  transition: opacity 800ms ease-in-out;
+}
+
+// Like the orange bar/IDS logo above, this is painted on the slide itself
+// (rather than on .slide-background-content, which spans the raw,
+// unscaled viewport) so it stays pinned to the title slide's true
+// bottom-right corner instead of the browser window's. Its margin mirrors
+// the IDS logo's (top 10px / right 8px of the slide), so the two sit on
+// one shared inset.
+.reveal .slides section.title-frame {
+  background-image: url("https://corpora.ids-mannheim.de/slides/reveal.js.ids/images/Mitglied_WGL_transparent.svg");
+  background-repeat: no-repeat;
+  background-position: right 8px bottom 10px;
+  background-size: calc(var(--slide-height) * 0.1) auto;
+  /* full slide height, so "bottom" really is the slide's bottom edge */
+  height: 100%;
+}
+
+
+.slide-menu-items, .slide-menu-toolbar {
+  font-family: "Fira Sans" !important;
+}
+
+/*
+ * Menu controls
+ */
+body .reveal .slide-menu-button {
+  color: #aaaaaa !important;
+  position: fixed;
+  left: 30px;
+  bottom: 2%;
+  vertical-align: middle;
+  z-index: 30;
+  font-size: 2vh;
+}
+
+#customcontrols > ul {
+  color: #aaaaaa !important;
+  position: fixed;
+  left: 50px;
+  bottom: 2% !important;
+  vertical-align: middle;
+  z-index: 30;
+  font-size: 2vh;
+}
+
+@media only screen and (min-width: 500px) {
+  #customcontrols > ul {
+    bottom: 2% !important;
+  }
+}
+
+.reveal .controls .controls-arrow {
+  position: relative;
+  width: 3.6em;
+  height: 3.6em;
+  bottom: -12px;
+  right: -4px;
+}
+
+.reveal h3, h4, h5, h6 {
+  text-transform: none !important;
+}
+
+.reveal h3, h4, h5, h6 {
+  text-transform: none !important;
+}
+
+.reveal h2 + h3 {
+  margin-top: -0.5em !important;
+}
+
+.title-frame h1,
+.title-frame h2 {
+    margin: 0 0 0 0;
+    background: rgb(246, 168, 0);
+    color: white;
+    font-family: "Fira Sans Condensed", "Roboto Condensed", Impact, sans-serif;
+    font-weight: 600;
+    line-height: 1.2;
+    letter-spacing: 0.05ex;
+    text-transform: uppercase;
+    width: 100%;
+    margin-top: .5em;
+    padding-top: .5em;
+    font-size: 1.75em;
+    margin-left: 0;
+    text-align: center;
+    text-shadow: none;
+    word-wrap: break-word;
+}
+
+
+.title-frame .author {
+  font-family: "Fira Sans Condensed", sans-serif;
+  font-weight: 400;
+  color: #657b83;
+  margin-top: 10vh;
+}
+
+.title-frame .place {
+  font-family: "Fira Sans Condensed", sans-serif;
+  margin-top: 40px;
+  font-weight: 400;
+  color: #657b83;
+}
+
+.title-frame h2 {
+  margin-top: -3px;
+  margin-bottom: 1em;
+  padding-bottom: .5em;
+  font-size: 1em;
+}
+
+/*********************************************
+ * TABLES
+ *********************************************/
+
+ th {
+  color: rgb(246, 168, 0);
+}
+
+table {
+  font-family: 'Fira Sans Condensed', sans-serif;
+  font-weight: 400;
+  font-size: 16px;
+}
+
+.reveal table.dataTable {
+  border: #aaaaaa 1px solid;
+  border-collapse: collapse;
+}
+
+.reveal table.dataTable td {
+  border: #aaaaaa 1px solid;
+  border-collapse: collapse;
+}
+
+.dataTables_wrapper .dataTables_length, .dataTables_wrapper .dataTables_filter, .dataTables_wrapper .dataTables_info, .dataTables_wrapper .dataTables_processing, .dataTables_wrapper .dataTables_paginate, table.dataTable thead > tr > th.sorting::before, table.dataTable thead > tr > th.sorting::after, table.dataTable thead > tr > th.sorting_asc::before, table.dataTable thead > tr > th.sorting_asc::after, table.dataTable thead > tr > th.sorting_desc::before, table.dataTable thead > tr > th.sorting_desc::after, table.dataTable thead > tr > th.sorting_asc_disabled::before, table.dataTable thead > tr > th.sorting_asc_disabled::after, table.dataTable thead > tr > th.sorting_desc_disabled::before, table.dataTable thead > tr > th.sorting_desc_disabled::after, table.dataTable thead > tr > td.sorting::before, table.dataTable thead > tr > td.sorting::after, table.dataTable thead > tr > td.sorting_asc::before, table.dataTable thead > tr > td.sorting_asc::after, table.dataTable thead > tr > td.sorting_desc::before, table.dataTable thead > tr > td.sorting_desc::after, table.dataTable thead > tr > td.sorting_asc_disabled::before, table.dataTable thead > tr > td.sorting_asc_disabled::after, table.dataTable thead > tr > td.sorting_desc_disabled::before, table.dataTable thead > tr > td.sorting_desc_disabled::after {
+  display: none;
+}
+
+.caption {
+  font-family: 'Fira Sans Condensed', sans-serif;
+  font-weight: 400;
+  font-size: 16px;
+	text-align: center;
+}
+
+/*
+table.display td { white-space: nowrap; }
+*/
+
+.dt-buttons, .dataTables_filter {
+  margin-top: 10pt;
+}
+
+/* Sort Arrows in DataTables */
+table.dataTable thead>tr>th.sorting:before, table.dataTable thead>tr>th.sorting:after, table.dataTable thead>tr>th.sorting_asc:before, table.dataTable thead>tr>th.sorting_asc:after, table.dataTable thead>tr>th.sorting_desc:before, table.dataTable thead>tr>th.sorting_desc:after, table.dataTable thead>tr>th.sorting_asc_disabled:before, table.dataTable thead>tr>th.sorting_asc_disabled:after, table.dataTable thead>tr>th.sorting_desc_disabled:before, table.dataTable thead>tr>th.sorting_desc_disabled:after, table.dataTable thead>tr>td.sorting:before, table.dataTable thead>tr>td.sorting:after, table.dataTable thead>tr>td.sorting_asc:before, table.dataTable thead>tr>td.sorting_asc:after, table.dataTable thead>tr>td.sorting_desc:before, table.dataTable thead>tr>td.sorting_desc:after, table.dataTable thead>tr>td.sorting_asc_disabled:before, table.dataTable thead>tr>td.sorting_asc_disabled:after, table.dataTable thead>tr>td.sorting_desc_disabled:before, table.dataTable thead>tr>td.sorting_desc_disabled:after {
+  right: 0 !important;
+  line-height: 80% !important;
+}
+
+/*********************************************
+ * BIBLIOGRAPHY
+ *********************************************/
+
+.reveal .references {
+  font-family: "Fira Sans Condensed", sans-serif;
+  font-size: 16px;
+  text-align: left;
+  margin-top: 35px;
+  max-height: 540px;
+  font-weight: 400;
+  color: #253b43;
+  overflow-y: auto;
+}
+
+.hanging-indent > .csl-entry {
+  padding-left: 22px ;
+  text-indent: -22px ;
+}
+
+// .references scopes these above pandoc's CSL defaults (div.csl-entry), which
+// otherwise win on specificity and pin margin-bottom to 0em.
+.references .csl-entry {
+  color: #888888;
+  margin-bottom: 0.5em;
+}
+
+// "Authors (Year):" as a bold dark first line; the theme template's JS wraps
+// the leading text of each entry in .csl-authors-year (see default.html) --
+// which part of an entry citeproc wraps in spans depends on the entry type, so
+// a CSS-only break cannot place it reliably.
+.csl-entry .csl-authors-year {
+  display: block;
+  font-weight: bold;
+  color: #4d616b;
+}
+
+.reveal code.sourceCode:last-child + pre {
+  height: 800px !important;
+}
+
+
+/*********************************************
+ * ARROWS and SLIDE NUMBERS
+ *********************************************/
+
+ .reveal .controls .controls-arrow:after, .reveal .controls .controls-arrow:before {
+  width: 13px !important; /* size */
+  height: 4px; /* line width */
+}
+
+.reveal .controls {
+  display: none;
+  position: absolute;
+  top: auto;
+  bottom: -8px;
+  right: 16px;
+  left: auto;
+  z-index: 11;
+  /* color: #000;*/
+  pointer-events: none;
+  font-size: 8px;
+}
+
+.reveal .controls .controls-arrow {
+  position: relative;
+  height: 3.6em;
+  width: 1.2em; /* distance betwee arrows */
+  bottom: 0;
+  right: 0;
+}
+
+.reveal div.slide-number {
+  text-align: center;
+  width: 2em;
+  position: absolute;
+  display: block;
+  right: 29px;
+  bottom: 22px;
+  z-index: 31;
+  font-family: "Fira Sans Condensed", sans-serif;
+  font-size: 18px;
+  line-height: 1;
+  background-color: white;
+  color: #666;
+  padding: 0;
+}
+
diff --git a/inst/reveal.js-5.2.1/css/theme/source/league.scss b/inst/reveal.js-5.2.1/css/theme/source/league.scss
new file mode 100644
index 0000000..ee01258
--- /dev/null
+++ b/inst/reveal.js-5.2.1/css/theme/source/league.scss
@@ -0,0 +1,36 @@
+/**
+ * League theme for reveal.js.
+ *
+ * This was the default theme pre-3.0.0.
+ *
+ * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
+ */
+
+
+// Default mixins and settings -----------------
+@import "../template/mixins";
+@import "../template/settings";
+// ---------------------------------------------
+
+
+
+// Include theme-specific fonts
+@import url(./fonts/league-gothic/league-gothic.css);
+@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
+
+// Override theme settings (see ../template/settings.scss)
+$headingTextShadow: 0px 0px 6px rgba(0,0,0,0.2);
+$heading1TextShadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,.1), 0 0 5px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.3), 0 3px 5px rgba(0,0,0,.2), 0 5px 10px rgba(0,0,0,.25), 0 20px 20px rgba(0,0,0,.15);
+
+// Background generator
+@mixin bodyBackground() {
+	@include radial-gradient( rgba(28,30,32,1), rgba(85,90,95,1) );
+}
+
+// Change text colors against light slide backgrounds
+@include light-bg-text-color(#222);
+
+
+// Theme template ------------------------------
+@import "../template/theme";
+// ---------------------------------------------
diff --git a/inst/reveal.js-5.2.1/css/theme/source/moon.scss b/inst/reveal.js-5.2.1/css/theme/source/moon.scss
new file mode 100644
index 0000000..de7d92f
--- /dev/null
+++ b/inst/reveal.js-5.2.1/css/theme/source/moon.scss
@@ -0,0 +1,55 @@
+/**
+ * Solarized Dark theme for reveal.js.
+ * Author: Achim Staebler
+ */
+
+
+// Default mixins and settings -----------------
+@use "sass:color";
+@import "../template/mixins";
+@import "../template/settings";
+// ---------------------------------------------
+
+
+
+// Include theme-specific fonts
+@import url(./fonts/league-gothic/league-gothic.css);
+@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
+
+/**
+ * Solarized colors by Ethan Schoonover
+ */
+
+// Solarized colors
+$base03:    #002b36;
+$base02:    #073642;
+$base01:    #586e75;
+$base00:    #657b83;
+$base0:     #839496;
+$base1:     #93a1a1;
+$base2:     #eee8d5;
+$base3:     #fdf6e3;
+$yellow:    #b58900;
+$orange:    #cb4b16;
+$red:       #dc322f;
+$magenta:   #d33682;
+$violet:    #6c71c4;
+$blue:      #268bd2;
+$cyan:      #2aa198;
+$green:     #859900;
+
+// Override theme settings (see ../template/settings.scss)
+$mainColor: $base1;
+$headingColor: $base2;
+$headingTextShadow: none;
+$backgroundColor: $base03;
+$linkColor: $blue;
+$linkColorHover: color.scale( $linkColor, $lightness: 20% );
+$selectionBackgroundColor: $magenta;
+
+// Change text colors against light slide backgrounds
+@include light-bg-text-color(#222);
+
+// Theme template ------------------------------
+@import "../template/theme";
+// ---------------------------------------------
diff --git a/inst/reveal.js-5.2.1/css/theme/source/night.scss b/inst/reveal.js-5.2.1/css/theme/source/night.scss
new file mode 100644
index 0000000..978cfc9
--- /dev/null
+++ b/inst/reveal.js-5.2.1/css/theme/source/night.scss
@@ -0,0 +1,38 @@
+/**
+ * Black theme for reveal.js.
+ *
+ * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
+ */
+
+
+// Default mixins and settings -----------------
+@use "sass:color";
+@import "../template/mixins";
+@import "../template/settings";
+// ---------------------------------------------
+
+
+// Include theme-specific fonts
+@import url(https://fonts.googleapis.com/css?family=Montserrat:700);
+@import url(https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic,700italic);
+
+
+// Override theme settings (see ../template/settings.scss)
+$backgroundColor: #111;
+
+$mainFont: 'Open Sans', sans-serif;
+$linkColor: #e7ad52;
+$linkColorHover: color.scale( $linkColor, $lightness: 20% );
+$headingFont: 'Montserrat', Impact, sans-serif;
+$headingTextShadow: none;
+$headingLetterSpacing: -0.03em;
+$headingTextTransform: none;
+$selectionBackgroundColor: #e7ad52;
+
+// Change text colors against light slide backgrounds
+@include light-bg-text-color(#222);
+
+
+// Theme template ------------------------------
+@import "../template/theme";
+// ---------------------------------------------
\ No newline at end of file
diff --git a/inst/reveal.js-5.2.1/css/theme/source/serif.scss b/inst/reveal.js-5.2.1/css/theme/source/serif.scss
new file mode 100644
index 0000000..bba4feb
--- /dev/null
+++ b/inst/reveal.js-5.2.1/css/theme/source/serif.scss
@@ -0,0 +1,42 @@
+/**
+ * A simple theme for reveal.js presentations, similar
+ * to the default theme. The accent color is brown.
+ *
+ * This theme is Copyright (C) 2012-2013 Owen Versteeg, http://owenversteeg.com - it is MIT licensed.
+ */
+
+
+// Default mixins and settings -----------------
+@use "sass:color";
+@import "../template/mixins";
+@import "../template/settings";
+// ---------------------------------------------
+
+
+
+// Override theme settings (see ../template/settings.scss)
+$mainFont: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif;
+$mainColor: #000;
+$headingFont: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif;
+$headingColor: #383D3D;
+$headingTextShadow: none;
+$headingTextTransform: none;
+$backgroundColor: #F0F1EB;
+$linkColor: #51483D;
+$linkColorHover: color.scale( $linkColor, $lightness: 20% );
+$selectionBackgroundColor: #26351C;
+
+$overlayElementBgColor: 0, 0, 0;
+$overlayElementFgColor: 240, 240, 240;
+
+.reveal a {
+  line-height: 1.3em;
+}
+
+// Change text colors against dark slide backgrounds
+@include dark-bg-text-color(#fff);
+
+
+// Theme template ------------------------------
+@import "../template/theme";
+// ---------------------------------------------
diff --git a/inst/reveal.js-5.2.1/css/theme/source/simple.scss b/inst/reveal.js-5.2.1/css/theme/source/simple.scss
new file mode 100644
index 0000000..7f2d625
--- /dev/null
+++ b/inst/reveal.js-5.2.1/css/theme/source/simple.scss
@@ -0,0 +1,44 @@
+/**
+ * A simple theme for reveal.js presentations, similar
+ * to the default theme. The accent color is darkblue.
+ *
+ * This theme is Copyright (C) 2012 Owen Versteeg, https://github.com/StereotypicalApps. It is MIT licensed.
+ * reveal.js is Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
+ */
+
+
+// Default mixins and settings -----------------
+@use "sass:color";
+@import "../template/mixins";
+@import "../template/settings";
+// ---------------------------------------------
+
+
+
+// Include theme-specific fonts
+@import url(https://fonts.googleapis.com/css?family=News+Cycle:400,700);
+@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
+
+
+// Override theme settings (see ../template/settings.scss)
+$mainFont: 'Lato', sans-serif;
+$mainColor: #000;
+$headingFont: 'News Cycle', Impact, sans-serif;
+$headingColor: #000;
+$headingTextShadow: none;
+$headingTextTransform: none;
+$backgroundColor: #fff;
+$linkColor: #00008B;
+$linkColorHover: color.scale( $linkColor, $lightness: 20% );
+$selectionBackgroundColor: rgba(0, 0, 0, 0.99);
+
+$overlayElementBgColor: 0, 0, 0;
+$overlayElementFgColor: 240, 240, 240;
+
+// Change text colors against dark slide backgrounds
+@include dark-bg-text-color(#fff);
+
+
+// Theme template ------------------------------
+@import "../template/theme";
+// ---------------------------------------------
\ No newline at end of file
diff --git a/inst/reveal.js-5.2.1/css/theme/source/sky.scss b/inst/reveal.js-5.2.1/css/theme/source/sky.scss
new file mode 100644
index 0000000..2244c7e
--- /dev/null
+++ b/inst/reveal.js-5.2.1/css/theme/source/sky.scss
@@ -0,0 +1,53 @@
+/**
+ * Sky theme for reveal.js.
+ *
+ * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
+ */
+
+
+// Default mixins and settings -----------------
+@use "sass:color";
+@import "../template/mixins";
+@import "../template/settings";
+// ---------------------------------------------
+
+
+
+// Include theme-specific fonts
+@import url(https://fonts.googleapis.com/css?family=Quicksand:400,700,400italic,700italic);
+@import url(https://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700);
+
+
+// Override theme settings (see ../template/settings.scss)
+$mainFont: 'Open Sans', sans-serif;
+$mainColor: #333;
+$headingFont: 'Quicksand', sans-serif;
+$headingColor: #333;
+$headingLetterSpacing: -0.08em;
+$headingTextShadow: none;
+$backgroundColor: #f7fbfc;
+$linkColor: #3b759e;
+$linkColorHover: color.scale( $linkColor, $lightness: 20% );
+$selectionBackgroundColor: #134674;
+
+$overlayElementBgColor: 0, 0, 0;
+$overlayElementFgColor: 240, 240, 240;
+
+// Fix links so they are not cut off
+.reveal a {
+	line-height: 1.3em;
+}
+
+// Background generator
+@mixin bodyBackground() {
+	@include radial-gradient( #add9e4, #f7fbfc );
+}
+
+// Change text colors against dark slide backgrounds
+@include dark-bg-text-color(#fff);
+
+
+
+// Theme template ------------------------------
+@import "../template/theme";
+// ---------------------------------------------
diff --git a/inst/reveal.js-5.2.1/css/theme/source/solarized.scss b/inst/reveal.js-5.2.1/css/theme/source/solarized.scss
new file mode 100644
index 0000000..c93c2a5
--- /dev/null
+++ b/inst/reveal.js-5.2.1/css/theme/source/solarized.scss
@@ -0,0 +1,67 @@
+/**
+ * Solarized Light theme for reveal.js.
+ * Author: Achim Staebler
+ */
+
+
+// Default mixins and settings -----------------
+@use "sass:color";
+@import "../template/mixins";
+@import "../template/settings";
+// ---------------------------------------------
+
+
+
+// Include theme-specific fonts
+@import url(./fonts/league-gothic/league-gothic.css);
+@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
+
+
+/**
+ * Solarized colors by Ethan Schoonover
+ */
+html * {
+	color-profile: sRGB;
+	rendering-intent: auto;
+}
+
+// Solarized colors
+$base03:    #002b36;
+$base02:    #073642;
+$base01:    #586e75;
+$base00:    #657b83;
+$base0:     #839496;
+$base1:     #93a1a1;
+$base2:     #eee8d5;
+$base3:     #fdf6e3;
+$yellow:    #b58900;
+$orange:    #cb4b16;
+$red:       #dc322f;
+$magenta:   #d33682;
+$violet:    #6c71c4;
+$blue:      #268bd2;
+$cyan:      #2aa198;
+$green:     #859900;
+
+// Override theme settings (see ../template/settings.scss)
+$mainColor: $base00;
+$headingColor: $base01;
+$headingTextShadow: none;
+$backgroundColor: $base3;
+$linkColor: $blue;
+$linkColorHover: color.scale( $linkColor, $lightness: 20% );
+$selectionBackgroundColor: $magenta;
+
+$overlayElementBgColor: 0, 0, 0;
+$overlayElementFgColor: 240, 240, 240;
+
+// Background generator
+// @mixin bodyBackground() {
+// 	@include radial-gradient( rgba($base3,1), rgba(lighten($base3, 20%),1) );
+// }
+
+
+
+// Theme template ------------------------------
+@import "../template/theme";
+// ---------------------------------------------
diff --git a/inst/reveal.js-5.2.1/css/theme/source/white-contrast.scss b/inst/reveal.js-5.2.1/css/theme/source/white-contrast.scss
new file mode 100644
index 0000000..29d6d94
--- /dev/null
+++ b/inst/reveal.js-5.2.1/css/theme/source/white-contrast.scss
@@ -0,0 +1,53 @@
+/**
+ * White compact & high contrast reveal.js theme, with headers not in capitals.
+ *
+ * By Peter Kehl. Based on white.(s)css by Hakim El Hattab, http://hakim.se
+ *
+ * - Keep the source similar to black.css - for easy comparison.
+ * - $mainFontSize controls code blocks, too (although under some ratio).
+ */
+
+
+// Default mixins and settings -----------------
+@use "sass:color";
+@import "../template/mixins";
+@import "../template/settings";
+// ---------------------------------------------
+
+
+// Include theme-specific fonts
+@import url(./fonts/source-sans-pro/source-sans-pro.css);
+
+
+// Override theme settings (see ../template/settings.scss)
+$backgroundColor: #fff;
+
+$mainColor: #000;
+$headingColor: #000;
+
+$mainFontSize: 42px;
+$mainFont: 'Source Sans Pro', Helvetica, sans-serif;
+$headingFont: 'Source Sans Pro', Helvetica, sans-serif;
+$headingTextShadow: none;
+$headingLetterSpacing: normal;
+$headingTextTransform: uppercase;
+$headingFontWeight: 600;
+$linkColor: #2a76dd;
+$linkColorHover: color.scale( $linkColor, $lightness: 15% );
+$selectionBackgroundColor: color.scale( $linkColor, $lightness: 25% );
+
+$heading1Size: 2.5em;
+$heading2Size: 1.6em;
+$heading3Size: 1.3em;
+$heading4Size: 1.0em;
+
+$overlayElementBgColor: 0, 0, 0;
+$overlayElementFgColor: 240, 240, 240;
+
+// Change text colors against dark slide backgrounds
+@include dark-bg-text-color(#fff);
+
+
+// Theme template ------------------------------
+@import "../template/theme";
+// ---------------------------------------------
diff --git a/inst/reveal.js-5.2.1/css/theme/source/white.scss b/inst/reveal.js-5.2.1/css/theme/source/white.scss
new file mode 100644
index 0000000..d4be653
--- /dev/null
+++ b/inst/reveal.js-5.2.1/css/theme/source/white.scss
@@ -0,0 +1,50 @@
+/**
+ * White theme for reveal.js. This is the opposite of the 'black' theme.
+ *
+ * By Hakim El Hattab, http://hakim.se
+ */
+
+
+// Default mixins and settings -----------------
+@use "sass:color";
+@import "../template/mixins";
+@import "../template/settings";
+// ---------------------------------------------
+
+
+// Include theme-specific fonts
+@import url(./fonts/source-sans-pro/source-sans-pro.css);
+
+
+// Override theme settings (see ../template/settings.scss)
+$backgroundColor: #fff;
+
+$mainColor: #222;
+$headingColor: #222;
+
+$mainFontSize: 42px;
+$mainFont: 'Source Sans Pro', Helvetica, sans-serif;
+$headingFont: 'Source Sans Pro', Helvetica, sans-serif;
+$headingTextShadow: none;
+$headingLetterSpacing: normal;
+$headingTextTransform: uppercase;
+$headingFontWeight: 600;
+$linkColor: #2a76dd;
+$linkColorHover: color.scale( $linkColor, $lightness: 15% );
+$selectionBackgroundColor: color.scale( $linkColor, $lightness: 25% );
+
+$heading1Size: 2.5em;
+$heading2Size: 1.6em;
+$heading3Size: 1.3em;
+$heading4Size: 1.0em;
+
+$overlayElementBgColor: 0, 0, 0;
+$overlayElementFgColor: 240, 240, 240;
+
+// Change text colors against dark slide backgrounds
+@include dark-bg-text-color(#fff);
+
+
+// Theme template ------------------------------
+@import "../template/theme";
+// ---------------------------------------------
diff --git a/inst/reveal.js-5.2.1/css/theme/template/exposer.scss b/inst/reveal.js-5.2.1/css/theme/template/exposer.scss
new file mode 100644
index 0000000..6f56d84
--- /dev/null
+++ b/inst/reveal.js-5.2.1/css/theme/template/exposer.scss
@@ -0,0 +1,32 @@
+// Exposes theme's variables for easy reuse in CSS for plugin authors
+
+@use "sass:color";
+
+:root {
+  --r-background-color: #{$backgroundColor};
+  --r-main-font: #{$mainFont};
+  --r-main-font-size: #{$mainFontSize};
+  --r-main-color: #{$mainColor};
+  --r-block-margin: #{$blockMargin};
+  --r-heading-margin: #{$headingMargin};
+  --r-heading-font: #{$headingFont};
+  --r-heading-color: #{$headingColor};
+  --r-heading-line-height: #{$headingLineHeight};
+  --r-heading-letter-spacing: #{$headingLetterSpacing};
+  --r-heading-text-transform: #{$headingTextTransform};
+  --r-heading-text-shadow: #{$headingTextShadow};
+  --r-heading-font-weight: #{$headingFontWeight};
+  --r-heading1-text-shadow: #{$heading1TextShadow};
+  --r-heading1-size: #{$heading1Size};
+  --r-heading2-size: #{$heading2Size};
+  --r-heading3-size: #{$heading3Size};
+  --r-heading4-size: #{$heading4Size};
+  --r-code-font: #{$codeFont};
+  --r-link-color: #{$linkColor};
+  --r-link-color-dark: #{color.scale( $linkColor, $lightness: -15% )};
+  --r-link-color-hover: #{$linkColorHover};
+  --r-selection-background-color: #{$selectionBackgroundColor};
+  --r-selection-color: #{$selectionColor};
+  --r-overlay-element-bg-color: #{$overlayElementBgColor};
+  --r-overlay-element-fg-color: #{$overlayElementFgColor};
+}
diff --git a/inst/reveal.js-5.2.1/css/theme/template/mixins.scss b/inst/reveal.js-5.2.1/css/theme/template/mixins.scss
new file mode 100644
index 0000000..17a3db5
--- /dev/null
+++ b/inst/reveal.js-5.2.1/css/theme/template/mixins.scss
@@ -0,0 +1,45 @@
+@mixin vertical-gradient( $top, $bottom ) {
+	background: $top;
+	background: -moz-linear-gradient( top, $top 0%, $bottom 100% );
+	background: -webkit-gradient( linear, left top, left bottom, color-stop(0%,$top), color-stop(100%,$bottom) );
+	background: -webkit-linear-gradient( top, $top 0%, $bottom 100% );
+	background: -o-linear-gradient( top, $top 0%, $bottom 100% );
+	background: -ms-linear-gradient( top, $top 0%, $bottom 100% );
+	background: linear-gradient( top, $top 0%, $bottom 100% );
+}
+
+@mixin horizontal-gradient( $top, $bottom ) {
+	background: $top;
+	background: -moz-linear-gradient( left, $top 0%, $bottom 100% );
+	background: -webkit-gradient( linear, left top, right top, color-stop(0%,$top), color-stop(100%,$bottom) );
+	background: -webkit-linear-gradient( left, $top 0%, $bottom 100% );
+	background: -o-linear-gradient( left, $top 0%, $bottom 100% );
+	background: -ms-linear-gradient( left, $top 0%, $bottom 100% );
+	background: linear-gradient( left, $top 0%, $bottom 100% );
+}
+
+@mixin radial-gradient( $outer, $inner, $type: circle ) {
+	background: $outer;
+	background: -moz-radial-gradient( center, $type cover,  $inner 0%, $outer 100% );
+	background: -webkit-gradient( radial, center center, 0px, center center, 100%, color-stop(0%,$inner), color-stop(100%,$outer) );
+	background: -webkit-radial-gradient( center, $type cover,  $inner 0%, $outer 100% );
+	background: -o-radial-gradient( center, $type cover,  $inner 0%, $outer 100% );
+	background: -ms-radial-gradient( center, $type cover,  $inner 0%, $outer 100% );
+	background: radial-gradient( center, $type cover,  $inner 0%, $outer 100% );
+}
+
+@mixin light-bg-text-color( $color ) {
+	section.has-light-background {
+		&, h1, h2, h3, h4, h5, h6 {
+			color: $color;
+		}
+	}
+}
+
+@mixin dark-bg-text-color( $color ) {
+	section.has-dark-background {
+		&, h1, h2, h3, h4, h5, h6 {
+			color: $color;
+		}
+	}
+}
\ No newline at end of file
diff --git a/inst/reveal.js-5.2.1/css/theme/template/settings.scss b/inst/reveal.js-5.2.1/css/theme/template/settings.scss
new file mode 100644
index 0000000..3436617
--- /dev/null
+++ b/inst/reveal.js-5.2.1/css/theme/template/settings.scss
@@ -0,0 +1,52 @@
+@use "sass:color";
+
+// Base settings for all themes that can optionally be
+// overridden by the super-theme
+
+// Background of the presentation
+$backgroundColor: #2b2b2b;
+
+// Primary/body text
+$mainFont: 'Lato', sans-serif;
+$mainFontSize: 40px;
+$mainColor: #eee;
+
+// Vertical spacing between blocks of text
+$blockMargin: 20px;
+
+// Headings
+$headingMargin: 0 0 $blockMargin 0;
+$headingFont: 'League Gothic', Impact, sans-serif;
+$headingColor: #eee;
+$headingLineHeight: 1.2;
+$headingLetterSpacing: normal;
+$headingTextTransform: uppercase;
+$headingTextShadow: none;
+$headingFontWeight: normal;
+$heading1TextShadow: $headingTextShadow;
+
+$heading1Size: 3.77em;
+$heading2Size: 2.11em;
+$heading3Size: 1.55em;
+$heading4Size: 1.00em;
+
+$codeFont: monospace;
+
+// Links and actions
+$linkColor: #13DAEC;
+$linkColorHover: color.scale( $linkColor, $lightness: 20% );
+
+// Text selection
+$selectionBackgroundColor: #FF5E99;
+$selectionColor: #fff;
+
+// Colors used for UI elements that are overlaid on top of
+// the presentation
+$overlayElementBgColor: 240, 240, 240;
+$overlayElementFgColor: 0, 0, 0;
+
+// Generates the presentation background, can be overridden
+// to return a background image or gradient
+@mixin bodyBackground() {
+	background: $backgroundColor;
+}
diff --git a/inst/reveal.js-5.2.1/css/theme/template/theme.scss b/inst/reveal.js-5.2.1/css/theme/template/theme.scss
new file mode 100644
index 0000000..abf95f3
--- /dev/null
+++ b/inst/reveal.js-5.2.1/css/theme/template/theme.scss
@@ -0,0 +1,330 @@
+// Base theme template for reveal.js
+
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+
+@import "./exposer";
+
+.reveal-viewport {
+	@include bodyBackground();
+	background-color: var(--r-background-color);
+}
+
+.reveal {
+	font-family: var(--r-main-font);
+	font-size: var(--r-main-font-size);
+	font-weight: normal;
+	color: var(--r-main-color);
+}
+
+.reveal ::selection {
+	color: var(--r-selection-color);
+	background: var(--r-selection-background-color);
+	text-shadow: none;
+}
+
+.reveal ::-moz-selection {
+	color: var(--r-selection-color);
+	background: var(--r-selection-background-color);
+	text-shadow: none;
+}
+
+.reveal .slides section,
+.reveal .slides section>section {
+	line-height: 1.3;
+	font-weight: inherit;
+}
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+	margin: var(--r-heading-margin);
+	color: var(--r-heading-color);
+
+	font-family: var(--r-heading-font);
+	font-weight: var(--r-heading-font-weight);
+	line-height: var(--r-heading-line-height);
+	letter-spacing: var(--r-heading-letter-spacing);
+
+	text-transform: var(--r-heading-text-transform);
+	text-shadow: var(--r-heading-text-shadow);
+
+	word-wrap: break-word;
+}
+
+.reveal h1 {font-size: var(--r-heading1-size); }
+.reveal h2 {font-size: var(--r-heading2-size); }
+.reveal h3 {font-size: var(--r-heading3-size); }
+.reveal h4 {font-size: var(--r-heading4-size); }
+
+.reveal h1 {
+	text-shadow: var(--r-heading1-text-shadow);
+}
+
+
+/*********************************************
+ * OTHER
+ *********************************************/
+
+.reveal p {
+	margin: var(--r-block-margin) 0;
+	line-height: 1.3;
+}
+
+/* Remove trailing margins after titles */
+.reveal h1:last-child,
+.reveal h2:last-child,
+.reveal h3:last-child,
+.reveal h4:last-child,
+.reveal h5:last-child,
+.reveal h6:last-child {
+	margin-bottom: 0;
+}
+
+/* Ensure certain elements are never larger than the slide itself */
+.reveal img,
+.reveal video,
+.reveal iframe {
+	max-width: 95%;
+	max-height: 95%;
+}
+.reveal strong,
+.reveal b {
+	font-weight: bold;
+}
+
+.reveal em {
+	font-style: italic;
+}
+
+.reveal ol,
+.reveal dl,
+.reveal ul {
+	display: inline-block;
+
+	text-align: left;
+	margin: 0 0 0 1em;
+}
+
+.reveal ol {
+	list-style-type: decimal;
+}
+
+.reveal ul {
+	list-style-type: disc;
+}
+
+.reveal ul ul {
+	list-style-type: square;
+}
+
+.reveal ul ul ul {
+	list-style-type: circle;
+}
+
+.reveal ul ul,
+.reveal ul ol,
+.reveal ol ol,
+.reveal ol ul {
+	display: block;
+	margin-left: 40px;
+}
+
+.reveal dt {
+	font-weight: bold;
+}
+
+.reveal dd {
+	margin-left: 40px;
+}
+
+.reveal blockquote {
+	display: block;
+	position: relative;
+	width: 70%;
+	margin: var(--r-block-margin) auto;
+	padding: 5px;
+
+	font-style: italic;
+	background: rgba(255, 255, 255, 0.05);
+	box-shadow: 0px 0px 2px rgba(0,0,0,0.2);
+}
+	.reveal blockquote p:first-child,
+	.reveal blockquote p:last-child {
+		display: inline-block;
+	}
+
+.reveal q {
+	font-style: italic;
+}
+
+.reveal pre {
+	display: block;
+	position: relative;
+	width: 90%;
+	margin: var(--r-block-margin) auto;
+
+	text-align: left;
+	font-size: 0.55em;
+	font-family: var(--r-code-font);
+	line-height: 1.2em;
+
+	word-wrap: break-word;
+
+	box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15);
+}
+
+.reveal code {
+	font-family: var(--r-code-font);
+	text-transform: none;
+	tab-size: 2;
+}
+
+.reveal pre code {
+	display: block;
+	padding: 5px;
+	overflow: auto;
+	max-height: 400px;
+	word-wrap: normal;
+}
+
+.reveal .code-wrapper {
+	white-space: normal;
+}
+
+.reveal .code-wrapper code {
+	white-space: pre;
+}
+
+.reveal table {
+	margin: auto;
+	border-collapse: collapse;
+	border-spacing: 0;
+}
+
+.reveal table th {
+	font-weight: bold;
+}
+
+.reveal table th,
+.reveal table td {
+	text-align: left;
+	padding: 0.2em 0.5em 0.2em 0.5em;
+	border-bottom: 1px solid;
+}
+
+.reveal table th[align="center"],
+.reveal table td[align="center"] {
+	text-align: center;
+}
+
+.reveal table th[align="right"],
+.reveal table td[align="right"] {
+	text-align: right;
+}
+
+.reveal table tbody tr:last-child th,
+.reveal table tbody tr:last-child td {
+	border-bottom: none;
+}
+
+.reveal sup {
+	vertical-align: super;
+	font-size: smaller;
+}
+.reveal sub {
+	vertical-align: sub;
+	font-size: smaller;
+}
+
+.reveal small {
+	display: inline-block;
+	font-size: 0.6em;
+	line-height: 1.2em;
+	vertical-align: top;
+}
+
+.reveal small * {
+	vertical-align: top;
+}
+
+.reveal img {
+	margin: var(--r-block-margin) 0;
+}
+
+
+/*********************************************
+ * LINKS
+ *********************************************/
+
+.reveal a {
+	color: var(--r-link-color);
+	text-decoration: none;
+	transition: color .15s ease;
+}
+	.reveal a:hover {
+		color: var(--r-link-color-hover);
+		text-shadow: none;
+		border: none;
+	}
+
+.reveal .roll span:after {
+	color: #fff;
+	background: var(--r-link-color-dark);
+
+}
+
+
+/*********************************************
+ * Frame helper
+ *********************************************/
+
+.reveal .r-frame {
+	border: 4px solid var(--r-main-color);
+	box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+}
+
+.reveal a .r-frame {
+	transition: all .15s linear;
+}
+
+.reveal a:hover .r-frame {
+	border-color: var(--r-link-color);
+	box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
+}
+
+
+/*********************************************
+ * NAVIGATION CONTROLS
+ *********************************************/
+
+.reveal .controls {
+	color: var(--r-link-color);
+}
+
+
+/*********************************************
+ * PROGRESS BAR
+ *********************************************/
+
+.reveal .progress {
+	background: rgba(0,0,0,0.2);
+	color: var(--r-link-color);
+}
+
+/*********************************************
+ * PRINT BACKGROUND
+ *********************************************/
+ @media print {
+    .backgrounds {
+        background-color: var(--r-background-color);
+    }
+}
