diff --git a/templates/impress.cs/css/cs1822.css b/templates/impress.cs/css/cs1822.css
new file mode 100644
index 0000000000000000000000000000000000000000..da4a278c45fbde4e0b75748fa6ca7d23c36cd6d3
--- /dev/null
+++ b/templates/impress.cs/css/cs1822.css
@@ -0,0 +1,94 @@
+/**
+ * Custom styling for CS1822 files
+ */
+
+/**
+ * Aesthetics
+ */
+
+.step {
+    font-family: Sans;
+}
+
+.step.concept {
+    border-style: solid;
+    border-width: medium;
+    border-color: lightgray;
+}
+
+.concept h3:not(.rowtitle) {
+    border-bottom-style: solid;
+    border-bottom-width: medium;
+    border-bottom-color: #eb641e;
+    margin-bottom: 2ex;
+}
+
+h3.side-heading {
+    text-align: left;
+    padding-top: 2ex;
+    padding-bottom: 2ex;
+}
+
+img {
+    width: 70%;
+    display: block;
+    margin: auto;
+}
+
+p {
+    padding: .75ex;
+}
+
+ul {
+    list-style: none;
+    margin-left: 2ex;
+}
+
+li::before {
+    content: "○ "; 
+    color: #00a69e;
+}
+
+td {
+    vertical-align: middle;
+}
+
+.narrow {
+    width: 0px;
+    margin: 0px;
+    padding: 0px;
+}
+
+/**
+ * Invisible slide steps (contain answers to questions
+ */
+.slide_step.slide_step_hidden.invisible { 
+     opacity: 0;
+}
+
+code {
+    font-family: monospace;
+    font-size: 80%;
+    background-color: #efefef;
+}
+
+pre {
+    margin-left: 5%;
+    width: 90%;
+    border: 1pt dashed;
+    background-color: #efefef;
+}
+
+div.overview {
+    z-index: -100;
+}
+
+p.attribution {
+    float:right;
+    font-size: 33%;
+}
+
+.unclickable {
+    pointer-events: none;
+    z-index: -100;
+}
diff --git a/templates/impress.cs/impress.cs.txt b/templates/impress.cs/impress.cs.txt
index dba6bc9e535ed7de948677bc1e289d1c1e64770a..9d713a627ed75a5434d2bee49df6ae9600ce7fa0 100644
--- a/templates/impress.cs/impress.cs.txt
+++ b/templates/impress.cs/impress.cs.txt
@@ -19,6 +19,7 @@ __file__.html slides.html
 # impress.js core machinery
 
 css/style.css
+css/cs1822.css
 js/impress.js
 js/fabric.js
 js/slide-drawing.js
diff --git a/templates/impress.cs/slides.html b/templates/impress.cs/slides.html
index 699911ae770c32df49c839fba1dc8a4539bfc018..e87d6a6c56a47af62d0b4fc281a6addd8f12a9b5 100644
--- a/templates/impress.cs/slides.html
+++ b/templates/impress.cs/slides.html
@@ -12,6 +12,7 @@
 <!doctype html>
 <html lang="en">
 <head>
+    <base target="_blank"/>
     <meta charset="utf-8">
     <meta name="viewport" content="width=1024">
     <meta name="apple-mobile-web-app-capable" content="yes">
@@ -87,6 +88,7 @@ MathJax.Hub.Config({
             const text = document.createTextNode(heading.textContent)
 
             a.href = "#" + id
+            a.target = "_self"
             a.appendChild(text)
             li.appendChild(a)
             toc.appendChild(li)