diff --git a/core/Controller/SetupController.php b/core/Controller/SetupController.php
index bb7c8c4969d821b91086e4dbdd5c37694ea5ac4f..930ec82dbb80cc4cbf19fe018c15598a13da4adb 100644
--- a/core/Controller/SetupController.php
+++ b/core/Controller/SetupController.php
@@ -92,6 +92,7 @@ class SetupController {
 
 		\OC_Util::addVendorScript('strengthify/jquery.strengthify');
 		\OC_Util::addVendorStyle('strengthify/strengthify');
+		\OC_Util::addStyle('setup');
 		\OC_Util::addScript('setup');
 		\OC_Template::printGuestPage('', 'installation', $parameters);
 	}
diff --git a/core/css/jquery-ui-fixes.scss b/core/css/jquery-ui-fixes.css
similarity index 54%
rename from core/css/jquery-ui-fixes.scss
rename to core/css/jquery-ui-fixes.css
index 4cf4f4cdd4a96fea583bddf8a7eb28627395f810..e8cf2b769b8a634c01f99da53d6f9cede245470e 100644
--- a/core/css/jquery-ui-fixes.scss
+++ b/core/css/jquery-ui-fixes.css
@@ -1,124 +1,134 @@
 /* Component containers
 ----------------------------------*/
-
 .ui-widget {
-	font-family: 'Lucida Grande', Arial, Verdana, sans-serif;
+	font-family: "Lucida Grande", Arial, Verdana, sans-serif;
 	font-size: 1em;
-	button {
-		font-family: 'Lucida Grande', Arial, Verdana, sans-serif;
-	}
 }
-
+.ui-widget button {
+	font-family: "Lucida Grande", Arial, Verdana, sans-serif;
+}
 .ui-widget-content {
 	border: 1px solid #dddddd;
 	background: #eeeeee url('images/ui-bg_highlight-soft_100_eeeeee_1x100.png') 50% top repeat-x;
 	color: #333333;
-	a {
-		color: #333333;
-	}
 }
-
+.ui-widget-content a {
+	color: #333333;
+}
 .ui-widget-header {
 	border: 1px solid #0082c9;
 	background: #0082c9;
 	color: #ffffff;
-	a {
-		color: #ffffff;
-	}
+}
+.ui-widget-header a {
+	color: #ffffff;
 }
 
 /* Interaction states
 ----------------------------------*/
-
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
+.ui-state-default,
+.ui-widget-content .ui-state-default,
+.ui-widget-header .ui-state-default {
 	border: 1px solid #ddd;
 	background: #f8f8f8 url('images/ui-bg_glass_100_f8f8f8_1x400.png') 50% 50% repeat-x;
 	font-weight: bold;
 	color: #555;
 }
