-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
353 lines (317 loc) · 23.2 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="canonical" href="https://cdr2.com/cv/index.html">
<title>Christopher Robison's CV</title>
<style>
body {
margin: 0;
padding: 0;
font-size: 18px;
font-family: "Helvetica Neue", "Helvetica", "Arial", sans-serif;
color: #eee;
background-color: #111;
}
main {
flex-grow: 1;
flex-shrink: 1;
flex-basis: auto;
height: 100vh;
background-color: #fff;
overflow: scroll;
color: #333;
order:0;
}
nav a {
color: #eee;
font-size: 25px;
text-decoration: none;
padding-left: 2em;
display: block;
transition: all 300ms ease-in-out;
position: relative;
}
nav a::before {
position: relative;
display: inline-block;
width: 1.75em;
font-size: 18px;
}
nav a:visited {
color: #eee;
}
nav a:active {
color: #f00;
}
nav {
height: 100vh;
width: 0px;
flex-shrink: 1;
flex-grow: 0;
flex-basis: auto;
order:0;
z-index: 1;
top: 0px;
left: 0px;
background-color: #111;
overflow-x: hidden;
transition: all 500ms ease-in-out;
white-space: nowrap;
overflow-y: scroll;
box-sizing:border-box;
padding-bottom:3em;
}
.download {
background-image: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMS4wYmV0YTIgKDJiNzFkMjUsIDIwMTktMTItMDMpIgogICBzb2RpcG9kaTpkb2NuYW1lPSJkb3dubG9hZC5zdmciCiAgIGlkPSJzdmc4MzUiCiAgIHZlcnNpb249IjEuMSIKICAgaGVpZ2h0PSIxODVweCIKICAgd2lkdGg9IjE2MXB4Ij4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGE4NDEiPgogICAgPHJkZjpSREY+CiAgICAgIDxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj4KICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KICAgICAgICA8ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+CiAgICAgIDwvY2M6V29yaz4KICAgIDwvcmRmOlJERj4KICA8L21ldGFkYXRhPgogIDxkZWZzCiAgICAgaWQ9ImRlZnM4MzkiIC8+CiAgPHNvZGlwb2RpOm5hbWVkdmlldwogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzgzNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyMyIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMCIKICAgICBpbmtzY2FwZTpjeT0iOTIuNSIKICAgICBpbmtzY2FwZTpjeD0iODAuNSIKICAgICBpbmtzY2FwZTp6b29tPSIzLjYzMjQzMjQiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlkPSJuYW1lZHZpZXc4MzciCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iOTgxIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTQzMCIKICAgICBpbmtzY2FwZTpwYWdlc2hhZG93PSIyIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwIgogICAgIGd1aWRldG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBvYmplY3R0b2xlcmFuY2U9IjEwIgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtcm90YXRpb249IjAiCiAgICAgYm9yZGVyY29sb3I9IiM2NjY2NjYiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIiAvPgogIDxwYXRoCiAgICAgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS1vcGFjaXR5OjE7ZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZS13aWR0aDozLjc3OTUyNzU2O3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lIgogICAgIGlkPSJwYXRoODMzIgogICAgIGQ9Ik04OC43NzEsNS44NTYgQzg4Ljc3MSwzNS43MTAgODguNzcxLDk2LjQ1NyA4OC43NzEsOTYuNDU3IEM4OC43NzEsOTYuNDU3IDExMC45MTIsNzQuNDA1IDExMS40NzEsNzMuODA3IEMxMTQuNTI1LDcxLjYxNyAxMTguNTMxLDcyLjc4MSAxMjAuNzU4LDc0LjgzNyBDMTIyLjk4NSw3Ni44OTIgMTI0Ljg0MCw4MS40MjUgMTIzLjg1NCw4My4wNzMgQzEyMS43OTAsODQuNzg5IDExOC42OTQsODguNTY0IDExNi42MzEsOTAuMjgwIEMxMTIuNTA0LDk0Ljc0MSAxMDguMzc2LDk5LjIwMyAxMDQuMjQ5LDEwMy42NjQgQzk3LjM3MCwxMTAuMTg0IDkwLjQ5MCwxMTYuNzA2IDgzLjYxMiwxMjMuMjI2IEM4MS41NDgsMTIzLjIyNiA3OS40ODQsMTIzLjIyNiA3Ny40MjEsMTIzLjIyNiBDNzQuMzI1LDEyMC40ODEgNzEuMjI5LDExNy43MzUgNjguMTM0LDExNC45OTAgQzYxLjYwMCwxMDguMTI2IDQxLjE1OCw4Ny4yODAgMzguMjEwLDg0LjEwMyBDMzUuMjYzLDgwLjkyNSAzNy42OTQsNzYuMzk4IDM5LjI0Miw3NC44MzcgQzQwLjkxNSw3My4xNTAgNDUuMjUwLDcwLjQ0NiA0Ny40OTcsNzEuNzQ4IEM1MC40MzIsNzQuMTg5IDcyLjI2MSw5Ni40NTcgNzIuMjYxLDk2LjQ1NyBMNzIuMjYxLDUuODU2IEM3Mi4yNjEsNS44NTYgODAuMjk0LC03LjMwNyA4OC43NzEsNS44NTYgWk0xNS41MTAsMTY4LjUyNyBDNTguODQzLDE2OC41MjcgMTAyLjE4OSwxNjguNTI3IDE0NS41MjIsMTY4LjUyNyBDMTQ1LjUyMiwxNTQuMTE0IDE0NS45NTQsMTI3LjcxMyAxNDUuNTIyLDEyNS4yODUgQzE1MS4yMDIsMTE5LjcxMCAxNTUuMzExLDExOS45MDEgMTYxLjAwMCwxMjUuMjg1IEMxNjAuODUxLDEyNi41OTEgMTYwLjgyNCwxNzUuMTY4IDE2MS4wMDAsMTc3Ljc5MyBDMTYxLjMwNSwxODIuMzQyIDE1Ny43ODIsMTg0Ljk1OSAxNTMuNzc3LDE4NS4wMDAgQzE1Mi44NjMsMTg0Ljg1NCAxMi44ODUsMTg1LjAxMCAxMS4zODMsMTg1LjAwMCBDNC4yMjMsMTg1LjAwOSAxLjc0NSwxODIuOTgxIDAuMDMyLDE3OS44NTIgQy0wLjA5NSwxNzguMjkzIDAuMjAxLDEyNi4xNDkgMC4wMzIsMTI1LjI4NSBDMS40MDgsMTI0LjM3MCAyLjc3NCwxMjEuMzUyIDcuMjU1LDEyMS4xNjcgQzExLjczNywxMjAuOTgyIDE0Ljg3NywxMjMuOTc5IDE1LjUxMCwxMjUuMjg1IEMxNS41MTAsMTM5LjY5OCAxNS41MTAsMTU0LjExNCAxNS41MTAsMTY4LjUyNyBaIgogICAgIGZpbGw9InJnYigyMjAsIDIyMCwgMjIwKSIKICAgICBmaWxsLXJ1bGU9ImV2ZW5vZGQiIC8+Cjwvc3ZnPgo=");
background-repeat: no-repeat;
display: inline-block;
width: 6rem;
cursor: pointer;
height: 6rem;
color: #eee;
background-size: 6rem 6rem;
float: right;
padding: 2px;
margin-left: 1rem;
filter: drop-shadow(3px 3px 3px #0009);
}
.view {
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjQycHgiIGhlaWdodD0iMTQ3cHgiPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiICBmaWxsPSJyZ2IoMjM4LCAyMzgsIDIzOCkiCiBkPSJNMTA5LjQwMSwwLjAwMCBDMTYxLjQ2NCwtMC42NTUgMjAzLjk2MCwxNS43MDQgMjI1LjU0Niw0NC41NzggQzIzMS4xNzYsNTIuMTEwIDIzNS4zODcsNjIuMTU0IDI0Mi4wMDAsNjguODA2IEMyNDIuMTA2LDg3LjQ1OCAyMjEuMjk2LDEwNi45NzQgMjEwLjA2MCwxMTUuMzIzIEMxOTEuNDUxLDEyOS4xNDkgMTc2LjQ2NCwxMzcuNDUwIDE1MC4wNTEsMTQ0LjM5NiBDMTM5LjM5MSwxNDcuMTk5IDEyMC42MDEsMTQ4LjAzMSAxMDkuNDAxLDE0NS4zNjUgQzEwMS44MDYsMTQzLjU1NyA5NS45MjksMTQ1LjM2MCA4OS4wNzUsMTQzLjQyNiBDNTkuOTI3LDEzNS4yMDUgMzUuMzg2LDEyMi4xODMgMTkuMzg4LDEwMC43ODYgQzEzLjYwOCw5My4wNTYgMi42ODcsODMuODQ4IDAuMDMwLDczLjY1MSBDLTAuODIyLDcwLjM4MSAxMy41MDMsNTMuMTU2IDE1LjUxNiw1MC4zOTMgQzI5LjUwNiwzMS4xOTcgNDguNjc1LDE2Ljg1OCA3Mi42MjEsNy43NTMgQzgxLjA1NCw0LjU0NiA5MC43NjAsMy4xNzIgOTkuNzIyLDAuOTY5IEMxMDMuMjEwLDAuMTEyIDEwNy4wNjQsMS40NTYgMTA5LjQwMSwwLjAwMCBaTTk1Ljg1MCwxOS4zODIgQzg3Ljc4NSwyMS45NjYgNzkuNzE4LDI0LjU1MSA3MS42NTMsMjcuMTM1IEM1Ni42OTcsMzMuNjY2IDI3LjgzMSw1Ni45NTEgMjUuMTk1LDc0LjYyMSBDMzAuNjMxLDgwLjM1MyAzNC4wMTAsODguNjU2IDM4Ljc0NSw5NC45NzIgQzQ5LjgzNiwxMDkuNzYzIDcxLjkxMiwxMjEuNDU2IDkyLjk0NywxMjUuOTgzIEM5Mi45NDcsMTI1LjY2MCA5Mi45NDcsMTI1LjMzNyA5Mi45NDcsMTI1LjAxNCBDNzIuMjA2LDExNC44NjMgNTcuNDc4LDgxLjIwMiA2OC43NTAsNTEuMzYyIEM3Mi40MzEsNTIuNzEzIDc4LjQwNSw1My44MjEgODEuMzMyLDU2LjIwOCBDNzUuMDM0LDY0LjEwNSA3Ny41NDQsODIuODM0IDgxLjMzMiw5MS4wOTUgQzkxLjUyMiwxMTMuMzE3IDExOS44OTQsMTMyLjEyOSAxNDcuMTQ4LDExMi40MTUgQzE2Mi4wNjcsMTAxLjYyNCAxNzQuMDE4LDcxLjE5MSAxNjAuNjk4LDQ5LjQyNCBDMTU0Ljg1MSwzOS44NjkgMTM2LjA2MCwyMS42NTkgMTE3LjE0NCwyNi4xNjYgQzExMi4xNzYsMjcuMzQ5IDEwNy4yNDgsMjkuNzEyIDEwMi42MjUsMzEuMDExIEMxMDEuMzM1LDI3LjEzNSAxMDAuMDQ0LDIzLjI1OCA5OC43NTQsMTkuMzgyIEM5Ny43ODYsMTkuMzgyIDk2LjgxOCwxOS4zODIgOTUuODUwLDE5LjM4MiBaTTE1MC4wNTEsMjAuMzUxIEMxNjAuNjk3LDMwLjk0MyAxNzAuMzg1LDM2LjE4MiAxNzYuMTg0LDUyLjMzMSBDMTg2Ljk2Niw4Mi4zNTYgMTcwLjQ2NSwxMTUuMzg3IDE1MS4wMTksMTI1LjAxNCBDMTUxLjAxOSwxMjUuMzM3IDE1MS4wMTksMTI1LjY2MCAxNTEuMDE5LDEyNS45ODMgQzE1MS42NjUsMTI1Ljk4MyAxNTIuMzEwLDEyNS45ODMgMTUyLjk1NSwxMjUuOTgzIEMxNTguNzYyLDEyNC4wNDUgMTY0LjU3MCwxMjIuMTA2IDE3MC4zNzcsMTIwLjE2OCBDMTg0LjMwOSwxMTQuMTEyIDIxNS42OTMsODkuNTY4IDIxOC43NzEsNzQuNjIxIEMyMjAuMDg1LDY4LjIzOCAyMTAuNzUxLDYwLjc5MyAyMDguMTI0LDU3LjE3NyBDMTk0Ljk0MSwzOS4wMzAgMTc1Ljg4OSwyNS42NTYgMTUwLjA1MSwyMC4zNTEgWk0xMTYuMTc2LDM2LjgyNiBDMTM2LjQ4OCwzNi4yODIgMTQ4LjIzOSw0NC40NDAgMTUzLjkyMyw1OC4xNDYgQzE2MS4xNjcsNzUuNjEzIDE1Mi4xMjgsOTYuNjYxIDE0Mi4zMDgsMTAzLjY5MyBDMTE0Ljg5MCwxMjMuMzMxIDc2LjE3OSw5My44NTEgOTAuMDQzLDYwLjA4NCBDMTAyLjExOCw2My4wNTQgMTEwLjk4Miw3Mi4xOTIgMTIyLjk1MSw3NS41OTAgQzEyMi45NTEsNzQuOTQ0IDEyMi45NTEsNzQuMjk3IDEyMi45NTEsNzMuNjUxIEMxMTguNDYzLDY4Ljc0MCAxMDkuNjUxLDQ3LjM1NiAxMDguNDMzLDM5LjczMyBDMTA4Ljc1NSwzOS40MTAgMTA5LjA3OCwzOS4wODcgMTA5LjQwMSwzOC43NjQgQzExMi4wNTIsMzguNTI3IDExNC41NDQsMzguMDY0IDExNi4xNzYsMzYuODI2IFoiLz4KPC9zdmc+Cg==");
background-repeat: no-repeat;
display: inline-block;
width: 32px;
height: 32px;
color: #eee;
background-size: 24px 24px;
float: right;
padding: 2px;
}
.open {
background-image: url("data:image/svg+xml;base64,PHN2ZyAKIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIgogd2lkdGg9IjM4NHB4IiBoZWlnaHQ9IjM4M3B4Ij4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiAgc3Ryb2tlPSJyZ2IoMCwgMCwgMCkiIHN0cm9rZS13aWR0aD0iMTBweCIgc3Ryb2tlLWxpbmVjYXA9ImJ1dHQiIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiIGZpbGw9InJnYigyMzgsIDIzOCwgMjM4KSIKIGQ9Ik0zNzQuMDAwLDE0My4wMDAgQzM3My43OTQsMTUxLjM5MiAzNjYuNzg0LDE1Ny44ODAgMzYwLjAwMCwxNTguMDAwIEMzNTMuMjE2LDE1OC4xMjAgMzQyLjM0MiwxNTguMTIwIDMzNC4wMDAsMTU4LjAwMCBDMzI1LjY1OCwxNTcuODgwIDMyMi44MDMsMTUxLjgxNiAzMjMuMDAwLDE0NS4wMDAgQzMyMy4xOTcsMTM4LjE4NCAzMjMuMDAwLDkxLjAwMCAzMjMuMDAwLDkxLjAwMCBDMzIzLjAwMCw5MS4wMDAgMTg2LjU2MSwyMjcuNDI3IDE4MS4wMDAsMjMzLjAwMCBDMTc1LjQzOSwyMzguNTczIDE2Ni44NjgsMjM2LjkzMiAxNjMuMDAwLDIzNC4wMDAgQzE1OS4xMzIsMjMxLjA2OCAxNDguOTM5LDIyMC40MDYgMTQ1LjAwMCwyMTUuMDAwIEMxNDEuMDYxLDIwOS41OTQgMTQwLjA5OSwyMDEuNDk5IDE0Ni4wMDAsMTk1LjAwMCBDMTUxLjI3OSwxODkuMTg2IDI4NS4wMDAsNTYuMDAwIDI4NS4wMDAsNTYuMDAwIEMyODUuMDAwLDU2LjAwMCAyNDEuMTkwLDU1LjA0MiAyMzQuMDAwLDU1LjAwMCBDMjI2LjgxMCw1NC45NTggMjIxLjA0Nyw0OS41NzkgMjIxLjAwMCw0MS4wMDAgQzIyMC45NTcsMzMuMDczIDIyMC44NzEsMTguMTQ4IDIyMS4wMDAsMTYuMDAwIEMyMjIuNjgwLDUuODI3IDIzMy4wMDAsNS4wMDAgMjMzLjAwMCw1LjAwMCBDMjMzLjAwMCw1LjAwMCAzNDMuMTQyLDUuMDAzIDM1OS4wMDAsNS4wMDAgQzM2OS4yMDYsNC45OTggMzczLjIwMywxMS4wMDMgMzczLjAwMCwyMS4wMDAgQzM3Mi43NzAsMzIuMzA3IDM3NC4yMDYsMTM0LjYwOCAzNzQuMDAwLDE0My4wMDAgWk01OC4wMDAsOTcuMDAwIEw1Ny4wMDAsMzIzLjAwMCBMMjgyLjAwMCwzMjIuMDAwIEwyODMuMDAwLDE2OS4wMDAgTDMzMi4wMDAsMTY5LjAwMCBDMzMyLjAwMCwxNjkuMDAwIDMzNC4zMjIsMzE5LjQ4OSAzMzMuMDAwLDMzNy4wMDAgQzMzMS42NzgsMzU0LjUxMSAzMjIuMTkyLDM3MS40MDggMjk0LjAwMCwzNzIuMDAwIEMyNjUuODA4LDM3Mi41OTIgNzcuMzY0LDM3Mi41OTUgNDkuMDAwLDM3Mi4wMDAgQzIwLjYzNiwzNzEuNDA1IDYuNjQ4LDM1My40NDcgNi4wMDAsMzMzLjAwMCBDNS4zNTIsMzEyLjU1MyA1Ljg1Niw5OC44MzUgNi4wMDAsODEuMDAwIEM2LjE0NCw2My4xNjUgMTkuNDYwLDQ2LjkxMyA0My4wMDAsNDYuMDAwIEM2Ni41NDAsNDUuMDg3IDIxMC4wMDAsNDYuMDAwIDIxMC4wMDAsNDYuMDAwIEwyMDkuMDAwLDk2LjAwMCBMNTguMDAwLDk3LjAwMCBaIi8+Cjwvc3ZnPgo=");
background-repeat: no-repeat;
display: inline-block;
width: 32px;
height: 32px;
color: #eee;
background-size: 24px 24px;
float: right;
padding: 2px;
}
.printer {
background-image: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgaWQ9InN2Zzg0OSIKICAgdmVyc2lvbj0iMS4xIgogICBoZWlnaHQ9IjEyMi41cHgiCiAgIHdpZHRoPSIxMTcuNXB4Ij4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGE4NTUiPgogICAgPHJkZjpSREY+CiAgICAgIDxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj4KICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KICAgICAgICA8ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+CiAgICAgICAgPGRjOnRpdGxlPjwvZGM6dGl0bGU+CiAgICAgIDwvY2M6V29yaz4KICAgIDwvcmRmOlJERj4KICA8L21ldGFkYXRhPgogIDxkZWZzCiAgICAgaWQ9ImRlZnM4NTMiIC8+CiAgPHBhdGgKICAgICBzdHlsZT0ic3Ryb2tlOiM0NDQ0NDQ7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICBpZD0icGF0aDgzMyIKICAgICBkPSJNIDI0LjUwNzYzMywzMC45OTIzNjcgViAyLjAwNzYzMzUgSCA3My4yNjg5MTYgTCA5My41ODYxMTcsMTkuOTk4MTU3IHYgMTAuOTk0MjEgeiIKICAgICBmaWxsPSJyZ2IoMjU1LCAyNTUsIDI1NSkiCiAgICAgc3Ryb2tlLWxpbmVqb2luPSJtaXRlciIKICAgICBzdHJva2UtbGluZWNhcD0iYnV0dCIKICAgICBzdHJva2Utd2lkdGg9IjJweCIKICAgICBzdHJva2U9InJnYigxMTgsIDExOCwgMTE4KSIKICAgICBmaWxsLXJ1bGU9ImV2ZW5vZGQiIC8+CiAgPHBhdGgKICAgICBzdHlsZT0ic3Ryb2tlOiM0NDQ0NDQ7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICBpZD0icGF0aDgzNSIKICAgICBkPSJtIDczLjUsMyB2IDE2IGggMTggeiIKICAgICBmaWxsPSJyZ2IoMjU1LCAyNTUsIDI1NSkiCiAgICAgc3Ryb2tlLWxpbmVqb2luPSJtaXRlciIKICAgICBzdHJva2UtbGluZWNhcD0iYnV0dCIKICAgICBzdHJva2Utd2lkdGg9IjJweCIKICAgICBzdHJva2U9InJnYigxMTgsIDExOCwgMTE4KSIKICAgICBmaWxsLXJ1bGU9ImV2ZW5vZGQiIC8+CiAgPHBhdGgKICAgICBzdHlsZT0ic3Ryb2tlOiM0NDQ0NDQ7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICBpZD0icGF0aDgzNyIKICAgICBkPSJtIDI0LjUsNzIgYyAwLDAgLTAuMjAxLDM2LjI1NSAwLDQwIDAuMjAxLDMuNzQ1IDQuMDAxLDQuOTczIDYsNSAxLjk5OSwwLjAyNyA1My4xMjgsMC4xNDEgNTcsMCAzLjg3MiwtMC4xNDEgNC45NDIsLTEuOTY1IDUsLTYgMC4wNTgsLTQuMDM1IDAsLTM5IDAsLTM5IHoiCiAgICAgZmlsbD0icmdiKDI1NSwgMjU1LCAyNTUpIgogICAgIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiCiAgICAgc3Ryb2tlLWxpbmVjYXA9ImJ1dHQiCiAgICAgc3Ryb2tlLXdpZHRoPSIycHgiCiAgICAgc3Ryb2tlPSJyZ2IoMTE4LCAxMTgsIDExOCkiCiAgICAgZmlsbC1ydWxlPSJldmVub2RkIiAvPgogIDxwYXRoCiAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MC4yNSIKICAgICBpZD0icGF0aDgzOSIKICAgICBkPSJtIDM2LjUsODMgdiAzIGggNDMgdiAtMyB6IgogICAgIGZpbGw9InJnYigwLCAwLCAwKSIKICAgICBmaWxsLXJ1bGU9ImV2ZW5vZGQiIC8+CiAgPHBhdGgKICAgICBzdHlsZT0iZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eTowLjI1IgogICAgIGlkPSJwYXRoODQxIgogICAgIGQ9Im0gMzYuNSw5MyB2IDMgaCA0MyB2IC0zIHoiCiAgICAgZmlsbD0icmdiKDAsIDAsIDApIgogICAgIGZpbGwtcnVsZT0iZXZlbm9kZCIgLz4KICA8cGF0aAogICAgIHN0eWxlPSJmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjAuMjUiCiAgICAgaWQ9InBhdGg4NDMiCiAgICAgZD0ibSAzNi41LDEwMyB2IDMgaCA0MyB2IC0zIHoiCiAgICAgZmlsbD0icmdiKDAsIDAsIDApIgogICAgIGZpbGwtcnVsZT0iZXZlbm9kZCIgLz4KICA8cGF0aAogICAgIHN0eWxlPSJzdHJva2U6IzIyMjIyMjtzdHJva2Utb3BhY2l0eToxO2ZpbGw6I2RkZGRkZDtmaWxsLW9wYWNpdHk6MSIKICAgICBpZD0icGF0aDg0NSIKICAgICBkPSJtIDIuNSwzNyBjIC0wLjIzODU5ODcsLTUuNDQ3MDAzIDUuNTUwOTkzNSwtOC4wMTA3OTkgMTIsLTggaCA5MyBjIDIuOTM3NTgsMCA1Ljc4MywxLjYwNyA2LDcgMC4yMTcsNS4zOTMgLTAuMzQyLDQ2LjA0NiAwLDUwIDAuMzQyLDMuOTU0IC0yLjc3Nyw1LjgxMSAtNyw2IC00LjIyMywwLjE4OSAtOSwwIC05LDAgViA3MiBoIC03OCB2IDIwIGMgMCwwIC0xMy43NTksLTAuMjQ0IC0xMSwwIDIuNzU5LDAuMjQ0IC02LC0wLjcxMDYzIC02LC03IHoiCiAgICAgZmlsbD0icmdiKDExOCwgMTE4LCAxMTgpIgogICAgIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiCiAgICAgc3Ryb2tlLWxpbmVjYXA9ImJ1dHQiCiAgICAgc3Ryb2tlLXdpZHRoPSIzcHgiCiAgICAgc3Ryb2tlPSJyZ2IoMjU1LCAyNTUsIDI1NSkiCiAgICAgZmlsbC1ydWxlPSJldmVub2RkIiAvPgogIDxwYXRoCiAgICAgc3R5bGU9InN0cm9rZTojMjIyMjIyO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgaWQ9InBhdGg4NDciCiAgICAgZD0ibSA5MC41LDQ1IGMgMC4zNDYzODUsNy4yOTAxMDIgMTEsNy4wNjQyMDUgMTEsMCAtMC4xNDE4MSwtNy4zMjY2NyAtMTEuMDI1ODg3LC03LjI3NDc0IC0xMSwwIHoiCiAgICAgZmlsbD0icmdiKDI1NSwgMjU1LCAyNTUpIgogICAgIGZpbGwtcnVsZT0iZXZlbm9kZCIgLz4KPC9zdmc+Cg==");
background-repeat: no-repeat;
display: inline-block;
width: 6rem;
height: 6rem;
color: #eee;
background-size: 6rem 6rem;
float: right;
padding: 2px;
margin-left: 2rem;
filter: drop-shadow(3px 3px 3px #0009);
cursor: pointer;
}
nav a:hover {
color: #f1f1f1;
background-color: #333;
}
nav .closebtn {
position: absolute;
top: 0;
right: 25px;
font-size: 36px;
margin-left: 50px;
}
main {
transition: margin-left .5s;
}
@media screen and (max-height: 450px) {
nav {
padding-top: 15px;
}
nav a {
font-size: 18px;
}
}
nav {
width: 20vw;
}
.closed main {
margin-left: 3em;
}
.closed nav {
width: 0px;
}
#viewer {
display: inline-block;
}
.closed #viewer {
}
#closebtn {
position: sticky;
top: 0px;
font-size: 32px;
z-index: 1001;
cursor: pointer;
width: 3rem;
text-align: center;
padding: 0px;
margin: 0.25em 0.25em;
float:right;
height:3rem;
transition: all 200ms;
border: 2px solid transparent;
}
#closebtn:hover {
background-color:#333;
text-shadow: 2px 2px 2px #000a;
}
#openbtn {
position: absolute;
top: 8px;
left: 8px;
font-size: 32px;
cursor: pointer;
}
.selected {
background-color: #555;
color: #fff;
padding-left: 1.4rem;
}
.selected::before {
content: "▶ ";
font-size: 18px;
position: relative;
top: -3px;
width: 1.75rem;
display: inline-block;
}
#controls {
position: absolute;
left: 20rem;
top: 0rem;
padding: 1rem;
background-color: #0006;
border-radius: 1rem;
transform: scale(.5);
}
body {
}
.body {
min-height:100vh;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: normal;
align-items: normal;
align-content: normal;
}
</style>
<link rel='icon' type='image/png' href='favicon2.png'>
</head>
<body class='body' id="home">
<nav>
<a onclick="$('body').classList.add('closed')" id="closebtn">×</a>
</nav>
<a onclick="$('body').classList.remove('closed')" id='openbtn'>☰</a>
<main>
<iframe id='viewer' name='viewer' width='100%' height='100%' src='https://cdr2.com/cv/resumes/default.html'></iframe>
</main>
<div id='controls'>
<div id='print' class="printer"></div>
<a id='pdflink' title='Download PDF' href="pdfs/default.pdf" download'Christopher_Robison_Resume.pdf'><span class='download' id='download'></span></a>
</div>
<script>
function $(str) {
return document.querySelector(str);
}
function $$(str) {
return document.querySelectorAll(str);
}
(function() {
const app = {
base: "https://cdr2.com/cv/",
init: function() {
$("#closebtn").addEventListener("click", function(e) {
console.log("Closing nav");
$("body").classList.add("closed");
});
$("#openbtn").addEventListener("click", function(e) {
console.log("Opening nav");
$("body").classList.remove("closed");
});
$("nav").addEventListener("click", function(e) {
console.dir(e);
if ((e.target.id !== 'closebtn') && (e.target.id !== 'openbtn')) {
$(".selected").classList.remove("selected");
e.target.classList.add('selected');
let theme = e.target.href.replace(/.+?resumes\/(.+?)\.html/, "$1");
console.log("theme: " + theme);
let pdf = `${app.base}pdfs/${theme}.pdf`;
console.log("new pdf url: " + pdf);
$("#pdflink").href = pdf;
$("#pdflink").download = "Christopher_Robison_Resume-" + theme + ".pdf";
setTimeout(function() {
$("#viewer").src = e.target.href;
}, 500);
}
});
$("#controls").addEventListener("click", function(e) {
let tgt = e.target;
switch (tgt.id) {
case "download":
console.log("download");
break;
case "print":
console.log("print");
$("#viewer").contentWindow.focus();
$("#viewer").contentWindow.print();
break;
default:
console.log("default");
}
});
app.fetchThemes();
},
ignoreThemes: ["elite", "apage", "latex", "flat-fr", "kwan-linkedin", "orbit", "srt", "", "mocha-responsive", "onepageresume", "simple-red", "msresume"],
themes: [],
fetchThemes: function() {
fetch(app.base + "themes.json").then(response => response.json()).then(function(data) {
let out = '';
data.forEach(function(item) {
let name = item.replace(/jsonresume\-theme\-/, '');
if (!app.ignoreThemes.includes(name)) {
app.themes.push({
"name": name,
"fullname": item,
"url": `${app.base}resumes/${name}.html`
});
// out += "<input type='checkbox' id='" + name + "'> ";
let clsname = "";
if (name == "default") {
clsname = " class='selected'";
}
out += `<a target='viewer'${clsname} href='${app.base}resumes/${name}.html' class='themeLink'>${(name.charAt(0).toUpperCase() + name.slice(1))}</a>`;
} else {
//console.log("Skipping " + name);
}
});
$("nav").innerHTML += out;
});
},
picks: [],
loadResume: function(theme) {
console.log("Theme: " + theme);
$("#viewer").src = `${app.base}view.php?theme=${theme}`;
// $("#viewer").src = "https://registry.jsonresume.org/chrisrobison?theme=" + theme;
// fetch("https://registry.jsonresume.org/chrisrobison?theme=" + theme).then(response => response.text()).then(function(page) { $("main").innerHTML = page; });
}
}
window.app = app;
app.init();
})();
</script>
</body>
</html>