escience_theme 0.1.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +133 -11
- package/escience.css +448 -0
- package/{escience_5.1.0.esm.js → escience.js} +180 -1118
- package/package.json +23 -4
- package/flake.lock +0 -61
- package/flake.nix +0 -16
- package/index.js +0 -2
package/README.md
CHANGED
|
@@ -2,23 +2,145 @@
|
|
|
2
2
|
|
|
3
3
|
This plugin applies the [eScience Center](https://www.esciencecenter.nl/) Theme to reveal.js.
|
|
4
4
|
|
|
5
|
+
The package has two parts:
|
|
6
|
+
|
|
7
|
+
- `escience_theme`: the reveal.js plugin. It adds the decorations (logo,
|
|
8
|
+
overlays, flags, panes) and switches them per slide based on `data-state`.
|
|
9
|
+
- `escience_theme/escience.css`: the styles. The plugin does not inject CSS
|
|
10
|
+
itself, so this stylesheet has to be loaded alongside it.
|
|
11
|
+
|
|
5
12
|
## Setup
|
|
6
13
|
|
|
7
|
-
|
|
14
|
+
Works with reveal.js 5 and 6 (peer dependency). Load reveal.js's own black
|
|
15
|
+
theme and monokai highlight theme first, then the eScience styles.
|
|
16
|
+
|
|
17
|
+
reveal.js 6:
|
|
18
|
+
|
|
19
|
+
```js
|
|
20
|
+
import Reveal from 'reveal.js';
|
|
21
|
+
import Highlight from 'reveal.js/plugin/highlight';
|
|
22
|
+
import Escience from 'escience_theme';
|
|
23
|
+
|
|
24
|
+
import 'reveal.js/reveal.css';
|
|
25
|
+
import 'reveal.js/theme/black.css';
|
|
26
|
+
import 'reveal.js/plugin/highlight/monokai.css';
|
|
27
|
+
import 'escience_theme/escience.css';
|
|
28
|
+
|
|
29
|
+
new Reveal({ plugins: [Highlight, Escience] }).initialize();
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
reveal.js 5 uses different paths for the same files:
|
|
33
|
+
|
|
34
|
+
```js
|
|
35
|
+
import Highlight from 'reveal.js/plugin/highlight/highlight.esm.js';
|
|
36
|
+
import 'reveal.js/dist/reveal.css';
|
|
37
|
+
import 'reveal.js/dist/theme/black.css';
|
|
38
|
+
import 'reveal.js/plugin/highlight/monokai.css';
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
The CSS imports assume a bundler (Vite, webpack). Without one, use
|
|
42
|
+
`<link rel="stylesheet">` tags in the same order.
|
|
43
|
+
|
|
44
|
+
## Slide states
|
|
45
|
+
|
|
46
|
+
Set the look of a slide with `data-state`, e.g. in reveal.js markdown:
|
|
47
|
+
|
|
48
|
+
```markdown
|
|
49
|
+
<!-- .slide: data-state="standard" -->
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
`data-state` is a space-separated list of words. Presets: `standard`,
|
|
53
|
+
`title`, `two_pane`, `about`, `keepintouch` (or `touch`). Single decorations
|
|
54
|
+
can be combined freely with them and with each other: `white_overlay`,
|
|
55
|
+
`blue_overlay`, `purple_overlay`, `black_overlay`, `logo`, `yellow_flag`,
|
|
56
|
+
`yellow_strip`, `blue_pane_left`, `blue_pane_right`, `touch_pane`,
|
|
57
|
+
`purple_half_circle_top`, `purple_half_circle_bottom`, `purple_strip_bottom`,
|
|
58
|
+
`yellow_half_strip`, `purple_blob`, `right_e_top`, `right_e_bottom`, and
|
|
59
|
+
`clear_background` (moves overlays and panes away, e.g. for an interactive
|
|
60
|
+
background iframe). A slide without `data-state` shows no decorations.
|
|
61
|
+
|
|
62
|
+
A `<footer>` element in a slide is shown in a blue strip at the bottom right.
|
|
63
|
+
|
|
64
|
+
A number from 0 to 10 sets the overlay opacity in tenths: `standard 6` lets a
|
|
65
|
+
background image show through, `standard 10` is opaque. Without a number the
|
|
66
|
+
overlay is opaque, unless the slide has a background image, video or iframe
|
|
67
|
+
(`data-background-image`, `-video`, `-iframe`); then it is 0.8, so the
|
|
68
|
+
background stays faintly visible.
|
|
69
|
+
|
|
70
|
+
## Layout classes
|
|
71
|
+
|
|
72
|
+
For use inside slides, e.g. as HTML in reveal.js markdown.
|
|
73
|
+
|
|
74
|
+
**`.columns`** lays its children out in a grid: two equal columns by default,
|
|
75
|
+
or any `grid-template-columns` value in `--columns`. Further children wrap
|
|
76
|
+
into new rows; `--gap` sets the gap. reveal.js's own `.items-center`,
|
|
77
|
+
`.items-start` etc. align the columns vertically.
|
|
78
|
+
|
|
79
|
+
```html
|
|
80
|
+
<div class="columns items-center" style="--columns: 7fr 3fr">
|
|
81
|
+
<div>text</div>
|
|
82
|
+
<img src="photo.jpg">
|
|
83
|
+
</div>
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**`.card`** is a padded light-gray box with dark text. `.card.bordered` has a
|
|
87
|
+
border only and keeps the slide's colours; `.card.highlight` has a blue
|
|
88
|
+
border. A card inside a filled card is white.
|
|
89
|
+
|
|
90
|
+
**`.stepper`** shows steps one by one. Its `.step` elements are the steps: the
|
|
91
|
+
first one plain, the later ones fragments. The current step (the last one
|
|
92
|
+
shown; the plugin marks it with `.current-step`) gets a blue border if it has
|
|
93
|
+
a border, e.g. as `.step.card`, and only
|
|
94
|
+
its `.detail` is displayed: the `.detail` right after the step, or one inside
|
|
95
|
+
it. `.stepper.preview` shows upcoming steps faded instead of hidden.
|
|
96
|
+
`--columns` and `--gap` on the stepper apply to its `.columns` rows.
|
|
8
97
|
|
|
9
98
|
```html
|
|
10
|
-
<
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
plugins: [ Escience ],
|
|
17
|
-
// ...
|
|
18
|
-
});
|
|
19
|
-
</script>
|
|
99
|
+
<div class="stepper" style="--columns: 7em repeat(2, 1fr)">
|
|
100
|
+
<div class="step card columns"><strong>Create</strong><span>Generate</span><span>Summarize</span></div>
|
|
101
|
+
<div class="detail columns"><em>e.g.</em><span>Text, code</span><span>Papers</span></div>
|
|
102
|
+
<div class="step card columns fragment"><strong>Find</strong><span>Search</span><span>Predict</span></div>
|
|
103
|
+
<div class="detail columns"><em>e.g.</em><span>Documents</span><span>Outcomes</span></div>
|
|
104
|
+
</div>
|
|
20
105
|
```
|
|
21
106
|
|
|
107
|
+
## Printing
|
|
108
|
+
|
|
109
|
+
Decks print with reveal.js's print view (`?print-pdf` in the URL, then print
|
|
110
|
+
to PDF from the browser). Every page gets the decorations of its own slide.
|
|
111
|
+
The overview (Esc) shows every slide with its decorations as well.
|
|
112
|
+
|
|
113
|
+
## Development
|
|
114
|
+
|
|
115
|
+
```sh
|
|
116
|
+
npm install
|
|
117
|
+
npm test
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
`npm test` renders `test/fixture/deck.html` in Chromium (`CHROME` overrides
|
|
121
|
+
the executable), screenshots every slide and overview mode, and compares them
|
|
122
|
+
with the theme at `BASELINE_REF` (default `v0.2.0`; a revision before 0.2.0,
|
|
123
|
+
such as `1ef0fd0`, loads the old single-file plugin). Each slide must match
|
|
124
|
+
pixel by pixel, and the computed typography (font, weight, style, text
|
|
125
|
+
transform) of every element on it must match too, as must that of the speaker
|
|
126
|
+
notes panel.
|
|
127
|
+
Screenshots and diffs land in `test/output/`. Set `MAX_DIFF` to allow a number
|
|
128
|
+
of differing pixels per screenshot.
|
|
129
|
+
|
|
130
|
+
Every stepper is walked fragment by fragment (exactly the last shown step is
|
|
131
|
+
current, only its details are displayed), and in the overview every thumbnail
|
|
132
|
+
must carry its slide's decorations, removed again when the overview closes.
|
|
133
|
+
A second pass opens the deck in print view and checks that every page shows
|
|
134
|
+
the decorations, logo, link colours and background classes its slide shows on
|
|
135
|
+
screen, and that no decoration covers the slide's heading.
|
|
136
|
+
|
|
137
|
+
Fixture slides can declare what they expect from the current theme:
|
|
138
|
+
`data-expect-opacity` (overlay opacity), `data-expect-selection` (text
|
|
139
|
+
selection colours), `data-fonts-differ` (elements whose typography may differ
|
|
140
|
+
from the baseline) and `data-baseline-differs` (left out of both comparisons because the slide
|
|
141
|
+
changes on purpose). `data-overview-differs` on `.reveal` leaves the overview
|
|
142
|
+
screenshot out of the pixel comparison.
|
|
143
|
+
|
|
22
144
|
## License
|
|
23
145
|
|
|
24
146
|
Apache-2.0 licensed
|
package/escience.css
ADDED
|
@@ -0,0 +1,448 @@
|
|
|
1
|
+
@import url('https://fonts.googleapis.com/css2?family=Assistant:wght@200..800&family=Fira+Code:wght@300..700&family=Nunito:ital,wght@0,200..1000;1,200..1000&display=swap');
|
|
2
|
+
@import url('https://fonts.googleapis.com/icon?family=Material+Icons');
|
|
3
|
+
/*********************************************
|
|
4
|
+
* COLORS
|
|
5
|
+
*********************************************/
|
|
6
|
+
|
|
7
|
+
:root {
|
|
8
|
+
--nlesc-blue: #009DDD;
|
|
9
|
+
--nlesc-purple: #380339;
|
|
10
|
+
--nlesc-yellow: #FFB213;
|
|
11
|
+
--light-gray: #D8D8D8;
|
|
12
|
+
--dark-gray: #2b2b2b;
|
|
13
|
+
--gray-transparent: rgba(128, 128, 128, .5);
|
|
14
|
+
|
|
15
|
+
--link-color: var(--nlesc-purple);
|
|
16
|
+
--link-color-hover: var(--nlesc-yellow);
|
|
17
|
+
|
|
18
|
+
/* reveal.js theme variables (black.css reads these; this file loads after it) */
|
|
19
|
+
--r-main-font: "Assistant", sans-serif;
|
|
20
|
+
--r-heading-font: "Nunito", sans-serif;
|
|
21
|
+
--r-heading-font-weight: 700;
|
|
22
|
+
--r-heading-text-transform: none;
|
|
23
|
+
--r-code-font: "Fira Code", monospace;
|
|
24
|
+
--r-selection-color: #fff;
|
|
25
|
+
--r-selection-background-color: var(--nlesc-purple);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/*********************************************
|
|
29
|
+
* GLOBAL STYLES
|
|
30
|
+
*
|
|
31
|
+
* Fonts are set through the --r-* variables above, which the reveal.js
|
|
32
|
+
* theme applies to body text, headings and code. Slide content can
|
|
33
|
+
* override font and weight with ordinary CSS.
|
|
34
|
+
* Rules are scoped to .reveal so that the page around an embedded deck
|
|
35
|
+
* (e.g. a NEBULA site) keeps its own typography. :where() gives a rule
|
|
36
|
+
* the specificity of its bare element selector, so class rules such as
|
|
37
|
+
* .hljs (code highlighting) take precedence.
|
|
38
|
+
*********************************************/
|
|
39
|
+
|
|
40
|
+
.reveal {
|
|
41
|
+
font-size: 36px; } /* make stuff smaller */
|
|
42
|
+
|
|
43
|
+
/* reveal.css gives these Helvetica; keep them in the theme font */
|
|
44
|
+
.reveal .speaker-notes,
|
|
45
|
+
.reveal .slide-number,
|
|
46
|
+
.reveal .r-overlay {
|
|
47
|
+
font-family: var(--r-main-font);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.reveal h4, .reveal h5, .reveal h6 {
|
|
51
|
+
font-family: var(--r-main-font);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
:where(.reveal) code {
|
|
55
|
+
font-weight: 500;
|
|
56
|
+
background-color: var(--gray-transparent);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
/*********************************************
|
|
61
|
+
* CUSTOM COLORS
|
|
62
|
+
*********************************************/
|
|
63
|
+
.primary { color: var(--nlesc-blue) !important; }
|
|
64
|
+
.secondary { color: var(--nlesc-purple) !important; }
|
|
65
|
+
.tertiary { color: var(--light-gray) !important; }
|
|
66
|
+
|
|
67
|
+
/*********************************************
|
|
68
|
+
* LINKS
|
|
69
|
+
*********************************************/
|
|
70
|
+
.reveal a {
|
|
71
|
+
color: var(--link-color); }
|
|
72
|
+
|
|
73
|
+
.reveal a:hover {
|
|
74
|
+
color: var(--link-color-hover); }
|
|
75
|
+
|
|
76
|
+
/* escience.js marks each slide with the background its links sit on */
|
|
77
|
+
.reveal section[data-escience-links="on-light"] {
|
|
78
|
+
--link-color: var(--nlesc-blue);
|
|
79
|
+
--link-color-hover: var(--nlesc-yellow); }
|
|
80
|
+
|
|
81
|
+
.reveal section[data-escience-links="on-dark"] {
|
|
82
|
+
--link-color: var(--nlesc-yellow);
|
|
83
|
+
--link-color-hover: var(--nlesc-blue); }
|
|
84
|
+
|
|
85
|
+
.reveal section[data-escience-links="on-blue"] {
|
|
86
|
+
--link-color: var(--nlesc-yellow);
|
|
87
|
+
--link-color-hover: var(--nlesc-purple); }
|
|
88
|
+
|
|
89
|
+
.reveal .roll span:after {
|
|
90
|
+
color: #fff;
|
|
91
|
+
background: var(--nlesc-blue); }
|
|
92
|
+
|
|
93
|
+
/*********************************************
|
|
94
|
+
* IMAGES
|
|
95
|
+
*********************************************/
|
|
96
|
+
.reveal section img { /* undo stupid img frames */
|
|
97
|
+
background: none;
|
|
98
|
+
border: none;
|
|
99
|
+
box-shadow: none;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.reveal a:hover img {
|
|
103
|
+
border-color: var(--nlesc-blue); }
|
|
104
|
+
|
|
105
|
+
/*********************************************
|
|
106
|
+
* HIGHLIGHT COLORS
|
|
107
|
+
*********************************************/
|
|
108
|
+
|
|
109
|
+
.reveal .slides section .fragment.highlight-blue.visible {
|
|
110
|
+
color: var(--nlesc-blue); }
|
|
111
|
+
|
|
112
|
+
/*********************************************
|
|
113
|
+
* NAVIGATION CONTROLS
|
|
114
|
+
*********************************************/
|
|
115
|
+
.reveal .controls {
|
|
116
|
+
color: var(--nlesc-yellow); }
|
|
117
|
+
|
|
118
|
+
/*********************************************
|
|
119
|
+
* PROGRESS BAR
|
|
120
|
+
*********************************************/
|
|
121
|
+
.reveal .progress {
|
|
122
|
+
background: rgba(0, 0, 0, 0.2);
|
|
123
|
+
color: var(--nlesc-yellow); }
|
|
124
|
+
|
|
125
|
+
.reveal .progress span {
|
|
126
|
+
background: var(--nlesc-yellow);
|
|
127
|
+
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
|
|
128
|
+
|
|
129
|
+
/*********************************************
|
|
130
|
+
* LAYOUT
|
|
131
|
+
*
|
|
132
|
+
* .columns grid, two equal columns unless --columns gives a
|
|
133
|
+
* grid-template-columns value ("7fr 3fr", "repeat(3, 1fr)");
|
|
134
|
+
* further children wrap into new rows. --gap sets the gap.
|
|
135
|
+
* Combine with reveal.js's .items-center etc. for alignment.
|
|
136
|
+
* .card padded box in light gray, with even spacing between its
|
|
137
|
+
* children; .bordered: border only; .highlight: blue border.
|
|
138
|
+
* A card inside a filled card is white.
|
|
139
|
+
* .stepper steps that appear one by one: .step elements, the first one
|
|
140
|
+
* plain, later ones fragments. The current step (the last one
|
|
141
|
+
* shown, marked .current-step by escience.js) gets a blue
|
|
142
|
+
* border if it has one (e.g. .step.card), and
|
|
143
|
+
* only its .detail is shown: the .detail right after the step or
|
|
144
|
+
* inside it. When the steps are cards, the stepper's other rows
|
|
145
|
+
* line up with the cards' content. .preview shows upcoming steps
|
|
146
|
+
* faded instead of hidden. --columns and --gap on the stepper
|
|
147
|
+
* apply to its .columns rows.
|
|
148
|
+
*
|
|
149
|
+
* --columns and --gap apply only to the element they are set on, so a
|
|
150
|
+
* nested .columns starts from the defaults again.
|
|
151
|
+
*********************************************/
|
|
152
|
+
@property --columns { syntax: "*"; inherits: false; }
|
|
153
|
+
@property --gap { syntax: "*"; inherits: false; }
|
|
154
|
+
|
|
155
|
+
.reveal .columns {
|
|
156
|
+
display: grid;
|
|
157
|
+
grid-template-columns: var(--columns, repeat(2, minmax(0, 1fr)));
|
|
158
|
+
gap: var(--gap, .5em);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.reveal .card {
|
|
162
|
+
padding: .4em .6em; /* the stepper's row alignment below uses .6em */
|
|
163
|
+
border: 2px solid var(--light-gray);
|
|
164
|
+
border-radius: 8px;
|
|
165
|
+
background-color: var(--light-gray);
|
|
166
|
+
color: #222;
|
|
167
|
+
text-align: start;
|
|
168
|
+
--r-heading-color: #222;
|
|
169
|
+
--link-color: var(--nlesc-blue);
|
|
170
|
+
--link-color-hover: var(--nlesc-purple);
|
|
171
|
+
}
|
|
172
|
+
.reveal .card > * { margin-block: 0; }
|
|
173
|
+
.reveal .card:not(.columns) > * + * { margin-top: .4em; }
|
|
174
|
+
.reveal .card:not(.bordered) .card:not(.bordered) {
|
|
175
|
+
border-color: white;
|
|
176
|
+
background-color: white;
|
|
177
|
+
}
|
|
178
|
+
.reveal .card.bordered {
|
|
179
|
+
background-color: transparent;
|
|
180
|
+
color: inherit;
|
|
181
|
+
--r-heading-color: inherit;
|
|
182
|
+
--link-color: inherit;
|
|
183
|
+
--link-color-hover: inherit;
|
|
184
|
+
}
|
|
185
|
+
.reveal .card.highlight { border-color: var(--nlesc-blue); }
|
|
186
|
+
|
|
187
|
+
.reveal .stepper { text-align: start; }
|
|
188
|
+
.reveal .stepper > * { --columns: inherit; --gap: inherit; }
|
|
189
|
+
.reveal .stepper > .step.card { margin-block: .4em; }
|
|
190
|
+
.reveal .stepper:has(> .step.card) > :not(.step) { padding-inline: calc(.6em + 2px); }
|
|
191
|
+
|
|
192
|
+
/* escience.js marks the current step with .current-step */
|
|
193
|
+
.reveal .stepper .step.current-step { border-color: var(--nlesc-blue); }
|
|
194
|
+
.reveal .stepper .step:not(.current-step) + .detail,
|
|
195
|
+
.reveal .stepper .step:not(.current-step) .detail {
|
|
196
|
+
display: none;
|
|
197
|
+
}
|
|
198
|
+
.reveal .slides section .stepper.preview .step.fragment:not(.visible) {
|
|
199
|
+
opacity: .35;
|
|
200
|
+
visibility: inherit;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/*********************************************
|
|
204
|
+
* FOOTER
|
|
205
|
+
*********************************************/
|
|
206
|
+
|
|
207
|
+
.slides .footer {
|
|
208
|
+
font-size: x-small !important;
|
|
209
|
+
width: 100%;
|
|
210
|
+
clear: both;
|
|
211
|
+
/* padding: 50px 0 0 0;*/
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/*********************************************
|
|
215
|
+
* PRINT BACKGROUND
|
|
216
|
+
*********************************************/
|
|
217
|
+
@media print {
|
|
218
|
+
.backgrounds {
|
|
219
|
+
background-color: var(--dark-gray); } }
|
|
220
|
+
|
|
221
|
+
/*********************************************
|
|
222
|
+
* DECORATIONS
|
|
223
|
+
*
|
|
224
|
+
* escience.js inserts one .escience-decorations root per deck (per page in
|
|
225
|
+
* print view) and sets on it:
|
|
226
|
+
* data-show space-separated names of the decorations to show
|
|
227
|
+
* data-logo color | white | part-white
|
|
228
|
+
* --escience-overlay-opacity
|
|
229
|
+
* Hidden decorations sit outside the slide; shown ones slide or fade in.
|
|
230
|
+
* The root has no box of its own, so the decorations are positioned
|
|
231
|
+
* against .reveal (or the print page background).
|
|
232
|
+
*********************************************/
|
|
233
|
+
.escience-decorations { display: contents; }
|
|
234
|
+
|
|
235
|
+
.escience-decorations > * { position: absolute; z-index: 2; }
|
|
236
|
+
|
|
237
|
+
/* Full-size overlays, under everything else */
|
|
238
|
+
.escience-purple-overlay,
|
|
239
|
+
.escience-blue-overlay,
|
|
240
|
+
.escience-white-overlay,
|
|
241
|
+
.escience-black-overlay {
|
|
242
|
+
inset: 0;
|
|
243
|
+
z-index: 1;
|
|
244
|
+
opacity: 0;
|
|
245
|
+
transition: opacity 1s; }
|
|
246
|
+
.escience-purple-overlay { background-color: var(--nlesc-purple); }
|
|
247
|
+
.escience-blue-overlay { background-color: var(--nlesc-blue); }
|
|
248
|
+
.escience-white-overlay { background-color: white; }
|
|
249
|
+
.escience-black-overlay { background-color: black; }
|
|
250
|
+
|
|
251
|
+
/* Panes */
|
|
252
|
+
.escience-blue-pane-left,
|
|
253
|
+
.escience-blue-pane-right,
|
|
254
|
+
.escience-touch-pane {
|
|
255
|
+
top: 0;
|
|
256
|
+
bottom: 0;
|
|
257
|
+
opacity: 0;
|
|
258
|
+
transition: opacity 1s; }
|
|
259
|
+
.escience-blue-pane-left { left: 0; right: 50%; background-color: var(--nlesc-blue); }
|
|
260
|
+
.escience-blue-pane-right { left: 50%; right: 0; background-color: var(--nlesc-blue); }
|
|
261
|
+
.escience-touch-pane {
|
|
262
|
+
left: 0;
|
|
263
|
+
right: 66.6%;
|
|
264
|
+
display: flex;
|
|
265
|
+
align-items: center;
|
|
266
|
+
justify-content: center;
|
|
267
|
+
background-color: white; }
|
|
268
|
+
.escience-touch-pane h1 { color: black; text-align: left; }
|
|
269
|
+
|
|
270
|
+
/* Logo, top left; data-logo picks the variant */
|
|
271
|
+
.escience-logo {
|
|
272
|
+
top: 1.5vh;
|
|
273
|
+
left: -12vw;
|
|
274
|
+
opacity: 0;
|
|
275
|
+
transition: opacity 1s, left 1s; }
|
|
276
|
+
.escience-logo svg { width: 12vw; }
|
|
277
|
+
|
|
278
|
+
/* Shapes */
|
|
279
|
+
.escience-yellow-strip {
|
|
280
|
+
left: -10vw;
|
|
281
|
+
bottom: 0;
|
|
282
|
+
width: 10vw;
|
|
283
|
+
height: 70vh;
|
|
284
|
+
border-radius: 10vw 10vw 0 0;
|
|
285
|
+
background-color: var(--nlesc-yellow);
|
|
286
|
+
transition: left 1s; }
|
|
287
|
+
|
|
288
|
+
.escience-yellow-flag {
|
|
289
|
+
left: -10vh;
|
|
290
|
+
bottom: 5vh;
|
|
291
|
+
width: 10vh;
|
|
292
|
+
height: 12vh;
|
|
293
|
+
border-radius: 0 6vh 6vh 0;
|
|
294
|
+
z-index: 3;
|
|
295
|
+
background-color: var(--nlesc-yellow);
|
|
296
|
+
transition: left 1s, bottom 1s; }
|
|
297
|
+
.escience-yellow-flag svg { position: absolute; height: 10vh; margin: 1vh 0; }
|
|
298
|
+
|
|
299
|
+
.escience-purple-half-circle-top {
|
|
300
|
+
left: 0;
|
|
301
|
+
top: -17vw;
|
|
302
|
+
width: 34vw;
|
|
303
|
+
height: 17vw;
|
|
304
|
+
border-radius: 0 0 20vw 20vw;
|
|
305
|
+
background-color: var(--nlesc-purple);
|
|
306
|
+
transition: top 1s; }
|
|
307
|
+
|
|
308
|
+
.escience-purple-half-circle-bottom {
|
|
309
|
+
left: 0;
|
|
310
|
+
bottom: -10vw;
|
|
311
|
+
width: 20vw;
|
|
312
|
+
height: 10vw;
|
|
313
|
+
border-radius: 20vw 20vw 0 0;
|
|
314
|
+
background-color: var(--nlesc-purple);
|
|
315
|
+
transition: bottom 1s; }
|
|
316
|
+
.escience-purple-half-circle-bottom svg { position: absolute; bottom: 2vw; left: 6vw; width: 8vw; }
|
|
317
|
+
|
|
318
|
+
.escience-purple-strip-bottom {
|
|
319
|
+
right: calc(50% + 17vw);
|
|
320
|
+
bottom: -10vw;
|
|
321
|
+
width: 16vw;
|
|
322
|
+
height: 10vw;
|
|
323
|
+
border-radius: 20vw 20vw 0 0;
|
|
324
|
+
background-color: var(--nlesc-purple);
|
|
325
|
+
transition: bottom 1s; }
|
|
326
|
+
|
|
327
|
+
.escience-yellow-half-strip {
|
|
328
|
+
right: 50%;
|
|
329
|
+
bottom: -25vw;
|
|
330
|
+
width: 17vw;
|
|
331
|
+
height: 25vw;
|
|
332
|
+
border-radius: 20vw 0 0 0;
|
|
333
|
+
background-color: var(--nlesc-yellow);
|
|
334
|
+
transition: bottom 1s; }
|
|
335
|
+
|
|
336
|
+
.escience-purple-blob {
|
|
337
|
+
/* top right: a long and a short drop, joined by a concave curve */
|
|
338
|
+
right: 0;
|
|
339
|
+
top: -50vh;
|
|
340
|
+
width: 10vw;
|
|
341
|
+
height: 50vh;
|
|
342
|
+
border-radius: 0 0 5vw 5vw;
|
|
343
|
+
background-color: var(--nlesc-purple);
|
|
344
|
+
transition: top 1s; }
|
|
345
|
+
.escience-purple-blob::before,
|
|
346
|
+
.escience-purple-blob::after {
|
|
347
|
+
content: "";
|
|
348
|
+
position: absolute;
|
|
349
|
+
right: calc(100% - 1px); /* overlap the long drop by 1px, so no seam shows */
|
|
350
|
+
background-color: var(--nlesc-purple); }
|
|
351
|
+
.escience-purple-blob::before {
|
|
352
|
+
/* the short drop; its inner corner continues into the curve */
|
|
353
|
+
top: 0;
|
|
354
|
+
width: calc(10vw + 1px);
|
|
355
|
+
height: 25vh;
|
|
356
|
+
border-bottom-left-radius: 5vw; }
|
|
357
|
+
.escience-purple-blob::after {
|
|
358
|
+
/* the curve: a 5vw square below the short drop, cut out around its
|
|
359
|
+
bottom left corner; the 1px gradient step smooths the edge */
|
|
360
|
+
top: calc(25vh - 1px);
|
|
361
|
+
width: calc(5vw + 1px);
|
|
362
|
+
height: calc(5vw + 1px);
|
|
363
|
+
background: radial-gradient(circle at 0 100%, transparent 5vw, var(--nlesc-purple) calc(5vw + 1px)); }
|
|
364
|
+
|
|
365
|
+
.escience-right-e {
|
|
366
|
+
top: 10vh;
|
|
367
|
+
right: -4vw;
|
|
368
|
+
width: 4vw;
|
|
369
|
+
z-index: 3;
|
|
370
|
+
transition: right 1s, top 1s; }
|
|
371
|
+
|
|
372
|
+
/* Footer strip, bottom right; holds the slide's <footer> content */
|
|
373
|
+
.escience-blue-strip {
|
|
374
|
+
right: 0;
|
|
375
|
+
bottom: 0;
|
|
376
|
+
border-radius: 20vw 0 0 0;
|
|
377
|
+
background-color: var(--nlesc-blue);
|
|
378
|
+
transform: translateX(100%);
|
|
379
|
+
transition: transform 1s; }
|
|
380
|
+
.escience-footer {
|
|
381
|
+
margin: 1vw 1vw 1vw 3vw;
|
|
382
|
+
text-align: right;
|
|
383
|
+
line-height: 130%; }
|
|
384
|
+
.reveal .escience-footer a { color: white; text-decoration: underline; }
|
|
385
|
+
.reveal .escience-footer a:hover { color: var(--nlesc-purple); }
|
|
386
|
+
|
|
387
|
+
/* Shown */
|
|
388
|
+
[data-show~="purple_overlay"] .escience-purple-overlay,
|
|
389
|
+
[data-show~="blue_overlay"] .escience-blue-overlay,
|
|
390
|
+
[data-show~="white_overlay"] .escience-white-overlay,
|
|
391
|
+
[data-show~="black_overlay"] .escience-black-overlay {
|
|
392
|
+
opacity: var(--escience-overlay-opacity, 1); }
|
|
393
|
+
|
|
394
|
+
[data-show~="blue_pane_left"] .escience-blue-pane-left,
|
|
395
|
+
[data-show~="blue_pane_right"] .escience-blue-pane-right,
|
|
396
|
+
[data-show~="touch_pane"] .escience-touch-pane { opacity: 1; }
|
|
397
|
+
|
|
398
|
+
[data-show~="logo"] .escience-logo { left: 3vw; }
|
|
399
|
+
[data-logo="color"] .escience-logo-color,
|
|
400
|
+
[data-logo="white"] .escience-logo-white,
|
|
401
|
+
[data-logo="part-white"] .escience-logo-part-white { opacity: 1; }
|
|
402
|
+
|
|
403
|
+
[data-show~="yellow_strip"] .escience-yellow-strip { left: 0; }
|
|
404
|
+
[data-show~="yellow_flag"] .escience-yellow-flag { left: 0; }
|
|
405
|
+
[data-show~="purple_half_circle_bottom"] .escience-yellow-flag { bottom: 20vh; }
|
|
406
|
+
[data-show~="purple_half_circle_top"] .escience-purple-half-circle-top { top: 0; }
|
|
407
|
+
[data-show~="purple_half_circle_bottom"] .escience-purple-half-circle-bottom { bottom: 0; }
|
|
408
|
+
[data-show~="purple_strip_bottom"] .escience-purple-strip-bottom { bottom: 0; }
|
|
409
|
+
[data-show~="yellow_half_strip"] .escience-yellow-half-strip { bottom: 0; }
|
|
410
|
+
[data-show~="purple_blob"] .escience-purple-blob { top: 0; }
|
|
411
|
+
[data-show~="right_e_top"] .escience-right-e { top: 10vh; right: 0; }
|
|
412
|
+
[data-show~="right_e_bottom"] .escience-right-e { top: 60vh; right: 0; }
|
|
413
|
+
[data-show~="footer"] .escience-blue-strip { transform: none; }
|
|
414
|
+
|
|
415
|
+
/* clear_background moves overlays and panes away, e.g. for an interactive
|
|
416
|
+
background iframe */
|
|
417
|
+
[data-show~="clear_background"] :is(.escience-purple-overlay, .escience-blue-overlay,
|
|
418
|
+
.escience-white-overlay, .escience-black-overlay, .escience-blue-pane-left,
|
|
419
|
+
.escience-blue-pane-right, .escience-touch-pane) {
|
|
420
|
+
transform: translateY(100vh); }
|
|
421
|
+
|
|
422
|
+
/* overview: each thumbnail's background carries its own decorations, shown
|
|
423
|
+
in their final state and clipped to the thumbnail */
|
|
424
|
+
.reveal.overview .backgrounds .slide-background { overflow: hidden; }
|
|
425
|
+
.reveal.overview .backgrounds .escience-decorations > * { transition: none; }
|
|
426
|
+
|
|
427
|
+
/*********************************************
|
|
428
|
+
* SLIDE CONTENT ABOVE DECORATIONS
|
|
429
|
+
*********************************************/
|
|
430
|
+
/* print view: each page holds its background (with decorations), slide,
|
|
431
|
+
notes and slide number side by side */
|
|
432
|
+
html.reveal-print .reveal .pdf-page > :is(section, .speaker-notes-pdf, .slide-number-pdf) {
|
|
433
|
+
z-index: 10;
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
.slides {
|
|
437
|
+
/* puts the slide content above overlays and decorations*/
|
|
438
|
+
z-index: 10 !important;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
.speaker-notes {
|
|
442
|
+
/* puts the slide content above overlays and decorations*/
|
|
443
|
+
z-index: 3 !important;
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
:where(.reveal) footer {
|
|
447
|
+
display: none !important;
|
|
448
|
+
}
|