diff --git a/.babelrc b/.babelrc
index b687cb485..43e3ed2f5 100644
--- a/.babelrc
+++ b/.babelrc
@@ -1,7 +1,8 @@
 {
     "plugins": [
         "transform-object-rest-spread",
-        "transform-require-context"
+        "transform-require-context",
+        "syntax-dynamic-import"
     ],
     "presets": ["es2015", "react"],
 }
diff --git a/bin/tx-push-www b/bin/tx-push-www
index 0e7a55760..c87f3a6f2 100755
--- a/bin/tx-push-www
+++ b/bin/tx-push-www
@@ -31,7 +31,7 @@ if (args[0] === '--execute') {
 const overrides = {
     'src/views/teachers/faq/l10n.json': 'teacher-faq-l10njson',
     'src/views/teachers/landing/l10n.json': 'educator-landing-l10njson',
-    'src/views/conference/2020/index/l10n.json': 'conference-index-2020-l10njson',
+    'src/views/conference/2021/index/l10n.json': 'conference-index-2021-l10njson',
     'src/views/conference/2019/index/l10n.json': 'conference-index-2019-l10njson',
     'src/views/conference/2017/index/l10n.json': 'conference-index-2017-l10njson'
 };
diff --git a/package-lock.json b/package-lock.json
index 9920d3f94..edbcbaff7 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -219,26 +219,26 @@
       }
     },
     "@babel/compat-data": {
-      "version": "7.14.9",
-      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.9.tgz",
-      "integrity": "sha512-p3QjZmMGHDGdpcwEYYWu7i7oJShJvtgMjJeb0W95PPhSm++3lm8YXYOh45Y6iCN9PkZLTZ7CIX5nFrp7pw7TXw==",
+      "version": "7.15.0",
+      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz",
+      "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==",
       "dev": true
     },
     "@babel/core": {
-      "version": "7.14.8",
-      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.8.tgz",
-      "integrity": "sha512-/AtaeEhT6ErpDhInbXmjHcUQXH0L0TEgscfcxk1qbOvLuKCa5aZT0SOOtDKFY96/CLROwbLSKyFor6idgNaU4Q==",
+      "version": "7.15.0",
+      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.0.tgz",
+      "integrity": "sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw==",
       "dev": true,
       "requires": {
         "@babel/code-frame": "^7.14.5",
-        "@babel/generator": "^7.14.8",
-        "@babel/helper-compilation-targets": "^7.14.5",
-        "@babel/helper-module-transforms": "^7.14.8",
+        "@babel/generator": "^7.15.0",
+        "@babel/helper-compilation-targets": "^7.15.0",
+        "@babel/helper-module-transforms": "^7.15.0",
         "@babel/helpers": "^7.14.8",
-        "@babel/parser": "^7.14.8",
+        "@babel/parser": "^7.15.0",
         "@babel/template": "^7.14.5",
-        "@babel/traverse": "^7.14.8",
-        "@babel/types": "^7.14.8",
+        "@babel/traverse": "^7.15.0",
+        "@babel/types": "^7.15.0",
         "convert-source-map": "^1.7.0",
         "debug": "^4.1.0",
         "gensync": "^1.0.0-beta.2",
@@ -257,12 +257,12 @@
           }
         },
         "@babel/generator": {
-          "version": "7.14.9",
-          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.9.tgz",
-          "integrity": "sha512-4yoHbhDYzFa0GLfCzLp5GxH7vPPMAHdZjyE7M/OajM9037zhx0rf+iNsJwp4PT0MSFpwjG7BsHEbPkBQpZ6cYA==",
+          "version": "7.15.0",
+          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.0.tgz",
+          "integrity": "sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ==",
           "dev": true,
           "requires": {
-            "@babel/types": "^7.14.9",
+            "@babel/types": "^7.15.0",
             "jsesc": "^2.5.1",
             "source-map": "^0.5.0"
           }
@@ -308,9 +308,9 @@
           }
         },
         "@babel/parser": {
-          "version": "7.14.9",
-          "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.9.tgz",
-          "integrity": "sha512-RdUTOseXJ8POjjOeEBEvNMIZU/nm4yu2rufRkcibzkkg7DmQvXU8v3M4Xk9G7uuI86CDGkKcuDWgioqZm+mScQ==",
+          "version": "7.15.2",
+          "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.2.tgz",
+          "integrity": "sha512-bMJXql1Ss8lFnvr11TZDH4ArtwlAS5NG9qBmdiFW2UHHm6MVoR+GDc5XE2b9K938cyjc9O6/+vjjcffLDtfuDg==",
           "dev": true
         },
         "@babel/template": {
@@ -325,26 +325,26 @@
           }
         },
         "@babel/traverse": {
-          "version": "7.14.9",
-          "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.9.tgz",
-          "integrity": "sha512-bldh6dtB49L8q9bUyB7bC20UKgU+EFDwKJylwl234Kv+ySZeMD31Xeht6URyueQ6LrRRpF2tmkfcZooZR9/e8g==",
+          "version": "7.15.0",
+          "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.0.tgz",
+          "integrity": "sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw==",
           "dev": true,
           "requires": {
             "@babel/code-frame": "^7.14.5",
-            "@babel/generator": "^7.14.9",
+            "@babel/generator": "^7.15.0",
             "@babel/helper-function-name": "^7.14.5",
             "@babel/helper-hoist-variables": "^7.14.5",
             "@babel/helper-split-export-declaration": "^7.14.5",
-            "@babel/parser": "^7.14.9",
-            "@babel/types": "^7.14.9",
+            "@babel/parser": "^7.15.0",
+            "@babel/types": "^7.15.0",
             "debug": "^4.1.0",
             "globals": "^11.1.0"
           }
         },
         "@babel/types": {
-          "version": "7.14.9",
-          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.9.tgz",
-          "integrity": "sha512-u0bLTnv3DFHeaQLYzb7oRJ1JHr1sv/SYDM7JSqHFFLwXG1wTZRughxFI5NCP8qBEo1rVVsn7Yg2Lvw49nne/Ow==",
+          "version": "7.15.0",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz",
+          "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==",
           "dev": true,
           "requires": {
             "@babel/helper-validator-identifier": "^7.14.9",
@@ -479,12 +479,12 @@
       }
     },
     "@babel/helper-compilation-targets": {
-      "version": "7.14.5",
-      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz",
-      "integrity": "sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw==",
+      "version": "7.15.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.0.tgz",
+      "integrity": "sha512-h+/9t0ncd4jfZ8wsdAsoIxSa61qhBYlycXiHWqJaQBCXAhDCMbPRSMTGnZIkkmt1u4ag+UQmuqcILwqKzZ4N2A==",
       "dev": true,
       "requires": {
-        "@babel/compat-data": "^7.14.5",
+        "@babel/compat-data": "^7.15.0",
         "@babel/helper-validator-option": "^7.14.5",
         "browserslist": "^4.16.6",
         "semver": "^6.3.0"
@@ -503,22 +503,10 @@
             "node-releases": "^1.1.73"
           }
         },