-
-.ui-state-default a {
+.ui-state-default a,
+.ui-state-default a:link,
+.ui-state-default a:visited {
 	color: #555;
-	&:link, &:visited {
-		color: #555;
-	}
 }
-
-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus {
+.ui-state-hover,
+.ui-widget-content .ui-state-hover,
+.ui-widget-header .ui-state-hover,
+.ui-state-focus,
+.ui-widget-content .ui-state-focus,
+.ui-widget-header .ui-state-focus {
 	border: 1px solid #ddd;
 	background: #ffffff url('images/ui-bg_flat_100_ffffff_40x100.png') 50% 50% repeat-x;
 	font-weight: bold;
 	color: #333;
 }
-
-.ui-state-hover a {
+.ui-state-hover a,
+.ui-state-hover a:hover,
+.ui-state-hover a:link,
+.ui-state-hover a:visited {
 	color: #333;
-	&:hover, &:link, &:visited {
-		color: #333;
-	}
 }
-
-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active {
+.ui-state-active,
+.ui-widget-content .ui-state-active,
+.ui-widget-header .ui-state-active {
 	border: 1px solid #0082c9;
 	background: #f8f8f8 url('images/ui-bg_glass_100_f8f8f8_1x400.png') 50% 50% repeat-x;
 	font-weight: bold;
 	color: #0082c9;
 }
-
-.ui-state-active a {
+.ui-state-active a,
+.ui-state-active a:link,
+.ui-state-active a:visited {
 	color: #0082c9;
-	&:link, &:visited {
-		color: #0082c9;
-	}
 }
 
 /* Interaction Cues
 ----------------------------------*/
-
-.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {
+.ui-state-highlight,
+.ui-widget-content .ui-state-highlight,
+.ui-widget-header .ui-state-highlight {
 	border: 1px solid #ddd;
 	background: #f8f8f8 url('images/ui-bg_highlight-hard_100_f8f8f8_1x100.png') 50% top repeat-x;
 	color: #555;
 }
-
-.ui-state-highlight a, .ui-widget-content .ui-state-highlight a, .ui-widget-header .ui-state-highlight a {
+.ui-state-highlight a,
+.ui-widget-content .ui-state-highlight a,
+.ui-widget-header .ui-state-highlight a {
 	color: #555;
 }
-
-.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {
+.ui-state-error,
+.ui-widget-content .ui-state-error,
+.ui-widget-header .ui-state-error {
 	border: 1px solid #cd0a0a;
 	background: #b81900 url('images/ui-bg_diagonals-thick_18_b81900_40x40.png') 50% 50% repeat;
 	color: #ffffff;
 }
-
-.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a, .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text {
+.ui-state-error a,
+.ui-widget-content .ui-state-error a,
+.ui-widget-header .ui-state-error a {
+	color: #ffffff;
+}
+.ui-state-error-text,
+.ui-widget-content .ui-state-error-text,
+.ui-widget-header .ui-state-error-text {
 	color: #ffffff;
 }
 
 /* Icons
 ----------------------------------*/
-
-.ui-state-default .ui-icon, .ui-state-hover .ui-icon, .ui-state-focus .ui-icon, .ui-state-active .ui-icon {
+.ui-state-default .ui-icon {
+	background-image: url('images/ui-icons_1d2d44_256x240.png');
+}
+.ui-state-hover .ui-icon,
+.ui-state-focus .ui-icon {
+	background-image: url('images/ui-icons_1d2d44_256x240.png');
+}
+.ui-state-active .ui-icon {
 	background-image: url('images/ui-icons_1d2d44_256x240.png');
 }
-
 .ui-state-highlight .ui-icon {
 	background-image: url('images/ui-icons_ffffff_256x240.png');
 }
-
-.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {
+.ui-state-error .ui-icon,
+.ui-state-error-text .ui-icon {
 	background-image: url('images/ui-icons_ffd27a_256x240.png');
 }
 
 /* Misc visuals
 ----------------------------------*/
 /* Overlays */
-
 .ui-widget-overlay {
 	background: #666666 url('images/ui-bg_diagonals-thick_20_666666_40x40.png') 50% 50% repeat;
 	opacity: .5;
 }
-
 .ui-widget-shadow {
 	margin: -5px 0 0 -5px;
 	padding: 5px;
diff --git a/core/css/installation.css b/core/css/setup.css
similarity index 68%
rename from core/css/installation.css
rename to core/css/setup.css
index 69c98f1ea2270c8c658afb50d527b50807756790..67b155999b781aa0ae8654b2f27074e0a0d49ca3 100644
--- a/core/css/installation.css
+++ b/core/css/setup.css
@@ -307,61 +307,6 @@ form #datadirField legend {
 	margin: 0 auto;
 }
 
-/* Show password toggle */
-#show, #dbpassword {
-	position: absolute;
-	right: 1em;
-	top: .8em;
-	float: right;
-}
-
-#show, #dbpassword, #personal-show {
-	display: none;
-}
-
-#show + label, #dbpassword + label {
-	right: 21px;
-	top: 15px !important;
-	margin: -14px !important;
-	padding: 14px !important;
-}
-
-#show:checked + label, #dbpassword:checked + label, #personal-show:checked + label {
-	-ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=80)';
-	opacity: .8;
-}
-
-#show + label, #dbpassword + label, #personal-show + label {
-	position: absolute !important;
-	height: 20px;
-	width: 24px;
-	background-image: url("../img/actions/toggle.svg?v=1");
-	background-repeat: no-repeat;
-	background-position: center;
-	-ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=30)';
-	opacity: .3;
-}
-
-#show + label:before, #dbpassword + label:before, #personal-show + label:before {
-	display: none;
-}
-
-#pass2, input[name='personal-password-clone'] {
-	padding: .6em 2.5em .4em .4em;
-	width: 8em;
-}
-
-#personal-show + label {
-	height: 14px;
-	margin-top: -25px;
-	left: 295px;
-	display: block;
-}
-
-#passwordbutton {
-	margin-left: .5em;
-}
-
 /* LOADER */
 #body-login .float-spinner {
 	margin-top: -32px;
@@ -596,11 +541,11 @@ form #datadirField legend {
 
 /* Update info */
 #body-login .update {
-    width: inherit;
-    text-align: center;
+		width: inherit;
+		text-align: center;
 }
 #body-login .update h2 {
-    margin: 0 0 20px;
+		margin: 0 0 20px;
 }
 
 #body-login .update a {
@@ -610,20 +555,20 @@ form #datadirField legend {
 
 /* INPUTS */
 input[type="text"], input[type="password"], input[type="search"], input[type="number"], input[type="email"], input[type="tel"], input[type="url"], input[type="time"], input[type="date"], textarea, select, button, .button, input[type="submit"], input[type="button"], #quota, .pager li a {
