diff --git a/app/Makefile b/app/Makefile
index 468b70f760cc3a3df1039bf57157b5caf4d28b75..4a544f7cf61f98672c2f213d6b968576202c0af2 100644
--- a/app/Makefile
+++ b/app/Makefile
@@ -1,5 +1,5 @@
 DEST=/srv/mffzoom/app
 
 install:
-	rsync -av --delete zoom.py templates $(DEST)/
+	rsync -av --delete zoom.py static templates $(DEST)/
 	touch $(DEST)/force-reload
diff --git a/app/static/mffzoom.css b/app/static/mffzoom.css
new file mode 100644
index 0000000000000000000000000000000000000000..16a8bf6a108bdaba9fb834d2c8a4cc696c7e598c
--- /dev/null
+++ b/app/static/mffzoom.css
@@ -0,0 +1,70 @@
+body {
+	background-color: white;
+	color: black;
+}
+
+#intro {
+	max-width: 50em;
+}
+
+#heading {
+	position: relative;
+	height: 2.5ex;
+}
+
+#schedule {
+	position: relative;
+}
+
+.room {
+	border: 1px solid green;
+}
+
+.slot {
+	border-bottom: 1px solid green;
+}
+
+.slotlabel {
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	margin: 0;
+	font-weight: bold;
+}
+
+.roomhead p {
+	text-align: center;
+	font-weight: bold;
+	margin: 0;
+}
+
+.meeting {
+	border: 1px solid blue;
+	background-color: #ccccff;
+	overflow: hidden;
+}
+
+.meeting:hover {
+	background-color: #aaaaff;
+	z-index: 1;
+}
+
+.collision {
+	border: 1px solid red;
+	background-color: #ffcccc;
+}
+
+.collision:hover {
+	background-color: #ffaaaa;
+}
+
+.mtime {
+	margin: 0;
+	font-size: 11px;
+}
+
+.mdesc {
+	margin: 0;
+	margin-top: 0.5ex;
+	font-size: 9px;
+}
diff --git a/app/templates/main.html b/app/templates/main.html
index 205b7885b42be0b3fff1a894cb5d8377d43f5adc..ddbadc62709444687dd968dbb8b8e346c743eb92 100644
--- a/app/templates/main.html
+++ b/app/templates/main.html
@@ -1,66 +1,8 @@
 <!DOCTYPE html>
 <html>
 <head>
-	<style>
-		body {
-			background-color: white;
-			color: black;
-		}
-		#intro {
-			max-width: 50em;
-		}
-		#heading {
-			position: relative;
-			height: 2.5ex;
-		}
-		#schedule {
-			position: relative;
-		}
-		.room {
-			border: 1px solid green;
-		}
-		.slot {
-			border-bottom: 1px solid green;
-		}
-		.slotlabel {
-			display: flex;
-			justify-content: center;
-			align-items: center;
-			margin: 0;
-			font-weight: bold;
-		}
-		.roomhead p {
-			text-align: center;
-			font-weight: bold;
-			margin: 0;
-		}
-		.meeting {
-			border: 1px solid blue;
-			background-color: #ccccff;
-			overflow: hidden;
-		}
-		.meeting:hover {
-			background-color: #aaaaff;
-			z-index: 1;
-		}
-		.collision {
-			border: 1px solid red;
-			background-color: #ffcccc;
-		}
-		.collision:hover {
-			background-color: #ffaaaa;
-		}
-		.mtime {
-			margin: 0;
-			font-size: 11px;
-		}
-		.mdesc {
-			margin: 0;
-			margin-top: 0.5ex;
-			font-size: 9px;
-		}
-
-	</style>
+	<title>MFF Zoom Schedule</title>
+	<link rel=stylesheet href="{{ url_for('static', filename='mffzoom.css') }}?v=1" type='text/css' media=all>
 </head>
 <body>
 	<h1>MFF Zoom</h1>