From 7469b8c0992864b1ea142c48dbf85c7d1c4863ce Mon Sep 17 00:00:00 2001
From: Eric Bremner <ebremner@uwaterloo.ca>
Date: Wed, 27 Apr 2022 09:26:50 -0400
Subject: [PATCH] ISTWCMS-5509: adding minimum to have PL running

---
 src/patterns/01-core/_index.scss              |   2 +
 src/patterns/01-core/elements/_address.scss   |   8 +
 src/patterns/01-core/elements/_area.scss      |   7 +
 src/patterns/01-core/elements/_article.scss   |   4 +
 src/patterns/01-core/elements/_aside.scss     |   4 +
 src/patterns/01-core/elements/_audio.scss     |  11 ++
 .../01-core/elements/_blockquote.scss         |  33 ++++
 src/patterns/01-core/elements/_body.scss      |  10 ++
 src/patterns/01-core/elements/_button.scss    |  16 ++
 src/patterns/01-core/elements/_canvas.scss    |   6 +
 src/patterns/01-core/elements/_datalist.scss  |   4 +
 .../01-core/elements/_definition-list.scss    |  24 +++
 src/patterns/01-core/elements/_details.scss   |  29 ++++
 src/patterns/01-core/elements/_dialog.scss    |  13 ++
 src/patterns/01-core/elements/_embed.scss     |   6 +
 src/patterns/01-core/elements/_fieldset.scss  |   7 +
 src/patterns/01-core/elements/_figure.scss    |   4 +
 src/patterns/01-core/elements/_footer.scss    |   4 +
 src/patterns/01-core/elements/_form.scss      |   4 +
 src/patterns/01-core/elements/_header.scss    |   4 +
 src/patterns/01-core/elements/_headings.scss  |  40 +++++
 .../01-core/elements/_horizontal-rule.scss    |   8 +
 src/patterns/01-core/elements/_html.scss      |  28 +++
 src/patterns/01-core/elements/_iframe.scss    |  10 ++
 src/patterns/01-core/elements/_img.scss       |  13 ++
 src/patterns/01-core/elements/_index.scss     |  58 +++++++
 .../01-core/elements/_inline-elements.scss    | 159 ++++++++++++++++++
 src/patterns/01-core/elements/_input.scss     |  93 ++++++++++
 src/patterns/01-core/elements/_label.scss     |   4 +
 src/patterns/01-core/elements/_legend.scss    |  13 ++
 src/patterns/01-core/elements/_list-item.scss |  11 ++
 src/patterns/01-core/elements/_main.scss      |   6 +
 src/patterns/01-core/elements/_menu.scss      |   8 +
 src/patterns/01-core/elements/_meter.scss     |   4 +
 src/patterns/01-core/elements/_nav.scss       |   8 +
 src/patterns/01-core/elements/_object.scss    |   8 +
 src/patterns/01-core/elements/_option.scss    |  12 ++
 .../01-core/elements/_ordered-list.scss       |   7 +
 src/patterns/01-core/elements/_output.scss    |   4 +
 src/patterns/01-core/elements/_paragraph.scss |  14 ++
 .../01-core/elements/_preformatted-text.scss  |  13 ++
 src/patterns/01-core/elements/_progress.scss  |   6 +
 src/patterns/01-core/elements/_section.scss   |   4 +
 src/patterns/01-core/elements/_select.scss    |  15 ++
 src/patterns/01-core/elements/_svg.scss       |  21 +++
 src/patterns/01-core/elements/_table.scss     |  58 +++++++
 src/patterns/01-core/elements/_textarea.scss  |  16 ++
 src/patterns/01-core/elements/_universal.scss |  53 ++++++
 .../01-core/elements/_unordered-list.scss     |   7 +
 src/patterns/01-core/elements/_video.scss     |   8 +
 .../font-face/DroidSerif-Bold-webfont.woff    | Bin 0 -> 27796 bytes
 .../font-face/DroidSerif-Regular-webfont.woff | Bin 0 -> 27560 bytes
 src/patterns/01-core/font-face/_index.scss    |  20 +++
 .../01-core/mixins/_accessiblity.scss         |  52 ++++++
 src/patterns/01-core/mixins/_clearfix.scss    |  10 ++
 src/patterns/01-core/mixins/_headings.scss    |  67 ++++++++
 .../01-core/mixins/_image-replace.scss        |  27 +++
 src/patterns/01-core/mixins/_index.scss       |   8 +
 src/patterns/01-core/mixins/_layout.scss      |  38 +++++
 src/patterns/01-core/mixins/_list.scss        |  96 +++++++++++
 .../01-core/mixins/_svg-background.scss       |   9 +
 src/patterns/01-core/mixins/_svg-icon.scss    |  15 ++
 src/patterns/01-core/props/_animations.scss   | 120 +++++++++++++
 src/patterns/01-core/props/_aspects.scss      |   8 +
 src/patterns/01-core/props/_borders.scss      |  20 +++
 src/patterns/01-core/props/_colors.scss       | 132 +++++++++++++++
 src/patterns/01-core/props/_easing.scss       |  37 ++++
 src/patterns/01-core/props/_fonts.scss        |  47 ++++++
 src/patterns/01-core/props/_index.scss        |  11 ++
 src/patterns/01-core/props/_layout.scss       |   6 +
 src/patterns/01-core/props/_media.scss        |   8 +
 src/patterns/01-core/props/_shadows.scss      |  41 +++++
 src/patterns/01-core/props/_sizes.scss        |  39 +++++
 src/patterns/01-core/props/_theme.scss        |   4 +
 src/patterns/01-core/props/_zindex.scss       |   8 +
 .../01-core/utilities/_accessibility.scss     |  24 +++
 src/patterns/01-core/utilities/_clearfix.scss |   9 +
 .../01-core/utilities/_constrain.scss         |  13 ++
 src/patterns/01-core/utilities/_index.scss    |   3 +
 src/patterns/02-base/colors/colors.js         |  14 ++
 src/patterns/02-base/colors/colors.twig       |  34 ++++
 src/patterns/02-base/colors/colors.yml        | 131 +++++++++++++++
 src/patterns/global.scss                      |   2 +-
 83 files changed, 1961 insertions(+), 1 deletion(-)
 create mode 100644 src/patterns/01-core/_index.scss
 create mode 100644 src/patterns/01-core/elements/_address.scss
 create mode 100644 src/patterns/01-core/elements/_area.scss
 create mode 100644 src/patterns/01-core/elements/_article.scss
 create mode 100644 src/patterns/01-core/elements/_aside.scss
 create mode 100644 src/patterns/01-core/elements/_audio.scss
 create mode 100644 src/patterns/01-core/elements/_blockquote.scss
 create mode 100644 src/patterns/01-core/elements/_body.scss
 create mode 100644 src/patterns/01-core/elements/_button.scss
 create mode 100644 src/patterns/01-core/elements/_canvas.scss
 create mode 100644 src/patterns/01-core/elements/_datalist.scss
 create mode 100644 src/patterns/01-core/elements/_definition-list.scss
 create mode 100644 src/patterns/01-core/elements/_details.scss
 create mode 100644 src/patterns/01-core/elements/_dialog.scss
 create mode 100644 src/patterns/01-core/elements/_embed.scss
 create mode 100644 src/patterns/01-core/elements/_fieldset.scss
 create mode 100644 src/patterns/01-core/elements/_figure.scss
 create mode 100644 src/patterns/01-core/elements/_footer.scss
 create mode 100644 src/patterns/01-core/elements/_form.scss
 create mode 100644 src/patterns/01-core/elements/_header.scss
 create mode 100644 src/patterns/01-core/elements/_headings.scss
 create mode 100644 src/patterns/01-core/elements/_horizontal-rule.scss
 create mode 100644 src/patterns/01-core/elements/_html.scss
 create mode 100644 src/patterns/01-core/elements/_iframe.scss
 create mode 100644 src/patterns/01-core/elements/_img.scss
 create mode 100644 src/patterns/01-core/elements/_index.scss
 create mode 100644 src/patterns/01-core/elements/_inline-elements.scss
 create mode 100644 src/patterns/01-core/elements/_input.scss
 create mode 100644 src/patterns/01-core/elements/_label.scss
 create mode 100644 src/patterns/01-core/elements/_legend.scss
 create mode 100644 src/patterns/01-core/elements/_list-item.scss
 create mode 100644 src/patterns/01-core/elements/_main.scss
 create mode 100644 src/patterns/01-core/elements/_menu.scss
 create mode 100644 src/patterns/01-core/elements/_meter.scss
 create mode 100644 src/patterns/01-core/elements/_nav.scss
 create mode 100644 src/patterns/01-core/elements/_object.scss
 create mode 100644 src/patterns/01-core/elements/_option.scss
 create mode 100644 src/patterns/01-core/elements/_ordered-list.scss
 create mode 100644 src/patterns/01-core/elements/_output.scss
 create mode 100644 src/patterns/01-core/elements/_paragraph.scss
 create mode 100644 src/patterns/01-core/elements/_preformatted-text.scss
 create mode 100644 src/patterns/01-core/elements/_progress.scss
 create mode 100644 src/patterns/01-core/elements/_section.scss
 create mode 100644 src/patterns/01-core/elements/_select.scss
 create mode 100644 src/patterns/01-core/elements/_svg.scss
 create mode 100644 src/patterns/01-core/elements/_table.scss
 create mode 100644 src/patterns/01-core/elements/_textarea.scss
 create mode 100644 src/patterns/01-core/elements/_universal.scss
 create mode 100644 src/patterns/01-core/elements/_unordered-list.scss
 create mode 100644 src/patterns/01-core/elements/_video.scss
 create mode 100644 src/patterns/01-core/font-face/DroidSerif-Bold-webfont.woff
 create mode 100644 src/patterns/01-core/font-face/DroidSerif-Regular-webfont.woff
 create mode 100644 src/patterns/01-core/font-face/_index.scss
 create mode 100644 src/patterns/01-core/mixins/_accessiblity.scss
 create mode 100644 src/patterns/01-core/mixins/_clearfix.scss
 create mode 100644 src/patterns/01-core/mixins/_headings.scss
 create mode 100644 src/patterns/01-core/mixins/_image-replace.scss
 create mode 100644 src/patterns/01-core/mixins/_index.scss
 create mode 100644 src/patterns/01-core/mixins/_layout.scss
 create mode 100644 src/patterns/01-core/mixins/_list.scss
 create mode 100644 src/patterns/01-core/mixins/_svg-background.scss
 create mode 100644 src/patterns/01-core/mixins/_svg-icon.scss
 create mode 100644 src/patterns/01-core/props/_animations.scss
 create mode 100644 src/patterns/01-core/props/_aspects.scss
 create mode 100644 src/patterns/01-core/props/_borders.scss
 create mode 100644 src/patterns/01-core/props/_colors.scss
 create mode 100644 src/patterns/01-core/props/_easing.scss
 create mode 100644 src/patterns/01-core/props/_fonts.scss
 create mode 100644 src/patterns/01-core/props/_index.scss
 create mode 100644 src/patterns/01-core/props/_layout.scss
 create mode 100644 src/patterns/01-core/props/_media.scss
 create mode 100644 src/patterns/01-core/props/_shadows.scss
 create mode 100644 src/patterns/01-core/props/_sizes.scss
 create mode 100644 src/patterns/01-core/props/_theme.scss
 create mode 100644 src/patterns/01-core/props/_zindex.scss
 create mode 100644 src/patterns/01-core/utilities/_accessibility.scss
 create mode 100644 src/patterns/01-core/utilities/_clearfix.scss
 create mode 100644 src/patterns/01-core/utilities/_constrain.scss
 create mode 100644 src/patterns/01-core/utilities/_index.scss
 create mode 100644 src/patterns/02-base/colors/colors.js
 create mode 100644 src/patterns/02-base/colors/colors.twig
 create mode 100644 src/patterns/02-base/colors/colors.yml