-    width: 130px;
-    margin: 3px 3px 3px 0;
-    padding: 7px 6px 5px;
-    font-size: 13px;
-    background-color: #fff;
-    color: #333;
-    border: 1px solid #ddd;
-    outline: none;
-    border-radius: 3px;
+		width: 130px;
+		margin: 3px 3px 3px 0;
+		padding: 7px 6px 5px;
+		font-size: 13px;
+		background-color: #fff;
+		color: #333;
+		border: 1px solid #ddd;
+		outline: none;
+		border-radius: 3px;
 }
 #body-login input {
-    font-size: 20px;
-    margin: 5px;
-    padding: 11px 10px 9px;
+		font-size: 20px;
+		margin: 5px;
+		padding: 11px 10px 9px;
 }
 input[type="submit"], input[type="button"], button, .button {
 	width: auto;
@@ -668,47 +613,6 @@ input[type='submit'] {
 	/* larger log in and installation buttons */
 }
 
-/* Nicely grouping input field sets */
-.grouptop, .groupmiddle, .groupbottom {
-	position: relative;
-	-webkit-user-select: none;
-	-moz-user-select: none;
-	-ms-user-select: none;
-	user-select: none;
-}
-
-.grouptop input {
-	margin-bottom: 0 !important;
-	border-bottom: 0 !important;
-	border-bottom-left-radius: 0 !important;
-	border-bottom-right-radius: 0 !important;
-}
-
-.groupmiddle input {
-	margin-top: 0 !important;
-	margin-bottom: 0 !important;
-	border-top: 0 !important;
-	border-bottom: 0 !important;
-	border-radius: 0 !important;
-	box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1) inset !important;
-}
-
-.groupbottom input {
-	margin-top: 0 !important;
-	border-top: 0 !important;
-	border-top-right-radius: 0 !important;
-	border-top-left-radius: 0 !important;
-	box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1) inset !important;
-}
-
-.groupbottom input[type=submit] {
-	box-shadow: none !important;
-}
-
-label.infield {
-	display: none;
-}
-
 /* Primary action button, use sparingly */
 .primary {
 	border: 1px solid #0082c9;
@@ -798,5 +702,413 @@ button.primary:disabled:focus, .button.primary:disabled:focus {
 	color: #bbb;
 }
 input, textarea, select, button {
-    font-family: 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif;
+		font-family: 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif;
+}
+
+
+/* LOG IN & INSTALLATION ------------------------------------------------------------ */
+/* overrides another !important statement that sets this to unreadable black */
+#datadirContent label {
+	width: 100%;
+}
+
+/* Nicely grouping input field sets */
+.grouptop, .groupmiddle, .groupbottom {
+	position: relative;
+	-webkit-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+}
+
+#body-login .grouptop input, .grouptop input {
+	margin-bottom: 0 !important;
+	border-bottom: 0 !important;
+	border-bottom-left-radius: 0 !important;
+	border-bottom-right-radius: 0 !important;
+}
+
+#body-login .groupmiddle input, .groupmiddle input {
+	margin-top: 0 !important;
+	margin-bottom: 0 !important;
+	border-top: 0 !important;
+	border-bottom: 0 !important;
+	border-radius: 0 !important;
+	box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1) inset !important;
+}
+
+#body-login .groupbottom input, .groupbottom input {
+	margin-top: 0 !important;
+	border-top: 0 !important;
+	border-top-right-radius: 0 !important;
+	border-top-left-radius: 0 !important;
+	box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1) inset !important;
+}
+
+#body-login .groupbottom input[type=submit] {
+	box-shadow: none !important;
+}
+
+/* keep the labels for screen readers but hide them since we use placeholders */
+label.infield {
+	display: none;
+}
+
+/* Show password toggle */
+#show, #dbpassword {
+	position: absolute;
+	right: 1em;
+	top: .8em;
+	float: right;
+}
+
+#show, #dbpassword, #personal-show {
+	display: none;
+}
+
+#show + label, #dbpassword + label {
+	right: 21px;
+	top: 15px !important;
+	margin: -14px !important;
+	padding: 14px !important;
+}
+
+#show:checked + label, #dbpassword:checked + label, #personal-show:checked + label {
+	-ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=80)';
+	opacity: .8;
+}
+
+#show + label, #dbpassword + label, #personal-show + label {
+	position: absolute !important;
+	height: 20px;
+	width: 24px;
+	background-image: url("../img/actions/toggle.svg?v=1");
+	background-repeat: no-repeat;
+	background-position: center;
+	-ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=30)';
+	opacity: .3;
+}
+
+#show + label:before, #dbpassword + label:before, #personal-show + label:before {
+	display: none;
+}
+
+#pass2, input[name='personal-password-clone'] {
+	padding: .6em 2.5em .4em .4em;
+	width: 8em;
+}
+
+#personal-show + label {
+	height: 14px;
+	margin-top: -25px;
+	left: 295px;
+	display: block;
+}
+
+#passwordbutton {
+	margin-left: .5em;
+}
+
+/* Warnings and errors are the same */
+#body-user .warning, #body-settings .warning {
+	margin-top: 8px;
+	padding: 5px;
+	background: #fdd;
+	border-radius: 3px;
+}
+
+.warning legend, .warning a {
+	color: #fff !important;
+	font-weight: 600 !important;
+}
+
+.error a {
+	color: #fff !important;
+	font-weight: 600 !important;
+}
+.error a.button {
+	color: #555 !important;
+	display: inline-block;
+	text-align: center;
+}
+.error pre {
+	white-space: pre-wrap;
+	text-align: left;
+}
+
+.error-wide {
+	width: 700px;
+	margin-left: -200px !important;
+}
+.error-wide .button {
+	color: black !important;
+}
+
+.warning-input {
+	border-color: #ce3702 !important;
+}
+
+/* Alternative Logins */
+#alternative-logins legend {
+	margin-bottom: 10px;
+}
+#alternative-logins li {
+	height: 40px;
+	display: inline-block;
+	white-space: nowrap;
+}
+
+#remember_login {
+	margin: 18px 5px 0 16px !important;
+}
+
+#body-login {
+	background-attachment: fixed;
+	/* fix background gradient */
+	height: 100%;
+}
+#body-login #header {
+	padding-top: 100px;
+}
+#body-login p.info, #body-login form fieldset legend, #body-login #datadirContent label {
+	text-align: center;
+	color: #fff;
+}
+#body-login form fieldset .warning-info, #body-login form input[type='checkbox'] + label {
+	text-align: center;
+	color: #fff;
+}
+#body-login form .warning input[type='checkbox']:hover + label, #body-login form .warning input[type='checkbox']:focus + label, #body-login form .warning input[type='checkbox'] + label {
+	color: #fff !important;
+}
+#body-login .update h2 {
+	margin: 0 0 20px;
+}
+#body-login .update a {
+	color: #fff;
+	border-bottom: 1px solid #aaa;
+}
+#body-login .infogroup {
+	margin-bottom: 15px;
+}
+#body-login p#message img {
+	vertical-align: middle;
+	padding: 5px;
+}
+#body-login div.buttons {
+	text-align: center;
+}
+#body-login p.info {
+	margin: 0 auto;
+	padding-top: 20px;
+	-webkit-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+}
+#body-login p.info a {
+	font-weight: 600;
+	padding: 13px;
+	margin: -13px;
+}
+#body-login form {
+	position: relative;
+	width: 280px;
+	margin: 16px auto;
+	padding: 0;
+}
+#body-login form fieldset {
+	margin-bottom: 20px;
+	text-align: left;
+	-webkit-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+}
+#body-login form #sqliteInformation {
+	margin-top: -20px;
+	margin-bottom: 20px;
+}
+#body-login form #adminaccount {
+	margin-bottom: 15px;
+}
+#body-login form fieldset legend {
+	width: 100%;
+}
+#body-login #datadirContent label {
+	display: block;
+	margin: 0;
+}
+#body-login form #datadirField legend {
+	margin-bottom: 15px;
+}
+#body-login #showAdvanced {
+	padding: 13px;
+	/* increase clickable area of Advanced dropdown */
+}
+#body-login #showAdvanced img {
+	vertical-align: bottom;
+	/* adjust position of Advanced dropdown arrow */
+	margin-left: -4px;
+}
+#body-login .icon-info-white {
+	padding: 10px;
+}
+#body-login .strengthify-wrapper {
+	display: inline-block;
+	position: relative;
+	left: 15px;
+	top: -23px;
+	width: 250px;
+}
+#body-login .tipsy-inner {
+	font-weight: bold;
+	color: #ccc;
+}
+#body-login input[type='text'], #body-login input[type='password'], #body-login input[type='email'] {
+	border: none;
+	font-weight: 300;
+}
+#body-login .remember-login-container {
+	display: inline-block;
+	margin: 10px 0;
+	text-align: center;
+	width: 100%;
+}
+#body-login #forgot-password {
+	padding: 11px;
+	float: right;
+	color: #fff;
+}
+#body-login .wrapper {
+	min-height: 100%;
+	margin: 0 auto -70px;
+	width: 300px;
+}
+#body-login footer, #body-login .push {
+	height: 70px;
+}
+#body-login form #selectDbType {
+	text-align: center;
+	white-space: nowrap;
+	margin: 0;
+}
+#body-login form #selectDbType .info {
+	white-space: normal;
+}
+#body-login form #selectDbType label {
+	position: static;
+	margin: 0 -3px 5px;
+	font-size: 12px;
+	background: #f8f8f8;
+	color: #888;
+	cursor: pointer;
+	border: 1px solid #ddd;
+}
+#body-login form #selectDbType label span {
+	cursor: pointer;
+	padding: 10px 20px;
+}
+#body-login form #selectDbType label.ui-state-hover, #body-login form #selectDbType label.ui-state-active {
+	color: #000;
+	background-color: #e8e8e8;
+}
+#body-login .warning, #body-login .update, #body-login .error {
+	display: block;
+	padding: 10px;
+	background-color: rgba(0, 0, 0, 0.3);
+	color: #fff;
+	text-align: left;
+	border-radius: 3px;
+	cursor: default;
+}
+#body-login .update {
+	width: inherit;
+	text-align: center;
+}
+#body-login .update .appList {
+	list-style: disc;
+	text-align: left;
+	margin-left: 25px;
+	margin-right: 25px;
+}
+#body-login .v-align {
+	width: inherit;
+}
+#body-login .update img.float-spinner {
+	float: left;
+}
+#body-login form input[type='checkbox'] + label {
+	position: relative;
+	margin: 0;
+	padding: 14px;
+	vertical-align: middle;
+	-webkit-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+}
+#body-login form .errors {
+	background: #fed7d7;
+	border: 1px solid #f00;
+	list-style-indent: inside;
+	margin: 0 0 2em;
+	padding: 1em;
+}
+#body-login .success {
+	background: #d7fed7;
+	border: 1px solid #0f0;
+	width: 35%;
+	margin: 30px auto;
+	padding: 1em;
+	text-align: center;
+}
+#body-login #showAdvanced > img {
+	padding: 4px;
+	box-sizing: border-box;
+}
+#body-login p.info a, #body-login #showAdvanced {
+	color: #fff;
+}
+#body-login #remember_login:hover + label, #body-login #remember_login:focus + label {
+	opacity: .6;
+}
+#body-login #forgot-password:hover, #body-login #forgot-password:focus {
+	opacity: .6;
+}
+#body-login p.info a:hover, #body-login p.info a:focus {
+	opacity: .6;
+}
+#body-login input {
+	font-size: 20px;
+	margin: 5px;
+	padding: 11px 10px 9px;
+}
+#body-login input[type='text'], #body-login input[type='password'] {
+	width: 249px;
+}
+#body-login input.login {
+	width: 269px;
+	background-position: right 16px center;
+}
+#body-login input[type='submit'] {
+	padding: 10px 20px;
+	/* larger log in and installation buttons */
+}
+#body-login ul.error-wide {
+	margin-top: 35px;
+}
+#body-login .warning {
+	margin: 0 7px 5px 4px;
+}
+#body-login .warning legend {
+	-ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=100)';
+	opacity: 1;
+}
+#body-login a.warning {
+	cursor: pointer;
+}
+#body-login .updateProgress .error {
+	margin-top: 10px;
+	margin-bottom: 10px;
 }
