diff --git a/Components/Docs.js b/Components/Docs.js
new file mode 100644
index 0000000..5e6b623
--- /dev/null
+++ b/Components/Docs.js
@@ -0,0 +1,35 @@
+import react, { Component } from "react";
+import Styles from '../styles/Components/cardrow.module.css';
+
+class Docs extends Component {
+    /*
+        Properties:
+        - header: Header component
+        Children:
+        - List of sections
+    */
+	constructor(props) {
+		super(props);
+	}
+
+	render() {
+		return "a"
+	}
+}
+
+class Section extends Component {
+    /*
+
+    */
+    constructor(props) {
+        super(props);
+    }
+
+    render() {
+        return "a"
+    }
+}
+
+
+
+export default CardRow;
\ No newline at end of file
diff --git a/Components/LEGACY/AutoSpacing.js b/Components/LEGACY/AutoSpacing.js
new file mode 100644
index 0000000..e90da58
--- /dev/null
+++ b/Components/LEGACY/AutoSpacing.js
@@ -0,0 +1,23 @@
+import react, { Component } from "react";
+import Styles from '../styles/autospacing.module.css';
+
+class AutoSpacing extends Component {
+	constructor(props) {
+		super(props);
+	}
+
+
+	render() {
+		return (
+            <div className={Styles.container}>
+				{
+					react.Children.toArray(this.props.children).map((item, index) => {
+						return <div className={Styles.item} key={index}>{item}</div>
+					})
+				}
+			</div>
+        )
+	}
+}
+
+export default AutoSpacing;
\ No newline at end of file
diff --git a/Components/LEGACY/Paragraph.js b/Components/LEGACY/Paragraph.js
new file mode 100644
index 0000000..c332832
--- /dev/null
+++ b/Components/LEGACY/Paragraph.js
@@ -0,0 +1,13 @@
+import { Component } from 'react';
+
+class Paragraph extends Component {
+    render () {
+        return (
+            <p style={{width: "100%", textAlign: "left", paddingLeft: "15%", paddingRight: "15%", fontSize: "120%", color: "var(--card-text-color)"}}>
+                {this.props.children}
+            </p>
+        );
+    }
+}
+
+export default Paragraph;
\ No newline at end of file
diff --git a/Components/LEGACY/Scroller.js b/Components/LEGACY/Scroller.js
new file mode 100644
index 0000000..69e0fa3
--- /dev/null
+++ b/Components/LEGACY/Scroller.js
@@ -0,0 +1,22 @@
+import { Component } from "react";
+import Styles from '../styles/scroller.module.css';
+
+class Scroller extends Component {
+    constructor(props) {
+        super(props);
+    }
+    render() {
+        this.props.text = this.props.text.concat(this.props.text);
+        return (
+            <div className={Styles.container}>
+                {
+                    this.props.text.map((item, index) => {
+                        console.log([this.props.text, this.props.text])
+                        return <div className={Styles.item} key={index}>{item}</div>;
+                    })
+                }
+            </div>
+        )
+    }
+}
+export default Scroller;
diff --git a/Components/LEGACY/SectionHeading.js b/Components/LEGACY/SectionHeading.js
new file mode 100644
index 0000000..ed77661
--- /dev/null
+++ b/Components/LEGACY/SectionHeading.js
@@ -0,0 +1,17 @@
+import { Component } from "react";
+import Styles from '../styles/sectionheading.module.css';
+
+class SectionHeading extends Component {
+	constructor(props) {
+		super(props);
+	}
+
+
+	render() {
+		return (
+            <h1 className={Styles.title} id={this.props.id}>{this.props.children}</h1>
+        )
+	}
+}
+
+export default SectionHeading;
\ No newline at end of file
diff --git a/Components/LEGACY/Subheading.js b/Components/LEGACY/Subheading.js
new file mode 100644
index 0000000..964f1dd
--- /dev/null
+++ b/Components/LEGACY/Subheading.js
@@ -0,0 +1,17 @@
+import { Component } from "react";
+import Styles from '../styles/subheading.module.css';
+
+class SubHeading extends Component {
+	constructor(props) {
+		super(props);
+	}
+
+
+	render() {
+		return (
+            <h2 className={Styles.title} id={this.props.id}>{this.props.children}</h2>
+        )
+	}
+}
+
+export default SubHeading;
\ No newline at end of file
diff --git a/Components/LEGACY/TileRow.js b/Components/LEGACY/TileRow.js
new file mode 100644
index 0000000..ed0bf0b
--- /dev/null
+++ b/Components/LEGACY/TileRow.js
@@ -0,0 +1,33 @@
+import react, { Component, cloneElement } from "react";
+import Styles from '../styles/tilerow.module.css';
+
+class TileRow extends Component {
+    constructor(props) {
+	super(props);
+    }
+    render() {
+	return (
+		<div className={Styles.container}>
+		{
+		    react.Children.toArray(this.props.children).map((item, index) => {
+			if (this.props.divless !== false) { // Intentional comparison to false, initially had a default of false, now has a default of true
+			    const className = (item.props.className ? item.props.className + " " : "") + Styles.item
+
+			    const key = index;
+
+			    const props = {
+				className,
+				key
+			    }
+
+			    return cloneElement(item, props);
+			} else {
+			    return <div className={Styles.item + " " + Styles.fitItemWidth} key={index}>{item}</div>;
+			}
+		    })
+		}
+	    </div>
+	)
+    }
+}
+export default TileRow;
diff --git a/Components/LEGACY/Timeline.js b/Components/LEGACY/Timeline.js
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Components/LEGACY/Timeline.js
diff --git a/Components/Panels.js b/Components/Panels.js
new file mode 100644
index 0000000..3c1d2e6
--- /dev/null
+++ b/Components/Panels.js
@@ -0,0 +1,105 @@
+import react, { Component } from "react";
+import Styles from '../styles/Components/panels.module.css';
+import handleViewport from 'react-in-viewport';
+
+
+class PanelClass extends Component {
+	constructor(props) {
+		super(props);
+	}
+
+	getStyle() {
+		const { inViewport, enterCount } = this.props;
+		if (inViewport && enterCount === 1) { return { WebkitTransition: 'all 0.75s ease-in-out', opacity: '1', transform: "translateY(0px)" };
+		} else if (!inViewport && enterCount < 1) { return { WebkitTransition: 'none', opacity: '0', transform: "translateY(20px)" };
+		} else { return {}; }
+	}
+
+	render() {
+		return <div className={Styles.panel} style={this.getStyle()} id={this.props.id}>
+				{
+					react.Children.toArray(this.props.children).map((child, index) => {
+						return child;
+					})
+				}
+		</div>
+	}
+}
+
+
+class AutoLayout extends Component {
+	constructor(props) {
+		super(props);
+		this.children = react.Children.toArray(this.props.children)
+		this.validity = []
+		this.calculateValidity()
+	}
+
+	calculateValidity() {
+		this.children.map((item, index) => {
+			if ( index > 0 && item.props.halfSize && this.validity[index - 1] == 'half1' ) {
+				this.validity[index] = 'half2';
+			} else if ( index > 0 && !item.props.halfSize && this.validity[index - 1] == 'half1' ) {
+				this.validity[index] = 'full';
+				this.validity[index - 1] = 'full';
+			} else if ( item.props.halfSize && !(index == this.props.children.length - 1) ) {
+				this.validity[index] = 'half1';
+			} else if ( index == this.props.children.length - 1 && this.validity[index - 1] == 'half1' ) {
+				this.validity[index] = 'full';
+				this.validity[index - 1] = 'full';
+			} else if ( index == this.props.children.length - 1 && this.validity[index - 1] == 'half2' ) {
+				this.validity[index] = 'full';
+			} else {
+				this.validity[index] = 'full';
+			}
+		})
+	}
+
+	render() {
+		return (
+            <div className={Styles.container}>
+				{
+					this.children.map((item, index) => {
+						if ( this.validity[index] == 'full' ) {
+							return this.children[index]
+						} else if ( this.validity[index] == 'half1' ) {
+							return <div key={index} className={Styles.doublePanel}>
+								{this.children[index]}
+								{this.children[index + 1]}
+							</div>
+						}
+					})
+				}
+			</div>
+        )
+	}
+}
+
+
+class Title extends Component {
+	render() {
+		return <h1 className={Styles.title}>{this.props.children}</h1>
+	}
+}
+
+class Subtitle extends Component {
+	render() {
+		return <h2 className={Styles.subtitle}>{this.props.children}</h2>
+	}
+}
+
+class Text extends Component {
+	render() {
+		return <p className={Styles.text}>{this.props.children}</p>
+	}
+}
+
+class Divider extends Component {
+	render() {
+		return <div className={Styles.divider}></div>
+	}
+}
+
+const Panel = handleViewport(PanelClass, { rootMargin: '-1.0px' });
+
+export { AutoLayout, Panel, Title, Subtitle, Text, Divider };
\ No newline at end of file
diff --git a/Components/Texttools.js b/Components/Texttools.js
new file mode 100644
index 0000000..5f929bd
--- /dev/null
+++ b/Components/Texttools.js
@@ -0,0 +1,72 @@
+import react, { Component } from "react";
+import Styles from '../styles/Components/texttools.module.css';
+import { Popover } from 'react-tiny-popover';
+
+
+class List extends Component {
+	constructor(props) {
+		super(props);
+	}
+
+	render() {
+		return (
+            <div className={Styles.list}>
+				{
+					react.Children.toArray(this.props.children).map((item, index) => {
+						return <div key={index} className={Styles.listItem}>
+                            <div className={Styles.square} style={{borderColor: `#${this.props.colour}`}} />
+                            <div>{item}</div>
+                        </div>
+					})
+				}
+			</div>
+        )
+	}
+}
+
+class ListItem extends Component {
+    render() {
+		return this.props.children
+	}
+}
+
+class Code extends Component {
+	constructor(props) {
+		super(props);
+		this.state = {
+			isPopoverOpen: false,
+		};
+	}
+
+	clicked() {
+		let content = this.props.children
+		navigator.clipboard.writeText(content)
+		this.setState({isPopoverOpen: true})
+		setTimeout(() => {
+			this.setState({isPopoverOpen: false})
+		}, 1000)
+	}
+
+	render() {
+		if ( this.props.clickable === false) {
+			return <pre
+				className={Styles.code}
+				style={{color: `#${this.props.colour}`, boxShadow: `0px -3px 10px 2px #000000`}}
+			>{this.props.children}</pre>
+		} else {
+			return <Popover
+				isOpen={this.state.isPopoverOpen}
+				positions={['top', 'bottom', 'left', 'right']} // preferred positions by priority
+				content={<Code colour={this.props.colour} clickable={false}>Copied!</Code>}
+			>
+				<pre
+					className={Styles.code}
+					style={{color: `#${this.props.colour}`}}
+					onClick={() => this.clicked()}
+				>{this.props.children}</pre>
+			</Popover>
+		}
+	}
+}
+
+export { List, ListItem, Code };
\ No newline at end of file
diff --git a/pages/supporters.js b/pages/supporters.js
new file mode 100644
index 0000000..2cde96c
--- /dev/null
+++ b/pages/supporters.js
@@ -0,0 +1,23 @@
+import Header from '../Components/Header'
+
+export default function Home() {
+    return (
+        <>
+            <Header
+                name="Supporters"
+                subtext="The people who help Clicks function"
+                gradient={["71AFE5", "6576CC"]}
+                wave="web/waves/header/clicksforms"
+                buttons={[]}
+            />
+            {/* <AutoSpacing>
+                <br />
+                <Scroller text={[
+                    "PineappleFan",
+                    "TheCodedProf",
+                    "Minion3665"
+                ]} />
+            </AutoSpacing>*/}
+        </>
+    )
+}
diff --git a/styles/Components/card.module.css b/styles/Components/card.module.css
new file mode 100644
index 0000000..52544a4
--- /dev/null
+++ b/styles/Components/card.module.css
@@ -0,0 +1,120 @@
+.backgroundImage {
+	position: absolute;
+	bottom: -5px;
+	left: 0;
+	width: calc(100% + 5px);
+	height: auto;
+	scale: stretch;
+	border-radius: 0;
+	filter: var(--theme-ui-colors-cardFilter);
+	transition: filter 0.3s ease-in-out;
+}
+
+.backgroundGradient {
+	position: absolute;
+	bottom: 0;
+	left: 0;
+	width: 100%;
+	height: 100%;
+	scale: stretch;
+	border-radius: 0;
+	filter: var(--theme-ui-colors-cardFilter);
+	transition: filter 0.3s ease-in-out;
+}
+
+.card {
+	border-radius: 17px;
+	width: 100%;
+	height: 204px;
+	padding-inline: 5px;
+	padding-bottom: 5px;
+	position: relative;
+	overflow: hidden;
+	margin: 100px;
+	transition: filter 0.3s ease-in-out;
+}
+
+
+.panel {
+	position: absolute;
+	overflow-x: hidden;
+	overflow-y: hidden;
+	width: 88%;
+	height: 76%;
+	top: 12%;
+	left: 6%;
+	padding-top: 10px;
+	padding-bottom: 10px;
+	border-radius: 17px;
+	background-color: var(--theme-ui-colors-cardBackground);
+	transition: background-color 0.3s ease-in-out;
+	backdrop-filter: blur(7px);
+}
+
+.titleContainer {
+	display: flex;
+	flex-direction: row;
+	justify-content: center;
+	align-items: center;
+	width: 100%;
+	height: 32px;
+	padding-inline: 10px;
+	margin-top: 10px;
+}
+
+.title {
+	font-weight: 100;
+	font-size: 25px;
+	margin-left: 1vw;
+	line-height: 24px;
+	max-lines: 2;
+	color: var(--theme-ui-colors-text);
+	transition: color 0.3s ease-in-out;
+}
+
+.image {
+	height: 40px;
+	width: 40px;
+}
+
+.subtext {
+	width: 100%;
+	padding-inline: 10px;
+	text-align: center;
+	color: var(--theme-ui-colors-text);
+	transition: color 0.3s ease-in-out;
+}
+
+
+.buttonLayout {
+	display: flex;
+	flex-direction: row;
+	justify-content: flex-end;
+	align-items: center;
+	flex-wrap: wrap;
+	padding: 0px;
+	position: absolute;
+	bottom: 5px;
+	right: 5px;
+}
+
+.button {
+	display: flex;
+	flex-direction: row;
+	align-items: flex-start;
+	justify-content: right;
+	position: static;
+	flex: none;
+	order: 1;
+	flex-grow: 0;
+
+	margin: 5px;
+	padding: 5px 10px;
+	border-radius: 8px;
+}
+
+@media (max-width: 500px) {
+	.card {
+		height: 254px;
+	}
+}
\ No newline at end of file
diff --git a/styles/Components/cardrow.module.css b/styles/Components/cardrow.module.css
new file mode 100644
index 0000000..dde471f
--- /dev/null
+++ b/styles/Components/cardrow.module.css
@@ -0,0 +1,12 @@
+.container {
+    width: calc(100% - 20px);
+    height: 100%;
+    display: flex;
+    flex-wrap: wrap;
+    justify-content: center;
+    gap: 20px;
+}
+
+.item {
+    width: min(428px, 90%);
+}
\ No newline at end of file
diff --git a/styles/Components/header.module.css b/styles/Components/header.module.css
new file mode 100644
index 0000000..d37417d
--- /dev/null
+++ b/styles/Components/header.module.css
@@ -0,0 +1,128 @@
+.backgroundImage {
+	position: absolute;
+	bottom: -10px;
+	width: calc(100% + 6px);
+	border-radius: 0 0 16.5px 16.5px;
+	filter: var(--theme-ui-colors-cardFilter);
+	transition: filter 0.3s ease-in-out;
+}
+.backgroundGradient {
+	position: absolute;
+	bottom: 0;
+	left: 0;
+	width: 100%;
+	height: 100%;
+	filter: var(--theme-ui-colors-cardFilter);
+	transition: filter 0.3s ease-in-out;
+}
+
+.header {
+	width: 100vw;
+	position: relative;
+	overflow: hidden;
+	transition: filter 0.3s ease-in-out;
+	display: flex;
+	flex-direction: column;
+	justify-content: center;
+	align-items: center;
+}
+
+.panel {
+    position: relative;
+	overflow: hidden;
+	width: min(calc(100vw - 40px), 1000px);
+	border-radius: 16.5px;
+	background-color: var(--theme-ui-colors-cardBackground);
+	transition: background-color 0.3s ease-in-out;
+	backdrop-filter: blur(7px);
+	padding-top: 30px;
+	padding-bottom: 40px;
+	padding-left: 10px;
+	padding-right: 10px;
+	margin-top: 20px;
+	margin-bottom: 20vh;
+}
+
+.title {
+    width: 100%;
+    text-align: center;
+    font-weight: 100;
+	margin-top: 0px;
+	margin-bottom: -20px;
+    font-size: 3em;
+    color: var(--theme-ui-colors-text);
+	transition: color 0.3s ease-in-out;
+	word-break: break-word;
+}
+
+.subtext {
+	margin-bottom: 0px;
+    width: 100%;
+    text-align: center;
+    font-weight: 100;
+    font-size: 1.5em;
+	margin-top: 50px;
+    color: var(--theme-ui-colors-text);
+	transition: color 0.3s ease-in-out;
+}
+
+.subtextExtra {
+    margin-bottom: 40px;
+}
+
+@keyframes arrow-slide {
+    0% {
+        -webkit-transform: translateY(0);
+                transform: translateY(0);
+    }
+    50% {
+        -webkit-transform: translateY(-1em);
+                transform: translateY(-1em);
+    }
+    100% {
+        -webkit-transform: translateY(0);
+                transform: translateY(0);
+    }
+}
+.arrow {
+    -webkit-animation: arrow-slide 2s ease-in-out infinite both;
+            animation: arrow-slide 2s ease-in-out infinite both;
+}
+
+.arrowSpan {
+    position: absolute;
+    bottom: min(10vh, 1em);
+    width: 100%;
+    text-align: center;
+}
+
+.arrowHidden {
+    display: none;
+}
+
+.buttonLayout {
+	display: flex;
+	flex-direction: row;
+	justify-content: flex-end;
+	align-items: center;
+	flex-wrap: wrap;
+	padding: 0px;
+	position: absolute;
+	bottom: 5px;
+	right: 5px;
+}
+
+.button {
+	display: flex;
+	flex-direction: row;
+	align-items: flex-start;
+	justify-content: right;
+	position: static;
+	flex: none;
+	order: 1;
+	flex-grow: 0;
+
+	margin: 5px;
+	padding: 5px 10px;
+	border-radius: 8px;
+}
diff --git a/styles/Components/navbar.module.css b/styles/Components/navbar.module.css
new file mode 100644
index 0000000..88aa580
--- /dev/null
+++ b/styles/Components/navbar.module.css
@@ -0,0 +1,134 @@
+.container {
+    display: flex;
+    flex-direction: column;
+    justify-content: top;
+    align-items: center;
+
+    position: fixed;
+    top: 0;
+    left: 0;
+    overflow: hidden;
+    margin: 20px;
+
+    width: 64px;
+    max-height: 64px;
+    padding-bottom: -1px;
+    height: auto;
+
+    border-radius: 32px;
+    transition: 0.5s ease-in-out;
+}
+.group {
+    display: flex;
+    flex-direction: column;
+    justify-content: top;
+    align-items: center;
+
+    background-color: var(--theme-ui-colors-cardBackground);
+    transition: background-color 0.3s ease-in-out;
+    backdrop-filter: blur(2px);
+    border-radius: 32px;
+
+    width: 64px;
+    margin-bottom: 20px;
+    padding-top: 7px;
+}
+
+.headerIcon {
+    height: 64px;
+    width: 64px;
+    margin-bottom: 20px;
+    margin-right: 0;
+    margin-top: -7px;
+    border-radius: 50vw;
+
+    cursor: pointer;
+}
+
+.icon {
+    height: 50px;
+    width: 50px;
+    border-radius: 50vw;
+    margin-bottom: 5px;
+    cursor: pointer;
+    display: block;
+}
+
+.ThemeChangeButton {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+}
+
+.containerOpen {
+    max-height: 460px;
+}
+
+.containerDesktop {
+    animation-name: containerCloseOnStart;
+    animation-duration: 0.5s;
+    animation-direction: forwards;
+    animation-timing-function: ease-in-out;
+}
+
+@keyframes containerCloseOnStart {
+    from { max-height: 460px; }
+    to { max-height: 64px ; }
+}
+
+.containerDesktop:hover {
+    max-height: 460px;
+    animation-name: none;
+}
+
+@media screen and (min-width: 450px) {
+    .container {
+        flex-direction: row;
+        justify-content: left;
+
+        margin: 20px;
+
+        height: 64px;
+        max-width: 64px;
+        width: auto;
+        border-radius: 32px;
+
+        border-radius: 32px;
+        transition: 0.5s ease-in-out;
+    }
+    .group {
+        flex-direction: row;
+        justify-content: left;
+
+        height: 64px;
+        width: auto;
+        padding-right: 7px;
+        margin-bottom: 0;
+        padding-top: 7px;
+        margin-right: 20px;
+        padding-left: 3px;
+    }
+    .headerIcon {
+        height: 64px;
+        width: 64px;
+        margin-top: 12px;
+        margin-left: -3px;
+    }
+    .containerOpen {
+        max-width: 460px;
+        max-height: 64px;
+    }
+    .containerDesktop:hover {
+        max-width: 460px;
+        max-height: 64px;
+    }
+    .icon {
+        height: 50px;
+        width: 50px;
+        margin-left: 5px;
+    }
+    @keyframes containerCloseOnStart {
+        from { max-width: 460px; }
+        to { max-width: 64px ; }
+    }
+}
diff --git a/styles/Components/panels.module.css b/styles/Components/panels.module.css
new file mode 100644
index 0000000..94af64c
--- /dev/null
+++ b/styles/Components/panels.module.css
@@ -0,0 +1,92 @@
+.panel {
+    min-height: 50px;
+    padding: 10px;
+    padding-block: 30px;
+    width: 100%;
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    align-items: center;
+    width: 100%;
+    gap: 10px;
+
+    background-color: var(--theme-ui-colors-panelColor);
+    border-radius: 20px;
+    transition: background-color 0.3s ease-in-out;
+
+}
+
+.doublePanel {
+    width: 100%;
+    display: grid;
+    grid-template-columns: 1fr 1fr;
+    grid-gap: 20px;
+    column-width: 100%;
+}
+
+@media (max-width: 900px) {
+    .doublePanel {
+        display: flex;
+        flex-direction: column;
+        justify-content: center;
+        align-items: center;
+        width: 100%;
+        gap: 20px;
+    }
+    .halfWidth {
+        width: 100%;
+    }
+}
+
+
+.container {
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    align-items: center;
+    gap: 20px;
+    margin-block: 20px;
+    padding-inline: 20px;
+}
+
+.title {
+    width: 100%;
+    font-size: max(2em, 3.25vw);
+    margin: 0;
+    color: var(--theme-ui-colors-text);
+    transition: color 0.3s ease-in-out;
+    font-weight: lighter;
+    text-align: center;
+    word-break: break-all;
+}
+
+.subtitle {
+    width: 100%;
+    font-size: max(2em, 2vw);
+    color: var(--theme-ui-colors-text);
+    transition: color 0.3s ease-in-out;
+    font-weight: lighter;
+    text-align: center;
+    word-break: break-word;
+    margin-block: 0;
+}
+
+.text {
+    width: 100%;
+    text-align: center;
+    padding-inline: "15%";
+    font-size: 120%;
+    color: var(--card-text-color);
+    transition: color 0.3s ease-in-out;
+    margin-top: 0;
+    margin: 10px
+}
+
+.divider {
+    width: 75%;
+    height: 4px;
+    border-radius: 100vw;
+    margin-block: 10px;
+    background-color: var(--theme-ui-colors-hint);
+    transition: background-color 0.3s ease-in-out;
+}
diff --git a/styles/Components/texttools.module.css b/styles/Components/texttools.module.css
new file mode 100644
index 0000000..b07fd6d
--- /dev/null
+++ b/styles/Components/texttools.module.css
@@ -0,0 +1,42 @@
+.square {
+    height: 15px !important;
+    width: 15px !important;
+    position: relative;
+    border-radius: 5px;
+    border: solid 4px #000;
+}
+
+.list {
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    align-items: center;
+    width: fit-content;
+    gap: 5px;
+}
+
+.listItem {
+    display: flex;
+    flex-direction: row;
+    justify-content: left;
+    align-items: center;
+    gap: 5px;
+    width: 100%;
+}
+
+.text {
+    margin: 0;
+}
+
+.code {
+    font-family: monospace;
+    font-weight: bold;
+    background-color: var(--theme-ui-colors-hint);
+    transition: background-color 0.3s ease-in-out;
+    padding: 2px;
+    font-size: 105%;
+    border-radius: 5px;
+    padding-left: 5px;
+    width: fit-content;
+    display: inline;
+}