diff --git a/src/patterns/01-core/_index.scss b/src/patterns/01-core/_index.scss
new file mode 100644
index 00000000..35b88a49
--- /dev/null
+++ b/src/patterns/01-core/_index.scss
@@ -0,0 +1,2 @@
+@forward 'mixins';
+@forward 'props/media';
diff --git a/src/patterns/01-core/elements/_address.scss b/src/patterns/01-core/elements/_address.scss
new file mode 100644
index 00000000..3cb6dd6c
--- /dev/null
+++ b/src/patterns/01-core/elements/_address.scss
@@ -0,0 +1,8 @@
+// @file
+// Address element styles.
+
+:where(address) {
+  font-style: normal;
+  margin-bottom: var(--size-2);
+  line-height: inherit;
+}
diff --git a/src/patterns/01-core/elements/_area.scss b/src/patterns/01-core/elements/_area.scss
new file mode 100644
index 00000000..3591e0aa
--- /dev/null
+++ b/src/patterns/01-core/elements/_area.scss
@@ -0,0 +1,7 @@
+// @file
+// Area element styles.
+
+:where(area) {
+  cursor: pointer;
+  touch-action: manipulation;
+}
diff --git a/src/patterns/01-core/elements/_article.scss b/src/patterns/01-core/elements/_article.scss
new file mode 100644
index 00000000..2ac66cf3
--- /dev/null
+++ b/src/patterns/01-core/elements/_article.scss
@@ -0,0 +1,4 @@
+// @file
+// Article element styles.
+
+// :where(article) {}
diff --git a/src/patterns/01-core/elements/_aside.scss b/src/patterns/01-core/elements/_aside.scss
new file mode 100644
index 00000000..86064c99
--- /dev/null
+++ b/src/patterns/01-core/elements/_aside.scss
@@ -0,0 +1,4 @@
+// @file
+// Aside element styles.
+
+// :where(aside) {}
diff --git a/src/patterns/01-core/elements/_audio.scss b/src/patterns/01-core/elements/_audio.scss
new file mode 100644
index 00000000..34dbd935
--- /dev/null
+++ b/src/patterns/01-core/elements/_audio.scss
@@ -0,0 +1,11 @@
+// @file
+// Audio element styles.
+
+:where(audio) {
+  display: block;
+
+  &:not([controls]) {
+    display: none;
+    height: 0;
+  }
+}
diff --git a/src/patterns/01-core/elements/_blockquote.scss b/src/patterns/01-core/elements/_blockquote.scss
new file mode 100644
index 00000000..77910a55
--- /dev/null
+++ b/src/patterns/01-core/elements/_blockquote.scss
@@ -0,0 +1,33 @@
+// @file
+// Blockquote styles.
+
+:where(blockquote) {
+  border-inline-start-width: var(--border-size-3);
+  display: grid;
+  font-size: var(--font-size-2);
+  gap: var(--size-3);
+  margin: 0 0 var(--size-5);
+  max-inline-size: var(--size-content-2);
+  padding-block: var(--size-3);
+  padding-inline: var(--size-4);
+
+   * + & {
+    margin-top: var(--size-5);
+  }
+
+  p {
+    color: inherit;
+    font-family: inherit;
+    font-size: inherit;
+    font-weight: inherit;
+    line-height: inherit;
+  }
+
+  @media print {
+    page-break-inside: avoid;
+  }
+}
+
+:where(:not(blockquote) > cite) {
+  padding-inline-start: var(--size-2);
+}
diff --git a/src/patterns/01-core/elements/_body.scss b/src/patterns/01-core/elements/_body.scss
new file mode 100644
index 00000000..b43409f0
--- /dev/null
+++ b/src/patterns/01-core/elements/_body.scss
@@ -0,0 +1,10 @@
+// @file
+// Body styles.
+
+:where(body) {
+  margin: 0;
+  min-block-size: 100%;
+  padding: 0;
+  scrollbar-gutter: stable both-edges;
+  word-wrap: break-word;
+}
diff --git a/src/patterns/01-core/elements/_button.scss b/src/patterns/01-core/elements/_button.scss
new file mode 100644
index 00000000..ffe2b59e
--- /dev/null
+++ b/src/patterns/01-core/elements/_button.scss
@@ -0,0 +1,16 @@
+// @file
+// Button element styles.
+
+@use '../../01-core' as *;
+
+:where(button) {
+  font: inherit;
+  font-size: inherit;
+  color: inherit;
+  letter-spacing: inherit;
+}
+
+:where(button label[for]) {
+  cursor: pointer;
+  touch-action: manipulation;
+}
diff --git a/src/patterns/01-core/elements/_canvas.scss b/src/patterns/01-core/elements/_canvas.scss
new file mode 100644
index 00000000..98f64e08
--- /dev/null
+++ b/src/patterns/01-core/elements/_canvas.scss
@@ -0,0 +1,6 @@
+// @file
+// Canvas element styles.
+
+:where(canvas) {
+  display: block;
+}
diff --git a/src/patterns/01-core/elements/_datalist.scss b/src/patterns/01-core/elements/_datalist.scss
new file mode 100644
index 00000000..5f14e662
--- /dev/null
+++ b/src/patterns/01-core/elements/_datalist.scss
@@ -0,0 +1,4 @@
+// @file
+// Datalist element styles.
+
+// :where(datalist) {}
diff --git a/src/patterns/01-core/elements/_definition-list.scss b/src/patterns/01-core/elements/_definition-list.scss
new file mode 100644
index 00000000..d1bb03f3
--- /dev/null
+++ b/src/patterns/01-core/elements/_definition-list.scss
@@ -0,0 +1,24 @@
+// @file
+// Definition list styles.
+
+:where(dd) {
+  max-inline-size: var(--size-content-2);
+  margin-bottom: var(--size-4);
+
+  dt + & {
+    margin-top: 0;
+  }
+}
+
+:where(dt) {
+  font-weight: var(--font-weight-700);
+  max-inline-size: var(--size-header-3);
+
+  &:not(:first-of-type) {
+    margin-block-start: var(--size-5);
+  }
+}
+
+:where(dl) {
+  font-size: var(--font-size-2);
+}
diff --git a/src/patterns/01-core/elements/_details.scss b/src/patterns/01-core/elements/_details.scss
new file mode 100644
index 00000000..702e8dda
--- /dev/null
+++ b/src/patterns/01-core/elements/_details.scss
@@ -0,0 +1,29 @@
+// @file
+// Details element styles.
+
+:where(details) {
+  background: var(--gray-2);
+  border-radius: var(--radius-2);
+  padding-block: var(--size-2);
+  padding-inline: var(--size-3);
+
+  &[open] > summary {
+    border-end-end-radius: 0;
+    border-end-start-radius: 0;
+    margin-bottom: var(--size-2);
+  }
+
+  p:last-child {
+    margin-bottom: 0;
+  }
+}
+
+:where(summary) {
+  background: var(--gray-3);
+  border-radius: var(--radius-2);
+  cursor: pointer;
+  font-weight: var(--font-weight-700);
+  margin: calc(var(--size-2) * -1) calc(var(--size-3) * -1);
+  padding: var(--size-2) var(--size-3);
+  touch-action: manipulation;
+}
diff --git a/src/patterns/01-core/elements/_dialog.scss b/src/patterns/01-core/elements/_dialog.scss
new file mode 100644
index 00000000..be5fad00
--- /dev/null
+++ b/src/patterns/01-core/elements/_dialog.scss
@@ -0,0 +1,13 @@
+// @file
+// Dialog element styles.
+
+:where(dialog) {
+  background-color: var(--gray-0);
+  color: inherit;
+  border-radius: var(--radius-3);
+  box-shadow: var(--shadow-6);
+
+  &::backdrop {
+    backdrop-filter: blur(25px);
+  }
+}
diff --git a/src/patterns/01-core/elements/_embed.scss b/src/patterns/01-core/elements/_embed.scss
new file mode 100644
index 00000000..0253a099
--- /dev/null
+++ b/src/patterns/01-core/elements/_embed.scss
@@ -0,0 +1,6 @@
+// @file
+// Embed element styles.
+
+:where(embed) {
+  display: block;
+}
diff --git a/src/patterns/01-core/elements/_fieldset.scss b/src/patterns/01-core/elements/_fieldset.scss
new file mode 100644
index 00000000..1fb0cff0
--- /dev/null
+++ b/src/patterns/01-core/elements/_fieldset.scss
@@ -0,0 +1,7 @@
+// @file
+// Fieldset element styles.
+
+:where(fieldset) {
+  border-radius: var(--radius-2);
+  border: var(--border-size-1) solid var(--gray-4);
+}
diff --git a/src/patterns/01-core/elements/_figure.scss b/src/patterns/01-core/elements/_figure.scss
new file mode 100644
index 00000000..d1a8d778
--- /dev/null
+++ b/src/patterns/01-core/elements/_figure.scss
@@ -0,0 +1,4 @@
+// @file
+// Figure element styles.
+
+// :where(figure) {}
diff --git a/src/patterns/01-core/elements/_footer.scss b/src/patterns/01-core/elements/_footer.scss
new file mode 100644
index 00000000..032ddc83
--- /dev/null
+++ b/src/patterns/01-core/elements/_footer.scss
@@ -0,0 +1,4 @@
+// @file
+// Footer element styles.
+
+// :where(footer) {}
diff --git a/src/patterns/01-core/elements/_form.scss b/src/patterns/01-core/elements/_form.scss
new file mode 100644
index 00000000..c6989741
--- /dev/null
+++ b/src/patterns/01-core/elements/_form.scss
@@ -0,0 +1,4 @@
+// @file
+// Form element styles.
+
+// :where(form) {}
diff --git a/src/patterns/01-core/elements/_header.scss b/src/patterns/01-core/elements/_header.scss
new file mode 100644
index 00000000..ac8f5432
--- /dev/null
+++ b/src/patterns/01-core/elements/_header.scss
@@ -0,0 +1,4 @@
+// @file
+// Header element styles.
+
+// :where(header) {}
diff --git a/src/patterns/01-core/elements/_headings.scss b/src/patterns/01-core/elements/_headings.scss
new file mode 100644
index 00000000..2556b931
--- /dev/null
+++ b/src/patterns/01-core/elements/_headings.scss
@@ -0,0 +1,40 @@
+// @file
+// Heading styles.
+
+@use '../../01-core' as *;
+
+h1 {
+  @include heading-1;
+}
+
+h2 {
+  @include heading-2;
+}
+
+h3 {
+  @include heading-3;
+}
+
+h4 {
+  @include heading-4;
+}
+
+h5 {
+  @include heading-5;
+}
+
+h6 {
+  @include heading-6;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+  // Remove top margin for adjacent subheadings.
+  & + & {
+    margin-top: 0;
+  }
+}
diff --git a/src/patterns/01-core/elements/_horizontal-rule.scss b/src/patterns/01-core/elements/_horizontal-rule.scss
new file mode 100644
index 00000000..49ce9b08
--- /dev/null
+++ b/src/patterns/01-core/elements/_horizontal-rule.scss
@@ -0,0 +1,8 @@
+// @file
+// Horizontal rule styles.
+
+:where(hr) {
+  background-color: var(--gray-3);
+  height: var(--border-size-2);
+  margin-block: var(--size-fluid-2);
+}
diff --git a/src/patterns/01-core/elements/_html.scss b/src/patterns/01-core/elements/_html.scss
new file mode 100644
index 00000000..280a7b82
--- /dev/null
+++ b/src/patterns/01-core/elements/_html.scss
@@ -0,0 +1,28 @@
+// @file
+// HTML styles.
+
+:where(html) {
+  --accent-color: var(--blue-6);
+  --caret-color: var(--blue-6);
+  --scrollbar-color: var(--gray-7);
+  --text-0: var(--gray-7);
+
+  accent-color: var(--accent-color);
+  background-color: white;
+  block-size: 100%;
+  caret-color: var(--caret-color);
+  color: var(--text-0);
+  font-family: var(--font-sans);
+  line-height: var(--font-lineheight-4);
+  min-height: 100%;
+  scrollbar-color: var(--scrollbar-color) transparent;
+  text-size-adjust: none;
+
+  @media screen and (prefers-reduced-motion: no-preference) {
+    scroll-behavior: smooth;
+  }
+
+  &:has(dialog[open]) {
+    overflow: hidden;
+  }
+}
diff --git a/src/patterns/01-core/elements/_iframe.scss b/src/patterns/01-core/elements/_iframe.scss
new file mode 100644
index 00000000..b2e5088c
--- /dev/null
+++ b/src/patterns/01-core/elements/_iframe.scss
@@ -0,0 +1,10 @@
+// @file
+// Iframe element styles.
+
+:where(iframe) {
+  display: block;
+
+  @media print {
+    display: none;
+  }
+}
diff --git a/src/patterns/01-core/elements/_img.scss b/src/patterns/01-core/elements/_img.scss
new file mode 100644
index 00000000..5b4f3a0f
--- /dev/null
+++ b/src/patterns/01-core/elements/_img.scss
@@ -0,0 +1,13 @@
+// @file
+// IMG element styles.
+
+:where(img) {
+  block-size: auto;
+  display: block;
+  max-inline-size: 100%;
+
+  @media print {
+    max-width: 100% !important;
+    page-break-inside: avoid;
+  }
+}
diff --git a/src/patterns/01-core/elements/_index.scss b/src/patterns/01-core/elements/_index.scss
new file mode 100644
index 00000000..b3c6bc39
--- /dev/null
+++ b/src/patterns/01-core/elements/_index.scss
@@ -0,0 +1,58 @@
+@forward 'universal';
+@forward 'html';
+@forward 'body';
+@forward 'main';
+@forward 'section';
+@forward 'article';
+@forward 'header';
+@forward 'footer';
+@forward 'aside';
+@forward 'menu';
+@forward 'nav';
+@forward 'details';
+@forward 'iframe';
+
+// Typography
+@forward 'headings';
+@forward 'paragraph';
+@forward 'inline-elements';
+@forward 'blockquote';
+@forward 'preformatted-text';
+@forward 'horizontal-rule';
+@forward 'address';
+
+// Lists
+@forward 'unordered-list';
+@forward 'ordered-list';
+@forward 'list-item';
+@forward 'definition-list';
+
+// Tables
+@forward 'table';
+
+// Forms
+@forward 'button';
+@forward 'datalist';
+@forward 'dialog';
+@forward 'fieldset';
+@forward 'form';
+@forward 'input';
+@forward 'label';
+@forward 'legend';
+@forward 'meter';
+@forward 'option';
+@forward 'output';
+@forward 'progress';
+@forward 'select';
+@forward 'textarea';
+
+// Media
+@forward 'area';
+@forward 'audio';
+@forward 'canvas';
+@forward 'embed';
+@forward 'figure';
+@forward 'img';
+@forward 'object';
+@forward 'svg';
+@forward 'video';
diff --git a/src/patterns/01-core/elements/_inline-elements.scss b/src/patterns/01-core/elements/_inline-elements.scss
new file mode 100644
index 00000000..86067974
--- /dev/null
+++ b/src/patterns/01-core/elements/_inline-elements.scss
@@ -0,0 +1,159 @@
+// @file
+// Inline element styles.
+
+@use '../../01-core' as *;
+
+:where(a) {
+  background-color: transparent;
+  transition-duration: 200ms;
+  transition-property: background-color, border-color, color, outline-color, text-decoration-color;
+  transition-timing-function: var(--ease-in-out-2);
+
+  &:where([href]) {
+    color: var(--indigo-5);
+    text-decoration-color: var(--indigo-5);
+
+    &:where(:hover) {
+      color: var(--indigo-9);
+      text-decoration-color: var(--indigo-9);
+    }
+
+    &:where(:visited) {
+      color: var(--indigo-5);
+      text-decoration-color: var(--indigo-5);
+    }
+  }
+
+  &:where(:not(:hover)) {
+    text-decoration: inherit;
+  }
+
+  @media print {
+    &,
+    &:visited {
+      text-decoration: none;
+    }
+
+    &[href]::after {
+      content: ' <' attr(href) '>';
+      font-family: var(--font-sans);
+      font-size: 10pt;
+      font-weight: normal;
+      text-transform: lowercase;
+    }
+
+    // Uncomment and replace example.com with your site’s domain.
+    //&[href^='/']::after {
+    //  content: ' <http://example.com' attr(href) '>';
+    //}
+
+    &[href^='javascript:']::after,
+    &[href^='mailto:']::after,
+    &[href^='tel:']::after,
+    &[href^='#']::after,
+    &[href*='?']::after {
+      content: '';
+    }
+  }
+}
+
+:where(abbr) {
+  text-decoration-color: var(--blue-5);
+  text-underline-offset: var(--size-xs);
+
+  &:hover {
+    cursor: help;
+  }
+
+  @media print {
+    &[title]::after {
+      content: ' (' attr(title) ')';
+    }
+  }
+}
+
+:where(b) {
+  font-weight: var(--font-weight-900);
+}
+
+:where(cite) {
+  color: var(--gray-6);
+  font-family: var(--font-sans);
+  font-size: var(--font-size-0);
+  font-style: normal;
+  font-weight: var(--font-weight-600);
+  letter-spacing: var(--font-letterspacing-1);
+  line-height: var(--font-lineheight-1);
+}
+
+:where(code) {
+  font-family: var(--font-mono);
+}
+
+:where(del) {
+  background-color: var(--red-9);
+  color: var(--red-1);
+}
+
+:where(dfn) {
+  font-style: italic;
+}
+
+:where(ins) {
+  background-color: var(--green-9);
+  color: var(--green-1);
+  text-underline-offset: var(--size-xs);
+}
+
+:where(kbd) {
+  border-color: var(--gray-4);
+  border-radius: var(--radius-2);
+  border-width: var(--border-size-1);
+  font-family: var(--font-mono);
+  padding: var(--size-1) var(--size-2);
+}
+
+:where(mark) {
+  border-radius: var(--radius-2);
+  padding-inline: var(--size-1);
+}
+
+:where(samp) {
+  font-family: var(--font-mono);
+}
+
+:where(small) {
+  font-size: max(.5em, var(--font-size-0));
+  max-inline-size: var(--size-content-1);
+}
+
+:where(strong) {
+  font-weight: var(--font-weight-700);
+}
+
+:where(sub) {
+  bottom: -0.25em;
+  font-size: 75%;
+  line-height: 0;
+  position: relative;
+  vertical-align: baseline;
+}
+
+:where(sup) {
+  font-size: 75%;
+  line-height: 0;
+  position: relative;
+  top: -0.5em;
+  vertical-align: baseline;
+}
+
+:where(u) {
+  text-underline-offset: var(--size-xs);
+}
+
+:where(var) {
+  border-color: var(--gray-4);
+  border-radius: var(--radius-2);
+  border-width: var(--border-size-1);
+  padding: var(--size-1) var(--size-2);
+}
diff --git a/src/patterns/01-core/elements/_input.scss b/src/patterns/01-core/elements/_input.scss
new file mode 100644
index 00000000..e3450a4e
--- /dev/null
+++ b/src/patterns/01-core/elements/_input.scss
@@ -0,0 +1,93 @@
+// @file
+// Input element styles.
+
+:where(input) {
+  color: inherit;
+  cursor: pointer;
+  font-size: inherit;
+  font: inherit;
+  letter-spacing: inherit;
+  padding-block: var(--size-1);
+  padding-inline: var(--size-2);
+  touch-action: manipulation;
+}
+
+:where(input:not(button, button[type], input[type="button"], input[type="submit"], input[type="reset"])) {
+  background-color: var(--gray-1);
+  border-radius: var(--radius-2);
+  margin-inline-end: var(--size-1);
+}
+
+// Checkbox, Options input
+:where(input[type="checkbox"], input[type="radio"]) {
+  block-size: var(--size-4);
+  inline-size: var(--size-4);
+}
+
+// file input
+:where(input[type="file"]) {
+  align-self: flex-start;
+  background-color: white;
+  border-radius: var(--radius-2);
+  border-color: var(--gray-3);
+  border-style: solid;
+  border-width: var(--border-size-1);
+  box-shadow: var(--inner-shadow-1);
+  color: var(--gray-7);
+  cursor: initial;
+  display: block;
+  max-inline-size: 100%;
+  padding: 0;
+}
+
+:where(input[type="file"])::-webkit-file-upload-button {
+  color: inherit;
+  font-size: inherit;
+  font: inherit;
+  letter-spacing: inherit;
+}
+
+:where(input[type="file"])::-webkit-file-upload-button,
+:where(input[type="file"])::file-selector-button {
+  cursor: pointer;
+  margin-inline-end: 1.75ch;
+}
+
+// Number input
+:where(input[type="number"])::-webkit-inner-spin-button,
+:where(input[type="number"])::-webkit-outer-spin-button {
+  height: auto;
+}
+
+// Search input
+:where(input[type="search"]) {
+  appearance: textfield;
+  outline-offset: -2px;
+
+  &::-webkit-search-decoration {
+    appearance: none;
+  }
+}
+
+// :where(input[type='button']) {}
+// :where(input[type='checkbox']) {}
+// :where(input[type='color']) {}
+// :where(input[type='date']) {}
+// :where(input[type='datetime']) {}
+// :where(input[type='datetime-local']) {}
+// :where(input[type='email']) {}
+// :where(input[type='file']) {}
+// :where(input[type='image']) {}
+// :where(input[type='month']) {}
+// :where(input[type='number']) {}
+// :where(input[type='password']) {}
+// :where(input[type='radio']) {}
+// :where(input[type='range']) {}
+// :where(input[type='reset']) {}
+// :where(input[type='search']) {}
+// :where(input[type='submit']) {}
+// :where(input[type='tel']) {}
+// :where(input[type='text']) {}
+// :where(input[type='time']) {}
+// :where(input[type='url']) {}
+// :where(input[type='week']) {}
diff --git a/src/patterns/01-core/elements/_label.scss b/src/patterns/01-core/elements/_label.scss
new file mode 100644
index 00000000..ccc88049
--- /dev/null
+++ b/src/patterns/01-core/elements/_label.scss
@@ -0,0 +1,4 @@
+// @file
+// Label element styles.
+
+// :where(label) {}
diff --git a/src/patterns/01-core/elements/_legend.scss b/src/patterns/01-core/elements/_legend.scss
new file mode 100644
index 00000000..93f8db69
--- /dev/null
+++ b/src/patterns/01-core/elements/_legend.scss
@@ -0,0 +1,13 @@
+// @file
+// Legend element styles.
+
+:where(legend) {
+  border: 0;
+  box-sizing: border-box;
+  color: inherit;
+  display: table;
+  margin: 0;
+  max-width: 100%;
+  padding: 0;
+  white-space: normal;
+}
diff --git a/src/patterns/01-core/elements/_list-item.scss b/src/patterns/01-core/elements/_list-item.scss
new file mode 100644
index 00000000..475d0e0c
--- /dev/null
+++ b/src/patterns/01-core/elements/_list-item.scss
@@ -0,0 +1,11 @@
+// @file
+// List item styles.
+
+:where(li) {
+  max-inline-size: var(--size-content-2);
+  padding-inline-start: var(--size-1);
+
+  @media print {
+    page-break-inside: avoid;
+  }
+}
diff --git a/src/patterns/01-core/elements/_main.scss b/src/patterns/01-core/elements/_main.scss
new file mode 100644
index 00000000..b1da0f0b
--- /dev/null
+++ b/src/patterns/01-core/elements/_main.scss
@@ -0,0 +1,6 @@
+// @file
+// Main element styles.
+
+:where(main) {
+  display: block;
+}
diff --git a/src/patterns/01-core/elements/_menu.scss b/src/patterns/01-core/elements/_menu.scss
new file mode 100644
index 00000000..137c7cda
--- /dev/null
+++ b/src/patterns/01-core/elements/_menu.scss
@@ -0,0 +1,8 @@
+// @file
+// Menu element styles.
+
+:where(menu) {
+  display: flex;
+  gap: var(--size-3);
+  padding-inline-start: 0;
+}
diff --git a/src/patterns/01-core/elements/_meter.scss b/src/patterns/01-core/elements/_meter.scss
new file mode 100644
index 00000000..39861057
--- /dev/null
+++ b/src/patterns/01-core/elements/_meter.scss
@@ -0,0 +1,4 @@
+// @file
+// Meter element styles.
+
+// :where(meter) {}
diff --git a/src/patterns/01-core/elements/_nav.scss b/src/patterns/01-core/elements/_nav.scss
new file mode 100644
index 00000000..408c463b
--- /dev/null
+++ b/src/patterns/01-core/elements/_nav.scss
@@ -0,0 +1,8 @@
+// @file
+// Nav element styles.
+
+:where(nav) {
+  @media print {
+    display: none;
+  }
+}
diff --git a/src/patterns/01-core/elements/_object.scss b/src/patterns/01-core/elements/_object.scss
new file mode 100644
index 00000000..95d29525
--- /dev/null
+++ b/src/patterns/01-core/elements/_object.scss
@@ -0,0 +1,8 @@
+// @file
+// Object element styles.
+
+:where(object) {
+  display: block;
+}
+
+// :where(param) {}
diff --git a/src/patterns/01-core/elements/_option.scss b/src/patterns/01-core/elements/_option.scss
new file mode 100644
index 00000000..f145df10
--- /dev/null
+++ b/src/patterns/01-core/elements/_option.scss
@@ -0,0 +1,12 @@
+// @file
+// Options element styles.
+
+// :where(option) {}
+
+:where(optgroup) {
+  font-family: inherit;
+  font-size: 100%;
+  font-weight: var(--font-bold);
+  line-height: var(--line-xs);
+  margin: 0;
+}
diff --git a/src/patterns/01-core/elements/_ordered-list.scss b/src/patterns/01-core/elements/_ordered-list.scss
new file mode 100644
index 00000000..612b7693
--- /dev/null
+++ b/src/patterns/01-core/elements/_ordered-list.scss
@@ -0,0 +1,7 @@
+// @file
+// Ordered list styles.
+
+:where(ol) {
+  font-size: var(--font-size-2);
+  padding-inline-start: var(--size-4);
+}
diff --git a/src/patterns/01-core/elements/_output.scss b/src/patterns/01-core/elements/_output.scss
new file mode 100644
index 00000000..b55e678c
--- /dev/null
+++ b/src/patterns/01-core/elements/_output.scss
@@ -0,0 +1,4 @@
+// @file
+// Output element styles.
+
+// :where(output) {}
diff --git a/src/patterns/01-core/elements/_paragraph.scss b/src/patterns/01-core/elements/_paragraph.scss
new file mode 100644
index 00000000..4f64cc09
--- /dev/null
+++ b/src/patterns/01-core/elements/_paragraph.scss
@@ -0,0 +1,14 @@
+// @file
+// Paragraph styles.
+
+:where(p) {
+  font-size: var(--font-size-2);
+  margin-bottom: var(--size-2);;
+  margin-top: 0;
+  max-inline-size: var(--size-content-3);
+
+  @media print {
+    orphans: 3;
+    widows: 3;
+  }
+}
diff --git a/src/patterns/01-core/elements/_preformatted-text.scss b/src/patterns/01-core/elements/_preformatted-text.scss
new file mode 100644
index 00000000..33d3bfa6
--- /dev/null
+++ b/src/patterns/01-core/elements/_preformatted-text.scss
@@ -0,0 +1,13 @@
+// @file
+// Preformatted text styles.
+
+:where(pre) {
+  font-family: var(--font-mono);
+  max-inline-size: max-content;
+  min-inline-size: 0;
+  white-space: pre;
+
+  @media print {
+    page-break-inside: avoid;
+  }
+}
diff --git a/src/patterns/01-core/elements/_progress.scss b/src/patterns/01-core/elements/_progress.scss
new file mode 100644
index 00000000..fd31f143
--- /dev/null
+++ b/src/patterns/01-core/elements/_progress.scss
@@ -0,0 +1,6 @@
+// @file
+// Progress element styles.
+
+:where(progress) {
+  vertical-align: baseline;
+}
diff --git a/src/patterns/01-core/elements/_section.scss b/src/patterns/01-core/elements/_section.scss
new file mode 100644
index 00000000..b7e9ee68
--- /dev/null
+++ b/src/patterns/01-core/elements/_section.scss
@@ -0,0 +1,4 @@
+// @file
+// Section element styles.
+
+//:where( section) {}
diff --git a/src/patterns/01-core/elements/_select.scss b/src/patterns/01-core/elements/_select.scss
new file mode 100644
index 00000000..3c1292c7
--- /dev/null
+++ b/src/patterns/01-core/elements/_select.scss
@@ -0,0 +1,15 @@
+// @file
+// Select element styles.
+
+:where(select) {
+  background-color: var(--gray-2);
+  border-radius: var(--radius-2);
+  color: inherit;
+  cursor: pointer;
+  font-size: inherit;
+  font: inherit;
+  letter-spacing: inherit;
+  padding-block: .75ch;
+  padding-inline: 1.25ch 0;
+  touch-action: manipulation;
+}
diff --git a/src/patterns/01-core/elements/_svg.scss b/src/patterns/01-core/elements/_svg.scss
new file mode 100644
index 00000000..e63382c7
--- /dev/null
+++ b/src/patterns/01-core/elements/_svg.scss
@@ -0,0 +1,21 @@
+// @file
+// SVG element styles.
+
+:where(svg) {
+  block-size: auto;
+  display: block;
+  fill: currentColor;
+  max-inline-size: 100%;
+  stroke: none;
+
+  &:where(:not([fill])) {
+    fill: none;
+    stroke-linecap: round;
+    stroke-linejoin: round;
+    stroke: currentColor;
+  }
+
+  &:where(:not([width])) {
+    inline-size: var(--size-10);
+  }
+}
diff --git a/src/patterns/01-core/elements/_table.scss b/src/patterns/01-core/elements/_table.scss
new file mode 100644
index 00000000..4ff02b55
--- /dev/null
+++ b/src/patterns/01-core/elements/_table.scss
@@ -0,0 +1,58 @@
+// @file
+// Table styles.
+
+:where(caption) {
+  color: var(--gray-5);
+  padding-bottom: var(--size-1);
+  padding-top: var(--size-1);
+  text-align: left;
+}
+
+:where(table) {
+  border-collapse: collapse;
+  border-color: var(--gray-2);
+  caption-side: bottom;
+  color: var(--gray-8);
+  margin-bottom: var(--size-2);
+  vertical-align: top;
+  width: 100%;
+
+  > :not(caption) > * > * {
+    background-color: transparent;
+    border-bottom-width: var(--border-size-1);
+    padding: var(--size-1);
+  }
+
+  > tbody {
+    vertical-align: inherit;
+  }
+
+  > thead {
+    vertical-align: bottom;
+  }
+
+  > :not(:first-child) {
+    border-top-color: currentColor;
+    border-top-width: var(--border-size-2);
+  }
+}
+
+:where(thead, tbody, tfoot, tr, td, th) {
+  border-color: inherit;
+}
+
+:where(thead) {
+  @media print {
+    display: table-header-group;
+  }
+}
+
+:where(tr) {
+  @media print {
+    page-break-inside: avoid;
+  }
+}
+
+:where(th) {
+  text-align: inherit;
+}
diff --git a/src/patterns/01-core/elements/_textarea.scss b/src/patterns/01-core/elements/_textarea.scss
new file mode 100644
index 00000000..ad52287d
--- /dev/null
+++ b/src/patterns/01-core/elements/_textarea.scss
@@ -0,0 +1,16 @@
+// @file
+// Textarea element styles.
+
+:where(textarea) {
+  background-color: var(--gray-2);
+  border-radius: var(--radius-2);
+  color: inherit;
+  cursor: pointer;
+  font-size: inherit;
+  font: inherit;
+  letter-spacing: inherit;
+  padding-block: var(--size-1);
+  padding-inline: var(--size-2);
+  resize: block;
+  touch-action: manipulation;
+}
diff --git a/src/patterns/01-core/elements/_universal.scss b/src/patterns/01-core/elements/_universal.scss
new file mode 100644
index 00000000..be2e32b1
--- /dev/null
+++ b/src/patterns/01-core/elements/_universal.scss
@@ -0,0 +1,53 @@
+// @file
+// Universal styles.
+
+*,
+::before,
+::after {
+  box-sizing: border-box;
+}
+
+* {
+  @media print {
+    background-color: transparent !important;
+    box-shadow: none !important;
+    color: #000 !important;
+    text-shadow: none !important;
+  }
+
+  @page {
+    margin: 2cm;
+  }
+}
+
+:where(:focus-visible) {
+  outline-color: var(--indigo-7);
+  outline-offset: 5px;
+  transition: outline-offset 145ms var(--ease-2);
+}
+
+:where(:not(fieldset, progress, meter)) {
+  border-width: 0;
+  border-style: solid;
+  background-origin: border-box;
+  background-repeat: no-repeat;
+}
+
+:where(:not(pre) > code, kbd) {
+  white-space: nowrap;
+}
+
+:where(:not(pre) > code) {
+  padding: var(--size-1) var(--size-2);
+  background: var(--gray-2);
+  border-radius: var(--radius-2);
+}
+
+:where(:not(dialog)) {
+  margin: 0;
+}
+
+:where([tabindex]:not([tabindex*="-"])) {
+  cursor: pointer;
+  touch-action: manipulation;
+}
diff --git a/src/patterns/01-core/elements/_unordered-list.scss b/src/patterns/01-core/elements/_unordered-list.scss
new file mode 100644
index 00000000..5c39180e
--- /dev/null
+++ b/src/patterns/01-core/elements/_unordered-list.scss
@@ -0,0 +1,7 @@
+// @file
+// Unordered list styles.
+
+:where(ul) {
+  font-size: var(--font-size-2);
+  padding-inline-start: var(--size-4);
+}
diff --git a/src/patterns/01-core/elements/_video.scss b/src/patterns/01-core/elements/_video.scss
new file mode 100644
index 00000000..f3bdcae4
--- /dev/null
+++ b/src/patterns/01-core/elements/_video.scss
@@ -0,0 +1,8 @@
+// @file
+// Video element styles.
+
+:where(video) {
+  block-size: auto;
+  display: block;
+  max-inline-size: 100%;
+}
diff --git a/src/patterns/01-core/font-face/DroidSerif-Bold-webfont.woff b/src/patterns/01-core/font-face/DroidSerif-Bold-webfont.woff
new file mode 100644
index 0000000000000000000000000000000000000000..34e60c600c7fb139794737c0b516e11ed04345cb
GIT binary patch
literal 27796
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