diff --git a/core/css/styles.scss b/core/css/styles.scss
index affaec1434276b606d80ca7df6ba1f2b68f289ca..28c3fb86c7275c9091490b1234ab7d271cad3fdf 100644
--- a/core/css/styles.scss
+++ b/core/css/styles.scss
@@ -292,478 +292,6 @@ body {
 	opacity: .4;
 }
 
-/* LOG IN & INSTALLATION ------------------------------------------------------------ */
-
-/* Some whitespace to the top */
-
-#body-login {
-	#header {
-		padding-top: 100px;
-	}
-	background-attachment: fixed;
-	/* fix background gradient */
-	height: 100%;
-	/* fix sticky footer */
-	p.info, form fieldset legend, #datadirContent label {
-		text-align: center;
-		color: #fff;
-	}
-	form {
-		fieldset .warning-info, input[type='checkbox'] + label {
-			text-align: center;
-			color: #fff;
-		}
-		.warning input[type='checkbox'] {
-			&:hover + label, &:focus + label, + label {
-				color: #fff !important;
-			}
-		}
-	}
-	.update {
-		h2 {
-			margin: 0 0 20px;
-		}
-		a {
-			color: #fff;
-			border-bottom: 1px solid #aaa;
-		}
-	}
-	.infogroup {
-		margin-bottom: 15px;
-	}
-	p#message img {
-		vertical-align: middle;
-		padding: 5px;
-	}
-	div.buttons {
-		text-align: center;
-	}
-	p.info {
-		margin: 0 auto;
-		padding-top: 20px;
-		-webkit-user-select: none;
-		-moz-user-select: none;
-		-ms-user-select: none;
-		user-select: none;
-		a {
-			font-weight: 600;
-			padding: 13px;
-			margin: -13px;
-		}
-	}
-	form {
-		position: relative;
-		width: 280px;
-		margin: 16px auto;
-		padding: 0;
-		fieldset {
-			margin-bottom: 20px;
-			text-align: left;
-			-webkit-user-select: none;
-			-moz-user-select: none;
-			-ms-user-select: none;
-			user-select: none;
-		}
-		#sqliteInformation {
-			margin-top: -20px;
-			margin-bottom: 20px;
-		}
-		#adminaccount {
-			margin-bottom: 15px;
-		}
-		fieldset legend {
-			width: 100%;
-		}
-	}
-}
-
-/* Dark subtle label text */
-
-/* overrides another !important statement that sets this to unreadable black */
-
-#datadirContent label {
-	width: 100%;
-}
-
-#body-login {
-	#datadirContent label {
-		display: block;
-		margin: 0;
-	}
-	form #datadirField legend {
-		margin-bottom: 15px;
-	}
-	#showAdvanced {
-		padding: 13px;
-		/* increase clickable area of Advanced dropdown */
-		img {
-			vertical-align: bottom;
-			/* adjust position of Advanced dropdown arrow */
-			margin-left: -4px;
-		}
-	}
-	.icon-info-white {
-		padding: 10px;
-	}
-	.strengthify-wrapper {
-		display: inline-block;
-		position: relative;
-		left: 15px;
-		top: -23px;
-		width: 250px;
-	}
-	.tipsy-inner {
-		font-weight: bold;
-		color: #ccc;
-	}
-	input {
-		&[type='text'], &[type='password'], &[type='email'] {
-			border: none;
-			font-weight: 300;
-		}
-	}
-}
-
-/* strengthify wrapper */
-
-/* tipsy for the strengthify wrapper looks better with following font settings */
-
-/* General new input field look */
-
-/* Nicely grouping input field sets */
-
-.grouptop, .groupmiddle, .groupbottom {
-	position: relative;
-	-webkit-user-select: none;
-	-moz-user-select: none;
-	-ms-user-select: none;
-	user-select: none;
-}
-
-#body-login .grouptop input, .grouptop input {
-	margin-bottom: 0 !important;
-	border-bottom: 0 !important;
-	border-bottom-left-radius: 0 !important;
-	border-bottom-right-radius: 0 !important;
-}
-
-#body-login .groupmiddle input, .groupmiddle input {
-	margin-top: 0 !important;
-	margin-bottom: 0 !important;
-	border-top: 0 !important;
-	border-bottom: 0 !important;
-	border-radius: 0 !important;
-	box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1) inset !important;
-}
-
-#body-login .groupbottom input, .groupbottom input {
-	margin-top: 0 !important;
-	border-top: 0 !important;
-	border-top-right-radius: 0 !important;
-	border-top-left-radius: 0 !important;
-	box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1) inset !important;
-}
-
-#body-login .groupbottom input[type=submit] {
-	box-shadow: none !important;
-}
-
-/* keep the labels for screen readers but hide them since we use placeholders */
-
-label.infield {
-	display: none;
-}
-
-#body-login {
-	form {
-		input[type='checkbox'] + label {
-			position: relative;
-			margin: 0;
-			padding: 14px;
-			vertical-align: middle;
-			-webkit-user-select: none;
-			-moz-user-select: none;
-			-ms-user-select: none;
-			user-select: none;
-		}
-		.errors {
-			background: #fed7d7;
-			border: 1px solid #f00;
-			list-style-indent: inside;
-			margin: 0 0 2em;
-			padding: 1em;
-		}
-	}
-	.success {
-		background: #d7fed7;
-		border: 1px solid #0f0;
-		width: 35%;
-		margin: 30px auto;
-		padding: 1em;
-		text-align: center;
-	}
-	#showAdvanced > img {
-		padding: 4px;
-		box-sizing: border-box;
-	}
-	p.info a, #showAdvanced {
-		color: #fff;
-	}
-	#remember_login {
-		&:hover + label, &:focus + label {
-			opacity: .6;
-		}
-	}
-	#forgot-password {
-		&:hover, &:focus {
-			opacity: .6;
-		}
-	}
-	p.info a {
-		&:hover, &:focus {
-			opacity: .6;
-		}
-	}
-}
-
-/* Show password toggle */
-
-#show, #dbpassword {
-	position: absolute;
-	right: 1em;
-	top: .8em;
-	float: right;
-}
-
-#show, #dbpassword, #personal-show {
-	display: none;
-}
-
-#show + label, #dbpassword + label {
-	right: 21px;
-	top: 15px !important;
-	margin: -14px !important;
-	padding: 14px !important;
-}
-
-#show:checked + label, #dbpassword:checked + label, #personal-show:checked + label {
-	-ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=80)';
-	opacity: .8;
-}
-
-#show + label, #dbpassword + label, #personal-show + label {
-	position: absolute !important;
-	height: 20px;
-	width: 24px;
-	background-image: url('../img/actions/toggle.svg?v=1');
-	background-repeat: no-repeat;
-	background-position: center;
-	-ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=30)';
-	opacity: .3;
-}
-
-#show + label:before, #dbpassword + label:before, #personal-show + label:before {
-	display: none;
-}
-
-#pass2, input[name='personal-password-clone'] {
-	padding: .6em 2.5em .4em .4em;
-	width: 8em;
-}
-
-#personal-show + label {
-	height: 14px;
-	margin-top: -25px;
-	left: 295px;
-	display: block;
-}
-
-#passwordbutton {
-	margin-left: .5em;
-}
-
-/* Database selector */
-
-#body-login {
-	form #selectDbType {
-		text-align: center;
-		white-space: nowrap;
-		margin: 0;
-		.info {
-			white-space: normal;
-		}
-		label {
-			position: static;
-			margin: 0 -3px 5px;
-			font-size: 12px;
-			background: #f8f8f8;
-			color: #888;
-			cursor: pointer;
-			border: 1px solid #ddd;
-			span {
-				cursor: pointer;
-				padding: 10px 20px;
-			}
-			&.ui-state-hover, &.ui-state-active {
-				color: #000;
-				background-color: #e8e8e8;
-			}
-		}
-	}
-	.warning, .update, .error {
-		display: block;
-		padding: 10px;
-		background-color: rgba(0, 0, 0, 0.3);
-		color: #fff;
-		text-align: left;
-		border-radius: 3px;
-		cursor: default;
-	}
-	.update {
-		width: inherit;
-		text-align: center;
-		.appList {
-			list-style: disc;
-			text-align: left;
-			margin-left: 25px;
-			margin-right: 25px;
-		}
-	}
-	.v-align {
-		width: inherit;
-	}
-	.update img.float-spinner {
-		float: left;
-	}
-}
-
-/* Warnings and errors are the same */
-
-#body-user .warning, #body-settings .warning {
-	margin-top: 8px;
-	padding: 5px;
-	background: #fdd;
-	border-radius: 3px;
-}
-
-.warning {
-	legend, a {
-		color: #fff !important;
-		font-weight: 600 !important;
-	}
-}
-
-.error {
-	a {
-		color: #fff !important;
-		font-weight: 600 !important;
-		&.button {
-			color: #555 !important;
-			display: inline-block;
-			text-align: center;
-		}
-	}
-	pre {
-		white-space: pre-wrap;
-		text-align: left;
-	}
-}
-
-.error-wide {
-	width: 700px;
-	margin-left: -200px !important;
-	.button {
-		color: black !important;
-	}
-}
-
-.warning-input {
-	border-color: #ce3702 !important;
-}
-
-/* Fixes for log in page, TODO should be removed some time */
-
-#body-login {
-	ul.error-wide {
-		margin-top: 35px;
-	}
-	.warning {
-		margin: 0 7px 5px 4px;
-		legend {
-			-ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=100)';
-			opacity: 1;
-		}
-	}
-	a.warning {
-		cursor: pointer;
-	}
-	.updateProgress .error {
-		margin-top: 10px;
-		margin-bottom: 10px;
-	}
-}
-
-/* fixes for update page TODO should be fixed some time in a proper way */
-/* this is just for an error while updating the ownCloud instance */
-
-/* Alternative Logins */
-
-#alternative-logins {
-	legend {
-		margin-bottom: 10px;
-	}
-	li {
-		height: 40px;
-		display: inline-block;
-		white-space: nowrap;
-	}
-}
-
-/* Log in and install button */
-
-#body-login input {
-	font-size: 20px;
-	margin: 5px;
-	padding: 11px 10px 9px;
-	&[type='text'], &[type='password'] {
-		width: 249px;
-	}
-	&.login {
-		width: 269px;
-		background-position: right 16px center;
-	}
-	&[type='submit'] {
-		padding: 10px 20px;
-		/* larger log in and installation buttons */
-	}
-}
-
-#remember_login {
-	margin: 18px 5px 0 16px !important;
-}
-
-#body-login {
-	.remember-login-container {
-		display: inline-block;
-		margin: 10px 0;
-		text-align: center;
-		width: 100%;
-	}
-	#forgot-password {
-		padding: 11px;
-		float: right;
-		color: #fff;
-	}
-	.wrapper {
-		min-height: 100%;
-		margin: 0 auto -70px;
-		width: 300px;
-	}
-	footer, .push {
-		height: 70px;
-	}
-}
-
 /* Sticky footer */
 
 /* round profile photos */
