Example post 1
+ +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+From 9a4f7659a30af6b96b7c0440e19e03798cd069ad Mon Sep 17 00:00:00 2001
From: dsvt Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Try searching the whole site for the content you want: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
+incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
+nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit ametExample post 1
+
+Example post 2
+
+Example post 3
+
+
+ Page Not Found
+
+
`;
+ info += "Clear search";
+
+ // set info HTML string
+ boxes.forEach((el) => (el.innerHTML = info));
+ }
+ // if nothing searched
+ else {
+ // hide all info boxes
+ boxes.forEach((info) => (info.style.display = "none"));
+ }
+ };
+
+ // update tags based on query
+ const updateTags = (query) => {
+ const { tags } = splitQuery(query);
+ document.querySelectorAll(tagSelector).forEach((tag) => {
+ // set active if tag is in query
+ if (tags.includes(normalizeTag(tag.innerText)))
+ tag.setAttribute("data-active", "");
+ else tag.removeAttribute("data-active");
+ });
+ };
+
+ // run search with query
+ const runSearch = (query = "") => {
+ const parts = splitQuery(query);
+ const [x, n] = filterElements(parts);
+ updateSearchBox(query);
+ updateInfoBox(query, x, n);
+ updateTags(query);
+ highlightMatches(parts);
+ };
+
+ // update url based on query
+ const updateUrl = (query = "") => {
+ const url = new URL(window.location);
+ let params = new URLSearchParams(url.search);
+ params.set("search", query);
+ url.search = params.toString();
+ window.history.replaceState(null, null, url);
+ };
+
+ // search based on url param
+ const searchFromUrl = () => {
+ const query =
+ new URLSearchParams(window.location.search).get("search") || "";
+ runSearch(query);
+ };
+
+ // return func that runs after delay
+ const debounce = (callback, delay = 250) => {
+ let timeout;
+ return (...args) => {
+ window.clearTimeout(timeout);
+ timeout = window.setTimeout(() => callback(...args), delay);
+ };
+ };
+
+ // when user types into search box
+ const debouncedRunSearch = debounce(runSearch, 1000);
+ window.onSearchInput = (target) => {
+ debouncedRunSearch(target.value);
+ updateUrl(target.value);
+ };
+
+ // when user clears search box with button
+ window.onSearchClear = () => {
+ runSearch();
+ updateUrl();
+ };
+
+ // after page loads
+ window.addEventListener("load", searchFromUrl);
+ // after tags load
+ window.addEventListener("tagsfetched", searchFromUrl);
+}
diff --git a/_scripts/site-search.js b/_scripts/site-search.js
new file mode 100644
index 0000000..caff0a6
--- /dev/null
+++ b/_scripts/site-search.js
@@ -0,0 +1,14 @@
+/*
+ for site search component. searches site/domain via google.
+*/
+
+{
+ // when user submits site search form/box
+ window.onSiteSearchSubmit = (event) => {
+ event.preventDefault();
+ const google = "https://www.google.com/search?q=site:";
+ const site = window.location.origin;
+ const query = event.target.elements.query.value;
+ window.location = google + site + " " + query;
+ };
+}
diff --git a/_scripts/table-wrap.js b/_scripts/table-wrap.js
new file mode 100644
index 0000000..4c5bddd
--- /dev/null
+++ b/_scripts/table-wrap.js
@@ -0,0 +1,25 @@
+/*
+ put a wrapper around each table to allow scrolling.
+*/
+
+{
+ const onLoad = () => {
+ // for each top-level table
+ const tables = document.querySelectorAll("table:not(table table)");
+ for (const table of tables) {
+ // create wrapper with scroll
+ const wrapper = document.createElement("div");
+ wrapper.style.overflowX = "auto";
+
+ // undo css force-text-wrap
+ table.style.overflowWrap = "normal";
+
+ // add wrapper around table
+ table.parentNode.insertBefore(wrapper, table);
+ wrapper.appendChild(table);
+ }
+ };
+
+ // after page loads
+ window.addEventListener("load", onLoad);
+}
diff --git a/_scripts/tooltip.js b/_scripts/tooltip.js
new file mode 100644
index 0000000..49eccfc
--- /dev/null
+++ b/_scripts/tooltip.js
@@ -0,0 +1,41 @@
+/*
+ shows a popup of text on hover/focus of any element with the data-tooltip
+ attribute.
+*/
+
+{
+ const onLoad = () => {
+ // make sure Tippy library available
+ if (typeof tippy === "undefined") return;
+
+ // get elements with non-empty tooltips
+ const elements = [...document.querySelectorAll("[data-tooltip]")].filter(
+ (element) => element.dataset.tooltip.trim() && !element._tippy
+ );
+
+ // add tooltip to elements
+ tippy(elements, {
+ content: (element) => element.dataset.tooltip.trim(),
+ delay: [200, 0],
+ offset: [0, 20],
+ allowHTML: true,
+ interactive: true,
+ appendTo: () => document.body,
+ aria: {
+ content: "describedby",
+ expanded: null,
+ },
+ onShow: ({ reference, popper }) => {
+ const dark = reference.closest("[data-dark]")?.dataset.dark;
+ if (dark === "false") popper.dataset.dark = true;
+ if (dark === "true") popper.dataset.dark = false;
+ },
+ // onHide: () => false, // debug
+ });
+ };
+
+ // after page loads
+ window.addEventListener("load", onLoad);
+ // after tags load
+ window.addEventListener("tagsfetched", onLoad);
+}
diff --git a/_styles/-theme.css b/_styles/-theme.css
new file mode 100644
index 0000000..3a610a3
--- /dev/null
+++ b/_styles/-theme.css
@@ -0,0 +1,44 @@
+[data-dark=false] {
+ --primary: #0795d9;
+ --secondary: #7dd3fc;
+ --text: #000000;
+ --background: #ffffff;
+ --background-alt: #fafafa;
+ --light-gray: #e0e0e0;
+ --gray: #808080;
+ --dark-gray: #404040;
+ --overlay: #00000020;
+}
+
+[data-dark=true] {
+ --primary: #0795d9;
+ --secondary: #075985;
+ --text: #ffffff;
+ --background: #181818;
+ --background-alt: #1c1c1c;
+ --light-gray: #404040;
+ --gray: #808080;
+ --dark-gray: #b0b0b0;
+ --overlay: #ffffff10;
+}
+
+:root {
+ --title: "Barlow", sans-serif;
+ --heading: "Barlow", sans-serif;
+ --body: "Barlow", sans-serif;
+ --code: "Roboto Mono", monospace;
+ --large: 1.2rem;
+ --xl: 1.4rem;
+ --xxl: 1.6rem;
+ --thin: 200;
+ --regular: 400;
+ --semi-bold: 500;
+ --bold: 600;
+ --spacing: 2;
+ --compact: 1.5;
+ --rounded: 3px;
+ --shadow: 0 0 10px 0 var(--overlay);
+ --transition: 0.2s ease;
+}
+
+/*# sourceMappingURL=-theme.css.map */
\ No newline at end of file
diff --git a/_styles/-theme.css.map b/_styles/-theme.css.map
new file mode 100644
index 0000000..16cb893
--- /dev/null
+++ b/_styles/-theme.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["-theme.scss"],"names":[],"mappings":"AACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EAEE;EACA;EACA;EACA;EAGA;EACA;EACA;EAGA;EACA;EACA;EACA;EAGA;EACA;EAGA;EACA;EACA","sourcesContent":["// colors\n[data-dark=\"false\"] {\n --primary: #0795d9;\n --secondary: #7dd3fc;\n --text: #000000;\n --background: #ffffff;\n --background-alt: #fafafa;\n --light-gray: #e0e0e0;\n --gray: #808080;\n --dark-gray: #404040;\n --overlay: #00000020;\n}\n[data-dark=\"true\"] {\n --primary: #0795d9;\n --secondary: #075985;\n --text: #ffffff;\n --background: #181818;\n --background-alt: #1c1c1c;\n --light-gray: #404040;\n --gray: #808080;\n --dark-gray: #b0b0b0;\n --overlay: #ffffff10;\n}\n\n:root {\n // font families\n --title: \"Barlow\", sans-serif;\n --heading: \"Barlow\", sans-serif;\n --body: \"Barlow\", sans-serif;\n --code: \"Roboto Mono\", monospace;\n\n // font sizes\n --large: 1.2rem;\n --xl: 1.4rem;\n --xxl: 1.6rem;\n\n // font weights\n --thin: 200;\n --regular: 400;\n --semi-bold: 500;\n --bold: 600;\n\n // text line spacing\n --spacing: 2;\n --compact: 1.5;\n\n // effects\n --rounded: 3px;\n --shadow: 0 0 10px 0 var(--overlay);\n --transition: 0.2s ease;\n}\n"],"file":"-theme.css"}
\ No newline at end of file
diff --git a/_styles/alert.css b/_styles/alert.css
new file mode 100644
index 0000000..82bf016
--- /dev/null
+++ b/_styles/alert.css
@@ -0,0 +1,36 @@
+.alert {
+ position: relative;
+ display: flex;
+ gap: 20px;
+ align-items: center;
+ margin: 20px 0;
+ padding: 20px;
+ border-radius: var(--rounded);
+ overflow: hidden;
+ text-align: left;
+ line-height: var(--spacing);
+}
+
+.alert:before {
+ content: "";
+ position: absolute;
+ inset: 0;
+ opacity: 0.1;
+ background: var(--color);
+ z-index: -1;
+}
+
+.alert > .icon {
+ color: var(--color);
+ font-size: var(--large);
+}
+
+.alert-content > :first-child {
+ margin-top: 0;
+}
+
+.alert-content > :last-child {
+ margin-bottom: 0;
+}
+
+/*# sourceMappingURL=alert.css.map */
\ No newline at end of file
diff --git a/_styles/alert.css.map b/_styles/alert.css.map
new file mode 100644
index 0000000..4e461a4
--- /dev/null
+++ b/_styles/alert.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["alert.scss"],"names":[],"mappings":"AAAA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE","sourcesContent":[".alert {\n position: relative;\n display: flex;\n gap: 20px;\n align-items: center;\n margin: 20px 0;\n padding: 20px;\n border-radius: var(--rounded);\n overflow: hidden;\n text-align: left;\n line-height: var(--spacing);\n}\n\n.alert:before {\n content: \"\";\n position: absolute;\n inset: 0;\n opacity: 0.1;\n background: var(--color);\n z-index: -1;\n}\n\n.alert > .icon {\n color: var(--color);\n font-size: var(--large);\n}\n\n.alert-content > :first-child {\n margin-top: 0;\n}\n\n.alert-content > :last-child {\n margin-bottom: 0;\n}\n"],"file":"alert.css"}
\ No newline at end of file
diff --git a/_styles/all.css b/_styles/all.css
new file mode 100644
index 0000000..65194ab
--- /dev/null
+++ b/_styles/all.css
@@ -0,0 +1,10 @@
+*,
+::before,
+::after {
+ box-sizing: border-box;
+ -moz-text-size-adjust: none;
+ -webkit-text-size-adjust: none;
+ text-size-adjust: none;
+}
+
+/*# sourceMappingURL=all.css.map */
\ No newline at end of file
diff --git a/_styles/all.css.map b/_styles/all.css.map
new file mode 100644
index 0000000..079eb5f
--- /dev/null
+++ b/_styles/all.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["all.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;EAGE;EACA;EACA;EACA","sourcesContent":["*,\n::before,\n::after {\n box-sizing: border-box;\n -moz-text-size-adjust: none;\n -webkit-text-size-adjust: none;\n text-size-adjust: none;\n}\n"],"file":"all.css"}
\ No newline at end of file
diff --git a/_styles/anchor.css b/_styles/anchor.css
new file mode 100644
index 0000000..3724245
--- /dev/null
+++ b/_styles/anchor.css
@@ -0,0 +1,23 @@
+.anchor {
+ display: inline-block;
+ position: relative;
+ width: 0;
+ margin: 0;
+ left: 0.5em;
+ color: var(--primary) !important;
+ opacity: 0;
+ font-size: 0.75em;
+ text-decoration: none;
+ transition: opacity var(--transition), color var(--transition);
+}
+
+:hover > .anchor,
+.anchor:focus {
+ opacity: 1;
+}
+
+.anchor:hover {
+ color: var(--text) !important;
+}
+
+/*# sourceMappingURL=anchor.css.map */
\ No newline at end of file
diff --git a/_styles/anchor.css.map b/_styles/anchor.css.map
new file mode 100644
index 0000000..2fc8d7b
--- /dev/null
+++ b/_styles/anchor.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["anchor.scss"],"names":[],"mappings":"AAAA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;AAAA;EAEE;;;AAGF;EACE","sourcesContent":[".anchor {\n display: inline-block;\n position: relative;\n width: 0;\n margin: 0;\n left: 0.5em;\n color: var(--primary) !important;\n opacity: 0;\n font-size: 0.75em;\n text-decoration: none;\n transition: opacity var(--transition), color var(--transition);\n}\n\n:hover > .anchor,\n.anchor:focus {\n opacity: 1;\n}\n\n.anchor:hover {\n color: var(--text) !important;\n}\n"],"file":"anchor.css"}
\ No newline at end of file
diff --git a/_styles/background.css b/_styles/background.css
new file mode 100644
index 0000000..025e56a
--- /dev/null
+++ b/_styles/background.css
@@ -0,0 +1,20 @@
+.background {
+ position: relative;
+ background: var(--background);
+ color: var(--text);
+ z-index: 1;
+}
+
+.background:before {
+ content: "";
+ position: absolute;
+ inset: 0;
+ background-image: var(--image);
+ background-size: cover;
+ background-repeat: no-repeat;
+ background-position: 50% 50%;
+ opacity: 0.25;
+ z-index: -1;
+}
+
+/*# sourceMappingURL=background.css.map */
\ No newline at end of file
diff --git a/_styles/background.css.map b/_styles/background.css.map
new file mode 100644
index 0000000..b655d9e
--- /dev/null
+++ b/_styles/background.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["background.scss"],"names":[],"mappings":"AAAA;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA","sourcesContent":[".background {\n position: relative;\n background: var(--background);\n color: var(--text);\n z-index: 1;\n}\n\n.background:before {\n content: \"\";\n position: absolute;\n inset: 0;\n background-image: var(--image);\n background-size: cover;\n background-repeat: no-repeat;\n background-position: 50% 50%;\n opacity: 0.25;\n z-index: -1;\n}\n"],"file":"background.css"}
\ No newline at end of file
diff --git a/_styles/body.css b/_styles/body.css
new file mode 100644
index 0000000..35145d6
--- /dev/null
+++ b/_styles/body.css
@@ -0,0 +1,14 @@
+body {
+ display: flex;
+ flex-direction: column;
+ margin: 0;
+ padding: 0;
+ min-height: 100vh;
+ background: var(--background);
+ color: var(--text);
+ font-family: var(--body);
+ text-align: center;
+ line-height: var(--compact);
+}
+
+/*# sourceMappingURL=body.css.map */
\ No newline at end of file
diff --git a/_styles/body.css.map b/_styles/body.css.map
new file mode 100644
index 0000000..d03b64e
--- /dev/null
+++ b/_styles/body.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["body.scss"],"names":[],"mappings":"AAAA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA","sourcesContent":["body {\n display: flex;\n flex-direction: column;\n margin: 0;\n padding: 0;\n min-height: 100vh;\n background: var(--background);\n color: var(--text);\n font-family: var(--body);\n text-align: center;\n line-height: var(--compact);\n}\n"],"file":"body.css"}
\ No newline at end of file
diff --git a/_styles/bold.css b/_styles/bold.css
new file mode 100644
index 0000000..94a711f
--- /dev/null
+++ b/_styles/bold.css
@@ -0,0 +1,6 @@
+b,
+strong {
+ font-weight: var(--bold);
+}
+
+/*# sourceMappingURL=bold.css.map */
\ No newline at end of file
diff --git a/_styles/bold.css.map b/_styles/bold.css.map
new file mode 100644
index 0000000..57012fd
--- /dev/null
+++ b/_styles/bold.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["bold.scss"],"names":[],"mappings":"AAAA;AAAA;EAEE","sourcesContent":["b,\nstrong {\n font-weight: var(--bold);\n}\n"],"file":"bold.css"}
\ No newline at end of file
diff --git a/_styles/button.css b/_styles/button.css
new file mode 100644
index 0000000..ab3f650
--- /dev/null
+++ b/_styles/button.css
@@ -0,0 +1,49 @@
+button {
+ cursor: pointer;
+}
+
+.button-wrapper {
+ display: contents;
+}
+
+.button {
+ display: inline-flex;
+ justify-content: center;
+ align-items: center;
+ gap: 10px;
+ max-width: calc(100% - 5px - 5px);
+ margin: 5px;
+ padding: 10px 15px;
+ border: none;
+ border-radius: var(--rounded);
+ background: var(--primary);
+ color: var(--background);
+ text-align: center;
+ font: inherit;
+ font-family: var(--heading);
+ font-weight: var(--semi-bold);
+ text-decoration: none;
+ vertical-align: middle;
+ appearance: none;
+ transition: background var(--transition), color var(--transition);
+}
+
+.button:hover {
+ background: var(--text);
+ color: var(--background);
+}
+
+.button[data-style=bare] {
+ padding: 5px;
+ background: none;
+ color: var(--primary);
+}
+.button[data-style=bare]:hover {
+ color: var(--text);
+}
+
+.button[data-flip] {
+ flex-direction: row-reverse;
+}
+
+/*# sourceMappingURL=button.css.map */
\ No newline at end of file
diff --git a/_styles/button.css.map b/_styles/button.css.map
new file mode 100644
index 0000000..5fee0dd
--- /dev/null
+++ b/_styles/button.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["button.scss"],"names":[],"mappings":"AAAA;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;;AAEA;EACE;;;AAIJ;EACE","sourcesContent":["button {\n cursor: pointer;\n}\n\n.button-wrapper {\n display: contents;\n}\n\n.button {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n gap: 10px;\n max-width: calc(100% - 5px - 5px);\n margin: 5px;\n padding: 10px 15px;\n border: none;\n border-radius: var(--rounded);\n background: var(--primary);\n color: var(--background);\n text-align: center;\n font: inherit;\n font-family: var(--heading);\n font-weight: var(--semi-bold);\n text-decoration: none;\n vertical-align: middle;\n appearance: none;\n transition: background var(--transition), color var(--transition);\n}\n\n.button:hover {\n background: var(--text);\n color: var(--background);\n}\n\n.button[data-style=\"bare\"] {\n padding: 5px;\n background: none;\n color: var(--primary);\n\n &:hover {\n color: var(--text);\n }\n}\n\n.button[data-flip] {\n flex-direction: row-reverse;\n}\n"],"file":"button.css"}
\ No newline at end of file
diff --git a/_styles/card.css b/_styles/card.css
new file mode 100644
index 0000000..1b37a12
--- /dev/null
+++ b/_styles/card.css
@@ -0,0 +1,50 @@
+.card {
+ display: inline-flex;
+ justify-content: stretch;
+ align-items: center;
+ flex-direction: column;
+ width: 350px;
+ max-width: calc(100% - 20px - 20px);
+ margin: 20px;
+ background: var(--background);
+ border-radius: var(--rounded);
+ overflow: hidden;
+ box-shadow: var(--shadow);
+ vertical-align: top;
+}
+
+.card[data-style=small] {
+ width: 250px;
+}
+
+.card-image img {
+ aspect-ratio: 3/2;
+ object-fit: cover;
+ width: 100%;
+}
+
+.card-text {
+ display: inline-flex;
+ justify-content: flex-start;
+ align-items: center;
+ flex-direction: column;
+ gap: 20px;
+ max-width: 100%;
+ padding: 20px;
+}
+
+.card-text > * {
+ margin: 0 !important;
+}
+
+.card-title {
+ font-family: var(--heading);
+ font-weight: var(--semi-bold);
+}
+
+.card-subtitle {
+ margin-top: -10px !important;
+ font-style: italic;
+}
+
+/*# sourceMappingURL=card.css.map */
\ No newline at end of file
diff --git a/_styles/card.css.map b/_styles/card.css.map
new file mode 100644
index 0000000..393b7a3
--- /dev/null
+++ b/_styles/card.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["card.scss"],"names":[],"mappings":"AAAA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA","sourcesContent":[".card {\n display: inline-flex;\n justify-content: stretch;\n align-items: center;\n flex-direction: column;\n width: 350px;\n max-width: calc(100% - 20px - 20px);\n margin: 20px;\n background: var(--background);\n border-radius: var(--rounded);\n overflow: hidden;\n box-shadow: var(--shadow);\n vertical-align: top;\n}\n\n.card[data-style=\"small\"] {\n width: 250px;\n}\n\n.card-image img {\n aspect-ratio: 3 / 2;\n object-fit: cover;\n width: 100%;\n // box-shadow: var(--shadow);\n}\n\n.card-text {\n display: inline-flex;\n justify-content: flex-start;\n align-items: center;\n flex-direction: column;\n gap: 20px;\n max-width: 100%;\n padding: 20px;\n}\n\n.card-text > * {\n margin: 0 !important;\n}\n\n.card-title {\n font-family: var(--heading);\n font-weight: var(--semi-bold);\n}\n\n.card-subtitle {\n margin-top: -10px !important;\n font-style: italic;\n}\n"],"file":"card.css"}
\ No newline at end of file
diff --git a/_styles/checkbox.css b/_styles/checkbox.css
new file mode 100644
index 0000000..8c77dc5
--- /dev/null
+++ b/_styles/checkbox.css
@@ -0,0 +1,5 @@
+input[type=checkbox] {
+ cursor: pointer;
+}
+
+/*# sourceMappingURL=checkbox.css.map */
\ No newline at end of file
diff --git a/_styles/checkbox.css.map b/_styles/checkbox.css.map
new file mode 100644
index 0000000..90fb493
--- /dev/null
+++ b/_styles/checkbox.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["checkbox.scss"],"names":[],"mappings":"AAAA;EACE","sourcesContent":["input[type=\"checkbox\"] {\n cursor: pointer;\n}\n"],"file":"checkbox.css"}
\ No newline at end of file
diff --git a/_styles/citation.css b/_styles/citation.css
new file mode 100644
index 0000000..b535c2d
--- /dev/null
+++ b/_styles/citation.css
@@ -0,0 +1,97 @@
+.citation-container {
+ container-type: inline-size;
+}
+
+.citation {
+ display: flex;
+ margin: 20px 0;
+ border-radius: var(--rounded);
+ background: var(--background);
+ overflow: hidden;
+ box-shadow: var(--shadow);
+}
+
+.citation-image {
+ position: relative;
+ width: 180px;
+ flex-shrink: 0;
+}
+
+.citation-image img {
+ position: absolute;
+ inset: 0;
+ width: 100%;
+ height: 100%;
+ object-fit: contain;
+}
+
+.citation-text {
+ position: relative;
+ display: inline-flex;
+ flex-wrap: wrap;
+ gap: 10px;
+ max-width: 100%;
+ height: min-content;
+ padding: 20px;
+ padding-left: 30px;
+ text-align: left;
+ overflow-wrap: break-word;
+ z-index: 0;
+}
+
+.citation-title,
+.citation-authors,
+.citation-details,
+.citation-description {
+ width: 100%;
+}
+
+.citation-title {
+ font-weight: var(--semi-bold);
+}
+
+.citation-text > .icon {
+ position: absolute;
+ top: 20px;
+ right: 20px;
+ color: var(--light-gray);
+ opacity: 0.5;
+ font-size: 30px;
+ z-index: -1;
+}
+
+.citation-publisher {
+ text-transform: capitalize;
+}
+
+.citation-description {
+ color: var(--gray);
+}
+
+.citation-buttons {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 10px;
+}
+
+.citation-buttons .button {
+ margin: 0;
+}
+
+.citation-text > .tags {
+ display: inline-flex;
+ justify-content: flex-start;
+ margin: 0;
+}
+
+@container (max-width: 800px) {
+ .citation {
+ flex-direction: column;
+ }
+ .citation-image {
+ width: unset;
+ height: 180px;
+ }
+}
+
+/*# sourceMappingURL=citation.css.map */
\ No newline at end of file
diff --git a/_styles/citation.css.map b/_styles/citation.css.map
new file mode 100644
index 0000000..8d3446b
--- /dev/null
+++ b/_styles/citation.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["citation.scss"],"names":[],"mappings":"AAGA;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA,OAlBW;EAmBX;;;AAIF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;AAAA;AAAA;AAAA;EAIE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;IACE;;EAGF;IACE;IACA,QAjGS","sourcesContent":["$thumb-size: 180px;\n$wrap: 800px;\n\n.citation-container {\n container-type: inline-size;\n}\n\n.citation {\n display: flex;\n margin: 20px 0;\n border-radius: var(--rounded);\n background: var(--background);\n overflow: hidden;\n box-shadow: var(--shadow);\n}\n\n.citation-image {\n position: relative;\n width: $thumb-size;\n flex-shrink: 0;\n // box-shadow: var(--shadow);\n}\n\n.citation-image img {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n object-fit: contain;\n}\n\n.citation-text {\n position: relative;\n display: inline-flex;\n flex-wrap: wrap;\n gap: 10px;\n max-width: 100%;\n height: min-content;\n padding: 20px;\n padding-left: 30px;\n text-align: left;\n overflow-wrap: break-word;\n z-index: 0;\n}\n\n.citation-title,\n.citation-authors,\n.citation-details,\n.citation-description {\n width: 100%;\n}\n\n.citation-title {\n font-weight: var(--semi-bold);\n}\n\n.citation-text > .icon {\n position: absolute;\n top: 20px;\n right: 20px;\n color: var(--light-gray);\n opacity: 0.5;\n font-size: 30px;\n z-index: -1;\n}\n\n.citation-publisher {\n text-transform: capitalize;\n}\n\n.citation-description {\n color: var(--gray);\n}\n\n.citation-buttons {\n display: flex;\n flex-wrap: wrap;\n gap: 10px;\n}\n\n.citation-buttons .button {\n margin: 0;\n}\n\n.citation-text > .tags {\n display: inline-flex;\n justify-content: flex-start;\n margin: 0;\n}\n\n@container (max-width: #{$wrap}) {\n .citation {\n flex-direction: column;\n }\n\n .citation-image {\n width: unset;\n height: $thumb-size;\n }\n}\n"],"file":"citation.css"}
\ No newline at end of file
diff --git a/_styles/code.css b/_styles/code.css
new file mode 100644
index 0000000..8912ad3
--- /dev/null
+++ b/_styles/code.css
@@ -0,0 +1,33 @@
+pre,
+code,
+pre *,
+code * {
+ font-family: var(--code);
+}
+
+code.highlighter-rouge {
+ padding: 2px 6px;
+ background: var(--light-gray);
+ border-radius: var(--rounded);
+}
+
+div.highlighter-rouge {
+ width: 100%;
+ margin: 40px 0;
+ border-radius: var(--rounded);
+ overflow-x: auto;
+ overflow-y: auto;
+ text-align: left;
+}
+div.highlighter-rouge div.highlight {
+ display: contents;
+}
+div.highlighter-rouge div.highlight pre.highlight {
+ width: fit-content;
+ min-width: 100%;
+ margin: 0;
+ padding: 20px;
+ color: var(--white);
+}
+
+/*# sourceMappingURL=code.css.map */
\ No newline at end of file
diff --git a/_styles/code.css.map b/_styles/code.css.map
new file mode 100644
index 0000000..8f44717
--- /dev/null
+++ b/_styles/code.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["code.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;EAIE;;;AAIF;EACE;EACA;EACA;;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA","sourcesContent":["pre,\ncode,\npre *,\ncode * {\n font-family: var(--code);\n}\n\n// inline code\ncode.highlighter-rouge {\n padding: 2px 6px;\n background: var(--light-gray);\n border-radius: var(--rounded);\n}\n\n// code block\ndiv.highlighter-rouge {\n width: 100%;\n margin: 40px 0;\n border-radius: var(--rounded);\n overflow-x: auto;\n overflow-y: auto;\n text-align: left;\n\n div.highlight {\n display: contents;\n\n pre.highlight {\n width: fit-content;\n min-width: 100%;\n margin: 0;\n padding: 20px;\n color: var(--white);\n }\n }\n}\n"],"file":"code.css"}
\ No newline at end of file
diff --git a/_styles/cols.css b/_styles/cols.css
new file mode 100644
index 0000000..b15b095
--- /dev/null
+++ b/_styles/cols.css
@@ -0,0 +1,34 @@
+.cols {
+ display: grid;
+ --repeat: min(3, var(--cols));
+ grid-template-columns: repeat(var(--repeat), 1fr);
+ align-items: flex-start;
+ gap: 40px;
+ margin: 40px 0;
+}
+
+.cols > * {
+ min-width: 0;
+ min-height: 0;
+}
+
+.cols > div > :first-child {
+ margin-top: 0 !important;
+}
+
+.cols > div > :last-child {
+ margin-bottom: 0 !important;
+}
+
+@media (max-width: 750px) {
+ .cols {
+ --repeat: min(2, var(--cols));
+ }
+}
+@media (max-width: 500px) {
+ .cols {
+ --repeat: min(1, var(--cols));
+ }
+}
+
+/*# sourceMappingURL=cols.css.map */
\ No newline at end of file
diff --git a/_styles/cols.css.map b/_styles/cols.css.map
new file mode 100644
index 0000000..2c44d54
--- /dev/null
+++ b/_styles/cols.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["cols.scss"],"names":[],"mappings":"AAGA;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;IACE;;;AAIJ;EACE;IACE","sourcesContent":["$two: 750px;\n$one: 500px;\n\n.cols {\n display: grid;\n --repeat: min(3, var(--cols));\n grid-template-columns: repeat(var(--repeat), 1fr);\n align-items: flex-start;\n gap: 40px;\n margin: 40px 0;\n}\n\n.cols > * {\n min-width: 0;\n min-height: 0;\n}\n\n.cols > div > :first-child {\n margin-top: 0 !important;\n}\n\n.cols > div > :last-child {\n margin-bottom: 0 !important;\n}\n\n@media (max-width: $two) {\n .cols {\n --repeat: min(2, var(--cols));\n }\n}\n\n@media (max-width: $one) {\n .cols {\n --repeat: min(1, var(--cols));\n }\n}\n"],"file":"cols.css"}
\ No newline at end of file
diff --git a/_styles/dark-toggle.css b/_styles/dark-toggle.css
new file mode 100644
index 0000000..87065b7
--- /dev/null
+++ b/_styles/dark-toggle.css
@@ -0,0 +1,30 @@
+.dark-toggle {
+ position: relative;
+ width: 40px;
+ height: 25px;
+ margin: 0;
+ border-radius: 999px;
+ background: var(--primary);
+ appearance: none;
+ transition: background var(--transition);
+}
+
+.dark-toggle:after {
+ content: "\f185";
+ position: absolute;
+ left: 12px;
+ top: 50%;
+ color: var(--text);
+ font-size: 15px;
+ font-family: "Font Awesome 6 Free";
+ font-weight: 900;
+ transform: translate(-50%, -50%);
+ transition: left var(--transition);
+}
+
+.dark-toggle:checked:after {
+ content: "\f186";
+ left: calc(100% - 12px);
+}
+
+/*# sourceMappingURL=dark-toggle.css.map */
\ No newline at end of file
diff --git a/_styles/dark-toggle.css.map b/_styles/dark-toggle.css.map
new file mode 100644
index 0000000..496aa7b
--- /dev/null
+++ b/_styles/dark-toggle.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["dark-toggle.scss"],"names":[],"mappings":"AAAA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA","sourcesContent":[".dark-toggle {\n position: relative;\n width: 40px;\n height: 25px;\n margin: 0;\n border-radius: 999px;\n background: var(--primary);\n appearance: none;\n transition: background var(--transition);\n}\n\n.dark-toggle:after {\n content: \"\\f185\";\n position: absolute;\n left: 12px;\n top: 50%;\n color: var(--text);\n font-size: 15px;\n font-family: \"Font Awesome 6 Free\";\n font-weight: 900;\n transform: translate(-50%, -50%);\n transition: left var(--transition);\n}\n\n.dark-toggle:checked:after {\n content: \"\\f186\";\n left: calc(100% - 12px);\n}\n"],"file":"dark-toggle.css"}
\ No newline at end of file
diff --git a/_styles/feature.css b/_styles/feature.css
new file mode 100644
index 0000000..7f7e012
--- /dev/null
+++ b/_styles/feature.css
@@ -0,0 +1,49 @@
+.feature {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ gap: 40px;
+ margin: 40px 0;
+}
+
+.feature-image {
+ flex-shrink: 0;
+ width: 40%;
+ aspect-ratio: 3/2;
+ border-radius: var(--rounded);
+ overflow: hidden;
+ box-shadow: var(--shadow);
+}
+
+.feature-image img {
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+}
+
+.feature-text {
+ flex-grow: 1;
+}
+
+.feature-title {
+ font-size: var(--large);
+ text-align: center;
+ font-family: var(--heading);
+ font-weight: var(--semi-bold);
+}
+
+.feature[data-flip] {
+ flex-direction: row-reverse;
+}
+
+@media (max-width: 800px) {
+ .feature {
+ flex-direction: column !important;
+ }
+ .feature-image {
+ width: 100%;
+ max-width: 400px;
+ }
+}
+
+/*# sourceMappingURL=feature.css.map */
\ No newline at end of file
diff --git a/_styles/feature.css.map b/_styles/feature.css.map
new file mode 100644
index 0000000..1a2cdac
--- /dev/null
+++ b/_styles/feature.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["feature.scss"],"names":[],"mappings":"AAEA;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;IACE;;EAGF;IACE;IACA","sourcesContent":["$wrap: 800px;\n\n.feature {\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 40px;\n margin: 40px 0;\n}\n\n.feature-image {\n flex-shrink: 0;\n width: 40%;\n aspect-ratio: 3 / 2;\n border-radius: var(--rounded);\n overflow: hidden;\n box-shadow: var(--shadow);\n}\n\n.feature-image img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.feature-text {\n flex-grow: 1;\n}\n\n.feature-title {\n font-size: var(--large);\n text-align: center;\n font-family: var(--heading);\n font-weight: var(--semi-bold);\n}\n\n.feature[data-flip] {\n flex-direction: row-reverse;\n}\n\n@media (max-width: $wrap) {\n .feature {\n flex-direction: column !important;\n }\n\n .feature-image {\n width: 100%;\n max-width: calc($wrap / 2);\n }\n}\n"],"file":"feature.css"}
\ No newline at end of file
diff --git a/_styles/figure.css b/_styles/figure.css
new file mode 100644
index 0000000..9558938
--- /dev/null
+++ b/_styles/figure.css
@@ -0,0 +1,25 @@
+.figure {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+ gap: 10px;
+ margin: 40px 0;
+}
+
+.figure-image {
+ display: contents;
+}
+
+.figure-image img {
+ border-radius: var(--rounded);
+ overflow: hidden;
+ box-shadow: var(--shadow);
+}
+
+.figure-caption {
+ font-style: italic;
+ text-align: center;
+}
+
+/*# sourceMappingURL=figure.css.map */
\ No newline at end of file
diff --git a/_styles/figure.css.map b/_styles/figure.css.map
new file mode 100644
index 0000000..4d62fcf
--- /dev/null
+++ b/_styles/figure.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["figure.scss"],"names":[],"mappings":"AAAA;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA","sourcesContent":[".figure {\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n gap: 10px;\n margin: 40px 0;\n}\n\n.figure-image {\n display: contents;\n}\n\n.figure-image img {\n border-radius: var(--rounded);\n overflow: hidden;\n box-shadow: var(--shadow);\n}\n\n.figure-caption {\n font-style: italic;\n text-align: center;\n}\n"],"file":"figure.css"}
\ No newline at end of file
diff --git a/_styles/float.css b/_styles/float.css
new file mode 100644
index 0000000..c91b46e
--- /dev/null
+++ b/_styles/float.css
@@ -0,0 +1,35 @@
+.float {
+ margin-bottom: 20px;
+ max-width: 50%;
+}
+
+.float > * {
+ margin: 0 !important;
+}
+
+.float:not([data-flip]) {
+ float: left;
+ margin-right: 40px;
+}
+
+.float[data-flip] {
+ float: right;
+ margin-left: 40px;
+}
+
+.float[data-clear] {
+ float: unset;
+ clear: both;
+ margin: 0;
+}
+
+@media (max-width: 600px) {
+ .float {
+ float: unset !important;
+ clear: both !important;
+ margin: auto !important;
+ max-width: unset;
+ }
+}
+
+/*# sourceMappingURL=float.css.map */
\ No newline at end of file
diff --git a/_styles/float.css.map b/_styles/float.css.map
new file mode 100644
index 0000000..42c53e0
--- /dev/null
+++ b/_styles/float.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["float.scss"],"names":[],"mappings":"AAEA;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;IACE;IACA;IACA;IACA","sourcesContent":["$wrap: 600px;\n\n.float {\n margin-bottom: 20px;\n max-width: 50%;\n}\n\n.float > * {\n margin: 0 !important;\n}\n\n.float:not([data-flip]) {\n float: left;\n margin-right: 40px;\n}\n\n.float[data-flip] {\n float: right;\n margin-left: 40px;\n}\n\n.float[data-clear] {\n float: unset;\n clear: both;\n margin: 0;\n}\n\n@media (max-width: $wrap) {\n .float {\n float: unset !important;\n clear: both !important;\n margin: auto !important;\n max-width: unset;\n }\n}\n"],"file":"float.css"}
\ No newline at end of file
diff --git a/_styles/font.css b/_styles/font.css
new file mode 100644
index 0000000..c40e155
--- /dev/null
+++ b/_styles/font.css
@@ -0,0 +1,3 @@
+@font-face {}
+
+/*# sourceMappingURL=font.css.map */
\ No newline at end of file
diff --git a/_styles/font.css.map b/_styles/font.css.map
new file mode 100644
index 0000000..e1d56c0
--- /dev/null
+++ b/_styles/font.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["font.scss"],"names":[],"mappings":"AAAA","sourcesContent":["@font-face {\n}\n"],"file":"font.css"}
\ No newline at end of file
diff --git a/_styles/footer.css b/_styles/footer.css
new file mode 100644
index 0000000..a85b907
--- /dev/null
+++ b/_styles/footer.css
@@ -0,0 +1,24 @@
+footer {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+ gap: 20px;
+ padding: 40px;
+ line-height: var(--spacing);
+ box-shadow: var(--shadow);
+}
+
+footer a {
+ color: var(--text) !important;
+}
+
+footer a:hover {
+ color: var(--primary) !important;
+}
+
+footer .icon {
+ font-size: var(--xl);
+}
+
+/*# sourceMappingURL=footer.css.map */
\ No newline at end of file
diff --git a/_styles/footer.css.map b/_styles/footer.css.map
new file mode 100644
index 0000000..61ae117
--- /dev/null
+++ b/_styles/footer.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["footer.scss"],"names":[],"mappings":"AAAA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE","sourcesContent":["footer {\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n gap: 20px;\n padding: 40px;\n line-height: var(--spacing);\n box-shadow: var(--shadow);\n}\n\nfooter a {\n color: var(--text) !important;\n}\n\nfooter a:hover {\n color: var(--primary) !important;\n}\n\nfooter .icon {\n font-size: var(--xl);\n}\n"],"file":"footer.css"}
\ No newline at end of file
diff --git a/_styles/form.css b/_styles/form.css
new file mode 100644
index 0000000..7611459
--- /dev/null
+++ b/_styles/form.css
@@ -0,0 +1,8 @@
+form {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ gap: 10px;
+}
+
+/*# sourceMappingURL=form.css.map */
\ No newline at end of file
diff --git a/_styles/form.css.map b/_styles/form.css.map
new file mode 100644
index 0000000..65939cb
--- /dev/null
+++ b/_styles/form.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["form.scss"],"names":[],"mappings":"AAAA;EACE;EACA;EACA;EACA","sourcesContent":["form {\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 10px;\n}\n"],"file":"form.css"}
\ No newline at end of file
diff --git a/_styles/grid.css b/_styles/grid.css
new file mode 100644
index 0000000..a595ce7
--- /dev/null
+++ b/_styles/grid.css
@@ -0,0 +1,45 @@
+.grid {
+ display: grid;
+ --repeat: 3;
+ grid-template-columns: repeat(var(--repeat), 1fr);
+ justify-content: center;
+ align-items: flex-start;
+ gap: 40px;
+ margin: 40px 0;
+}
+
+.grid > * {
+ min-width: 0;
+ min-height: 0;
+ width: 100%;
+ margin: 0 !important;
+}
+
+@media (max-width: 750px) {
+ .grid {
+ --repeat: 2;
+ }
+}
+@media (max-width: 500px) {
+ .grid {
+ --repeat: 1;
+ }
+}
+.grid[data-style=square] {
+ align-items: center;
+}
+.grid[data-style=square] > * {
+ aspect-ratio: 1/1;
+}
+.grid[data-style=square] img {
+ aspect-ratio: 1/1;
+ object-fit: cover;
+ max-width: unset;
+ max-height: unset;
+}
+
+.grid > :where(h1, h2, h3, h4, h5, h6) {
+ display: none;
+}
+
+/*# sourceMappingURL=grid.css.map */
\ No newline at end of file
diff --git a/_styles/grid.css.map b/_styles/grid.css.map
new file mode 100644
index 0000000..8e00ee1
--- /dev/null
+++ b/_styles/grid.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["grid.scss"],"names":[],"mappings":"AAGA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EAEA;;;AAGF;EACE;IACE;;;AAIJ;EACE;IACE;;;AAIJ;EACE;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;;;AAIJ;EACE","sourcesContent":["$two: 750px;\n$one: 500px;\n\n.grid {\n display: grid;\n --repeat: 3;\n grid-template-columns: repeat(var(--repeat), 1fr);\n justify-content: center;\n align-items: flex-start;\n gap: 40px;\n margin: 40px 0;\n}\n\n.grid > * {\n min-width: 0;\n min-height: 0;\n width: 100%;\n // max-height: 50vh;\n margin: 0 !important;\n}\n\n@media (max-width: $two) {\n .grid {\n --repeat: 2;\n }\n}\n\n@media (max-width: $one) {\n .grid {\n --repeat: 1;\n }\n}\n\n.grid[data-style=\"square\"] {\n align-items: center;\n\n & > * {\n aspect-ratio: 1 / 1;\n }\n\n & img {\n aspect-ratio: 1 / 1;\n object-fit: cover;\n max-width: unset;\n max-height: unset;\n }\n}\n\n.grid > :where(h1, h2, h3, h4, h5, h6) {\n display: none;\n}\n"],"file":"grid.css"}
\ No newline at end of file
diff --git a/_styles/header.css b/_styles/header.css
new file mode 100644
index 0000000..f4e49a4
--- /dev/null
+++ b/_styles/header.css
@@ -0,0 +1,145 @@
+header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ flex-wrap: wrap;
+ gap: 20px;
+ padding: 20px;
+ box-shadow: var(--shadow);
+ position: sticky !important;
+ top: 0;
+ z-index: 10 !important;
+}
+
+header a {
+ color: var(--text);
+ text-decoration: none;
+}
+
+.home {
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ gap: 10px;
+ flex-basis: 0;
+ flex-grow: 1;
+ max-width: 100%;
+}
+
+.logo {
+ height: 40px;
+}
+
+.logo > * {
+ height: 100%;
+}
+
+.title-text {
+ display: flex;
+ justify-content: flex-start;
+ align-items: baseline;
+ flex-wrap: wrap;
+ gap: 5px;
+ min-width: 0;
+ font-family: var(--title);
+ text-align: left;
+}
+
+.title {
+ font-size: var(--large);
+}
+
+.subtitle {
+ opacity: 0.65;
+ font-weight: var(--thin);
+}
+
+.nav-toggle {
+ display: none;
+ position: relative;
+ width: 30px;
+ height: 30px;
+ margin: 0;
+ color: var(--text);
+ appearance: none;
+ transition: background var(--transition);
+}
+
+.nav-toggle:after {
+ content: "\f0c9";
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ color: var(--text);
+ font-size: 15px;
+ font-family: "Font Awesome 6 Free";
+ font-weight: 900;
+ transform: translate(-50%, -50%);
+}
+
+.nav-toggle:checked:after {
+ content: "\f00d";
+}
+
+nav {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-wrap: wrap;
+ gap: 10px;
+ font-family: var(--heading);
+ text-transform: uppercase;
+}
+
+nav > a {
+ padding: 5px;
+}
+
+nav > a:hover {
+ color: var(--primary);
+}
+
+@media (max-width: 700px) {
+ header:not([data-big]) {
+ justify-content: flex-end;
+ }
+ header:not([data-big]) .nav-toggle {
+ display: flex;
+ }
+ header:not([data-big]) .nav-toggle:not(:checked) + nav {
+ display: none;
+ }
+ header:not([data-big]) nav {
+ align-items: flex-end;
+ flex-direction: column;
+ width: 100%;
+ }
+}
+
+header[data-big] {
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+ padding: 100px 20px;
+ top: unset;
+}
+header[data-big] .home {
+ flex-direction: column;
+ flex-grow: 0;
+}
+header[data-big] .logo {
+ height: 80px;
+}
+header[data-big] .title-text {
+ flex-direction: column;
+ align-items: center;
+ text-align: center;
+}
+header[data-big] .title {
+ font-size: var(--xxl);
+}
+header[data-big] .subtitle {
+ font-size: var(--large);
+}
+
+/*# sourceMappingURL=header.css.map */
\ No newline at end of file
diff --git a/_styles/header.css.map b/_styles/header.css.map
new file mode 100644
index 0000000..04153a2
--- /dev/null
+++ b/_styles/header.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["header.scss"],"names":[],"mappings":"AAMA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EAGE;EACA;EACA;;;AAIJ;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE,QArCK;;;AAwCP;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAIA;EADF;IAEI;;EAEA;IACE;;EAGF;IACE;;EAGF;IACE;IACA;IACA;;;;AAKN;EACE;EACA;EACA;EACA;EAGE;;AAGF;EACE;EACA;;AAGF;EACE,QAlJO;;AAqJT;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE","sourcesContent":["$logo-big: 80px;\n$logo: 40px;\n$big-padding: 100px;\n$collapse: 700px;\n$sticky: true;\n\nheader {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 20px;\n padding: 20px;\n box-shadow: var(--shadow);\n\n @if $sticky {\n position: sticky !important;\n top: 0;\n z-index: 10 !important;\n }\n}\n\nheader a {\n color: var(--text);\n text-decoration: none;\n}\n\n.home {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n gap: 10px;\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n}\n\n.logo {\n height: $logo;\n}\n\n.logo > * {\n height: 100%;\n}\n\n.title-text {\n display: flex;\n justify-content: flex-start;\n align-items: baseline;\n flex-wrap: wrap;\n gap: 5px;\n min-width: 0;\n font-family: var(--title);\n text-align: left;\n}\n\n.title {\n font-size: var(--large);\n}\n\n.subtitle {\n opacity: 0.65;\n font-weight: var(--thin);\n}\n\n.nav-toggle {\n display: none;\n position: relative;\n width: 30px;\n height: 30px;\n margin: 0;\n color: var(--text);\n appearance: none;\n transition: background var(--transition);\n}\n\n.nav-toggle:after {\n content: \"\\f0c9\";\n position: absolute;\n left: 50%;\n top: 50%;\n color: var(--text);\n font-size: 15px;\n font-family: \"Font Awesome 6 Free\";\n font-weight: 900;\n transform: translate(-50%, -50%);\n}\n\n.nav-toggle:checked:after {\n content: \"\\f00d\";\n}\n\nnav {\n display: flex;\n justify-content: center;\n align-items: center;\n flex-wrap: wrap;\n gap: 10px;\n font-family: var(--heading);\n text-transform: uppercase;\n}\n\nnav > a {\n padding: 5px;\n}\n\nnav > a:hover {\n color: var(--primary);\n}\n\nheader:not([data-big]) {\n @media (max-width: $collapse) {\n justify-content: flex-end;\n\n .nav-toggle {\n display: flex;\n }\n\n .nav-toggle:not(:checked) + nav {\n display: none;\n }\n\n nav {\n align-items: flex-end;\n flex-direction: column;\n width: 100%;\n }\n }\n}\n\nheader[data-big] {\n justify-content: center;\n align-items: center;\n flex-direction: column;\n padding: $big-padding 20px;\n\n @if $sticky {\n top: unset;\n }\n\n .home {\n flex-direction: column;\n flex-grow: 0;\n }\n\n .logo {\n height: $logo-big;\n }\n\n .title-text {\n flex-direction: column;\n align-items: center;\n text-align: center;\n }\n\n .title {\n font-size: var(--xxl);\n }\n\n .subtitle {\n font-size: var(--large);\n }\n}\n"],"file":"header.css"}
\ No newline at end of file
diff --git a/_styles/heading.css b/_styles/heading.css
new file mode 100644
index 0000000..05ebc5b
--- /dev/null
+++ b/_styles/heading.css
@@ -0,0 +1,49 @@
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ margin: 40px 0 20px 0;
+ font-family: var(--heading);
+ font-weight: var(--semi-bold);
+ text-align: left;
+ letter-spacing: 1px;
+}
+
+h1 {
+ font-size: 1.6rem;
+ font-weight: var(--regular);
+ text-transform: uppercase;
+ text-align: center;
+}
+
+h2 {
+ font-size: 1.6rem;
+ padding-bottom: 5px;
+ border-bottom: solid 1px var(--light-gray);
+ font-weight: var(--regular);
+}
+
+h3 {
+ font-size: 1.5rem;
+}
+
+h4 {
+ font-size: 1.3rem;
+}
+
+h5 {
+ font-size: 1.15rem;
+}
+
+h6 {
+ font-size: 1rem;
+}
+
+:where(h1, h2, h3, h4, h5, h6) > .icon {
+ margin-right: 1em;
+ color: var(--light-gray);
+}
+
+/*# sourceMappingURL=heading.css.map */
\ No newline at end of file
diff --git a/_styles/heading.css.map b/_styles/heading.css.map
new file mode 100644
index 0000000..b8fe6a4
--- /dev/null
+++ b/_styles/heading.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["heading.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAME;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA","sourcesContent":["h1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n margin: 40px 0 20px 0;\n font-family: var(--heading);\n font-weight: var(--semi-bold);\n text-align: left;\n letter-spacing: 1px;\n}\n\nh1 {\n font-size: 1.6rem;\n font-weight: var(--regular);\n text-transform: uppercase;\n text-align: center;\n}\n\nh2 {\n font-size: 1.6rem;\n padding-bottom: 5px;\n border-bottom: solid 1px var(--light-gray);\n font-weight: var(--regular);\n}\n\nh3 {\n font-size: 1.5rem;\n}\n\nh4 {\n font-size: 1.3rem;\n}\n\nh5 {\n font-size: 1.15rem;\n}\n\nh6 {\n font-size: 1rem;\n}\n\n:where(h1, h2, h3, h4, h5, h6) > .icon {\n margin-right: 1em;\n color: var(--light-gray);\n}\n"],"file":"heading.css"}
\ No newline at end of file
diff --git a/_styles/highlight.css b/_styles/highlight.css
new file mode 100644
index 0000000..a8cf7d3
--- /dev/null
+++ b/_styles/highlight.css
@@ -0,0 +1,6 @@
+mark {
+ background: #fef08a;
+ color: #000000;
+}
+
+/*# sourceMappingURL=highlight.css.map */
\ No newline at end of file
diff --git a/_styles/highlight.css.map b/_styles/highlight.css.map
new file mode 100644
index 0000000..957ceb1
--- /dev/null
+++ b/_styles/highlight.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["highlight.scss"],"names":[],"mappings":"AAAA;EACE;EACA","sourcesContent":["mark {\n background: #fef08a;\n color: #000000;\n}\n"],"file":"highlight.css"}
\ No newline at end of file
diff --git a/_styles/icon.css b/_styles/icon.css
new file mode 100644
index 0000000..ab61327
--- /dev/null
+++ b/_styles/icon.css
@@ -0,0 +1,15 @@
+.icon {
+ font-size: 1em;
+}
+
+span.icon {
+ line-height: 1;
+}
+
+span.icon > svg {
+ position: relative;
+ top: 0.1em;
+ height: 1em;
+}
+
+/*# sourceMappingURL=icon.css.map */
\ No newline at end of file
diff --git a/_styles/icon.css.map b/_styles/icon.css.map
new file mode 100644
index 0000000..2229868
--- /dev/null
+++ b/_styles/icon.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["icon.scss"],"names":[],"mappings":"AAAA;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA","sourcesContent":[".icon {\n font-size: 1em;\n}\n\nspan.icon {\n line-height: 1;\n}\n\nspan.icon > svg {\n position: relative;\n top: 0.1em;\n height: 1em;\n}\n"],"file":"icon.css"}
\ No newline at end of file
diff --git a/_styles/image.css b/_styles/image.css
new file mode 100644
index 0000000..70340d3
--- /dev/null
+++ b/_styles/image.css
@@ -0,0 +1,6 @@
+img {
+ max-width: 100%;
+ max-height: 100%;
+}
+
+/*# sourceMappingURL=image.css.map */
\ No newline at end of file
diff --git a/_styles/image.css.map b/_styles/image.css.map
new file mode 100644
index 0000000..e88ec45
--- /dev/null
+++ b/_styles/image.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["image.scss"],"names":[],"mappings":"AAAA;EACE;EACA","sourcesContent":["img {\n max-width: 100%;\n max-height: 100%;\n}\n"],"file":"image.css"}
\ No newline at end of file
diff --git a/_styles/link.css b/_styles/link.css
new file mode 100644
index 0000000..3235e80
--- /dev/null
+++ b/_styles/link.css
@@ -0,0 +1,15 @@
+a {
+ color: var(--primary);
+ transition: color var(--transition);
+ overflow-wrap: break-word;
+}
+
+a:hover {
+ color: var(--text);
+}
+
+a:not([href]) {
+ color: var(--text);
+}
+
+/*# sourceMappingURL=link.css.map */
\ No newline at end of file
diff --git a/_styles/link.css.map b/_styles/link.css.map
new file mode 100644
index 0000000..9643550
--- /dev/null
+++ b/_styles/link.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["link.scss"],"names":[],"mappings":"AAAA;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE","sourcesContent":["a {\n color: var(--primary);\n transition: color var(--transition);\n overflow-wrap: break-word;\n}\n\na:hover {\n color: var(--text);\n}\n\na:not([href]) {\n color: var(--text);\n}\n"],"file":"link.css"}
\ No newline at end of file
diff --git a/_styles/list.css b/_styles/list.css
new file mode 100644
index 0000000..181f8a2
--- /dev/null
+++ b/_styles/list.css
@@ -0,0 +1,22 @@
+ul,
+ol {
+ margin: 20px 0;
+ padding-left: 40px;
+}
+
+ul {
+ list-style-type: square;
+}
+
+li {
+ margin: 5px 0;
+ padding-left: 10px;
+ text-align: justify;
+ line-height: var(--spacing);
+}
+li ul,
+li ol {
+ margin: 0;
+}
+
+/*# sourceMappingURL=list.css.map */
\ No newline at end of file
diff --git a/_styles/list.css.map b/_styles/list.css.map
new file mode 100644
index 0000000..a3ab1ed
--- /dev/null
+++ b/_styles/list.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["list.scss"],"names":[],"mappings":"AAAA;AAAA;EAEE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;;AAEA;AAAA;EAEE","sourcesContent":["ul,\nol {\n margin: 20px 0;\n padding-left: 40px;\n}\n\nul {\n list-style-type: square;\n}\n\nli {\n margin: 5px 0;\n padding-left: 10px;\n text-align: justify;\n line-height: var(--spacing);\n\n ul,\n ol {\n margin: 0;\n }\n}\n"],"file":"list.css"}
\ No newline at end of file
diff --git a/_styles/main.css b/_styles/main.css
new file mode 100644
index 0000000..f72eb0d
--- /dev/null
+++ b/_styles/main.css
@@ -0,0 +1,7 @@
+main {
+ display: flex;
+ flex-direction: column;
+ flex-grow: 1;
+}
+
+/*# sourceMappingURL=main.css.map */
\ No newline at end of file
diff --git a/_styles/main.css.map b/_styles/main.css.map
new file mode 100644
index 0000000..a2a0fa8
--- /dev/null
+++ b/_styles/main.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["main.scss"],"names":[],"mappings":"AAAA;EACE;EACA;EACA","sourcesContent":["main {\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n}\n"],"file":"main.css"}
\ No newline at end of file
diff --git a/_styles/paragraph.css b/_styles/paragraph.css
new file mode 100644
index 0000000..7e46c39
--- /dev/null
+++ b/_styles/paragraph.css
@@ -0,0 +1,7 @@
+p {
+ margin: 20px 0;
+ text-align: justify;
+ line-height: var(--spacing);
+}
+
+/*# sourceMappingURL=paragraph.css.map */
\ No newline at end of file
diff --git a/_styles/paragraph.css.map b/_styles/paragraph.css.map
new file mode 100644
index 0000000..7eb50a6
--- /dev/null
+++ b/_styles/paragraph.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["paragraph.scss"],"names":[],"mappings":"AAAA;EACE;EACA;EACA","sourcesContent":["p {\n margin: 20px 0;\n text-align: justify;\n line-height: var(--spacing);\n}\n"],"file":"paragraph.css"}
\ No newline at end of file
diff --git a/_styles/portrait.css b/_styles/portrait.css
new file mode 100644
index 0000000..c9ef0df
--- /dev/null
+++ b/_styles/portrait.css
@@ -0,0 +1,75 @@
+.portrait-wrapper {
+ display: contents;
+}
+
+.portrait {
+ position: relative;
+ display: inline-flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+ gap: 20px;
+ margin: 20px;
+ width: 175px;
+ max-width: calc(100% - 20px - 20px);
+ text-decoration: none;
+}
+
+.portrait[data-style=small] {
+ width: 100px;
+}
+
+.portrait[data-style=tiny] {
+ flex-direction: row;
+ gap: 15px;
+ width: unset;
+ text-align: left;
+}
+
+.portrait-image {
+ width: 100%;
+ aspect-ratio: 1/1;
+ border-radius: 999px;
+ object-fit: cover;
+ box-shadow: var(--shadow);
+}
+
+.portrait[data-style=tiny] .portrait-image {
+ width: 50px;
+}
+
+.portrait[data-style=tiny] .portrait-role {
+ display: none;
+}
+
+.portrait-text {
+ display: flex;
+ flex-direction: column;
+}
+
+.portrait-name {
+ font-family: var(--heading);
+ font-weight: var(--semi-bold);
+}
+
+.portrait-role .icon {
+ position: absolute;
+ left: 0;
+ top: 0;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ width: calc(20px + 10%);
+ aspect-ratio: 1/1;
+ border-radius: 999px;
+ background: var(--background);
+ box-shadow: var(--shadow);
+ transform: translate(14%, 14%);
+}
+
+.portrait[data-style=small] .portrait-role .icon {
+ left: -2px;
+ top: -2px;
+}
+
+/*# sourceMappingURL=portrait.css.map */
\ No newline at end of file
diff --git a/_styles/portrait.css.map b/_styles/portrait.css.map
new file mode 100644
index 0000000..37c9601
--- /dev/null
+++ b/_styles/portrait.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["portrait.scss"],"names":[],"mappings":"AAAA;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA","sourcesContent":[".portrait-wrapper {\n display: contents;\n}\n\n.portrait {\n position: relative;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n gap: 20px;\n margin: 20px;\n width: 175px;\n max-width: calc(100% - 20px - 20px);\n text-decoration: none;\n}\n\n.portrait[data-style=\"small\"] {\n width: 100px;\n}\n\n.portrait[data-style=\"tiny\"] {\n flex-direction: row;\n gap: 15px;\n width: unset;\n text-align: left;\n}\n\n.portrait-image {\n width: 100%;\n aspect-ratio: 1 / 1;\n border-radius: 999px;\n object-fit: cover;\n box-shadow: var(--shadow);\n}\n\n.portrait[data-style=\"tiny\"] .portrait-image {\n width: 50px;\n}\n\n.portrait[data-style=\"tiny\"] .portrait-role {\n display: none;\n}\n\n.portrait-text {\n display: flex;\n flex-direction: column;\n}\n\n.portrait-name {\n font-family: var(--heading);\n font-weight: var(--semi-bold);\n}\n\n.portrait-role .icon {\n position: absolute;\n left: 0;\n top: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n width: calc(20px + 10%);\n aspect-ratio: 1 / 1;\n border-radius: 999px;\n background: var(--background);\n box-shadow: var(--shadow);\n transform: translate(14%, 14%);\n}\n\n.portrait[data-style=\"small\"] .portrait-role .icon {\n left: -2px;\n top: -2px;\n}\n"],"file":"portrait.css"}
\ No newline at end of file
diff --git a/_styles/post-excerpt.css b/_styles/post-excerpt.css
new file mode 100644
index 0000000..9935b24
--- /dev/null
+++ b/_styles/post-excerpt.css
@@ -0,0 +1,63 @@
+.post-excerpt-container {
+ container-type: inline-size;
+}
+
+.post-excerpt {
+ display: flex;
+ margin: 20px 0;
+ border-radius: var(--rounded);
+ background: var(--background);
+ overflow: hidden;
+ box-shadow: var(--shadow);
+}
+
+.post-excerpt-image {
+ position: relative;
+ width: 200px;
+ flex-shrink: 0;
+}
+
+.post-excerpt-image img {
+ position: absolute;
+ inset: 0;
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+}
+
+.post-excerpt-text {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 20px;
+ padding: 20px 30px;
+ text-align: left;
+}
+
+.post-excerpt-text > * {
+ margin: 0 !important;
+}
+
+.post-excerpt-text > a:first-child {
+ width: 100%;
+ font-weight: var(--semi-bold);
+}
+
+.post-excerpt-text > div {
+ justify-content: flex-start;
+}
+
+.post-excerpt-text > p {
+ width: 100%;
+}
+
+@container (max-width: 800px) {
+ .post-excerpt {
+ flex-direction: column;
+ }
+ .post-excerpt-image {
+ width: unset;
+ height: 200px;
+ }
+}
+
+/*# sourceMappingURL=post-excerpt.css.map */
\ No newline at end of file
diff --git a/_styles/post-excerpt.css.map b/_styles/post-excerpt.css.map
new file mode 100644
index 0000000..e82e3a2
--- /dev/null
+++ b/_styles/post-excerpt.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["post-excerpt.scss"],"names":[],"mappings":"AAGA;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA,OAlBW;EAmBX;;;AAIF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;IACE;;EAGF;IACE;IACA,QA/DS","sourcesContent":["$thumb-size: 200px;\n$wrap: 800px;\n\n.post-excerpt-container {\n container-type: inline-size;\n}\n\n.post-excerpt {\n display: flex;\n margin: 20px 0;\n border-radius: var(--rounded);\n background: var(--background);\n overflow: hidden;\n box-shadow: var(--shadow);\n}\n\n.post-excerpt-image {\n position: relative;\n width: $thumb-size;\n flex-shrink: 0;\n // box-shadow: var(--shadow);\n}\n\n.post-excerpt-image img {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.post-excerpt-text {\n display: flex;\n flex-wrap: wrap;\n gap: 20px;\n padding: 20px 30px;\n text-align: left;\n}\n\n.post-excerpt-text > * {\n margin: 0 !important;\n}\n\n.post-excerpt-text > a:first-child {\n width: 100%;\n font-weight: var(--semi-bold);\n}\n\n.post-excerpt-text > div {\n justify-content: flex-start;\n}\n\n.post-excerpt-text > p {\n width: 100%;\n}\n\n@container (max-width: #{$wrap}) {\n .post-excerpt {\n flex-direction: column;\n }\n\n .post-excerpt-image {\n width: unset;\n height: $thumb-size;\n }\n}\n"],"file":"post-excerpt.css"}
\ No newline at end of file
diff --git a/_styles/post-info.css b/_styles/post-info.css
new file mode 100644
index 0000000..df1827c
--- /dev/null
+++ b/_styles/post-info.css
@@ -0,0 +1,32 @@
+.post-info {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-wrap: wrap;
+ gap: 20px;
+ margin: 20px 0;
+ color: var(--dark-gray);
+}
+
+.post-info .portrait {
+ margin: 0;
+}
+
+.post-info .icon {
+ margin-right: 0.5em;
+}
+
+.post-info a {
+ color: inherit;
+}
+
+.post-info a:hover {
+ color: var(--primary);
+}
+
+.post-info > span {
+ text-align: center;
+ white-space: nowrap;
+}
+
+/*# sourceMappingURL=post-info.css.map */
\ No newline at end of file
diff --git a/_styles/post-info.css.map b/_styles/post-info.css.map
new file mode 100644
index 0000000..9950b78
--- /dev/null
+++ b/_styles/post-info.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["post-info.scss"],"names":[],"mappings":"AAAA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA","sourcesContent":[".post-info {\n display: flex;\n justify-content: center;\n align-items: center;\n flex-wrap: wrap;\n gap: 20px;\n margin: 20px 0;\n color: var(--dark-gray);\n}\n\n.post-info .portrait {\n margin: 0;\n}\n\n.post-info .icon {\n margin-right: 0.5em;\n}\n\n.post-info a {\n color: inherit;\n}\n\n.post-info a:hover {\n color: var(--primary);\n}\n\n.post-info > span {\n text-align: center;\n white-space: nowrap;\n}\n"],"file":"post-info.css"}
\ No newline at end of file
diff --git a/_styles/post-nav.css b/_styles/post-nav.css
new file mode 100644
index 0000000..f7ddfaa
--- /dev/null
+++ b/_styles/post-nav.css
@@ -0,0 +1,35 @@
+.post-nav {
+ display: flex;
+ justify-content: space-between;
+ align-items: flex-start;
+ gap: 10px;
+ color: var(--gray);
+}
+
+.post-nav > :first-child {
+ text-align: left;
+}
+
+.post-nav > :last-child {
+ text-align: right;
+}
+
+.post-nav > :first-child .icon {
+ margin-right: 0.5em;
+}
+
+.post-nav > :last-child .icon {
+ margin-left: 0.5em;
+}
+
+@media (max-width: 600px) {
+ .post-nav {
+ align-items: center;
+ flex-direction: column;
+ }
+ .post-nav > * {
+ text-align: center !important;
+ }
+}
+
+/*# sourceMappingURL=post-nav.css.map */
\ No newline at end of file
diff --git a/_styles/post-nav.css.map b/_styles/post-nav.css.map
new file mode 100644
index 0000000..b0699ac
--- /dev/null
+++ b/_styles/post-nav.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["post-nav.scss"],"names":[],"mappings":"AAEA;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;IACE;IACA;;EAGF;IACE","sourcesContent":["$wrap: 600px;\n\n.post-nav {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 10px;\n color: var(--gray);\n}\n\n.post-nav > :first-child {\n text-align: left;\n}\n\n.post-nav > :last-child {\n text-align: right;\n}\n\n.post-nav > :first-child .icon {\n margin-right: 0.5em;\n}\n\n.post-nav > :last-child .icon {\n margin-left: 0.5em;\n}\n\n@media (max-width: $wrap) {\n .post-nav {\n align-items: center;\n flex-direction: column;\n }\n\n .post-nav > * {\n text-align: center !important;\n }\n}\n"],"file":"post-nav.css"}
\ No newline at end of file
diff --git a/_styles/quote.css b/_styles/quote.css
new file mode 100644
index 0000000..b754635
--- /dev/null
+++ b/_styles/quote.css
@@ -0,0 +1,15 @@
+blockquote {
+ margin: 20px 0;
+ padding: 10px 20px;
+ border-left: solid 4px var(--light-gray);
+}
+
+blockquote > :first-child {
+ margin-top: 0;
+}
+
+blockquote > :last-child {
+ margin-bottom: 0;
+}
+
+/*# sourceMappingURL=quote.css.map */
\ No newline at end of file
diff --git a/_styles/quote.css.map b/_styles/quote.css.map
new file mode 100644
index 0000000..16c9d4c
--- /dev/null
+++ b/_styles/quote.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["quote.scss"],"names":[],"mappings":"AAAA;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE","sourcesContent":["blockquote {\n margin: 20px 0;\n padding: 10px 20px;\n border-left: solid 4px var(--light-gray);\n}\n\nblockquote > :first-child {\n margin-top: 0;\n}\n\nblockquote > :last-child {\n margin-bottom: 0;\n}\n"],"file":"quote.css"}
\ No newline at end of file
diff --git a/_styles/rule.css b/_styles/rule.css
new file mode 100644
index 0000000..28ca080
--- /dev/null
+++ b/_styles/rule.css
@@ -0,0 +1,8 @@
+hr {
+ margin: 40px 0;
+ background: var(--light-gray);
+ border: none;
+ height: 1px;
+}
+
+/*# sourceMappingURL=rule.css.map */
\ No newline at end of file
diff --git a/_styles/rule.css.map b/_styles/rule.css.map
new file mode 100644
index 0000000..a955dd9
--- /dev/null
+++ b/_styles/rule.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["rule.scss"],"names":[],"mappings":"AAAA;EACE;EACA;EACA;EACA","sourcesContent":["hr {\n margin: 40px 0;\n background: var(--light-gray);\n border: none;\n height: 1px;\n}\n"],"file":"rule.css"}
\ No newline at end of file
diff --git a/_styles/search-box.css b/_styles/search-box.css
new file mode 100644
index 0000000..9766e92
--- /dev/null
+++ b/_styles/search-box.css
@@ -0,0 +1,25 @@
+.search-box {
+ position: relative;
+ height: 40px;
+}
+
+.search-box .search-input {
+ width: 100%;
+ height: 100%;
+ padding-right: 40px;
+}
+
+.search-box button {
+ position: absolute;
+ inset: 0 0 0 auto;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ padding: 0;
+ aspect-ratio: 1/1;
+ background: none;
+ color: var(--black);
+ border: none;
+}
+
+/*# sourceMappingURL=search-box.css.map */
\ No newline at end of file
diff --git a/_styles/search-box.css.map b/_styles/search-box.css.map
new file mode 100644
index 0000000..7d45274
--- /dev/null
+++ b/_styles/search-box.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["search-box.scss"],"names":[],"mappings":"AAAA;EACE;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA","sourcesContent":[".search-box {\n position: relative;\n height: 40px;\n}\n\n.search-box .search-input {\n width: 100%;\n height: 100%;\n padding-right: 40px;\n}\n\n.search-box button {\n position: absolute;\n inset: 0 0 0 auto;\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 0;\n aspect-ratio: 1 / 1;\n background: none;\n color: var(--black);\n border: none;\n}\n"],"file":"search-box.css"}
\ No newline at end of file
diff --git a/_styles/search-info.css b/_styles/search-info.css
new file mode 100644
index 0000000..e5c9a30
--- /dev/null
+++ b/_styles/search-info.css
@@ -0,0 +1,8 @@
+.search-info {
+ margin: 20px 0;
+ text-align: center;
+ font-style: italic;
+ line-height: var(--spacing);
+}
+
+/*# sourceMappingURL=search-info.css.map */
\ No newline at end of file
diff --git a/_styles/search-info.css.map b/_styles/search-info.css.map
new file mode 100644
index 0000000..d825cee
--- /dev/null
+++ b/_styles/search-info.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["search-info.scss"],"names":[],"mappings":"AAAA;EACE;EACA;EACA;EACA","sourcesContent":[".search-info {\n margin: 20px 0;\n text-align: center;\n font-style: italic;\n line-height: var(--spacing);\n}\n"],"file":"search-info.css"}
\ No newline at end of file
diff --git a/_styles/section.css b/_styles/section.css
new file mode 100644
index 0000000..e1ceb7d
--- /dev/null
+++ b/_styles/section.css
@@ -0,0 +1,35 @@
+section {
+ padding: 40px max(40px, (100% - 1000px) / 2);
+ transition: background var(--transition), color var(--transition);
+}
+
+section[data-size=wide] {
+ padding: 40px;
+}
+
+section[data-size=full] {
+ padding: 0;
+}
+
+section[data-size=full] > * {
+ margin: 0;
+ border-radius: 0;
+}
+
+section[data-size=full] img {
+ border-radius: 0;
+}
+
+main > section:last-of-type {
+ flex-grow: 1;
+}
+
+main > section:nth-of-type(odd) {
+ background: var(--background);
+}
+
+main > section:nth-of-type(even) {
+ background: var(--background-alt);
+}
+
+/*# sourceMappingURL=section.css.map */
\ No newline at end of file
diff --git a/_styles/section.css.map b/_styles/section.css.map
new file mode 100644
index 0000000..73ffca0
--- /dev/null
+++ b/_styles/section.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["section.scss"],"names":[],"mappings":"AAGA;EACE;EACA;;;AAGF;EACE,SARQ;;;AAWV;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE","sourcesContent":["$page: 1000px;\n$padding: 40px;\n\nsection {\n padding: $padding max($padding, calc((100% - $page) / 2));\n transition: background var(--transition), color var(--transition);\n}\n\nsection[data-size=\"wide\"] {\n padding: $padding;\n}\n\nsection[data-size=\"full\"] {\n padding: 0;\n}\n\nsection[data-size=\"full\"] > * {\n margin: 0;\n border-radius: 0;\n}\n\nsection[data-size=\"full\"] img {\n border-radius: 0;\n}\n\nmain > section:last-of-type {\n flex-grow: 1;\n}\n\nmain > section:nth-of-type(odd) {\n background: var(--background);\n}\n\nmain > section:nth-of-type(even) {\n background: var(--background-alt);\n}\n"],"file":"section.css"}
\ No newline at end of file
diff --git a/_styles/table.css b/_styles/table.css
new file mode 100644
index 0000000..ef83c46
--- /dev/null
+++ b/_styles/table.css
@@ -0,0 +1,17 @@
+table {
+ margin: 40px auto;
+ border-collapse: collapse;
+ overflow-wrap: anywhere;
+}
+
+th {
+ font-weight: var(--semi-bold);
+}
+
+th,
+td {
+ padding: 10px 15px;
+ border: solid 1px var(--light-gray);
+}
+
+/*# sourceMappingURL=table.css.map */
\ No newline at end of file
diff --git a/_styles/table.css.map b/_styles/table.css.map
new file mode 100644
index 0000000..c3a3f06
--- /dev/null
+++ b/_styles/table.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["table.scss"],"names":[],"mappings":"AAAA;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;AAAA;EAEE;EACA","sourcesContent":["table {\n margin: 40px auto;\n border-collapse: collapse;\n overflow-wrap: anywhere;\n}\n\nth {\n font-weight: var(--semi-bold);\n}\n\nth,\ntd {\n padding: 10px 15px;\n border: solid 1px var(--light-gray);\n}\n"],"file":"table.css"}
\ No newline at end of file
diff --git a/_styles/tags.css b/_styles/tags.css
new file mode 100644
index 0000000..909815e
--- /dev/null
+++ b/_styles/tags.css
@@ -0,0 +1,33 @@
+.tags {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-wrap: wrap;
+ gap: 10px;
+ max-width: 100%;
+ margin: 20px 0;
+}
+
+.tag {
+ max-width: 100%;
+ margin: 0;
+ padding: 5px 10px;
+ border-radius: 999px;
+ background: var(--secondary);
+ color: var(--text);
+ text-decoration: none;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ transition: background var(--transition), color var(--transition);
+}
+
+.tag:hover {
+ background: var(--light-gray);
+}
+
+.tag[data-active] {
+ background: var(--light-gray);
+}
+
+/*# sourceMappingURL=tags.css.map */
\ No newline at end of file
diff --git a/_styles/tags.css.map b/_styles/tags.css.map
new file mode 100644
index 0000000..ae75420
--- /dev/null
+++ b/_styles/tags.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["tags.scss"],"names":[],"mappings":"AAAA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE","sourcesContent":[".tags {\n display: flex;\n justify-content: center;\n align-items: center;\n flex-wrap: wrap;\n gap: 10px;\n max-width: 100%;\n margin: 20px 0;\n}\n\n.tag {\n max-width: 100%;\n margin: 0;\n padding: 5px 10px;\n border-radius: 999px;\n background: var(--secondary);\n color: var(--text);\n text-decoration: none;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n transition: background var(--transition), color var(--transition);\n}\n\n.tag:hover {\n background: var(--light-gray);\n}\n\n.tag[data-active] {\n background: var(--light-gray);\n}\n"],"file":"tags.css"}
\ No newline at end of file
diff --git a/_styles/textbox.css b/_styles/textbox.css
new file mode 100644
index 0000000..d8ec791
--- /dev/null
+++ b/_styles/textbox.css
@@ -0,0 +1,16 @@
+input[type=text] {
+ width: 100%;
+ height: 40px;
+ margin: 0;
+ padding: 5px 10px;
+ border: solid 1px var(--light-gray);
+ border-radius: var(--rounded);
+ background: var(--background);
+ color: var(--text);
+ font-family: inherit;
+ font-size: inherit;
+ appearance: none;
+ box-shadow: var(--shadow);
+}
+
+/*# sourceMappingURL=textbox.css.map */
\ No newline at end of file
diff --git a/_styles/textbox.css.map b/_styles/textbox.css.map
new file mode 100644
index 0000000..de78ed4
--- /dev/null
+++ b/_styles/textbox.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["textbox.scss"],"names":[],"mappings":"AAAA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA","sourcesContent":["input[type=\"text\"] {\n width: 100%;\n height: 40px;\n margin: 0;\n padding: 5px 10px;\n border: solid 1px var(--light-gray);\n border-radius: var(--rounded);\n background: var(--background);\n color: var(--text);\n font-family: inherit;\n font-size: inherit;\n appearance: none;\n box-shadow: var(--shadow);\n}\n"],"file":"textbox.css"}
\ No newline at end of file
diff --git a/_styles/tooltip.css b/_styles/tooltip.css
new file mode 100644
index 0000000..28b590e
--- /dev/null
+++ b/_styles/tooltip.css
@@ -0,0 +1,72 @@
+.tippy-box {
+ background: var(--background);
+ color: var(--text);
+ padding: 7.5px;
+ text-align: left;
+ box-shadow: var(--shadow);
+}
+
+.tippy-arrow {
+ width: 30px;
+ height: 30px;
+}
+
+.tippy-arrow:before {
+ width: 10px;
+ height: 10px;
+ background: var(--background);
+ box-shadow: var(--shadow);
+}
+
+.tippy-arrow {
+ overflow: hidden;
+ pointer-events: none;
+}
+
+.tippy-box[data-placement=top] .tippy-arrow {
+ inset: unset;
+ top: 100%;
+}
+
+.tippy-box[data-placement=bottom] .tippy-arrow {
+ inset: unset;
+ bottom: 100%;
+}
+
+.tippy-box[data-placement=left] .tippy-arrow {
+ inset: unset;
+ left: 100%;
+}
+
+.tippy-box[data-placement=right] .tippy-arrow {
+ inset: unset;
+ right: 100%;
+}
+
+.tippy-arrow:before {
+ border: unset !important;
+ transform-origin: center !important;
+ transform: translate(-50%, -50%) rotate(45deg) !important;
+}
+
+.tippy-box[data-placement=top] .tippy-arrow:before {
+ left: 50% !important;
+ top: 0 !important;
+}
+
+.tippy-box[data-placement=bottom] .tippy-arrow:before {
+ left: 50% !important;
+ top: 100% !important;
+}
+
+.tippy-box[data-placement=left] .tippy-arrow:before {
+ left: 0 !important;
+ top: 50% !important;
+}
+
+.tippy-box[data-placement=right] .tippy-arrow:before {
+ left: 100% !important;
+ top: 50% !important;
+}
+
+/*# sourceMappingURL=tooltip.css.map */
\ No newline at end of file
diff --git a/_styles/tooltip.css.map b/_styles/tooltip.css.map
new file mode 100644
index 0000000..6b52e91
--- /dev/null
+++ b/_styles/tooltip.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["tooltip.scss"],"names":[],"mappings":"AAAA;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAIF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA","sourcesContent":[".tippy-box {\n background: var(--background);\n color: var(--text);\n padding: 7.5px;\n text-align: left;\n box-shadow: var(--shadow);\n}\n\n.tippy-arrow {\n width: 30px;\n height: 30px;\n}\n\n.tippy-arrow:before {\n width: 10px;\n height: 10px;\n background: var(--background);\n box-shadow: var(--shadow);\n}\n\n// correct tippy arrow styles to support intuitive arrow styles above\n.tippy-arrow {\n overflow: hidden;\n pointer-events: none;\n}\n.tippy-box[data-placement=\"top\"] .tippy-arrow {\n inset: unset;\n top: 100%;\n}\n.tippy-box[data-placement=\"bottom\"] .tippy-arrow {\n inset: unset;\n bottom: 100%;\n}\n.tippy-box[data-placement=\"left\"] .tippy-arrow {\n inset: unset;\n left: 100%;\n}\n.tippy-box[data-placement=\"right\"] .tippy-arrow {\n inset: unset;\n right: 100%;\n}\n.tippy-arrow:before {\n border: unset !important;\n transform-origin: center !important;\n transform: translate(-50%, -50%) rotate(45deg) !important;\n}\n.tippy-box[data-placement=\"top\"] .tippy-arrow:before {\n left: 50% !important;\n top: 0 !important;\n}\n.tippy-box[data-placement=\"bottom\"] .tippy-arrow:before {\n left: 50% !important;\n top: 100% !important;\n}\n.tippy-box[data-placement=\"left\"] .tippy-arrow:before {\n left: 0 !important;\n top: 50% !important;\n}\n.tippy-box[data-placement=\"right\"] .tippy-arrow:before {\n left: 100% !important;\n top: 50% !important;\n}\n"],"file":"tooltip.css"}
\ No newline at end of file
diff --git a/_styles/util.css b/_styles/util.css
new file mode 100644
index 0000000..995ea77
--- /dev/null
+++ b/_styles/util.css
@@ -0,0 +1,13 @@
+.left {
+ text-align: left;
+}
+
+.center {
+ text-align: center;
+}
+
+.right {
+ text-align: right;
+}
+
+/*# sourceMappingURL=util.css.map */
\ No newline at end of file
diff --git a/_styles/util.css.map b/_styles/util.css.map
new file mode 100644
index 0000000..c21a68d
--- /dev/null
+++ b/_styles/util.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["util.scss"],"names":[],"mappings":"AAAA;EACE;;;AAGF;EACE;;;AAGF;EACE","sourcesContent":[".left {\n text-align: left;\n}\n\n.center {\n text-align: center;\n}\n\n.right {\n text-align: right;\n}\n"],"file":"util.css"}
\ No newline at end of file
diff --git a/blog/index.html b/blog/index.html
new file mode 100644
index 0000000..7b02057
--- /dev/null
+++ b/blog/index.html
@@ -0,0 +1,945 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Blog
+
+2023
+
+2021
+
+2019
+
+
+Contact
+
+
+consectetur adipiscing elit
+sed do eiusmod tempor
+consectetur adipiscing elit
+sed do eiusmod tempor
+consectetur adipiscing elit
+sed do eiusmod tempor
ZIXbWm^Fo$`KefPrZc(zxecNJnvLl
zDWXj^%| I@eQkzu#vqj*&CEhbp
znSlqn+x^bMx<@tlu@P#hx?eE$l9$wThSIhomm3r5kVLNvB^4jYCtV2sdg#D
zsiXoti*j4r=O%o4x@#eHR_w{sZ5
QhJB>k~h8NIJv-8dh|Q%U>XYAfhxUYv32%xsjZDHlXcqEN)d?V
zRakIhskT*RZ|-HnKE!)_DXfbrHx27ZC%)DaIb`_>=ncFh=I@^E|iP
zP2fznmTA+~!Hh1?81e>JhYk0y1-o0$%MOvNGJCepM$$G@`a!jhE!Q(;Teu}ls5j5@
zkIuJKP6q?>1
z#S9weZ(ghiNwf2x4SA8
z4bofVX0_tmMSrn~<5c+{v7*UJepbA1$(?@0O%P#Afx^t1Qt>NLIl22;DJPXAWq@P|
zME-{i5212r7x5sc0ufC(#caG|!+#{oXzFyqm_%_FKs1mNN&+y9M945u#L<