literal 0
HcmV?d00001

diff --git a/src/patterns/01-core/font-face/DroidSerif-Regular-webfont.woff b/src/patterns/01-core/font-face/DroidSerif-Regular-webfont.woff
new file mode 100644
index 0000000000000000000000000000000000000000..4c17b4da011d321174346a0cccded93c223e905a
GIT binary patch
literal 27560
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
E04dJ|5C8xG

literal 0
HcmV?d00001

diff --git a/src/patterns/01-core/font-face/_index.scss b/src/patterns/01-core/font-face/_index.scss
new file mode 100644
index 00000000..1927e3f7
--- /dev/null
+++ b/src/patterns/01-core/font-face/_index.scss
@@ -0,0 +1,20 @@
+// @file
+// Styles for Font face.
+
+// Droid Serif Regular.
+@font-face {
+  font-family: 'droid';
+  font-style: normal;
+  font-weight: 400;
+  font-display: fallback;
+  src: url('../fonts/DroidSerif-Regular-webfont.woff') format('woff');
+}
+
+// Droid Serif Bold.
+@font-face {
+  font-family: 'droid';
+  font-style: normal;
+  font-weight: 700;
+  font-display: fallback;
+  src: url('../fonts/DroidSerif-Bold-webfont.woff') format('woff');
+}
diff --git a/src/patterns/01-core/mixins/_accessiblity.scss b/src/patterns/01-core/mixins/_accessiblity.scss
new file mode 100644
index 00000000..133cedac
--- /dev/null
+++ b/src/patterns/01-core/mixins/_accessiblity.scss
@@ -0,0 +1,52 @@
+// @file
+// Accessibility mixin
+
+// Hide an element visually, but have it available for screen readers
+@mixin visually-hidden() {
+  border: 0;
+  clip: rect(1px 1px 1px 1px);
+  clip-path: inset(50%);
+  height: 1px;
+  overflow: hidden;
+  padding: 0;
+  position: absolute;
+  white-space: nowrap;
+  width: 1px;
+  word-wrap: normal;
+}
+
+// Turns off the visually-hidden effect.
+@mixin visually-hidden-off() {
+  clip: auto;
+  clip-path: none;
+  height: auto;
+  overflow: visible;
+  position: static;
+  white-space: inherit;
+  width: auto;
+}
+
+// Makes an element visible when focused if it also has the visually-hidden styles.
+@mixin focusable {
+  &:focus,
+  &:active {
+    @include visually-hidden-off;
+  }
+}
+
+// Hide an element completely hidden, visually and to screen readers.
+@mixin hidden() {
+  display: none;
+}
+
+// Makes an element completely hidden, visually and to screen readers, but maintains its layout.
+@mixin invisible() {
+  visibility: hidden;
+}
+
+// Completely hide an element if it has a true aria-hidden attribute.
+@mixin aria-hidden {
+  &[aria-hidden='true'] {
+    display: none;
+  }
+}
diff --git a/src/patterns/01-core/mixins/_clearfix.scss b/src/patterns/01-core/mixins/_clearfix.scss
new file mode 100644
index 00000000..cc485bf1
--- /dev/null
+++ b/src/patterns/01-core/mixins/_clearfix.scss
@@ -0,0 +1,10 @@
+// @file
+// Clearfix
+
+@mixin clearfix() {
+  &::after {
+    clear: both;
+    content: '';
+    display: table;
+  }
+}
diff --git a/src/patterns/01-core/mixins/_headings.scss b/src/patterns/01-core/mixins/_headings.scss
new file mode 100644
index 00000000..cfcd62ab
--- /dev/null
+++ b/src/patterns/01-core/mixins/_headings.scss
@@ -0,0 +1,67 @@
+// @file
+// Typography mixins
+
+@mixin heading-base {
+  color: var(--gray-9);
+  font-family: var(--font-sans);
+  font-weight: var(--font-weight-900);
+  hyphens: none;
+  line-height: var(--font-lineheight-4);
+  margin: 0 0 var(--size-1);
+  text-rendering: optimizeLegibility;
+
+  @media print {
+    orphans: 3;
+    page-break-after: avoid;
+    widows: 3;
+
+    &::after {
+      display: inline-block;
+    }
+  }
+
+  * + & {
+    margin-top: var(--size-2);
+  }
+
+  a {
+    color: inherit;
+    font-weight: inherit;
+  }
+}
+
+@mixin heading-1 {
+  @include heading-base;
+  font-size: var(--font-size-10);
+  max-inline-size: var(--size-header-1);
+}
+
+@mixin heading-2 {
+  @include heading-base;
+  font-size: var(--font-size-8);
+  max-inline-size: var(--size-header-2);
+}
+
+@mixin heading-3 {
+  @include heading-base;
+  font-size: var(--font-size-6);
+  max-inline-size: var(--size-header-3);
+}
+
+@mixin heading-4 {
+  @include heading-base;
+  font-size: var(--font-size-5);
+  max-inline-size: var(--size-header-3);
+}
+
+@mixin heading-5 {
+  @include heading-base;
+  font-size: var(--font-size-3);
+  max-inline-size: var(--size-header-3);
+}
+
+@mixin heading-6 {
+  @include heading-base;
+  font-size: var(--font-size-1);
+  max-inline-size: var(--size-header-3);
+}
diff --git a/src/patterns/01-core/mixins/_image-replace.scss b/src/patterns/01-core/mixins/_image-replace.scss
new file mode 100644
index 00000000..29ab8c1a
--- /dev/null
+++ b/src/patterns/01-core/mixins/_image-replace.scss
@@ -0,0 +1,27 @@
+// @file
+// Image replacement
+
+// After applying mixin, inline elements will need the display property set to block or inline-block.
+@mixin image-replace($width, $height: $width) {
+  height: $height;
+  overflow: hidden;
+  width: $width;
+
+  &::before {
+    content: '';
+    display: block;
+    height: 150%;
+    width: 0;
+  }
+}
+
+// This image replacement approach works with <input> and <button> elements.
+// The font-size declaration may cause problems for SEO and browsers with a
+// minimum font-size setting. Other inherited styles might also cause problems.
+@mixin image-replace-alt($width, $height: $width) {
+  color: transparent;
+  font: 0/0 a;
+  height: $height;
+  text-shadow: none;
+  width: $width;
+}
diff --git a/src/patterns/01-core/mixins/_index.scss b/src/patterns/01-core/mixins/_index.scss
new file mode 100644
index 00000000..b297b2a0
--- /dev/null
+++ b/src/patterns/01-core/mixins/_index.scss
@@ -0,0 +1,8 @@
+@forward 'accessiblity';
+@forward 'clearfix';
+@forward 'headings';
+@forward 'image-replace';
+@forward 'layout';
+@forward 'list';
+@forward 'svg-background';
+@forward 'svg-icon';
diff --git a/src/patterns/01-core/mixins/_layout.scss b/src/patterns/01-core/mixins/_layout.scss
new file mode 100644
index 00000000..4bf39ad0
--- /dev/null
+++ b/src/patterns/01-core/mixins/_layout.scss
@@ -0,0 +1,38 @@
+// @file
+// Layout mixins
+
+@mixin layout-align-left($margin) {
+  float: left;
+
+  @if $margin {
+    margin-right: $margin;
+  }
+}
+
+@mixin layout-align-right($margin) {
+  float: right;
+
+  @if $margin {
+    margin-left: $margin;
+  }
+}
+
+@mixin layout-align-none {
+  float: none;
+  margin-left: 0;
+  margin-right: 0;
+}
+
+@mixin layout-constrain {
+  margin-left: auto;
+  margin-right: auto;
+  max-width: var(--layout-max-width);
+  padding-left: var(--layout-gutter);
+  padding-right: var(--layout-gutter);
+
+  // Just in case .l-constrain is nested within another .l-constrain.
+  & & {
+    padding-left: 0;
+    padding-right: 0;
+  }
+}
diff --git a/src/patterns/01-core/mixins/_list.scss b/src/patterns/01-core/mixins/_list.scss
new file mode 100644
index 00000000..dc35fbd8
--- /dev/null
+++ b/src/patterns/01-core/mixins/_list.scss
@@ -0,0 +1,96 @@
+// @file
+// List Mixins
+
+@use 'clearfix' as *;
+@use '../props/media' as *;
+
+@mixin list-border {
+  list-style: none;
+  margin-left: 0;
+  padding-left: 0;
+
+  li {
+    padding-left: 0;
+  }
+
+  > li {
+    border-bottom: 1px solid var(--gray-5);
+    padding: var(--size-05);
+  }
+}
+
+@mixin list-column {
+  list-style: none;
+  margin-left: 0;
+  padding-left: 0;
+
+  li {
+    padding-left: 0;
+  }
+
+  > li {
+    break-inside: avoid-column;
+    display: table;
+    margin-bottom: 0;
+    padding-bottom: var(--size-05);
+  }
+
+  @media(min-width: $screen-sm) {
+    column-count: 2;
+    column-gap: var(--size-4);
+  }
+}
+
+@mixin list-inline {
+  list-style-type: none;
+  margin-left: 0;
+  padding-left: 0;
+
+  li {
+    padding-left: 0;
+  }
+
+  > li {
+    display: inline;
+  }
+}
+
+@mixin list-pipeline {
+  @include clearfix;
+  list-style-type: none;
+  margin-left: 0;
+  padding-left: 0;
+
+  > li {
+    border-right: 1px solid var(--gray-5);
+    display: block;
+    float: left;
+    margin-right: 0.75em;
+    padding-left: 0;
+    padding-right: 0.75em;
+
+    &.is-active {
+      font-weight: 700;
+    }
+
+    &:last-child {
+      border-right: 0;
+      margin-right: 0;
+      padding-right: 0;
+    }
+  }
+}
+
+@mixin list-unstyled {
+  list-style-type: none;
+  margin: 0;
+  padding: 0;
+
+  li {
+    padding-left: 0;
+
+    &::before {
+      display: none;
+    }
+  }
+}
diff --git a/src/patterns/01-core/mixins/_svg-background.scss b/src/patterns/01-core/mixins/_svg-background.scss
new file mode 100644
index 00000000..b01a40d0
--- /dev/null
+++ b/src/patterns/01-core/mixins/_svg-background.scss
@@ -0,0 +1,9 @@
+// @file
+// SVG background image Mixin
+
+@mixin svg-background($path) {
+  background-image: url($path), linear-gradient(transparent, transparent);
+  background-repeat: no-repeat;
+  background-size: 100%;
+  display: inline-block;
+}
diff --git a/src/patterns/01-core/mixins/_svg-icon.scss b/src/patterns/01-core/mixins/_svg-icon.scss
new file mode 100644
index 00000000..cf6bf562
--- /dev/null
+++ b/src/patterns/01-core/mixins/_svg-icon.scss
@@ -0,0 +1,15 @@
+// @file
+// SVG Icon mixins
+
+@mixin svg-icon($path, $height, $width, $color) {
+  background-color: $color;
+  background-size: cover;
+  content: '';
+  display: inline-block;
+  height: $height;
+  mask-image: url($path);
+  mask-position: center;
+  mask-repeat: no-repeat;
+  mask-size: contain;
+  width: $width;
+}
diff --git a/src/patterns/01-core/props/_animations.scss b/src/patterns/01-core/props/_animations.scss
new file mode 100644
index 00000000..980d121d
--- /dev/null
+++ b/src/patterns/01-core/props/_animations.scss
@@ -0,0 +1,120 @@
+:where(html) {
+  --animation-fade-in: fade-in .5s var(--ease-3);
+  --animation-fade-out: fade-out .5s var(--ease-3);
+  --animation-scale-up: scale-up .5s var(--ease-3);
+  --animation-scale-down: scale-down .5s var(--ease-3);
+  --animation-slide-out-up: slide-out-up .5s var(--ease-3);
+  --animation-slide-out-down: slide-out-down .5s var(--ease-3);
+  --animation-slide-out-right: slide-out-right .5s var(--ease-3);
+  --animation-slide-out-left: slide-out-left .5s var(--ease-3);
+  --animation-slide-in-up: slide-in-up .5s var(--ease-3);
+  --animation-slide-in-down: slide-in-down .5s var(--ease-3);
+  --animation-slide-in-right: slide-in-right .5s var(--ease-3);
+  --animation-slide-in-left: slide-in-left .5s var(--ease-3);
+  --animation-shake-x: shake-x .75s var(--ease-out-5);
+  --animation-shake-y: shake-y .75s var(--ease-out-5);
+  --animation-spin: spin 2s linear infinite;
+  --animation-ping: ping 5s var(--ease-out-3) infinite;
+  --animation-blink: blink 1s var(--ease-out-3) infinite;
+  --animation-float: float 3s var(--ease-in-out-3) infinite;
+  --animation-bounce: bounce 2s var(--ease-squish-2) infinite;
+  --animation-pulse: pulse 2s var(--ease-out-3) infinite;
+}
+
+@keyframes fade-in {
+  to { opacity: 1 }
+}
+
+@keyframes fade-out {
+  to { opacity: 0 }
+}
+
+@keyframes scale-up {
+  to { transform: scale(1.25) }
+}
+
+@keyframes scale-down {
+  to { transform: scale(.75) }
+}
+
+@keyframes slide-out-up {
+  to { transform: translateY(-100%) }
+}
+
+@keyframes slide-out-down {
+  to { transform: translateY(100%) }
+}
+
+@keyframes slide-out-right {
+  to { transform: translateX(100%) }
+}
+
+@keyframes slide-out-left {
+  to { transform: translateX(-100%) }
+}
+
+@keyframes slide-in-up {
+  from { transform: translateY(100%) }
+}
+
+@keyframes slide-in-down {
+  from { transform: translateY(-100%) }
+}
+
+@keyframes slide-in-right {
+  from { transform: translateX(-100%) }
+}
+
+@keyframes slide-in-left {
+  from { transform: translateX(100%) }
+}
+
+@keyframes shake-x {
+  0%, 100% { transform: translateX(0%) }
+  20% { transform: translateX(-5%) }
+  40% { transform: translateX(5%) }
+  60% { transform: translateX(-5%) }
+  80% { transform: translateX(5%) }
+}
+
+@keyframes shake-y {
+  0%, 100% { transform: translateY(0%) }
+  20% { transform: translateY(-5%) }
+  40% { transform: translateY(5%) }
+  60% { transform: translateY(-5%) }
+  80% { transform: translateY(5%) }
+}
+
+@keyframes spin {
+  to { transform: rotate(1turn) }
+}
+
+@keyframes ping {
+  90%, 100% {
+    transform: scale(2);
+    opacity: 0;
+  }
+}
+
+@keyframes blink {
+  0%, 100% {
+    opacity: 1
+  }
+  50% {
+    opacity: .5
+  }
+}
+
+@keyframes float {
+  50% { transform: translateY(-25%) }
+}
+
+@keyframes bounce {
+  25% { transform: translateY(-20%) }
+  40% { transform: translateY(-3%) }
+  0%, 60%, 100% { transform: translateY(0) }
+}
+
+@keyframes pulse {
+  50% { transform: scale(.9,.9) }
+}
diff --git a/src/patterns/01-core/props/_aspects.scss b/src/patterns/01-core/props/_aspects.scss
new file mode 100644
index 00000000..a7422c90
--- /dev/null
+++ b/src/patterns/01-core/props/_aspects.scss
@@ -0,0 +1,8 @@
+:where(html) {
+  --ratio-square: 1;
+  --ratio-landscape: 4/3;
+  --ratio-portrait: 3/4;
+  --ratio-widescreen: 16/9;
+  --ratio-ultrawide: 18/5;
+  --ratio-golden: 1.6180/1;
+}
diff --git a/src/patterns/01-core/props/_borders.scss b/src/patterns/01-core/props/_borders.scss
new file mode 100644
index 00000000..3b04e35d
--- /dev/null
+++ b/src/patterns/01-core/props/_borders.scss
@@ -0,0 +1,20 @@
+:where(html) {
+  --border-size-1: 1px;
+  --border-size-2: 2px;
+  --border-size-3: 5px;
+  --border-size-4: 10px;
+  --border-size-5: 25px;
+  --radius-1: 2px;
+  --radius-2: 5px;
+  --radius-3: 1rem;
+  --radius-4: 2rem;
+  --radius-5: 4rem;
+  --radius-6: 8rem;
+  --radius-round: 1e5px;
+  --radius-conditional-1: clamp(0px, calc(100vw - 100%) * 1e5, var(--radius-1));
+  --radius-conditional-2: clamp(0px, calc(100vw - 100%) * 1e5, var(--radius-2));
+  --radius-conditional-3: clamp(0px, calc(100vw - 100%) * 1e5, var(--radius-3));
+  --radius-conditional-4: clamp(0px, calc(100vw - 100%) * 1e5, var(--radius-4));
+  --radius-conditional-5: clamp(0px, calc(100vw - 100%) * 1e5, var(--radius-5));
+  --radius-conditional-6: clamp(0px, calc(100vw - 100%) * 1e5, var(--radius-6));
+}
diff --git a/src/patterns/01-core/props/_colors.scss b/src/patterns/01-core/props/_colors.scss
new file mode 100644
index 00000000..5b6f5c12
--- /dev/null
+++ b/src/patterns/01-core/props/_colors.scss
@@ -0,0 +1,132 @@
+:where(html) {
+  --gray-0: #f8f9fa;
+  --gray-1: #f1f3f5;
+  --gray-2: #e9ecef;
+  --gray-3: #dee2e6;
+  --gray-4: #ced4da;
+  --gray-5: #adb5bd;
+  --gray-6: #868e96;
+  --gray-7: #495057;
+  --gray-8: #343a40;
+  --gray-9: #212529;
+  --red-0: #fff5f5;
+  --red-1: #ffe3e3;
+  --red-2: #ffc9c9;
+  --red-3: #ffa8a8;
+  --red-4: #ff8787;
+  --red-5: #ff6b6b;
+  --red-6: #fa5252;
+  --red-7: #f03e3e;
+  --red-8: #e03131;
+  --red-9: #c92a2a;
+  --pink-0: #fff0f6;
+  --pink-1: #ffdeeb;
+  --pink-2: #fcc2d7;
+  --pink-3: #faa2c1;
+  --pink-4: #f783ac;
+  --pink-5: #f06595;
+  --pink-6: #e64980;
+  --pink-7: #d6336c;
+  --pink-8: #c2255c;
+  --pink-9: #a61e4d;
+  --grape-0: #f8f0fc;
+  --grape-1: #f3d9fa;
+  --grape-2: #eebefa;
+  --grape-3: #e599f7;
+  --grape-4: #da77f2;
+  --grape-5: #cc5de8;
+  --grape-6: #be4bdb;
+  --grape-7: #ae3ec9;
+  --grape-8: #9c36b5;
+  --grape-9: #862e9c;
+  --violet-0: #f3f0ff;
+  --violet-1: #e5dbff;
+  --violet-2: #d0bfff;
+  --violet-3: #b197fc;
+  --violet-4: #9775fa;
+  --violet-5: #845ef7;
+  --violet-6: #7950f2;
+  --violet-7: #7048e8;
+  --violet-8: #6741d9;
+  --violet-9: #5f3dc4;
+  --indigo-0: #edf2ff;
+  --indigo-1: #dbe4ff;
+  --indigo-2: #bac8ff;
+  --indigo-3: #91a7ff;
+  --indigo-4: #748ffc;
+  --indigo-5: #5c7cfa;
+  --indigo-6: #4c6ef5;
+  --indigo-7: #4263eb;
+  --indigo-8: #3b5bdb;
+  --indigo-9: #364fc7;
+  --blue-0: #e7f5ff;
+  --blue-1: #d0ebff;
+  --blue-2: #a5d8ff;
+  --blue-3: #74c0fc;
+  --blue-4: #4dabf7;
+  --blue-5: #339af0;
+  --blue-6: #228be6;
+  --blue-7: #1c7ed6;
+  --blue-8: #1971c2;
+  --blue-9: #1864ab;
+  --cyan-0: #e3fafc;
+  --cyan-1: #c5f6fa;
+  --cyan-2: #99e9f2;
+  --cyan-3: #66d9e8;
+  --cyan-4: #3bc9db;
+  --cyan-5: #22b8cf;
+  --cyan-6: #15aabf;
+  --cyan-7: #1098ad;
+  --cyan-8: #0c8599;
+  --cyan-9: #0b7285;
+  --teal-0: #e6fcf5;
+  --teal-1: #c3fae8;
+  --teal-2: #96f2d7;
+  --teal-3: #63e6be;
+  --teal-4: #38d9a9;
+  --teal-5: #20c997;
+  --teal-6: #12b886;
+  --teal-7: #0ca678;
+  --teal-8: #099268;
+  --teal-9: #087f5b;
+  --green-0: #ebfbee;
+  --green-1: #d3f9d8;
+  --green-2: #b2f2bb;
+  --green-3: #8ce99a;
+  --green-4: #69db7c;
+  --green-5: #51cf66;
+  --green-6: #40c057;
+  --green-7: #37b24d;
+  --green-8: #2f9e44;
+  --green-9: #2b8a3e;
+  --lime-0: #f4fce3;
+  --lime-1: #e9fac8;
+  --lime-2: #d8f5a2;
+  --lime-3: #c0eb75;
+  --lime-4: #a9e34b;
+  --lime-5: #94d82d;
+  --lime-6: #82c91e;
+  --lime-7: #74b816;
+  --lime-8: #66a80f;
+  --lime-9: #5c940d;
+  --yellow-0: #fff9db;
+  --yellow-1: #fff3bf;
+  --yellow-2: #ffec99;
+  --yellow-3: #ffe066;
+  --yellow-4: #ffd43b;
+  --yellow-5: #fcc419;
+  --yellow-6: #fab005;
+  --yellow-7: #f59f00;
+  --yellow-8: #f08c00;
+  --yellow-9: #e67700;
+  --orange-0: #fff4e6;
+  --orange-1: #ffe8cc;
+  --orange-2: #ffd8a8;
+  --orange-3: #ffc078;
+  --orange-4: #ffa94d;
+  --orange-5: #ff922b;
+  --orange-6: #fd7e14;
+  --orange-7: #f76707;
+  --orange-8: #e8590c;
+  --orange-9: #d9480f;
+}
diff --git a/src/patterns/01-core/props/_easing.scss b/src/patterns/01-core/props/_easing.scss
new file mode 100644
index 00000000..b855d8e8
--- /dev/null
+++ b/src/patterns/01-core/props/_easing.scss
@@ -0,0 +1,37 @@
+:where(html) {
+  --ease-1: cubic-bezier(.25, 0, .5, 1);
+  --ease-2: cubic-bezier(.25, 0, .4, 1);
+  --ease-3: cubic-bezier(.25, 0, .3, 1);
+  --ease-4: cubic-bezier(.25, 0, .2, 1);
+  --ease-5: cubic-bezier(.25, 0, .1, 1);
+  --ease-in-1: cubic-bezier(.25, 0, 1, 1);
+  --ease-in-2: cubic-bezier(.50, 0, 1, 1);
+  --ease-in-3: cubic-bezier(.70, 0, 1, 1);
+  --ease-in-4: cubic-bezier(.90, 0, 1, 1);
+  --ease-in-5: cubic-bezier(1, 0, 1, 1);
+  --ease-out-1: cubic-bezier(0, 0, .75, 1);
+  --ease-out-2: cubic-bezier(0, 0, .50, 1);
+  --ease-out-3: cubic-bezier(0, 0, .3, 1);
+  --ease-out-4: cubic-bezier(0, 0, .1, 1);
+  --ease-out-5: cubic-bezier(0, 0, 0, 1);
+  --ease-in-out-1: cubic-bezier(.1, 0, .9, 1);
+  --ease-in-out-2: cubic-bezier(.3, 0, .7, 1);
+  --ease-in-out-3: cubic-bezier(.5, 0, .5, 1);
+  --ease-in-out-4: cubic-bezier(.7, 0, .3, 1);
+  --ease-in-out-5: cubic-bezier(.9, 0, .1, 1);
+  --ease-elastic-1: cubic-bezier(.5, .75, .75, 1.25);
+  --ease-elastic-2: cubic-bezier(.5, 1, .75, 1.25);
+  --ease-elastic-3: cubic-bezier(.5, 1.25, .75, 1.25);
+  --ease-elastic-4: cubic-bezier(.5, 1.5, .75, 1.25);
+  --ease-elastic-5: cubic-bezier(.5, 1.75, .75, 1.25);
+  --ease-squish-1: cubic-bezier(.5, -.1, .1, 1.5);
+  --ease-squish-2: cubic-bezier(.5, -.3, .1, 1.5);
+  --ease-squish-3: cubic-bezier(.5, -.5, .1, 1.5);
+  --ease-squish-4: cubic-bezier(.5, -.7, .1, 1.5);
+  --ease-squish-5: cubic-bezier(.5, -.9, .1, 1.5);
+  --ease-step-1: steps(2);
+  --ease-step-2: steps(3);
+  --ease-step-3: steps(4);
+  --ease-step-4: steps(7);
+  --ease-step-5: steps(10);
+}
diff --git a/src/patterns/01-core/props/_fonts.scss b/src/patterns/01-core/props/_fonts.scss
new file mode 100644
index 00000000..62f8cec7
--- /dev/null
+++ b/src/patterns/01-core/props/_fonts.scss
@@ -0,0 +1,47 @@
+:where(html) {
+  --font-sans: Helvetica, sans-serif;
+  --font-serif: Georgia, 'Times New Roman', Times, serif;
+  --font-system: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Oxygen-Sans', Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', sans-serif;
+  --font-mono: Menlo, Consolas, 'Lucida Console', 'Liberation Mono', 'Courier New', monospace, sans-serif;
+  --font-weight-100: 100;
+  --font-weight-200: 200;
+  --font-weight-300: 300;
+  --font-weight-400: 400;
+  --font-weight-500: 500;
+  --font-weight-600: 600;
+  --font-weight-700: 700;
+  --font-weight-800: 800;
+  --font-weight-900: 900;
+  --font-size-000: 0.625rem; // 10px
+  --font-size-00: 0.75rem;   // 12px
+  --font-size-0: 0.875rem;   // 14px
+  --font-size-1: 1rem;       // 16px
+  --font-size-2: 1.125rem;   // 18px
+  --font-size-3: 1.25rem;    // 20px
+  --font-size-4: 1.375rem;   // 22px
+  --font-size-5: 1.5rem;     // 24px
+  --font-size-6: 1.75rem;    // 28px
+  --font-size-7: 2rem;       // 32px
+  --font-size-8: 2.25rem;    // 36px
+  --font-size-9: 2.5rem;     // 40px
+  --font-size-10: 3rem;      // 48px
+  --font-size-11: 3.5rem;    // 56px
+  --font-size-12: 4rem;      // 64px
+  --font-size-13: 5rem;      // 80px
+  --font-size-14: 7.5rem;    // 120px
+  --font-lineheight-00: .95;
+  --font-lineheight-1: 1.1;
+  --font-lineheight-2: 1.25;
+  --font-lineheight-3: 1.375;
+  --font-lineheight-4: 1.5;
+  --font-lineheight-5: 1.75;
+  --font-lineheight-6: 2;
+  --font-letterspacing-0: -0.05em;
+  --font-letterspacing-1: 0.025em;
+  --font-letterspacing-2: 0.050em;
+  --font-letterspacing-3: 0.75em;
+  --font-letterspacing-4: 0.150em;
+  --font-letterspacing-5: 0.500em;
+  --font-letterspacing-6: 0.750em;
+  --font-letterspacing-7: 1em;
+}
diff --git a/src/patterns/01-core/props/_index.scss b/src/patterns/01-core/props/_index.scss
new file mode 100644
index 00000000..2bcda520
--- /dev/null
+++ b/src/patterns/01-core/props/_index.scss
@@ -0,0 +1,11 @@
+@forward 'animations';
+@forward 'aspects';
+@forward 'borders';
+@forward 'colors';
+@forward 'easing';
+@forward 'fonts';
+@forward 'layout';
+@forward 'shadows';
+@forward 'sizes';
+@forward 'zindex';
+@forward 'theme';
diff --git a/src/patterns/01-core/props/_layout.scss b/src/patterns/01-core/props/_layout.scss
new file mode 100644
index 00000000..a11e1ebd
--- /dev/null
+++ b/src/patterns/01-core/props/_layout.scss
@@ -0,0 +1,6 @@
+:where(html) {
+  --layout-gutter: var(--size-6);
+  --layout-max-width: 90rem; // 1440px
+  --grid-gutter: var(--size-10);
+  --grid-gap: var(--size-2);
+}
diff --git a/src/patterns/01-core/props/_media.scss b/src/patterns/01-core/props/_media.scss
new file mode 100644
index 00000000..e7767ee0
--- /dev/null
+++ b/src/patterns/01-core/props/_media.scss
@@ -0,0 +1,8 @@
+// Media Query Ranges
+$screen-xxs: 240px;
+$screen-xs: 360px;
+$screen-sm: 480px;
+$screen-md: 768px;
+$screen-lg: 1024px;
+$screen-xl: 1440px;
+$screen-xxl: 1920px;
diff --git a/src/patterns/01-core/props/_shadows.scss b/src/patterns/01-core/props/_shadows.scss
new file mode 100644
index 00000000..b2734f54
--- /dev/null
+++ b/src/patterns/01-core/props/_shadows.scss
@@ -0,0 +1,41 @@
+:where(html) {
+  --shadow-color: 220 3% 15%;
+  --shadow-strength: 1%;
+  --shadow-1: 0 1px 2px -1px hsl(var(--shadow-color) / calc(var(--shadow-strength) + 9%));
+  --shadow-2:
+    0 3px 5px -2px hsl(var(--shadow-color) / calc(var(--shadow-strength) + 3%)),
+    0 7px 14px -5px hsl(var(--shadow-color) / calc(var(--shadow-strength) + 5%));
+  --shadow-3:
+    0 -1px 3px 0 hsl(var(--shadow-color) / calc(var(--shadow-strength) + 2%)),
+    0 1px 2px -5px hsl(var(--shadow-color) / calc(var(--shadow-strength) + 2%)),
+    0 2px 5px -5px hsl(var(--shadow-color) / calc(var(--shadow-strength) + 4%)),
+    0 4px 12px -5px hsl(var(--shadow-color) / calc(var(--shadow-strength) + 5%)),
+    0 12px 15px -5px hsl(var(--shadow-color) / calc(var(--shadow-strength) + 7%));
+  --shadow-4:
+    0 -2px 5px 0 hsl(var(--shadow-color) / calc(var(--shadow-strength) + 2%)),
+    0 1px 1px -2px hsl(var(--shadow-color) / calc(var(--shadow-strength) + 3%)),
+    0 2px 2px -2px hsl(var(--shadow-color) / calc(var(--shadow-strength) + 3%)),
+    0 5px 5px -2px hsl(var(--shadow-color) / calc(var(--shadow-strength) + 4%)),
+    0 9px 9px -2px hsl(var(--shadow-color) / calc(var(--shadow-strength) + 5%)),
+    0 16px 16px -2px hsl(var(--shadow-color) / calc(var(--shadow-strength) + 6%));
+  --shadow-5:
+    0 -1px 2px 0 hsl(var(--shadow-color) / calc(var(--shadow-strength) + 2%)),
+    0 2px 1px -2px hsl(var(--shadow-color) / calc(var(--shadow-strength) + 3%)),
+    0 5px 5px -2px hsl(var(--shadow-color) / calc(var(--shadow-strength) + 3%)),
+    0 10px 10px -2px hsl(var(--shadow-color) / calc(var(--shadow-strength) + 4%)),
+    0 20px 20px -2px hsl(var(--shadow-color) / calc(var(--shadow-strength) + 5%)),
+    0 40px 40px -2px hsl(var(--shadow-color) / calc(var(--shadow-strength) + 7%));
+  --shadow-6:
+    0 -1px 2px 0 hsl(var(--shadow-color) / calc(var(--shadow-strength) + 2%)),
+    0 3px 2px -2px hsl(var(--shadow-color) / calc(var(--shadow-strength) + 3%)),
+    0 7px 5px -2px hsl(var(--shadow-color) / calc(var(--shadow-strength) + 3%)),
+    0 12px 10px -2px hsl(var(--shadow-color) / calc(var(--shadow-strength) + 4%)),
+    0 22px 18px -2px hsl(var(--shadow-color) / calc(var(--shadow-strength) + 5%)),
+    0 41px 33px -2px hsl(var(--shadow-color) / calc(var(--shadow-strength) + 6%)),
+    0 100px 80px -2px hsl(var(--shadow-color) / calc(var(--shadow-strength) + 7%));
+  --inner-shadow-0: inset 0 0 0 1px hsl(var(--shadow-color) / calc(var(--shadow-strength) + 9%));
+  --inner-shadow-1: inset 0 1px 2px 0 hsl(var(--shadow-color) / calc(var(--shadow-strength) + 9%));
+  --inner-shadow-2: inset 0 1px 4px 0 hsl(var(--shadow-color) / calc(var(--shadow-strength) + 9%));
+  --inner-shadow-3: inset 0 2px 8px 0 hsl(var(--shadow-color) / calc(var(--shadow-strength) + 9%));
+  --inner-shadow-4: inset 0 2px 14px 0 hsl(var(--shadow-color) / calc(var(--shadow-strength) + 9%));
+}
diff --git a/src/patterns/01-core/props/_sizes.scss b/src/patterns/01-core/props/_sizes.scss
new file mode 100644
index 00000000..83b5a3af
--- /dev/null
+++ b/src/patterns/01-core/props/_sizes.scss
@@ -0,0 +1,39 @@
+:where(html) {
+  --size-xs: 0.063rem; // 1px
+  --size-sm: 0.125rem; // 2px
+  --size-05: 0.25rem;  // 4px
+  --size-1: 0.5rem;    // 8px
+  --size-105: 0.75rem; // 12px
+  --size-2: 1rem;      // 16px
+  --size-205: 1.25rem; // 20px
+  --size-3: 1.5rem;    // 24px
+  --size-4: 2rem;      // 32px
+  --size-5: 2.5rem;    // 40px
+  --size-6: 3rem;      // 48px
+  --size-7: 3.5rem;    // 56px
+  --size-8: 4rem;      // 64px
+  --size-9: 4.5rem;    // 72px
+  --size-10: 5rem;     // 80px
+  --size-11: 5.5rem;   // 88px
+  --size-12: 6rem;     // 96px
+  --size-13: 6.5rem;   // 104px
+  --size-14: 7rem;     // 112px
+  --size-15: 7.5rem;   // 120px
+  --size-20: 10rem;    // 160px
+  --size-fluid-1: clamp(.5rem, 1vw, 1rem);
+  --size-fluid-2: clamp(1rem, 2vw, 1.5rem);
+  --size-fluid-3: clamp(1.5rem, 3vw, 2rem);
+  --size-fluid-4: clamp(2rem, 4vw, 3rem);
+  --size-fluid-5: clamp(4rem, 5vw, 5rem);
+  --size-fluid-6: clamp(5rem, 7vw, 7.5rem);
+  --size-fluid-7: clamp(7.5rem, 10vw, 10rem);
+  --size-fluid-8: clamp(10rem, 20vw, 15rem);
+  --size-fluid-9: clamp(15rem, 30vw, 20rem);
+  --size-fluid-10: clamp(20rem, 40vw, 30rem);
+  --size-content-1: 20ch;
+  --size-content-2: 45ch;
+  --size-content-3: 60ch;
+  --size-header-1: 20ch;
+  --size-header-2: 25ch;
+  --size-header-3: 35ch;
+}
diff --git a/src/patterns/01-core/props/_theme.scss b/src/patterns/01-core/props/_theme.scss
new file mode 100644
index 00000000..e645dc85
--- /dev/null
+++ b/src/patterns/01-core/props/_theme.scss
@@ -0,0 +1,4 @@
+:where(html) {
+  // theme css variables
+  // --link: var(--indigo-7);
+}
diff --git a/src/patterns/01-core/props/_zindex.scss b/src/patterns/01-core/props/_zindex.scss
new file mode 100644
index 00000000..d6b869c9
--- /dev/null
+++ b/src/patterns/01-core/props/_zindex.scss
@@ -0,0 +1,8 @@
+:where(html) {
+  --layer-1: 1;
+  --layer-2: 2;
+  --layer-3: 3;
+  --layer-4: 4;
+  --layer-5: 5;
+  --layer-important: 2147483647;
+}
diff --git a/src/patterns/01-core/utilities/_accessibility.scss b/src/patterns/01-core/utilities/_accessibility.scss
new file mode 100644
index 00000000..d5bdd829
--- /dev/null
+++ b/src/patterns/01-core/utilities/_accessibility.scss
@@ -0,0 +1,24 @@
+// @file
+// Utility classes for Accessibility
+
+@use '../mixins/accessiblity' as *;
+
+// Accessibility utility classes
+.visually-hidden {
+  @include visually-hidden;
+
+  &.focusable {
+    &:focus,
+    &:active {
+      @include visually-hidden-off;
+    }
+  }
+}
+
+.hidden {
+  @include hidden;
+}
+
+.invisible {
+  @include invisible;
+}
diff --git a/src/patterns/01-core/utilities/_clearfix.scss b/src/patterns/01-core/utilities/_clearfix.scss
new file mode 100644
index 00000000..1cd576f4
--- /dev/null
+++ b/src/patterns/01-core/utilities/_clearfix.scss
@@ -0,0 +1,9 @@
+// @file
+// Utility classes for Clearfix
+
+@use '../mixins/clearfix' as *;
+
+// Clearfix
+.clearfix {
+  @include clearfix;
+}
diff --git a/src/patterns/01-core/utilities/_constrain.scss b/src/patterns/01-core/utilities/_constrain.scss
new file mode 100644
index 00000000..4a79e38c
--- /dev/null
+++ b/src/patterns/01-core/utilities/_constrain.scss
@@ -0,0 +1,13 @@
+// @file
+// Utility classes for constraining the page width.
+
+@use '../mixins/layout' as *;
+
+.l-constrain {
+  @include layout-constrain;
+}
+
+.l-constrain--no-padding {
+  padding-left: 0;
+  padding-right: 0;
+}
diff --git a/src/patterns/01-core/utilities/_index.scss b/src/patterns/01-core/utilities/_index.scss
new file mode 100644
index 00000000..26d28f7c
--- /dev/null
+++ b/src/patterns/01-core/utilities/_index.scss
@@ -0,0 +1,3 @@
+@forward 'accessibility';
+@forward 'constrain';
+@forward 'clearfix';
diff --git a/src/patterns/02-base/colors/colors.js b/src/patterns/02-base/colors/colors.js
new file mode 100644
index 00000000..0b2431b2
--- /dev/null
+++ b/src/patterns/02-base/colors/colors.js
@@ -0,0 +1,14 @@
+// var p = $("body");
+//
+// p.blinker();
+//
+// p.bind({
+//   // pause blinking on mouseenter
+//   mouseenter: function(){
+//     $(this).data("blinker").pause();
+//   },
+//   // resume blinking on mouseleave
+//   mouseleave: function(){
+//     $(this).data("blinker").blinkagain();
+//   }
+// });
diff --git a/src/patterns/02-base/colors/colors.twig b/src/patterns/02-base/colors/colors.twig
new file mode 100644
index 00000000..4a359483
--- /dev/null
+++ b/src/patterns/02-base/colors/colors.twig
@@ -0,0 +1,34 @@
+{#
+ * @file
+ * Display for theme color swatches.
+ *
+ * Each color swatch is populated from the yml file within
+ * this same directory (colors.yml). Add or remove any colors there.
+ *
+#}
+
+<section class="pl-colors">
+  {% for title, list in colors %}
+    <div class="just-for-gap">
+      <h3>{{ title|capitalize }}</h3>
+      <article class="color-demo">
+        {% for color, hex in list %}
+          <div style="background-color: {{ hex }}">
+            <div>{{ color }}<br>{{ hex }}</div>
+          </div>
+        {% endfor %}
+      </article>
+    </div>
+  {% endfor %}
+</section>
+
+{#{% for title, list in colors %}#}
+{#  <h3>{{ title|capitalize }}</h3>#}
+{#  <div class="pl-swatch__group">#}
+{#    {% for color, hex in list %}#}
+{#      <div class="pl-swatch" style="background-color: {{ hex }}">#}
+{#        <div class="pl-swatch__meta">{{ color }}<br>{{ hex }}</div>#}
+{#      </div>#}
+{#    {% endfor %}#}
+{#  </div>#}
+{#{% endfor %}#}
diff --git a/src/patterns/02-base/colors/colors.yml b/src/patterns/02-base/colors/colors.yml
new file mode 100644
index 00000000..00e14ed9
--- /dev/null
+++ b/src/patterns/02-base/colors/colors.yml
@@ -0,0 +1,131 @@
+---
+colors:
+#  brand:
+#    blue-cool-30v: '#59b9de'
+#    blue-cool-50v: '#0d7ea2'
+#    green-warm-20: '#cbd17a'
+#    green-warm-50: '#6f7a41'
+#    red-warm-20v: '#f6bd9c'
+#    red-warm-40v: '#ef5e25'
+#  shades:
+#    light: '#fff'
+#    dark: '#000'
+  grayscale:
+#    gray-5: '#f0f0f0'
+#    gray-10: '#e6e6e6'
+#    gray-20: '#c9c9c9'
+#    gray-30: '#adadad'
+#    gray-40: '#919191'
+#    gray-50: '#757575'
+#    gray-60: '#5c5c5c'
+#    gray-70: '#454545'
+#    gray-80: '#2e2e2e'
+#    gray-90: '#1b1b1b'
+    white: '#fff'
+    gray-1: '#fafafa'
+    gray-2: '#eee'
+    gray-3: '#ccc'
+    gray-4: '#A2A2A2'
+    gray-5: '#757575'
+    gray-6: '#4e4e4e'
+    gray-7: '#333'
+    black: '#000'
+  uw-black:
+    lvl1: '#dfdfdf'
+    lvl2: '#a2a2a2'
+    lvl3: '#787878'
+    lvl4: '#000'
+    primary: '#000'
+  uw-gold:
+    lvl1: '#fffaaa'
+    lvl2: '#ffea30'
+    lvl3: '#fdd54f'
+    lvl4: '#e4b429'
+    primary: '#fffaaa'
+  uw-white:
+    lvl1: '#fff'
+    primary: '#fff'
+  neutral:
+    lvl1: '#dfdfdf'
+    lvl2: '#a2a2a2'
+    lvl3: '#787878'
+    lvl4: '#000'
+    primary: '#000'
+  org-ahs:
+    lvl1: '#97dfef'
+    lvl2: '#00bed0'
+    lvl3: '#0098a5'
+    lvl4: '#005963'
+    primary: '#005963'
+  org-art:
+    lvl1: '#ffd5a5'
+    lvl2: '#fbaf00'
+    lvl3: '#e78100'
+    lvl4: '#d93f00'
+    primary: '#d93f00'
+  org-eng:
+    lvl1: '#d0b4ef'
+    lvl2: '#be33da'
+    lvl3: '#8100b4'
+    lvl4: '#57058b'
+    primary: '#57058b'
+  org-env:
+    lvl1: '#daf582'
+    lvl2: '#bed500'
+    lvl3: '#b4be00'
+    lvl4: '#607000'
+    primary: '#607000'
+  org-mat:
+    lvl1: '#ffbeef'
+    lvl2: '#ff63aa'
+    lvl3: '#df2498'
+    lvl4: '#c60078'
+    primary: '#df2498'
+  org-sci:
+    lvl1: '#b4d5ff'
+    lvl2: '#63a0ff'
+    lvl3: '#0073ce'
+    lvl4: '#0033be'
+    primary: '#0073ce'
+  org-school:
+    lvl1: '#ffa5aa'
+    lvl2: '#e41740'
+    lvl3: '#b71233'
+    lvl4: '#80001f'
+    primary: '#b71233'
+  org-ren:
+    green: '#00693c'
+    red: '#de3831'
+    gold: '#d2c295'
+    lvl1: '#ffa5aa'
+    lvl2: '#e41740'
+    lvl3: '#b71233'
+    lvl4: '#80001f'
+    primary: '#00693c'
+    light: '#7FB49D'
+  org-stj:
+    green: '#01573e'
+    gold: '#c88a11'
+    lvl1: '#ffa5aa'
+    lvl2: '#e41740'
+    lvl3: '#b71233'
+    lvl4: '#80001f'
+    primary: '#01573e'
+    light: '#92B7AC'
+  org-stp:
+    green: '#879637'
+    brown: '#584528'
+    lvl1: '#ffa5aa'
+    lvl2: '#e41740'
+    lvl3: '#b71233'
+    lvl4: '#80001f'
+    primary: '#879637'
+    light: '#C2CD79'
+  org-cgc:
+    red: '#c4262e'
+    lvl1: '#ffa5aa'
+    lvl2: '#e41740'
+    lvl3: '#b71233'
+    lvl4: '#80001f'
+    primary: '#c4262e'
+    light: '#E8878C'
diff --git a/src/patterns/global.scss b/src/patterns/global.scss
index 3f82a3ce..67d81481 100644
--- a/src/patterns/global.scss
+++ b/src/patterns/global.scss
@@ -5,4 +5,4 @@
 @use '01-core/props' as *;
 @use '01-core/utilities' as *;
 @use '01-core/elements' as *;
-@use '03-layouts/grid/grid' as *;
+//@use '03-layouts/grid/grid' as *;
-- 
GitLab