diff --git a/.gitignore b/.gitignore
index b6e4761..64637c5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -127,3 +127,5 @@ dmypy.json
# Pyre type checker
.pyre/
+
+font-awesome/
diff --git a/README.md b/README.md
index 7857aa4..9505dc0 100644
--- a/README.md
+++ b/README.md
@@ -1,13 +1,25 @@
# id
OAuth authentication service for ByeCorps & other services
+## Development & deployment
+
+### Font Awesome
+
+As a sign of respect to the contributors of [Font Awesome](https://fontawesome.com), the code has **NOT** been included in this repository. {*fill instructions here*}
+
## FAQ
### What is a ByeCorps ID?
A ByeCorps ID (BCID) is a seven digit alphanumeric (non-case sensitive) code used to identify a person. It is used to reduce the need of multiple accounts across ByeCorps services, as well as third-party services using OAuth (though a password alternative is reccommneded instead of BCID only)
-## Official connonical domain names
+Example of a BCID:
+
+```txt
+123 ABC4
+```
+
+## Connonical domain names
Only input your BCID on the following domain names ONLY on a HTTPS connection (look for the padlock):
diff --git a/bcid_prototyping/index.html b/bcid_prototyping/index.html
new file mode 100644
index 0000000..4199d7c
--- /dev/null
+++ b/bcid_prototyping/index.html
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+ BCID visual styles and testing
+
+
+
+ This page is for testing styling for id
. Nothing on this page is funcitonal, but please be wary of password managers trying to autofill information.
+
+ Types
+ This section tests the fonts that may be used, including in context.
+
+ ByeCorps ID
+
+ 123-ABC4
+
+ Randomly generated on page load:
+
+
+
+
+ Paragraph
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Excepturi sed ipsam at quas odit? Harum aut itaque earum natus officia reprehenderit, a totam magni, vero at modi blanditiis iusto voluptate!
+
+ Logo
+ very important
+
+
+
+ Bye Corps
+ ID
+
+
+
+
+
diff --git a/bcid_prototyping/sign-up.html b/bcid_prototyping/sign-up.html
new file mode 100644
index 0000000..c3287c6
--- /dev/null
+++ b/bcid_prototyping/sign-up.html
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+ Sign up // ByeCorps ID
+
+
+
+
+
+ Bye Corps ID
+ Ready for your ByeCorps ID?
+
+ Sign up
+ Already have an ID? Log in
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bcid_prototyping/styles/base.css b/bcid_prototyping/styles/base.css
new file mode 100644
index 0000000..48a01c3
--- /dev/null
+++ b/bcid_prototyping/styles/base.css
@@ -0,0 +1,63 @@
+/* imports the whole design library in one go, including Font Awesome and Open Color. */
+
+@import url(./types.css);
+@import url(./inputs.css);
+@import url(./opencolor.css);
+@import url(./font-awesome/css/all.css);
+
+body {
+ margin: 0;
+
+ height: 100vh;
+
+ font-family: var(--font);
+
+ background-color: var(--oc-gray-0);
+
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.center {
+ text-align: center;
+}
+
+.small {
+ font-size: 0.9em;
+}
+
+.bcid-container, .bcid-container.light {
+ font-family: var(--bcid-font);
+ font-weight: 900;
+
+ background-color: var(--oc-gray-3);
+ color: var(--oc-gray-9);
+
+ display: inline;
+
+ padding: 0.5em;
+
+ border-radius: 0.5em;
+}
+
+.bcid-container.dark {
+ background-color: var(--oc-gray-9);
+ color: var(--oc-gray-3);
+}
+
+.bc-font, h1, h2, h3, h4, h5, h6 {
+ font-family: var(--bc-font);
+}
+
+.bc-logo .weight1 {
+ font-weight: var(--bc-weight-1);
+}
+
+.bc-logo .weight2 {
+ font-weight: var(--bc-weight-2);
+}
+
+.bc-logo .weight3 {
+ font-weight: var(--bc-weight-3);
+}
diff --git a/bcid_prototyping/styles/inputs.css b/bcid_prototyping/styles/inputs.css
new file mode 100644
index 0000000..c3e1c53
--- /dev/null
+++ b/bcid_prototyping/styles/inputs.css
@@ -0,0 +1,48 @@
+
+.bc-btn, button {
+ all: unset;
+ cursor: pointer;
+ display: inline-block;
+ padding: 0.5em 1em;
+ border-radius: 0.5em;
+ font-weight: 600;
+ text-align: center;
+ text-decoration: none;
+ transition: all 0.2s ease-in-out;
+ font-family: var(--font);
+}
+
+.bc-btn:hover, button:hover {
+ background-color: var(--oc-gray-4);
+}
+
+.bc-btn-primary {
+ background-color: var(--oc-blue-5);
+ color: var(--oc-white);
+}
+
+.bc-btn-primary:hover {
+ background-color: var(--oc-blue-6);
+}
+
+input[type="checkbox"] {
+ all: unset;
+ cursor: pointer;
+ display: inline-block;
+ background-color: var(--oc-gray-4);
+ border-radius: 0.25em;
+ width: 1em;
+ height: 1em;
+
+ transition: all 0.2s ease-in-out;
+}
+
+input[type="checkbox"]:checked {
+
+
+ background-color: var(--oc-blue-5);
+ color: var(--oc-white);
+}
+input[type="checkbox"]:checked:hover {
+ background-color: var(--oc-blue-6);
+}
diff --git a/bcid_prototyping/styles/loginform.css b/bcid_prototyping/styles/loginform.css
new file mode 100644
index 0000000..82b9d01
--- /dev/null
+++ b/bcid_prototyping/styles/loginform.css
@@ -0,0 +1,146 @@
+
+main {
+ width: 100%;
+ max-width: 600px;
+ margin:auto;
+ /* align vertically */
+ display: flex;
+ flex-wrap: wrap;
+ flex-direction: column;
+
+ flex: 0 1 auto;
+
+ background-color: var(--oc-white);
+
+ box-shadow: 0 0 10px var(--oc-gray-4);
+
+ border-radius: calc(0.5em + 10px + 1em);
+ padding: 1em;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ margin: 0;
+ padding: 0;
+
+ width: 100%;
+
+ text-align: center;
+}
+
+form {
+ background-color: var(--oc-gray-1);
+ display: flex;
+ padding: 10px;
+ border-radius: calc(0.5em + 10px);
+
+ flex-direction: column;
+ gap: 0.5em;
+}
+
+form .input {
+ padding: 0.5em;
+
+ /* width: 100%; */
+
+
+ flex-grow: 1;
+
+ border: none;
+ border-radius: 0.5em;
+
+ background-color: var(--oc-gray-4);
+
+ display: flex;
+ flex-direction: row;
+ gap: 5px;
+}
+
+form .input input {
+ all: unset;
+ flex: 1 0 auto;
+}
+
+form .input button {
+ all: unset;
+ cursor: pointer;
+
+ border-left: 1px solid var(--oc-gray-5);
+}
+
+.password-strength ul {
+ list-style: none;
+ margin: 0;
+}
+
+.finisher {
+ display: flex;
+ flex-direction: row;
+ gap: 0.5em;
+ justify-content: center;
+}
+
+.sso-buttons {
+ display: flex;
+ flex-direction: row;
+ gap: 0.5em;
+ justify-content: center;
+
+ background-color: var(--oc-gray-1);
+ padding: 0.5em;
+ border-radius: calc(0.5em + 10px);
+
+ font-size: 20px;
+}
+
+.btn-sso {
+ display: flex;
+ flex-direction: row;
+ gap: 0.5em;
+ justify-content: center;
+ align-content: center;
+ align-items: center;
+
+
+ border: 1px solid var(--oc-gray-5);
+}
+
+.sso-omglol {
+ background-color: var(--oc-pink-1);
+ color: var(--oc-pink-8);
+
+ border: 1px solid var(--oc-pink-5);
+}
+
+.btn-sso img {
+ width: 32px;
+ margin: auto;
+}
+
+.sso-omglol:hover {
+ background-color: var(--oc-pink-2);
+ color: var(--oc-pink-9);
+}
+
+.sso-litauth {
+ background-color: var(--oc-blue-1);
+ color: var(--oc-blue-8);
+
+ border: 1px solid var(--oc-blue-5);
+}
+
+.sso-litauth:hover {
+ background-color: rgb(59 130 246);
+ color: var(--oc-blue-0);
+}
+
+.sso-github, .sso-steam {
+ background-color: var(--oc-gray-1);
+ color: var(--oc-gray-8);
+
+ border: 1px solid var(--oc-gray-5);
+}
+
+.sso-github:hover, .sso-steam:hover {
+ background-color: var(--oc-gray-2);
+ color: var(--oc-gray-9);
+}
\ No newline at end of file
diff --git a/bcid_prototyping/styles/opencolor.css b/bcid_prototyping/styles/opencolor.css
new file mode 100644
index 0000000..02fe6f6
--- /dev/null
+++ b/bcid_prototyping/styles/opencolor.css
@@ -0,0 +1,343 @@
+/*
+ *
+ * π π’ π π’ π₯
+ * v 1.9.1
+ *
+ * βββββββββββββββββββββββββββββββββββ */
+
+ :root {
+
+ /* General
+ * βββββββββββββββββββββββββββββββββββ */
+
+ --oc-white: #ffffff;
+ --oc-white-rgb: 255, 255, 255;
+ --oc-black: #000000;
+ --oc-black-rgb: 0, 0, 0;
+
+
+ /* Gray
+ * βββββββββββββββββββββββββββββββββββ */
+
+ --oc-gray-0: #f8f9fa;
+ --oc-gray-0-rgb: 248, 249, 250;
+ --oc-gray-1: #f1f3f5;
+ --oc-gray-1-rgb: 241, 243, 245;
+ --oc-gray-2: #e9ecef;
+ --oc-gray-2-rgb: 233, 236, 239;
+ --oc-gray-3: #dee2e6;
+ --oc-gray-3-rgb: 222, 226, 230;
+ --oc-gray-4: #ced4da;
+ --oc-gray-4-rgb: 206, 212, 218;
+ --oc-gray-5: #adb5bd;
+ --oc-gray-5-rgb: 173, 181, 189;
+ --oc-gray-6: #868e96;
+ --oc-gray-6-rgb: 134, 142, 150;
+ --oc-gray-7: #495057;
+ --oc-gray-7-rgb: 73, 80, 87;
+ --oc-gray-8: #343a40;
+ --oc-gray-8-rgb: 52, 58, 64;
+ --oc-gray-9: #212529;
+ --oc-gray-9-rgb: 33, 37, 41;
+
+
+ /* Red
+ * βββββββββββββββββββββββββββββββββββ */
+
+ --oc-red-0: #fff5f5;
+ --oc-red-0-rgb: 255, 245, 245;
+ --oc-red-1: #ffe3e3;
+ --oc-red-1-rgb: 255, 227, 227;
+ --oc-red-2: #ffc9c9;
+ --oc-red-2-rgb: 255, 201, 201;
+ --oc-red-3: #ffa8a8;
+ --oc-red-3-rgb: 255, 168, 168;
+ --oc-red-4: #ff8787;
+ --oc-red-4-rgb: 255, 135, 135;
+ --oc-red-5: #ff6b6b;
+ --oc-red-5-rgb: 255, 107, 107;
+ --oc-red-6: #fa5252;
+ --oc-red-6-rgb: 250, 82, 82;
+ --oc-red-7: #f03e3e;
+ --oc-red-7-rgb: 240, 62, 62;
+ --oc-red-8: #e03131;
+ --oc-red-8-rgb: 224, 49, 49;
+ --oc-red-9: #c92a2a;
+ --oc-red-9-rgb: 201, 42, 42;
+
+
+ /* Pink
+ * βββββββββββββββββββββββββββββββββββ */
+
+ --oc-pink-0: #fff0f6;
+ --oc-pink-0-rgb: 255, 240, 246;
+ --oc-pink-1: #ffdeeb;
+ --oc-pink-1-rgb: 255, 222, 235;
+ --oc-pink-2: #fcc2d7;
+ --oc-pink-2-rgb: 252, 194, 215;
+ --oc-pink-3: #faa2c1;
+ --oc-pink-3-rgb: 250, 162, 193;
+ --oc-pink-4: #f783ac;
+ --oc-pink-4-rgb: 247, 131, 172;
+ --oc-pink-5: #f06595;
+ --oc-pink-5-rgb: 240, 101, 149;
+ --oc-pink-6: #e64980;
+ --oc-pink-6-rgb: 230, 73, 128;
+ --oc-pink-7: #d6336c;
+ --oc-pink-7-rgb: 214, 51, 108;
+ --oc-pink-8: #c2255c;
+ --oc-pink-8-rgb: 194, 37, 92;
+ --oc-pink-9: #a61e4d;
+ --oc-pink-9-rgb: 166, 30, 77;
+
+
+ /* Grape
+ * βββββββββββββββββββββββββββββββββββ */
+
+ --oc-grape-0: #f8f0fc;
+ --oc-grape-0-rgb: 248, 240, 252;
+ --oc-grape-1: #f3d9fa;
+ --oc-grape-1-rgb: 243, 217, 250;
+ --oc-grape-2: #eebefa;
+ --oc-grape-2-rgb: 238, 190, 250;
+ --oc-grape-3: #e599f7;
+ --oc-grape-3-rgb: 229, 153, 247;
+ --oc-grape-4: #da77f2;
+ --oc-grape-4-rgb: 218, 119, 242;
+ --oc-grape-5: #cc5de8;
+ --oc-grape-5-rgb: 204, 93, 232;
+ --oc-grape-6: #be4bdb;
+ --oc-grape-6-rgb: 190, 75, 219;
+ --oc-grape-7: #ae3ec9;
+ --oc-grape-7-rgb: 174, 62, 201;
+ --oc-grape-8: #9c36b5;
+ --oc-grape-8-rgb: 156, 54, 181;
+ --oc-grape-9: #862e9c;
+ --oc-grape-9-rgb: 134, 46, 156;
+
+
+ /* Violet
+ * βββββββββββββββββββββββββββββββββββ */
+
+ --oc-violet-0: #f3f0ff;
+ --oc-violet-0-rgb: 243, 240, 255;
+ --oc-violet-1: #e5dbff;
+ --oc-violet-1-rgb: 229, 219, 255;
+ --oc-violet-2: #d0bfff;
+ --oc-violet-2-rgb: 208, 191, 255;
+ --oc-violet-3: #b197fc;
+ --oc-violet-3-rgb: 177, 151, 252;
+ --oc-violet-4: #9775fa;
+ --oc-violet-4-rgb: 151, 117, 250;
+ --oc-violet-5: #845ef7;
+ --oc-violet-5-rgb: 132, 94, 247;
+ --oc-violet-6: #7950f2;
+ --oc-violet-6-rgb: 121, 80, 242;
+ --oc-violet-7: #7048e8;
+ --oc-violet-7-rgb: 112, 72, 232;
+ --oc-violet-8: #6741d9;
+ --oc-violet-8-rgb: 103, 65, 217;
+ --oc-violet-9: #5f3dc4;
+ --oc-violet-9-rgb: 95, 61, 196;
+
+
+ /* Indigo
+ * βββββββββββββββββββββββββββββββββββ */
+
+ --oc-indigo-0: #edf2ff;
+ --oc-indigo-0-rgb: 237, 242, 255;
+ --oc-indigo-1: #dbe4ff;
+ --oc-indigo-1-rgb: 219, 228, 255;
+ --oc-indigo-2: #bac8ff;
+ --oc-indigo-2-rgb: 186, 200, 255;
+ --oc-indigo-3: #91a7ff;
+ --oc-indigo-3-rgb: 145, 167, 255;
+ --oc-indigo-4: #748ffc;
+ --oc-indigo-4-rgb: 116, 143, 252;
+ --oc-indigo-5: #5c7cfa;
+ --oc-indigo-5-rgb: 92, 124, 250;
+ --oc-indigo-6: #4c6ef5;
+ --oc-indigo-6-rgb: 76, 110, 245;
+ --oc-indigo-7: #4263eb;
+ --oc-indigo-7-rgb: 66, 99, 235;
+ --oc-indigo-8: #3b5bdb;
+ --oc-indigo-8-rgb: 59, 91, 219;
+ --oc-indigo-9: #364fc7;
+ --oc-indigo-9-rgb: 54, 79, 199;
+
+
+ /* Blue
+ * βββββββββββββββββββββββββββββββββββ */
+
+ --oc-blue-0: #e7f5ff;
+ --oc-blue-0-rgb: 231, 245, 255;
+ --oc-blue-1: #d0ebff;
+ --oc-blue-1-rgb: 208, 235, 255;
+ --oc-blue-2: #a5d8ff;
+ --oc-blue-2-rgb: 165, 216, 255;
+ --oc-blue-3: #74c0fc;
+ --oc-blue-3-rgb: 116, 192, 252;
+ --oc-blue-4: #4dabf7;
+ --oc-blue-4-rgb: 77, 171, 247;
+ --oc-blue-5: #339af0;
+ --oc-blue-5-rgb: 51, 154, 240;
+ --oc-blue-6: #228be6;
+ --oc-blue-6-rgb: 34, 139, 230;
+ --oc-blue-7: #1c7ed6;
+ --oc-blue-7-rgb: 28, 126, 214;
+ --oc-blue-8: #1971c2;
+ --oc-blue-8-rgb: 25, 113, 194;
+ --oc-blue-9: #1864ab;
+ --oc-blue-9-rgb: 24, 100, 171;
+
+
+ /* Cyan
+ * βββββββββββββββββββββββββββββββββββ */
+
+ --oc-cyan-0: #e3fafc;
+ --oc-cyan-0-rgb: 227, 250, 252;
+ --oc-cyan-1: #c5f6fa;
+ --oc-cyan-1-rgb: 197, 246, 250;
+ --oc-cyan-2: #99e9f2;
+ --oc-cyan-2-rgb: 153, 233, 242;
+ --oc-cyan-3: #66d9e8;
+ --oc-cyan-3-rgb: 102, 217, 232;
+ --oc-cyan-4: #3bc9db;
+ --oc-cyan-4-rgb: 59, 201, 219;
+ --oc-cyan-5: #22b8cf;
+ --oc-cyan-5-rgb: 34, 184, 207;
+ --oc-cyan-6: #15aabf;
+ --oc-cyan-6-rgb: 21, 170, 191;
+ --oc-cyan-7: #1098ad;
+ --oc-cyan-7-rgb: 16, 152, 173;
+ --oc-cyan-8: #0c8599;
+ --oc-cyan-8-rgb: 12, 133, 153;
+ --oc-cyan-9: #0b7285;
+ --oc-cyan-9-rgb: 11, 114, 133;
+
+
+ /* Teal
+ * βββββββββββββββββββββββββββββββββββ */
+
+ --oc-teal-0: #e6fcf5;
+ --oc-teal-0-rgb: 230, 252, 245;
+ --oc-teal-1: #c3fae8;
+ --oc-teal-1-rgb: 195, 250, 232;
+ --oc-teal-2: #96f2d7;
+ --oc-teal-2-rgb: 150, 242, 215;
+ --oc-teal-3: #63e6be;
+ --oc-teal-3-rgb: 99, 230, 190;
+ --oc-teal-4: #38d9a9;
+ --oc-teal-4-rgb: 56, 217, 169;
+ --oc-teal-5: #20c997;
+ --oc-teal-5-rgb: 32, 201, 151;
+ --oc-teal-6: #12b886;
+ --oc-teal-6-rgb: 18, 184, 134;
+ --oc-teal-7: #0ca678;
+ --oc-teal-7-rgb: 12, 166, 120;
+ --oc-teal-8: #099268;
+ --oc-teal-8-rgb: 9, 146, 104;
+ --oc-teal-9: #087f5b;
+ --oc-teal-9-rgb: 8, 127, 91;
+
+
+ /* Green
+ * βββββββββββββββββββββββββββββββββββ */
+
+ --oc-green-0: #ebfbee;
+ --oc-green-0-rgb: 235, 251, 238;
+ --oc-green-1: #d3f9d8;
+ --oc-green-1-rgb: 211, 249, 216;
+ --oc-green-2: #b2f2bb;
+ --oc-green-2-rgb: 178, 242, 187;
+ --oc-green-3: #8ce99a;
+ --oc-green-3-rgb: 140, 233, 154;
+ --oc-green-4: #69db7c;
+ --oc-green-4-rgb: 105, 219, 124;
+ --oc-green-5: #51cf66;
+ --oc-green-5-rgb: 81, 207, 102;
+ --oc-green-6: #40c057;
+ --oc-green-6-rgb: 64, 192, 87;
+ --oc-green-7: #37b24d;
+ --oc-green-7-rgb: 55, 178, 77;
+ --oc-green-8: #2f9e44;
+ --oc-green-8-rgb: 47, 158, 68;
+ --oc-green-9: #2b8a3e;
+ --oc-green-9-rgb: 43, 138, 62;
+
+
+ /* Lime
+ * βββββββββββββββββββββββββββββββββββ */
+
+ --oc-lime-0: #f4fce3;
+ --oc-lime-0-rgb: 244, 252, 227;
+ --oc-lime-1: #e9fac8;
+ --oc-lime-1-rgb: 233, 250, 200;
+ --oc-lime-2: #d8f5a2;
+ --oc-lime-2-rgb: 216, 245, 162;
+ --oc-lime-3: #c0eb75;
+ --oc-lime-3-rgb: 192, 235, 117;
+ --oc-lime-4: #a9e34b;
+ --oc-lime-4-rgb: 169, 227, 75;
+ --oc-lime-5: #94d82d;
+ --oc-lime-5-rgb: 148, 216, 45;
+ --oc-lime-6: #82c91e;
+ --oc-lime-6-rgb: 130, 201, 30;
+ --oc-lime-7: #74b816;
+ --oc-lime-7-rgb: 116, 184, 22;
+ --oc-lime-8: #66a80f;
+ --oc-lime-8-rgb: 102, 168, 15;
+ --oc-lime-9: #5c940d;
+ --oc-lime-9-rgb: 92, 148, 13;
+
+
+ /* Yellow
+ * βββββββββββββββββββββββββββββββββββ */
+
+ --oc-yellow-0: #fff9db;
+ --oc-yellow-0-rgb: 255, 249, 219;
+ --oc-yellow-1: #fff3bf;
+ --oc-yellow-1-rgb: 255, 243, 191;
+ --oc-yellow-2: #ffec99;
+ --oc-yellow-2-rgb: 255, 236, 153;
+ --oc-yellow-3: #ffe066;
+ --oc-yellow-3-rgb: 255, 224, 102;
+ --oc-yellow-4: #ffd43b;
+ --oc-yellow-4-rgb: 255, 212, 59;
+ --oc-yellow-5: #fcc419;
+ --oc-yellow-5-rgb: 252, 196, 25;
+ --oc-yellow-6: #fab005;
+ --oc-yellow-6-rgb: 250, 176, 5;
+ --oc-yellow-7: #f59f00;
+ --oc-yellow-7-rgb: 245, 159, 0;
+ --oc-yellow-8: #f08c00;
+ --oc-yellow-8-rgb: 240, 140, 0;
+ --oc-yellow-9: #e67700;
+ --oc-yellow-9-rgb: 230, 119, 0;
+
+
+ /* Orange
+ * βββββββββββββββββββββββββββββββββββ */
+
+ --oc-orange-0: #fff4e6;
+ --oc-orange-0-rgb: 255, 244, 230;
+ --oc-orange-1: #ffe8cc;
+ --oc-orange-1-rgb: 255, 232, 204;
+ --oc-orange-2: #ffd8a8;
+ --oc-orange-2-rgb: 255, 216, 168;
+ --oc-orange-3: #ffc078;
+ --oc-orange-3-rgb: 255, 192, 120;
+ --oc-orange-4: #ffa94d;
+ --oc-orange-4-rgb: 255, 169, 77;
+ --oc-orange-5: #ff922b;
+ --oc-orange-5-rgb: 255, 146, 43;
+ --oc-orange-6: #fd7e14;
+ --oc-orange-6-rgb: 253, 126, 20;
+ --oc-orange-7: #f76707;
+ --oc-orange-7-rgb: 247, 103, 7;
+ --oc-orange-8: #e8590c;
+ --oc-orange-8-rgb: 232, 89, 12;
+ --oc-orange-9: #d9480f;
+ --oc-orange-9-rgb: 217, 72, 15;
+
+ }
\ No newline at end of file
diff --git a/bcid_prototyping/styles/types.css b/bcid_prototyping/styles/types.css
new file mode 100644
index 0000000..25d2f78
--- /dev/null
+++ b/bcid_prototyping/styles/types.css
@@ -0,0 +1,16 @@
+
+/* Fonts. */
+
+@import url('https://fonts.googleapis.com/css2?family=Courier+Prime:wght@400;700&display=swap'); /* for BCIDs */
+@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@300;500;600;800;900&display=swap'); /* For title, byecorps logo, headers, etc */
+@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400&display=swap'); /* For body text */
+
+:root {
+ --bcid-font: 'Courier Prime', monospace;
+ --bc-font: 'Montserrat', sans-serif;
+ --font: 'IBM Plex Sans', sans-serif;
+
+ --bc-weight-1: 700;
+ --bc-weight-2: 600;
+ --bc-weight-3: 900;
+}