diff --git a/lib/private/Template/CSSResourceLocator.php b/lib/private/Template/CSSResourceLocator.php
index 351e6d1366f149e3d0d2b2a04e68783ed8502d67..6af4e319e363deed389df4a789f0b60817aed4f1 100644
--- a/lib/private/Template/CSSResourceLocator.php
+++ b/lib/private/Template/CSSResourceLocator.php
@@ -39,7 +39,7 @@ class CSSResourceLocator extends ResourceLocator {
 	 * @param array $party_map
 	 * @param SCSSCacher $scssCacher
 	 */
-	public function __construct(ILogger $logger, $theme, $core_map, $party_map, SCSSCacher $scssCacher) {
+	public function __construct(ILogger $logger, $theme, $core_map, $party_map, $scssCacher) {
 		$this->scssCacher = $scssCacher;
 
 		parent::__construct($logger, $theme, $core_map, $party_map);
@@ -85,12 +85,17 @@ class CSSResourceLocator extends ResourceLocator {
 	 */
 	protected function cacheAndAppendScssIfExist($root, $file, $webRoot = null) {
 		if (is_file($root.'/'.$file)) {
-			if($this->scssCacher->process($root, $file)) {
-				$this->append($root, $this->scssCacher->getCachedSCSS('core', $file), $webRoot, false);
-				return true;
+			if($this->scssCacher !== null) {
+				if($this->scssCacher->process($root, $file)) {
+					$this->append($root, $this->scssCacher->getCachedSCSS('core', $file), $webRoot, false);
+					return true;
+				} else {
+					$this->logger->error('Failed to compile and/or save '.$root.'/'.$file, ['app' => 'core']);
+					return false;
+				}
 			} else {
-				$this->logger->error('Failed to compile and/or save '.$root.'/'.$file, ['app' => 'core']);
-				return false;
+				$this->logger->error('Scss is disabled for '.$root.'/'.$file.', ignoring', ['app' => 'core']);
+				return true;
 			}
 		}
 		return false;
diff --git a/lib/private/TemplateLayout.php b/lib/private/TemplateLayout.php
index bc6a485ad4369119711ad83200059082c86e2dd1..c3197b002823c508a8726db3b85a0f4814e67787 100644
--- a/lib/private/TemplateLayout.php
+++ b/lib/private/TemplateLayout.php
@@ -162,14 +162,11 @@ class TemplateLayout extends \OC_Template {
 
 		// Add the css files and check if server is already installed to prevent
 		// appdata initialisation before database configuration
-		if(\OC::$server->getSystemConfig()->getValue('installed', false)) {
+		// Prevent scss initialisation if an update is needed
+		if(\OC::$server->getSystemConfig()->getValue('installed', false) && !\OCP\Util::needUpgrade()) {
 			$cssFiles = self::findStylesheetFiles(\OC_Util::$styles);
 		} else {
-			$cssFiles = array(
-				[\OC::$SERVERROOT, \OC::$WEBROOT, 'core/css/global.css'],
-				[\OC::$SERVERROOT, \OC::$WEBROOT, 'core/css/fonts.css'],
-				[\OC::$SERVERROOT, \OC::$WEBROOT, 'core/css/installation.css']
-			);
+			$cssFiles = self::findStylesheetFiles(\OC_Util::$styles, false);
 		}
 		$this->assign('cssfiles', array());
 		$this->assign('printcssfiles', []);
@@ -190,16 +187,20 @@ class TemplateLayout extends \OC_Template {
 	 * @param array $styles
 	 * @return array
 	 */
-	static public function findStylesheetFiles($styles) {
+	static public function findStylesheetFiles($styles, $compileScss = true) {
 		// Read the selected theme from the config file
 		$theme = \OC_Util::getTheme();
 
-		$SCSSCacher = new SCSSCacher(
-			\OC::$server->getLogger(),
-			\OC::$server->getAppDataDir('css'),
-			\OC::$server->getURLGenerator(),
-			\OC::$server->getSystemConfig()
-		);
+		if($compileScss) {
+			$SCSSCacher = new SCSSCacher(
+				\OC::$server->getLogger(),
+				\OC::$server->getAppDataDir('css'),
+				\OC::$server->getURLGenerator(),
+				\OC::$server->getSystemConfig()
+			);
+		} else {
+			$SCSSCacher = null;
+		}
 
 		$locator = new \OC\Template\CSSResourceLocator(
 			\OC::$server->getLogger(),