-        "caniuse-lite": {
-          "version": "1.0.30001248",
-          "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001248.tgz",
-          "integrity": "sha512-NwlQbJkxUFJ8nMErnGtT0QTM2TJ33xgz4KXJSMIrjXIbDVdaYueGyjOrLKRtJC+rTiWfi6j5cnZN1NBiSBJGNw==",
-          "dev": true
-        },
         "electron-to-chromium": {
-          "version": "1.3.795",
-          "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.795.tgz",
-          "integrity": "sha512-4TPxrLf9Fzsi4rVgTlDm+ubxoXm3/TN67/LGHx/a4UkVubKILa6L26O6eTnHewixG/knzU9L3lLmfL39eElwlQ==",
-          "dev": true
-        },
-        "node-releases": {
-          "version": "1.1.73",
-          "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz",
-          "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==",
+          "version": "1.3.802",
+          "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.802.tgz",
+          "integrity": "sha512-dXB0SGSypfm3iEDxrb5n/IVKeX4uuTnFHdve7v+yKJqNpEP0D4mjFJ8e1znmSR+OOVlVC+kDO6f2kAkTFXvJBg==",
           "dev": true
         },
         "semver": {
@@ -559,9 +547,9 @@
       },
       "dependencies": {
         "@babel/types": {
-          "version": "7.14.9",
-          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.9.tgz",
-          "integrity": "sha512-u0bLTnv3DFHeaQLYzb7oRJ1JHr1sv/SYDM7JSqHFFLwXG1wTZRughxFI5NCP8qBEo1rVVsn7Yg2Lvw49nne/Ow==",
+          "version": "7.15.0",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz",
+          "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==",
           "dev": true,
           "requires": {
             "@babel/helper-validator-identifier": "^7.14.9",
@@ -577,18 +565,18 @@
       }
     },
     "@babel/helper-member-expression-to-functions": {
-      "version": "7.14.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz",
-      "integrity": "sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA==",
+      "version": "7.15.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.0.tgz",
+      "integrity": "sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg==",
       "dev": true,
       "requires": {
-        "@babel/types": "^7.14.5"
+        "@babel/types": "^7.15.0"
       },
       "dependencies": {
         "@babel/types": {
-          "version": "7.14.9",
-          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.9.tgz",
-          "integrity": "sha512-u0bLTnv3DFHeaQLYzb7oRJ1JHr1sv/SYDM7JSqHFFLwXG1wTZRughxFI5NCP8qBEo1rVVsn7Yg2Lvw49nne/Ow==",
+          "version": "7.15.0",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz",
+          "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==",
           "dev": true,
           "requires": {
             "@babel/helper-validator-identifier": "^7.14.9",
@@ -613,9 +601,9 @@
       },
       "dependencies": {
         "@babel/types": {
-          "version": "7.14.9",
-          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.9.tgz",
-          "integrity": "sha512-u0bLTnv3DFHeaQLYzb7oRJ1JHr1sv/SYDM7JSqHFFLwXG1wTZRughxFI5NCP8qBEo1rVVsn7Yg2Lvw49nne/Ow==",
+          "version": "7.15.0",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz",
+          "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==",
           "dev": true,
           "requires": {
             "@babel/helper-validator-identifier": "^7.14.9",
@@ -631,19 +619,19 @@
       }
     },
     "@babel/helper-module-transforms": {
-      "version": "7.14.8",
-      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.8.tgz",
-      "integrity": "sha512-RyE+NFOjXn5A9YU1dkpeBaduagTlZ0+fccnIcAGbv1KGUlReBj7utF7oEth8IdIBQPcux0DDgW5MFBH2xu9KcA==",
+      "version": "7.15.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.0.tgz",
+      "integrity": "sha512-RkGiW5Rer7fpXv9m1B3iHIFDZdItnO2/BLfWVW/9q7+KqQSDY5kUfQEbzdXM1MVhJGcugKV7kRrNVzNxmk7NBg==",
       "dev": true,
       "requires": {
         "@babel/helper-module-imports": "^7.14.5",
-        "@babel/helper-replace-supers": "^7.14.5",
+        "@babel/helper-replace-supers": "^7.15.0",
         "@babel/helper-simple-access": "^7.14.8",
         "@babel/helper-split-export-declaration": "^7.14.5",
-        "@babel/helper-validator-identifier": "^7.14.8",
+        "@babel/helper-validator-identifier": "^7.14.9",
         "@babel/template": "^7.14.5",
-        "@babel/traverse": "^7.14.8",
-        "@babel/types": "^7.14.8"
+        "@babel/traverse": "^7.15.0",
+        "@babel/types": "^7.15.0"
       },
       "dependencies": {
         "@babel/code-frame": {
@@ -656,12 +644,12 @@
           }
         },
         "@babel/generator": {
-          "version": "7.14.9",
-          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.9.tgz",
-          "integrity": "sha512-4yoHbhDYzFa0GLfCzLp5GxH7vPPMAHdZjyE7M/OajM9037zhx0rf+iNsJwp4PT0MSFpwjG7BsHEbPkBQpZ6cYA==",
+          "version": "7.15.0",
+          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.0.tgz",
+          "integrity": "sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ==",
           "dev": true,
           "requires": {
-            "@babel/types": "^7.14.9",
+            "@babel/types": "^7.15.0",
             "jsesc": "^2.5.1",
             "source-map": "^0.5.0"
           }
@@ -707,9 +695,9 @@
           }
         },
         "@babel/parser": {
-          "version": "7.14.9",
-          "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.9.tgz",
-          "integrity": "sha512-RdUTOseXJ8POjjOeEBEvNMIZU/nm4yu2rufRkcibzkkg7DmQvXU8v3M4Xk9G7uuI86CDGkKcuDWgioqZm+mScQ==",
+          "version": "7.15.2",
+          "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.2.tgz",
+          "integrity": "sha512-bMJXql1Ss8lFnvr11TZDH4ArtwlAS5NG9qBmdiFW2UHHm6MVoR+GDc5XE2b9K938cyjc9O6/+vjjcffLDtfuDg==",
           "dev": true
         },
         "@babel/template": {
@@ -724,26 +712,26 @@
           }
         },
         "@babel/traverse": {
-          "version": "7.14.9",
-          "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.9.tgz",
-          "integrity": "sha512-bldh6dtB49L8q9bUyB7bC20UKgU+EFDwKJylwl234Kv+ySZeMD31Xeht6URyueQ6LrRRpF2tmkfcZooZR9/e8g==",
+          "version": "7.15.0",
+          "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.0.tgz",
+          "integrity": "sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw==",
           "dev": true,
           "requires": {
             "@babel/code-frame": "^7.14.5",
-            "@babel/generator": "^7.14.9",
+            "@babel/generator": "^7.15.0",
             "@babel/helper-function-name": "^7.14.5",
             "@babel/helper-hoist-variables": "^7.14.5",
             "@babel/helper-split-export-declaration": "^7.14.5",
-            "@babel/parser": "^7.14.9",
-            "@babel/types": "^7.14.9",
+            "@babel/parser": "^7.15.0",
+            "@babel/types": "^7.15.0",
             "debug": "^4.1.0",
             "globals": "^11.1.0"
           }
         },
         "@babel/types": {
-          "version": "7.14.9",
-          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.9.tgz",
-          "integrity": "sha512-u0bLTnv3DFHeaQLYzb7oRJ1JHr1sv/SYDM7JSqHFFLwXG1wTZRughxFI5NCP8qBEo1rVVsn7Yg2Lvw49nne/Ow==",
+          "version": "7.15.0",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz",
+          "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==",
           "dev": true,
           "requires": {
             "@babel/helper-validator-identifier": "^7.14.9",
@@ -830,9 +818,9 @@
       },
       "dependencies": {
         "@babel/types": {
-          "version": "7.14.9",
-          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.9.tgz",
-          "integrity": "sha512-u0bLTnv3DFHeaQLYzb7oRJ1JHr1sv/SYDM7JSqHFFLwXG1wTZRughxFI5NCP8qBEo1rVVsn7Yg2Lvw49nne/Ow==",
+          "version": "7.15.0",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz",
+          "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==",
           "dev": true,
           "requires": {
             "@babel/helper-validator-identifier": "^7.14.9",
@@ -854,15 +842,15 @@
       "dev": true
     },
     "@babel/helper-replace-supers": {
-      "version": "7.14.5",
-      "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz",
-      "integrity": "sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow==",
+      "version": "7.15.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.0.tgz",
+      "integrity": "sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA==",
       "dev": true,
       "requires": {
-        "@babel/helper-member-expression-to-functions": "^7.14.5",
+        "@babel/helper-member-expression-to-functions": "^7.15.0",
         "@babel/helper-optimise-call-expression": "^7.14.5",
-        "@babel/traverse": "^7.14.5",
-        "@babel/types": "^7.14.5"
+        "@babel/traverse": "^7.15.0",
+        "@babel/types": "^7.15.0"
       },
       "dependencies": {
         "@babel/code-frame": {
@@ -875,12 +863,12 @@
           }
         },
         "@babel/generator": {
-          "version": "7.14.9",
-          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.9.tgz",
-          "integrity": "sha512-4yoHbhDYzFa0GLfCzLp5GxH7vPPMAHdZjyE7M/OajM9037zhx0rf+iNsJwp4PT0MSFpwjG7BsHEbPkBQpZ6cYA==",
+          "version": "7.15.0",
+          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.0.tgz",
+          "integrity": "sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ==",
           "dev": true,
           "requires": {
-            "@babel/types": "^7.14.9",
+            "@babel/types": "^7.15.0",
             "jsesc": "^2.5.1",
             "source-map": "^0.5.0"
           }
@@ -926,9 +914,9 @@
           }
         },
         "@babel/parser": {
-          "version": "7.14.9",
-          "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.9.tgz",
-          "integrity": "sha512-RdUTOseXJ8POjjOeEBEvNMIZU/nm4yu2rufRkcibzkkg7DmQvXU8v3M4Xk9G7uuI86CDGkKcuDWgioqZm+mScQ==",
+          "version": "7.15.2",
+          "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.2.tgz",
+          "integrity": "sha512-bMJXql1Ss8lFnvr11TZDH4ArtwlAS5NG9qBmdiFW2UHHm6MVoR+GDc5XE2b9K938cyjc9O6/+vjjcffLDtfuDg==",
           "dev": true
         },
         "@babel/template": {
@@ -943,26 +931,26 @@
           }
         },
         "@babel/traverse": {
-          "version": "7.14.9",
-          "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.9.tgz",
-          "integrity": "sha512-bldh6dtB49L8q9bUyB7bC20UKgU+EFDwKJylwl234Kv+ySZeMD31Xeht6URyueQ6LrRRpF2tmkfcZooZR9/e8g==",
+          "version": "7.15.0",
+          "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.0.tgz",
+          "integrity": "sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw==",
           "dev": true,
           "requires": {
             "@babel/code-frame": "^7.14.5",
-            "@babel/generator": "^7.14.9",
+            "@babel/generator": "^7.15.0",
             "@babel/helper-function-name": "^7.14.5",
             "@babel/helper-hoist-variables": "^7.14.5",
             "@babel/helper-split-export-declaration": "^7.14.5",
-            "@babel/parser": "^7.14.9",
-            "@babel/types": "^7.14.9",
+            "@babel/parser": "^7.15.0",
+            "@babel/types": "^7.15.0",
             "debug": "^4.1.0",
             "globals": "^11.1.0"
           }
         },
         "@babel/types": {
-          "version": "7.14.9",
-          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.9.tgz",
-          "integrity": "sha512-u0bLTnv3DFHeaQLYzb7oRJ1JHr1sv/SYDM7JSqHFFLwXG1wTZRughxFI5NCP8qBEo1rVVsn7Yg2Lvw49nne/Ow==",
+          "version": "7.15.0",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz",
+          "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==",
           "dev": true,
           "requires": {
             "@babel/helper-validator-identifier": "^7.14.9",
@@ -1049,9 +1037,9 @@
       },
       "dependencies": {
         "@babel/types": {
-          "version": "7.14.9",
-          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.9.tgz",
-          "integrity": "sha512-u0bLTnv3DFHeaQLYzb7oRJ1JHr1sv/SYDM7JSqHFFLwXG1wTZRughxFI5NCP8qBEo1rVVsn7Yg2Lvw49nne/Ow==",
+          "version": "7.15.0",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz",
+          "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==",
           "dev": true,
           "requires": {
             "@babel/helper-validator-identifier": "^7.14.9",
@@ -1108,12 +1096,12 @@
           }
         },
         "@babel/generator": {
-          "version": "7.14.9",
-          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.9.tgz",
-          "integrity": "sha512-4yoHbhDYzFa0GLfCzLp5GxH7vPPMAHdZjyE7M/OajM9037zhx0rf+iNsJwp4PT0MSFpwjG7BsHEbPkBQpZ6cYA==",
+          "version": "7.15.0",
+          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.0.tgz",
+          "integrity": "sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ==",
           "dev": true,
           "requires": {
-            "@babel/types": "^7.14.9",
+            "@babel/types": "^7.15.0",
             "jsesc": "^2.5.1",
             "source-map": "^0.5.0"
           }
@@ -1159,9 +1147,9 @@
           }
         },
         "@babel/parser": {
-          "version": "7.14.9",
-          "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.9.tgz",
-          "integrity": "sha512-RdUTOseXJ8POjjOeEBEvNMIZU/nm4yu2rufRkcibzkkg7DmQvXU8v3M4Xk9G7uuI86CDGkKcuDWgioqZm+mScQ==",
+          "version": "7.15.2",
+          "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.2.tgz",
+          "integrity": "sha512-bMJXql1Ss8lFnvr11TZDH4ArtwlAS5NG9qBmdiFW2UHHm6MVoR+GDc5XE2b9K938cyjc9O6/+vjjcffLDtfuDg==",
           "dev": true
         },
         "@babel/template": {
@@ -1176,26 +1164,26 @@
           }
         },
         "@babel/traverse": {
-          "version": "7.14.9",
-          "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.9.tgz",
-          "integrity": "sha512-bldh6dtB49L8q9bUyB7bC20UKgU+EFDwKJylwl234Kv+ySZeMD31Xeht6URyueQ6LrRRpF2tmkfcZooZR9/e8g==",
+          "version": "7.15.0",
+          "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.0.tgz",
+          "integrity": "sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw==",
           "dev": true,
           "requires": {
             "@babel/code-frame": "^7.14.5",
-            "@babel/generator": "^7.14.9",
+            "@babel/generator": "^7.15.0",
             "@babel/helper-function-name": "^7.14.5",
             "@babel/helper-hoist-variables": "^7.14.5",
             "@babel/helper-split-export-declaration": "^7.14.5",
-            "@babel/parser": "^7.14.9",
-            "@babel/types": "^7.14.9",
+            "@babel/parser": "^7.15.0",
+            "@babel/types": "^7.15.0",
             "debug": "^4.1.0",
             "globals": "^11.1.0"
           }
         },
         "@babel/types": {
-          "version": "7.14.9",
-          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.9.tgz",
-          "integrity": "sha512-u0bLTnv3DFHeaQLYzb7oRJ1JHr1sv/SYDM7JSqHFFLwXG1wTZRughxFI5NCP8qBEo1rVVsn7Yg2Lvw49nne/Ow==",
+          "version": "7.15.0",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz",
+          "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==",
           "dev": true,
           "requires": {
             "@babel/helper-validator-identifier": "^7.14.9",
@@ -2152,6 +2140,12 @@
         "@babel/types": "^7.3.0"
       }
     },
+    "@types/json-schema": {
+      "version": "7.0.8",
+      "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.8.tgz",
+      "integrity": "sha512-YSBPTLTVm2e2OoQIDYx8HaeWJ5tTToLH67kXR7zYNGupXMEHa2++G8k+DczX2cFVgalypqtyZIcU19AFcmOpmg==",
+      "dev": true
+    },
     "@types/node": {
       "version": "12.6.2",
       "resolved": "https://registry.npmjs.org/@types/node/-/node-12.6.2.tgz",
@@ -3408,6 +3402,12 @@
         }
       }
     },
+    "babel-plugin-syntax-dynamic-import": {
+      "version": "6.18.0",
+      "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz",
+      "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=",
+      "dev": true
+    },
     "babel-plugin-syntax-flow": {
       "version": "6.18.0",
       "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz",
@@ -14896,6 +14896,92 @@
         "tiny-warning": "^1.0.3"
       }
     },
+    "mini-css-extract-plugin": {
+      "version": "1.6.2",
+      "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz",
+      "integrity": "sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q==",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^2.0.0",
+        "schema-utils": "^3.0.0",
+        "webpack-sources": "^1.1.0"
+      },
+      "dependencies": {
+        "ajv": {
+          "version": "6.12.6",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+          "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+          "dev": true,
+          "requires": {
+            "fast-deep-equal": "^3.1.1",
+            "fast-json-stable-stringify": "^2.0.0",
+            "json-schema-traverse": "^0.4.1",
+            "uri-js": "^4.2.2"
+          }
+        },
+        "ajv-keywords": {
+          "version": "3.5.2",
+          "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+          "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+          "dev": true
+        },
+        "emojis-list": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
+          "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
+          "dev": true
+        },
+        "fast-deep-equal": {
+          "version": "3.1.3",
+          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+          "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+          "dev": true
+        },
+        "json-schema-traverse": {
+          "version": "0.4.1",
+          "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+          "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+          "dev": true
+        },
+        "json5": {
+          "version": "2.2.0",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
+          "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.5"
+          }
+        },
+        "loader-utils": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
+          "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
+          "dev": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^2.1.2"
+          }
+        },
+        "minimist": {
+          "version": "1.2.5",
+          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+          "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
+          "dev": true
+        },
+        "schema-utils": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz",
+          "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==",
+          "dev": true,
+          "requires": {
+            "@types/json-schema": "^7.0.7",
+            "ajv": "^6.12.5",
+            "ajv-keywords": "^3.5.2"
+          }
+        }
+      }
+    },
     "minilog": {
       "version": "2.0.8",
       "resolved": "https://registry.npmjs.org/minilog/-/minilog-2.0.8.tgz",
@@ -20891,21 +20977,21 @@
       }
     },
     "scratch-blocks": {
-      "version": "0.1.0-prerelease.20210804044921",
-      "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.1.0-prerelease.20210804044921.tgz",
-      "integrity": "sha512-Kx+sOHdF9ubDt34k2cM633cberB7+x2HnUNw2d6JA15XzNP4uZoqttoQOMt6i/vrh905bbJjqgg28h7ZWOS2zQ==",
+      "version": "0.1.0-prerelease.20210811082835",
+      "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.1.0-prerelease.20210811082835.tgz",
+      "integrity": "sha512-Rw9S72of8SMAv7Qz6ZVKLePLHx4m/rmWNcJ65hTFVWGv21SvBp7RSmqCcyHDvQzKOHjIxQMSgc+fW2qStSQDAA==",
       "dev": true,
       "requires": {
         "exports-loader": "0.6.3",
         "google-closure-library": "20190301.0.0",
         "imports-loader": "0.6.5",
-        "scratch-l10n": "3.13.20210804031526"
+        "scratch-l10n": "3.14.20210811031521"
       }
     },
     "scratch-gui": {
-      "version": "0.1.0-prerelease.20210804101730",
-      "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-0.1.0-prerelease.20210804101730.tgz",
-      "integrity": "sha512-1s2gEf50WqZ1cny/uDjc+HGM0NIywrg3qO2ATsZqs8FRD6JhXFcbgUI/ZR2eciQ+cXBS6piVtriAJKTVqiP7vw==",
+      "version": "0.1.0-prerelease.20210811131219",
+      "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-0.1.0-prerelease.20210811131219.tgz",
+      "integrity": "sha512-1BDkhRNmFbm0KIs9e0Z8WBF9hUcHv1+SKRDDOJ8WRaZEgG15TLFaBm9jeYQLhXbdZ/LNm19OxMgicI6syuO2+A==",
       "dev": true,
       "requires": {
         "arraybuffer-loader": "^1.0.6",
@@ -20956,14 +21042,14 @@
         "redux": "3.7.2",
         "redux-throttle": "0.1.1",
         "scratch-audio": "0.1.0-prerelease.20200528195344",
-        "scratch-blocks": "0.1.0-prerelease.20210804044921",
-        "scratch-l10n": "3.13.20210804031526",
-        "scratch-paint": "0.2.0-prerelease.20210804042639",
+        "scratch-blocks": "0.1.0-prerelease.20210811082835",
+        "scratch-l10n": "3.14.20210811031521",
+        "scratch-paint": "0.2.0-prerelease.20210811051056",
         "scratch-render": "0.1.0-prerelease.20210325231800",
         "scratch-render-fonts": "1.0.0-prerelease.20210401210003",
         "scratch-storage": "1.3.5",
         "scratch-svg-renderer": "0.2.0-prerelease.20210727023023",
-        "scratch-vm": "0.2.0-prerelease.20210804080338",
+        "scratch-vm": "0.2.0-prerelease.20210811102104",
         "startaudiocontext": "1.2.1",
         "style-loader": "^0.23.0",
         "text-encoding": "0.7.0",
@@ -21126,9 +21212,9 @@
           "dev": true
         },
         "electron-to-chromium": {
-          "version": "1.3.795",
-          "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.795.tgz",
-          "integrity": "sha512-4TPxrLf9Fzsi4rVgTlDm+ubxoXm3/TN67/LGHx/a4UkVubKILa6L26O6eTnHewixG/knzU9L3lLmfL39eElwlQ==",
+          "version": "1.3.802",
+          "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.802.tgz",
+          "integrity": "sha512-dXB0SGSypfm3iEDxrb5n/IVKeX4uuTnFHdve7v+yKJqNpEP0D4mjFJ8e1znmSR+OOVlVC+kDO6f2kAkTFXvJBg==",
           "dev": true
         },
         "has-flag": {
@@ -21392,9 +21478,9 @@
       }
     },
     "scratch-l10n": {
-      "version": "3.13.20210804031526",
-      "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.13.20210804031526.tgz",
-      "integrity": "sha512-fF/Aqilg4PsVK6sw96Hk6OjAF4erW3Wc+GheHIfTwLiUW784cV7wLEzZ9HRIWJ/wuAxTjFzxPzWE+uqXmtCgeA==",
+      "version": "3.14.20210811031521",
+      "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.14.20210811031521.tgz",
+      "integrity": "sha512-3MFVheuqNm1pOYHrvV/zT3K89SiClwwAEkj/loAeJ6a5mwfblPLWe0PeRq1cuRvxQQuGh2Nrrl/WT8oaDkG9xQ==",
       "dev": true,
       "requires": {
         "@babel/cli": "^7.1.2",
@@ -21404,9 +21490,9 @@
       }
     },
     "scratch-paint": {
-      "version": "0.2.0-prerelease.20210804042639",
-      "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-0.2.0-prerelease.20210804042639.tgz",
-      "integrity": "sha512-iFCFWeGCXGmfQpYRRgHYdMX8hMoo68MoDY2dgCzU5RFUrmE/r8THztRhDjK0VYK+lCgSAxjAtMuU/8uyXxwUCA==",
+      "version": "0.2.0-prerelease.20210811051056",
+      "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-0.2.0-prerelease.20210811051056.tgz",
+      "integrity": "sha512-l8AH7p7Y6EZEaTI+txbU6+bYhWpCyz8gAQKt0lib2gQaQCP7CM2cC0hgHUbtrhsUrpuUI4asVKHr5b+R8GK/0w==",
       "dev": true,
       "requires": {
         "@scratch/paper": "0.11.20200728195508",
@@ -21660,9 +21746,9 @@
       "dev": true
     },
     "scratch-vm": {
-      "version": "0.2.0-prerelease.20210804080338",
-      "resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-0.2.0-prerelease.20210804080338.tgz",
-      "integrity": "sha512-oxeqXRCM2EmWbqy05yHlRwOto2/Miqgh+WEYWwjFZPD9XjuXGUSULXwhFbC/vaBA3K4HH2x+wszMCeFunb2JSA==",
+      "version": "0.2.0-prerelease.20210811102104",
+      "resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-0.2.0-prerelease.20210811102104.tgz",
+      "integrity": "sha512-VUQoYg5byWlqdCuDeZ7gGDhyaSZa6SNVMHuHef+5g9z/sB7ezNJvSYTyTGqiRv3ygGItbXZ0/5CFF8/B+Xc73A==",
       "dev": true,
       "requires": {
         "@vernier/godirect": "1.5.0",
diff --git a/package.json b/package.json
index 34ce459db..b5aa58973 100644
--- a/package.json
+++ b/package.json
@@ -26,11 +26,12 @@
     "clean": "rm -rf ./build && rm -rf ./intl && mkdir -p build && mkdir -p intl",
     "deploy": "npm run deploy:s3 && npm run deploy:fastly",
     "deploy:fastly": "node ./bin/configure-fastly.js",
-    "deploy:s3": "npm run deploy:s3:all && npm run deploy:s3:svg && npm run deploy:s3:js",
+    "deploy:s3": "npm run deploy:s3:all && npm run deploy:s3:svg && npm run deploy:s3:js && npm run deploy:s3:css",
     "deploy:s3cmd": "s3cmd sync -P --delete-removed --add-header=Cache-Control:no-cache,public,max-age=3600 --add-header=x-amz-meta-surrogate-key:static-assets",
-    "deploy:s3:all": "npm run deploy:s3cmd -- --exclude '.DS_Store' --exclude '*.svg' --exclude '*.js' ./build/ s3://$S3_BUCKET_NAME/",
+    "deploy:s3:all": "npm run deploy:s3cmd -- --exclude '.DS_Store' --exclude '*.svg' --exclude '*.js' --exclude '*.css' ./build/ s3://$S3_BUCKET_NAME/",
     "deploy:s3:svg": "npm run deploy:s3cmd -- --exclude '*' --include '*.svg' --mime-type 'image/svg+xml' ./build/ s3://$S3_BUCKET_NAME/",
     "deploy:s3:js": "npm run deploy:s3cmd -- --exclude '*' --include '*.js' --mime-type 'application/javascript' ./build/ s3://$S3_BUCKET_NAME/",
+    "deploy:s3:css": "npm run deploy:s3cmd -- --exclude '*' --include '*.css' --mime-type 'text/css' ./build/ s3://$S3_BUCKET_NAME/",
     "i18n:push": "./bin/tx-push-www --execute",
     "translate:urls": "node ./bin/get-localized-urls localized-urls.json",
     "translate:files": "node ./bin/build-locales node_modules/scratch-l10n/www intl",
@@ -69,6 +70,7 @@
     "babel-core": "6.23.1",
     "babel-eslint": "10.0.3",
     "babel-loader": "7.1.0",
+    "babel-plugin-syntax-dynamic-import": "^6.18.0",
     "babel-plugin-transform-object-rest-spread": "6.26.0",
     "babel-plugin-transform-require-context": "0.1.1",
     "babel-preset-es2015": "6.22.0",
@@ -105,6 +107,7 @@
     "lodash.mergewith": "4.6.2",
     "lodash.omit": "3.1.0",
     "lodash.uniqby": "4.7.0",
+    "mini-css-extract-plugin": "^1.6.2",
     "minilog": "2.0.8",
     "node-sass": "4.14.1",
     "pako": "0.2.8",
@@ -127,8 +130,8 @@
     "redux-mock-store": "1.5.4",
     "redux-thunk": "2.0.1",
     "sass-loader": "6.0.6",
-    "scratch-gui": "0.1.0-prerelease.20210804101730",
-    "scratch-l10n": "3.13.20210804031526",
+    "scratch-gui": "0.1.0-prerelease.20210811131219",
+    "scratch-l10n": "3.14.20210811031521",
     "selenium-webdriver": "3.6.0",
     "slick-carousel": "1.6.0",
     "style-loader": "0.12.3",
diff --git a/src/routes.json b/src/routes.json
index 6f7b86e4e..4c462e277 100644
--- a/src/routes.json
+++ b/src/routes.json
@@ -253,14 +253,6 @@
         "view": "search/search",
         "title": "Search"
     },
-    {
-        "name": "sec",
-        "pattern": "^/sec/?(\\?.*)?$",
-        "routeAlias": "/sec/?",
-        "view": "sec/sec",
-        "title": "Scratch Education Collaborative",
-        "viewportWidth": "device-width"
-    },
     {
         "name": "splash",
         "pattern": "^/?$",
@@ -475,6 +467,12 @@
         "routeAlias": "/search",
         "redirect": "/search/projects"
     },
+    {
+        "name": "sec-redirect",
+        "pattern": "^/sec/?$",
+        "routeAlias": "/sec",
+        "redirect": "https://sip.scratch.mit.edu/sec"
+    },
     {
         "name": "splash-redirect",
         "pattern": "^///?$",
diff --git a/src/template.ejs b/src/template.ejs
index afa720981..316e06502 100644
--- a/src/template.ejs
+++ b/src/template.ejs
@@ -31,6 +31,8 @@
         <!-- Favicon & CSS normalize -->
         <link rel="shortcut icon" href="/favicon.ico" />
         <link rel="stylesheet" href="/css/lib/normalize.min.css" />
+        <link rel="stylesheet" href="<%= htmlWebpackPlugin.files.chunks.common.css[0] %>" />
+        <link rel="stylesheet" href="<%= htmlWebpackPlugin.files.chunks[htmlWebpackPlugin.options.route.name].css[0] %>" />
 
         <!-- Polyfills -->
         <script src="/js/polyfill.min.js"></script>
@@ -59,11 +61,11 @@
         <div id="app"></div>
 
         <!-- Vendor & Initialize (Session & Localization)-->
-        <script src="/<%= htmlWebpackPlugin.files.chunks.common.entry %>"></script>
+        <script src="<%= htmlWebpackPlugin.files.chunks.common.entry %>"></script>
 
         <!-- Scripts -->
         <script src="/js/<%= htmlWebpackPlugin.options.route.name %>.intl.js"></script>
-        <script src="/<%= htmlWebpackPlugin.files.chunks[htmlWebpackPlugin.options.route.name].entry %>"></script>
+        <script src="<%= htmlWebpackPlugin.files.chunks[htmlWebpackPlugin.options.route.name].entry %>"></script>
 
         <!-- Translate title element -->
         <% if (!htmlWebpackPlugin.options.dynamicMetaTags) { %>
diff --git a/src/views/download/scratch2/download.jsx b/src/views/download/scratch2/download.jsx
index edbf5afe2..1bb90e664 100644
--- a/src/views/download/scratch2/download.jsx
+++ b/src/views/download/scratch2/download.jsx
@@ -113,9 +113,6 @@ class Download extends React.Component {
                         id="installation"
                     >
                         <div className="inner">
-                            <p className="callout">
-                                <FormattedHTMLMessage id="download.introMac" />
-                            </p>
                             <FlexRow className="three-col-row">
                                 <div className="installation-column">
                                     <div className="installation-column-number">
@@ -123,26 +120,6 @@ class Download extends React.Component {
                                     </div>
                                     <h3><FormattedMessage id="download.airTitle" /></h3>
                                     <p><FormattedHTMLMessage id="download.airBody" /></p>
-                                    <ul className="installation-downloads">
-                                        <li className="installation-downloads-item">
-                                            <FormattedMessage id="download.macOSX" /> -
-                                            {' '}<a href="http://get.adobe.com/air/">
-                                                <FormattedMessage id="download.download" />
-                                            </a>
-                                        </li>
-                                        <li className="installation-downloads-item">
-                                            <FormattedMessage id="download.macOlder" /> -
-                                            {' '}<a href="http://airdownload.adobe.com/air/mac/download/2.6/AdobeAIR.zip">
-                                                <FormattedMessage id="download.download" />
-                                            </a>
-                                        </li>
-                                        <li className="installation-downloads-item">
-                                            <FormattedMessage id="download.windows" /> -
-                                            {' '}<a href="http://get.adobe.com/air/">
-                                                <FormattedMessage id="download.download" />
-                                            </a>
-                                        </li>
-                                    </ul>
                                 </div>
                                 <div className="installation-column">
                                     <div className="installation-column-number">
diff --git a/src/views/download/scratch2/l10n.json b/src/views/download/scratch2/l10n.json
index 3c5144115..266b7a653 100644
--- a/src/views/download/scratch2/l10n.json
+++ b/src/views/download/scratch2/l10n.json
@@ -1,10 +1,9 @@
 {
   "download.title": "Scratch 2.0 Offline Editor",
   "download.intro": "You can install the Scratch 2.0 editor to work on projects without an internet connection. This version will work on Windows and MacOS.",
-  "download.introMac": "<b>Note for Mac Users:</b> the latest version of Scratch 2.0 Offline requires Adobe AIR 20. To upgrade to Adobe AIR 20 manually, go <a href=\"https://get.adobe.com/air/\">here</a>.",
   "download.installation": "Installation",
   "download.airTitle": "Adobe AIR",
-  "download.airBody": "If you don't already have it, download and install the latest <a href=\"http://get.adobe.com/air/\">Adobe AIR</a>",
+  "download.airBody": "If you don't already have it, download and install the latest <a href=\"https://airsdk.harman.com/runtime\">Adobe AIR</a>",
   "download.macOSX": "Mac OS X",
   "download.macOlder": "Mac OS 10.5 & Older",
   "download.windows": "Windows",
diff --git a/src/views/sec/l10n.json b/src/views/sec/l10n.json
deleted file mode 100644
index c74fcabea..000000000
--- a/src/views/sec/l10n.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
-  "sec.title": "Scratch Education Collaborative (SEC)",
-  "sec.intro": "Participating Orgs",
-  "sec.applyNow": "Apply now!",
-  "sec.applyBanner": "Applications are now closed. The deadline for applying to the SEC for 2021 was March 1st.",
-  "sec.projectsTitle": "Participating Orgs",
-  "sec.yearRange": "2021-2022",
-  "sec.org1": "{org1Listing} - AK, USA",
-  "sec.org2": "{org2Listing} - AR, USA",
-  "sec.org3": "{org3Listing} - UT, USA",
-  "sec.org4": "{org4Listing} - TX, USA",
-  "sec.org5": "{org5Listing} - MS, USA",
-  "sec.org6": "{org6Listing} - Santa Bárbara, Brazil",
-  "sec.org7": "{org7Listing} - Sydney, Australia",
-  "sec.org8": "{org8Listing} - Memphis, TN, USA",
-  "sec.org9": "{org9Listing} - NYC, NY, USA",
-  "sec.org10": "{org10Listing} - Jos, Nigeria",
-  "sec.org11": "{org11Listing} - Baltimore, MD, USA",
-  "sec.org12": "{org12Listing} - Johannesburg, South Africa",
-  "sec.org13": "{org13Listing} - Hayward, CA, USA",
-  "sec.org14": "{org14Listing} - Humble, TX, USA",
-  "sec.org15": "{org15Listing} - Guildford, UK",
-  "sec.org16": "{org16Listing} - México City, MX",
-  "sec.org17": "{org17Listing} - Montréal, Canada",
-  "sec.org18": "{org18Listing} - Clark County School District, NV, USA",
-  "sec.org19": "{org19Listing} - Othello School District, WA, USA",
-  "sec.org20": "{org20Listing} - Uganda",
-  "sec.org21": "{org21Listing} - NYC, NY, USA",
-  "sec.org22": "{org22Listing} - USA",
-  "sec.org23": "{org23Listing} - FL, USA",
-  "sec.org24": "{org24Listing} - NYC, NY, USA",
-  "sec.org25": "{org25Listing} - NYC, NY, USA",
-  "sec.org26": "{org26Listing} - Nigeria",
-  "sec.org27": "{org27Listing} - Princeton, NJ, USA",
-  "sec.org28": "{org28Listing} - Bengaluru, India",
-  "sec.org29": "{org29Listing} - Johannesburg, South Africa",
-  "sec.org30": "{org30Listing} - Barcelona, Spain",
-  "sec.org31": "{org31Listing} - Phnom Penh, Cambodia",
-  "sec.org32": "{org32Listing} - Nairobi, Kenya",
-  "sec.org33": "{org33Listing} - Nairobi, Kenya",
-  "sec.org34": "{org34Listing} - Johannesburg, South Africa",
-  "sec.org35": "{org35Listing} - Chicago Public Schools, IL, USA",
-  "sec.org36": "{org36Listing} - Lagos, Nigeria",
-  "sec.org37": "{org37Listing} - Girona, Spain",
-  "sec.org38": "{org38Listing} - Halifax, Nova Scotia",
-  "sec.org39": "{org39Listing} - USA",
-  "sec.org40": "{org40Listing} - Owerri, Nigeria & Nairobi, Kenya",
-    "sec.partnerOrgsTitle": "Partner Orgs",
-  "sec.partnerOrg1": "{partnerOrg1Listing} - Cambridge, UK",
-  "sec.partnerOrg2": "{partnerOrg2Listing} (Formerly {partnerOrg2FormerName}) - Stanford, CA, USA",
-  "sec.partnerOrg3": "{partnerOrg3Listing} - IL, USA",
-  "sec.partnerOrg4": "{partnerOrg4Listing} - New Orleans, LA, USA",
-  "sec.partnerOrg5": "{partnerOrg5Listing} - Brazil",
-  "sec.partnerOrg6": "{partnerOrg6Listing} - San Francisco, CA, USA"
-}
\ No newline at end of file
diff --git a/src/views/sec/sec.jsx b/src/views/sec/sec.jsx
deleted file mode 100644
index f91a2570b..000000000
--- a/src/views/sec/sec.jsx
+++ /dev/null
@@ -1,827 +0,0 @@
-const FormattedMessage = require('react-intl').FormattedMessage;
-const React = require('react');
-
-const FlexRow = require('../../components/flex-row/flex-row.jsx');
-const TitleBanner = require('../../components/title-banner/title-banner.jsx');
-
-const render = require('../../lib/render.jsx');
-const Page = require('../../components/page/www/page.jsx');
-
-require('./sec.scss');
-
-const EducationCollaborative = () => (
-    <div className="education-collaborative">
-        <TitleBanner className="masthead">
-            <div className="inner">
-                <FlexRow className="masthead-info uneven">
-                    <div className="long">
-                        <h1 className="title-banner-h1">
-                            <FormattedMessage id="sec.title" />
-                        </h1>
-                        <p className="title-banner-p intro">
-                            <FormattedMessage id="sec.intro" /> | <FormattedMessage id="sec.yearRange" />
-                        </p>
-                    </div>
-                    <img
-                        alt=""
-                        className="title-banner-img short"
-                        src="/images/sec/SEC-top-image.png"
-                    />
-                </FlexRow>
-            </div>
-        </TitleBanner>
-        <div className="inner sec-faq">
-            <section id="projects">
-                <h3>A</h3>
-                <p>
-                    <FormattedMessage
-                        id="sec.org1"
-                        values={{
-                            org1Listing: (
-                                <a
-                                    href="https://www.ansep.net/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    Alaska Native Science & Engineering Program
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <p>
-                    <FormattedMessage
-                        id="sec.org2"
-                        values={{
-                            org2Listing: (
-                                <a
-                                    href="https://arhub.org/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    Arkansas Regional Innovation Hub
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <h3>B</h3>
-                <p>
-                    <FormattedMessage
-                        id="sec.org3"
-                        values={{
-                            org3Listing: (
-                                <a
-                                    href="https://bootuppd.org/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    BootUp PD
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <p>
-                    <FormattedMessage
-                        id="sec.org4"
-                        values={{
-                            org4Listing: (
-                                <a
-                                    href="https://bridgestoscience.org/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    Bridges to Science
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <h3>C</h3>
-                <p>
-                    <FormattedMessage
-                        id="sec.org5"
-                        values={{
-                            org5Listing: (
-                                <a
-                                    href="https://www.rcu.msstate.edu/CyberEducation.aspx"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    Center for Cyber Education at Mississippi State University
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <p>
-                    <FormattedMessage
-                        id="sec.org6"
-                        values={{
-                            org6Listing: (
-                                <a
-                                    href="https://www.acaoparceiros.org/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    Creative Community Learning Brasil Space Action Partners
-                                     / Projeto Social Ação Parceiros
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <p>
-                    <FormattedMessage
-                        id="sec.org7"
-                        values={{
-                            org7Listing: (
-                                <a
-                                    href="https://www.codeclubau.org/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    Code Club Australia
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <p>
-                    <FormattedMessage
-                        id="sec.org8"
-                        values={{
-                            org8Listing: (
-                                <a
-                                    href="https://www.code-crew.org/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    CodeCrew
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <h3>D</h3>
-                <p>
-                    <FormattedMessage
-                        id="sec.org9"
-                        values={{
-                            org9Listing: (
-                                <a
-                                    href="https://www.deafkidscode.org/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    Deaf Kids Code
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <p>
-                    <FormattedMessage
-                        id="sec.org10"
-                        values={{
-                            org10Listing: (
-                                <a
-                                    href="https://www.facebook.com/DeafTechnologyFoundation/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    Deaf Technology Foundation
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <p>
-                    <FormattedMessage
-                        id="sec.org11"
-                        values={{
-                            org11Listing: (
-                                <a
-                                    href="https://www.digitalharbor.org/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    Digital Harbor Foundation
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <h3>F</h3>
-                <p>
-                    <FormattedMessage
-                        id="sec.org12"
-                        values={{
-                            org12Listing: (
-                                <a
-                                    href="https://www.uj.ac.za/Pages/default.aspx"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    Faculty of Education Team at University of Johannesburg
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <h3>H</h3>
-                <p>
-                    <FormattedMessage
-                        id="sec.org13"
-                        values={{
-                            org13Listing: (
-                                <a
-                                    href="https://www.husd.us/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    Hayward Unified School District
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <p>
-                    <FormattedMessage
-                        id="sec.org14"
-                        values={{
-                            org14Listing: (
-                                <a
-                                    href="https://www.humbleisd.net/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    Humble Independent School District (ISD)
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <h3>I</h3>
-                <p>
-                    <FormattedMessage
-                        id="sec.org15"
-                        values={{
-                            org15Listing: (
-                                <a
-                                    href="https://www.iamthecode.org/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    iamtheCODE
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <p>
-                    <FormattedMessage
-                        id="sec.org16"
-                        values={{
-                            org16Listing: (
-                                <a
-                                    href="https://www.ilce.edu.mx/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    ILCE Instituto Latino Americano de la Comunicación Educativa
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <h3>K</h3>
-                <p>
-                    <FormattedMessage
-                        id="sec.org17"
-                        values={{
-                            org17Listing: (
-                                <a
-                                    href="https://kidscodejeunesse.org/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    Kids Code Jeunesse
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <h3>L</h3>
-                <p>
-                    <FormattedMessage
-                        id="sec.org18"
-                        values={{
-                            org18Listing: (
-                                <a
-                                    href="https://www.lomieheardmagnet.org/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    Lomie G. Heard Elementary School
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <p>
-                    <FormattedMessage
-                        id="sec.org19"
-                        values={{
-                            org19Listing: (
-                                <a
-                                    href="https://www.othelloschools.org/lutacaga"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    Lutacaga Elementary
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <h3>M</h3>
-                <p>
-                    <FormattedMessage
-                        id="sec.org20"
-                        values={{
-                            org20Listing: (
-                                <a
-                                    href="http://www.makerereinnovationsociety.org/?i=1"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    Makerere Innovation Society
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <p>
-                    <FormattedMessage
-                        id="sec.org21"
-                        values={{
-                            org21Listing: (
-                                <a
-                                    href="https://mouse.org/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    Mouse
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <h3>N</h3>
-                <p>
-                    <FormattedMessage
-                        id="sec.org22"
-                        values={{
-                            org22Listing: (
-                                <a
-                                    href="https://www.nsbe.org/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    National Society of Black Engineers
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <p>
-                    <FormattedMessage
-                        id="sec.org23"
-                        values={{
-                            org23Listing: (
-                                <a
-                                    href="https://nefstem.domains.unf.edu/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    NEFSTEM Center, University of North Florida
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <p>
-                    <FormattedMessage
-                        id="sec.org24"
-                        values={{
-                            org24Listing: (
-                                <a
-                                    href="http://cs4all.nyc/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    New York City Department of Education - CSforAllNYC
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <p>
-                    <FormattedMessage
-                        id="sec.org25"
-                        values={{
-                            org25Listing: (
-                                <a
-                                    href="https://nysci.org/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    New York Hall of Science
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <h3>O</h3>
-                <p>
-                    <FormattedMessage
-                        id="sec.org26"
-                        values={{
-                            org26Listing: (
-                                <a
-                                    href="https://www.odysseyedufoundation.org/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    Odyssey Educational Foundation
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <h3>P</h3>
-                <p>
-                    <FormattedMessage
-                        id="sec.org27"
-                        values={{
-                            org27Listing: (
-                                <a
-                                    href="https://www.playpattern.com/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    Play Pattern
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <h3>Q</h3>
-                <p>
-                    <FormattedMessage
-                        id="sec.org28"
-                        values={{
-                            org28Listing: (
-                                <a
-                                    href="https://www.questalliance.net/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    Quest Alliance
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <h3>S</h3>
-                <p>
-                    <FormattedMessage
-                        id="sec.org29"
-                        values={{
-                            org29Listing: (
-                                <a
-                                    href="https://www.schoolnet.org.za/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    Schoolnet South Africa
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <p>
-                    <FormattedMessage
-                        id="sec.org30"
-                        values={{
-                            org30Listing: (
-                                <a
-                                    href="https://www.sistemathead.com/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    Sistema THEAD
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <p>
-                    <FormattedMessage
-                        id="sec.org31"
-                        values={{
-                            org31Listing: (
-                                <a
-                                    href="https://www.sistersofcode.org/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    Sisters of Code
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <p>
-                    <FormattedMessage
-                        id="sec.org32"
-                        values={{
-                            org32Listing: (
-                                <a
-                                    href="https://www.steamlabsafrica.com/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    STEAMLabs Africa
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <p>
-                    <FormattedMessage
-                        id="sec.org33"
-                        values={{
-                            org33Listing: (
-                                <a
-                                    href="https://stemimpactcenterkenya.org/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    STEM Impact Center Kenya
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <p>
-                    <FormattedMessage
-                        id="sec.org34"
-                        values={{
-                            org34Listing: (
-                                <a
-                                    href="http://www.streetlightschools.org/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    Streetlight Schools
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <h3>T</h3>
-                <p>
-                    <FormattedMessage
-                        id="sec.org35"
-                        values={{
-                            org35Listing: (
-                                <a
-                                    href="https://tannerschool.org/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    Tanner Elementary
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <p>
-                    <FormattedMessage
-                        id="sec.org36"
-                        values={{
-                            org36Listing: (
-                                <a
-                                    href="https://www.teachathonetwork.com/coverpage"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    Teachathon Foundation
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <h3>U</h3>
-                <p>
-                    <FormattedMessage
-                        id="sec.org37"
-                        values={{
-                            org37Listing: (
-                                <a
-                                    href="https://udigital.udg.edu/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    UdiGitalEdu
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <p>
-                    <FormattedMessage
-                        id="sec.org38"
-                        values={{
-                            org38Listing: (
-                                <a
-                                    href="https://www.digitalmikmaq.com/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    Ulnooweg - Digital Mi&#39;kmaq
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <h3>W</h3>
-                <p>
-                    <FormattedMessage
-                        id="sec.org39"
-                        values={{
-                            org39Listing: (
-                                <a
-                                    href="https://www.tacc.utexas.edu/epic/weteachcs"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    WeTeach_CS, Center for Cyber Education at University of Texas Austin
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <h3>Y</h3>
-                <p>
-                    <FormattedMessage
-                        id="sec.org40"
-                        values={{
-                            org40Listing: (
-                                <a
-                                    href="http://www.youthfortechnology.org/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    Youth for Technology Foundation
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-
-            </section>
-
-        </div>
-        <TitleBanner className="masthead">
-            <div className="inner">
-                <FlexRow className="masthead-info uneven">
-                    <div className="long">
-                        <h1><FormattedMessage id="sec.title" /></h1>
-                        <p className="title-banner-p intro">
-                            <FormattedMessage id="sec.partnerOrgsTitle" /> | <FormattedMessage id="sec.yearRange" />
-                        </p>
-                    </div>
-                    <img
-                        alt=""
-                        className="title-banner-img short"
-                        src="/images/sec/SEC-bottom-image.png"
-                    />
-                </FlexRow>
-            </div>
-        </TitleBanner>
-        <div className="inner sec-faq">
-            <section id="expectations-for-sec">
-                <p>
-                    <FormattedMessage
-                        id="sec.partnerOrg1"
-                        values={{
-                            partnerOrg1Listing: (
-                                <a
-                                    href="https://www.raspberrypi.org/about/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    Raspberry Pi Foundation
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <p>
-                    <FormattedMessage
-                        id="sec.partnerOrg2"
-                        values={{
-                            partnerOrg2Listing: (
-                                <a
-                                    href="https://dschool.stanford.edu/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    Stanford d. School
-                                </a>
-                            ),
-                            partnerOrg2FormerName: (
-                                'School of Intercultural Computing'
-                            )
-                        }}
-                    />
-                </p>
-                <p>
-                    <FormattedMessage
-                        id="sec.partnerOrg3"
-                        values={{
-                            partnerOrg3Listing: (
-                                <a
-                                    href="http://cps.edu/cs"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    Chicago Public Schools
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <p>
-                    <FormattedMessage
-                        id="sec.partnerOrg4"
-                        values={{
-                            partnerOrg4Listing: (
-                                <a
-                                    href="https://stemnola.com/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    STEM Nola
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <p>
-                    <FormattedMessage
-                        id="sec.partnerOrg5"
-                        values={{
-                            partnerOrg5Listing: (
-                                <a
-                                    href="https://www.aprendizagemcriativa.org/pt-br"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    Brazilian Creative Learning Network (BCLN)
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-                <p>
-                    <FormattedMessage
-                        id="sec.partnerOrg6"
-                        values={{
-                            partnerOrg6Listing: (
-                                <a
-                                    href="https://www.exploratorium.edu/tinkering/"
-                                    rel="noopener noreferrer"
-                                    target="_blank"
-                                >
-                                    The Tinkering Studio
-                                </a>
-                            )
-                        }}
-                    />
-                </p>
-            </section>
-        </div>
-        <section className="band">
-            <div className="inner">
-                <h4 className="applyBanner"><FormattedMessage id="sec.applyBanner" /></h4>
-            </div>
-        </section>
-    </div>
-);
-
-render(<Page><EducationCollaborative /></Page>, document.getElementById('app'));
diff --git a/src/views/sec/sec.scss b/src/views/sec/sec.scss
deleted file mode 100644
index b8dc70402..000000000
--- a/src/views/sec/sec.scss
+++ /dev/null
@@ -1,124 +0,0 @@
-@import "../../colors";
-@import "../../frameless";
-
-$sec-spot: $ui-blue;
-
-#view {
-    padding: 0;
-}
-
-.education-collaborative {
-    .title-banner {
-        &.masthead {
-            background-color: $sec-spot;
-            padding: 50px 0 0 0;
-            margin: 0;
-
-            .masthead-info {
-                align-items: center;
-                justify-content: space-between;
-
-                @media #{$intermediate} {
-                    justify-content: end;
-                }
-
-                .long {
-                    padding-bottom: 2rem;
-                }
-
-                h1 {
-                    margin: 0 0 1rem 0;
-                    text-align: left;
-                    color: $ui-white;
-                }
-                p {
-                    margin: 0;
-                    text-align: left;
-                    color: $ui-white;
-                    max-width: $cols6;
-                    font-size: 1.65em;
-                }
-
-                .title-banner-button {
-                    background-color: $ui-white;
-                    color: $ui-blue;
-                    font-size: 1rem;
-                    padding: 0.75rem 1rem;
-                    img {
-                        margin-right: 1rem;
-                        height: 1.2rem;
-                        vertical-align: middle;
-                    }
-
-                    a {
-                        color: $ui-white;
-                    }
-
-                    span {
-                        vertical-align: middle;
-                    }
-                }
-
-                .title-banner-img {
-                    width: $cols4;
-                }
-
-                .sec-apply-buttons {
-                    margin-top: 2rem;
-                    li {
-                        border: 2px solid $ui-white;
-                        padding: 16px;
-                        font-size: 16px;
-                        font-weight: 500;
-                    }
-                }
-            }
-        }
-    }
-
-    section {
-        margin-bottom: 3rem;
-
-        p, ul {
-            max-width: $cols8;
-        }
-    }
-
-    .band {
-        background: $ui-light-primary;
-        padding: 0.5rem 0;
-        margin-bottom: 0;
-
-        h4.applyBanner {
-            color: $ui-blue;
-        }
-    }
-    .sec-faq {
-        margin-top: 3rem;
-        dl {
-            dt {
-                margin-bottom: .25rem;
-                font-size: 1.1rem;
-            }
-
-            dd {
-                margin-bottom: 1.25rem;
-                margin-left: 0;
-                max-width: $cols8;
-                text-align: left;
-            }
-        }
-    }
-}
-
-
-
-@media #{$intermediate, $medium, $small} {
-    #view {
-        text-align: left;
-    }
-}
-
-
-
-
diff --git a/webpack.config.js b/webpack.config.js
index b1880bc1b..87a89ab73 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -7,6 +7,7 @@ const webpack = require('webpack');
 const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
 const CopyWebpackPlugin = require('copy-webpack-plugin');
 const HtmlWebpackPlugin = require('html-webpack-plugin');
+const MiniCssExtractPlugin = require('mini-css-extract-plugin');
 
 // PostCss
 const autoprefixer = require('autoprefixer');
@@ -72,7 +73,8 @@ module.exports = {
     mode: process.env.NODE_ENV === 'production' ? 'production' : 'development',
     output: {
         path: path.resolve(__dirname, 'build'),
-        filename: 'js/[name].bundle.js'
+        filename: 'js/[name].bundle.js',
+        publicPath: '/'
     },
     resolve: {
         symlinks: false // Fix local development with `npm link` packages
@@ -92,7 +94,7 @@ module.exports = {
             {
                 test: /\.scss$/,
                 use: [
-                    'style-loader',
+                    MiniCssExtractPlugin.loader,
                     'css-loader',
                     {
                         loader: 'postcss-loader',
@@ -108,7 +110,7 @@ module.exports = {
             {
                 test: /\.css$/,
                 use: [
-                    'style-loader',
+                    MiniCssExtractPlugin.loader,
                     'css-loader',
                     {
                         loader: 'postcss-loader',
@@ -142,6 +144,7 @@ module.exports = {
         }
     },
     plugins: [
+        new MiniCssExtractPlugin(),
         new VersionPlugin({length: 5})
     ].concat(pageRoutes
         .map(function (route) {