diff --git a/TODO.md b/TODO.md
index f817a5ce2..79f895480 100644
--- a/TODO.md
+++ b/TODO.md
@@ -21,7 +21,7 @@ Calendar
- [x] WeekLinks make opaque blocks not take space on mobile
- [x] Type problem with Avatar
- [x] Maybe classNames that do nothing on calendar event page?
-- [ ] refactor global.css/common.css -> variables.css / utils.css / common.css
+- [x] refactor global.css/common.css -> variables.css / utils.css / common.css
- [ ] addTagArray get tags type from constant
- [x] Rename model events -> calendarEvents
- [x] On the event page should not say Day 1 if only one day
diff --git a/app/root.tsx b/app/root.tsx
index ce6800e9a..c25fb7daa 100644
--- a/app/root.tsx
+++ b/app/root.tsx
@@ -16,7 +16,8 @@ import {
} from "@remix-run/react";
import * as React from "react";
import commonStyles from "~/styles/common.css";
-import globalStyles from "~/styles/global.css";
+import variableStyles from "~/styles/vars.css";
+import utilStyles from "~/styles/utils.css";
import layoutStyles from "~/styles/layout.css";
import resetStyles from "~/styles/reset.css";
import { Catcher } from "./components/Catcher";
@@ -34,8 +35,9 @@ export const unstable_shouldReload: ShouldReloadFunction = () => false;
export const links: LinksFunction = () => {
return [
{ rel: "stylesheet", href: resetStyles },
- { rel: "stylesheet", href: globalStyles },
{ rel: "stylesheet", href: commonStyles },
+ { rel: "stylesheet", href: variableStyles },
+ { rel: "stylesheet", href: utilStyles },
{ rel: "stylesheet", href: layoutStyles },
];
};
diff --git a/app/styles/common.css b/app/styles/common.css
index 77a4515fc..4362be03f 100644
--- a/app/styles/common.css
+++ b/app/styles/common.css
@@ -1,3 +1,307 @@
+*,
+*::before,
+*::after {
+ box-sizing: border-box;
+}
+
+body {
+ width: 100%;
+ background-color: var(--bg);
+ color: var(--text);
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial,
+ sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: antialiased;
+ line-height: 1.55;
+ overflow-x: hidden;
+}
+
+*:focus:not(:focus-visible) {
+ outline: none !important;
+}
+
+a {
+ color: var(--theme);
+ font-weight: var(--semi-bold);
+ text-decoration: none;
+}
+
+:is(button, .button) {
+ display: flex;
+ width: auto;
+ align-items: center;
+ justify-content: center;
+ border: 2px solid var(--theme);
+ appearance: none;
+ background: var(--theme);
+ border-radius: var(--rounded-sm);
+ color: var(--button-text);
+ cursor: pointer;
+ font-size: var(--fonts-sm);
+ font-weight: var(--bold);
+ line-height: 1.2;
+ outline-offset: 2px;
+ padding-block: var(--s-1-5);
+ padding-inline: var(--s-2-5);
+ user-select: none;
+}
+
+:is(button, .button):focus-visible {
+ outline: 2px solid var(--theme);
+}
+
+:is(button, .button):active {
+ transform: translateY(1px);
+}
+
+:is(button, .button):disabled {
+ cursor: not-allowed;
+ opacity: 0.5;
+ transform: initial;
+}
+
+:is(button, .button).outlined {
+ background-color: transparent;
+ color: var(--theme);
+}
+
+:is(button, .button).outlined-success {
+ border-color: var(--theme-success);
+ background-color: transparent;
+ color: var(--theme-success);
+}
+
+:is(button, .button).tiny {
+ font-size: var(--fonts-xs);
+ padding-block: var(--s-1);
+ padding-inline: var(--s-2);
+}
+
+:is(button, .button).minimal {
+ padding: 0;
+ border: none;
+ background-color: transparent;
+ color: var(--theme);
+ outline: initial;
+}
+
+:is(button, .button).minimal-success {
+ padding: 0;
+ border: none;
+ background-color: transparent;
+ color: var(--theme-success);
+}
+
+:is(button, .button).success {
+ border-color: var(--theme-success);
+ background-color: var(--theme-success);
+ outline-color: var(--theme-success);
+}
+
+:is(button, .button).destructive {
+ border-color: var(--theme-error);
+ background-color: transparent;
+ color: var(--theme-error);
+ outline-color: var(--theme-error);
+}
+
+:is(button, .button).minimal-destructive {
+ padding: 0;
+ border: none;
+ background-color: transparent;
+ color: var(--theme-error);
+ outline-color: var(--theme-error);
+}
+
+:is(button, .button).loading {
+ cursor: not-allowed;
+ opacity: 0.6;
+}
+
+.button-icon {
+ width: 1.25rem;
+ margin-inline-end: var(--s-1-5);
+}
+
+.button-icon.lonely {
+ margin-inline-end: 0;
+}
+
+:is(button, .button).tiny > .button-icon {
+ width: 1rem;
+ margin-inline-end: var(--s-1);
+}
+
+textarea:not(.plain) {
+ padding: var(--s-2-5) var(--s-3);
+ border: 1px solid var(--border);
+ accent-color: var(--theme-secondary);
+ background-color: transparent;
+ border-radius: var(--rounded);
+ color: var(--text);
+ font-size: var(--fonts-sm);
+ outline: none;
+ overflow-wrap: normal;
+ overflow-x: scroll;
+ white-space: pre;
+}
+
+progress {
+ accent-color: var(--theme);
+}
+
+textarea:not(.plain):focus-within {
+ border-color: transparent;
+
+ /* TODO: rectangle on Safari */
+ outline: 2px solid var(--theme);
+}
+
+input:not(.plain) {
+ height: 1rem;
+ padding: var(--s-4) var(--s-3);
+ border: 1px solid var(--border);
+ accent-color: var(--theme-secondary);
+ background-color: transparent;
+ border-radius: var(--rounded);
+ color: var(--text);
+ font-size: var(--fonts-sm);
+ outline: none;
+}
+
+input:user-invalid {
+ border-color: transparent;
+ outline: 2px solid var(--theme-error);
+}
+
+input:not(.plain):focus-within {
+ border-color: transparent;
+
+ /* TODO: rectangle on Safari */
+ outline: 2px solid var(--theme);
+}
+
+input:not(.plain)::placeholder {
+ color: var(--text-lighter);
+ font-size: var(--fonts-xxs);
+ font-weight: var(--semi-bold);
+ letter-spacing: 0.5px;
+}
+
+input:not(.plain).error {
+ border-color: transparent;
+ outline: 2px solid var(--theme-error);
+}
+
+input[type="checkbox"] {
+ width: 16px;
+ height: 16px;
+}
+
+label {
+ display: block;
+ font-size: var(--fonts-xs);
+ font-weight: var(--bold);
+ margin-block-end: var(--label-margin);
+}
+
+details summary {
+ cursor: pointer;
+}
+
+fieldset {
+ border: none;
+ background-color: var(--bg-darker-transparent);
+ border-radius: var(--rounded);
+ font-size: var(--fonts-sm);
+ padding-block-end: var(--s-3);
+ padding-inline: var(--s-3);
+}
+
+legend {
+ background-color: transparent;
+ border-radius: 2px;
+ border-radius: var(--rounded-sm);
+ font-size: var(--fonts-xs);
+ font-weight: var(--bold);
+}
+
+article {
+ padding-inline: var(--s-3);
+ white-space: pre-line;
+}
+
+select {
+ all: unset;
+ width: 90%;
+ border: 1px solid var(--border);
+ background: var(--select-background, var(--bg-lighter));
+
+ /* TODO: Get color from CSS var */
+ background-image: url('data:image/svg+xml;utf8,');
+ background-position-x: 92%;
+ background-position-y: 50%;
+ background-repeat: no-repeat;
+ border-radius: var(--rounded);
+ cursor: pointer;
+ font-size: var(--fonts-sm);
+ font-weight: 500;
+ padding-block: 3.5px;
+ padding-inline: var(--s-3);
+}
+
+select::selection {
+ overflow: hidden;
+ font-weight: bold;
+}
+
+select:focus {
+ outline: 2px solid var(--theme);
+}
+
+hr {
+ border-color: var(--theme-transparent);
+}
+
+abbr:not([title]) {
+ text-decoration: none;
+}
+
+abbr[title] {
+ cursor: help;
+}
+
+dialog {
+ width: min(90%, 24rem);
+ border: 0;
+ margin: auto;
+ background-color: var(--bg);
+ border-radius: var(--rounded);
+}
+
+dialog::backdrop {
+ background: hsla(237deg 98% 1% / 70%);
+}
+
+@supports ((-webkit-backdrop-filter: none) or (backdrop-filter: none)) {
+ dialog::backdrop {
+ -webkit-backdrop-filter: blur(7px) brightness(70%);
+ backdrop-filter: blur(7px) brightness(70%);
+ background-color: transparent;
+ }
+}
+
+dialog[open],
+dialog::backdrop {
+ animation: show 500ms ease;
+}
+
+@keyframes show {
+ 0% {
+ opacity: 0;
+ }
+}
+
.button-text-paragraph {
display: flex;
gap: var(--s-1);
@@ -192,81 +496,3 @@
border-radius: var(--rounded);
padding-inline: var(--s-1-5);
}
-
-/*
- *
- * Utility classes
- *
-*/
-
-.text-sm {
- font-size: var(--fonts-sm);
-}
-
-.text-xs {
- font-size: var(--fonts-xs);
-}
-
-.text-center {
- text-align: center;
-}
-
-.text-lighter {
- color: var(--text-lighter);
-}
-
-.text-error {
- color: var(--theme-error);
-}
-
-.text-success {
- color: var(--theme-success);
-}
-
-.font-semi-bold {
- font-weight: var(--semi-bold);
-}
-
-.w-full {
- width: 100%;
-}
-
-.mt-2 {
- margin-block-start: var(--s-2);
-}
-
-.mt-4 {
- margin-block-start: var(--s-4);
-}
-
-.ml-auto {
- margin-inline-start: auto;
-}
-
-.mx-auto {
- margin: 0 auto;
-}
-
-.hidden {
- display: none;
-}
-
-.invisible {
- visibility: hidden;
-}
-
-.flex {
- display: flex;
-}
-
-.items-center {
- align-items: center;
-}
-
-.justify-center {
- justify-content: center;
-}
-
-.all-unset {
- all: unset;
-}
diff --git a/app/styles/global.css b/app/styles/global.css
deleted file mode 100644
index c3bb87c03..000000000
--- a/app/styles/global.css
+++ /dev/null
@@ -1,408 +0,0 @@
-:root {
- --bg: hsl(202deg 100% 96%);
- --bg-darker: hsl(202deg 90% 90%);
- --bg-lighter: hsl(225deg 100% 88%);
- --bg-lighter-transparent: hsla(225deg 100% 88% / 50%);
- --bg-darker-very-transparent: hsl(202deg 90% 90% / 50%);
- --bg-darker-transparent: hsla(202deg 90% 90% / 65%);
- --bg-badge: #000;
- --badge-text: rgb(255 255 255 / 95%);
- --border: hsl(237deg 100% 86%);
- --button-text: rgb(255 255 255 / 85%);
- --button-text-transparent: rgb(0 0 0 / 65%);
- --text: rgb(0 0 0 / 95%);
- --text-lighter: rgb(75 75 75 / 95%);
- --theme-error: rgb(199 13 6);
- --theme-error-transparent: rgba(199 13 6 / 75%);
- --theme-warning: #c9c900;
- --theme-success: #00a514;
- --theme-success-transparent: #00a51452;
- --theme: hsl(255deg 64% 63%);
- --theme-vibrant: hsl(255deg 100% 81%);
- --theme-transparent: hsl(255deg 66.7% 75% / 40%);
- --theme-very-transparent: hsl(255deg 66.7% 75% / 30%);
- --theme-transparent-vibrant: hsl(255deg 100% 81% / 54%);
- --theme-semi-transparent-vibrant: hsl(255deg 100% 81% / 75%);
- --theme-secondary: hsl(85deg 66.7% 55.3%);
- --rounded: 16px;
- --rounded-sm: 10px;
- --fonts-xl: 1.5rem;
- --fonts-lg: 1.2rem;
- --fonts-md: 1rem;
- --fonts-sm: 0.92rem;
- --fonts-xs: 0.8rem;
- --fonts-xxs: 0.7rem;
- --fonts-xxxs: 0.6rem;
- --fonts-xxxxs: 0.5rem;
- --extra-bold: 700;
- --bold: 600;
- --semi-bold: 500;
- --body: 400;
- --s-1: 0.25rem;
- --s-1-5: 0.375rem;
- --s-2: 0.5rem;
- --s-2-5: 0.625rem;
- --s-3: 0.75rem;
- --s-4: 1rem;
- --s-5: 1.25rem;
- --s-6: 1.5rem;
- --s-7: 1.75rem;
- --s-8: 2rem;
- --s-9: 2.25rem;
- --s-10: 2.5rem;
- --s-11: 2.75rem;
- --s-12: 3rem;
- --s-14: 3.5rem;
- --s-16: 4rem;
- --s-20: 5rem;
- --s-24: 6rem;
- --s-28: 7rem;
- --s-32: 8rem;
- --s-40: 10rem;
- --s-48: 12rem;
- --s-56: 14rem;
- --s-64: 16rem;
- --s-72: 18rem;
- --s-80: 20rem;
- --s-96: 2rem;
- --sparse: 0.4px;
- --label-margin: var(--s-1);
-}
-
-@media (prefers-color-scheme: dark) {
- :root {
- --bg: hsl(237.3deg 42.3% 30.6%);
- --bg-darker: hsl(237.3deg 42.3% 26.6%);
- --bg-lighter: hsl(237.3deg 42.3% 35.6%);
- --bg-lighter-transparent: rgb(64 67 108 / 50%);
- --bg-darker-very-transparent: hsla(237.3deg 42.3% 26.6% / 50%);
- --bg-darker-transparent: hsla(237.3deg 42.3% 26.6% / 90%);
- --bg-badge: #000;
- --border: hsl(237.3deg 42.3% 45.6%);
- --button-text: rgb(0 0 0 / 85%);
- --button-text-transparent: rgb(0 0 0 / 65%);
- --text: rgb(255 255 255 / 95%);
- --text-lighter: rgb(255 255 255 / 55%);
- --theme-error: rgb(219 70 65);
- --theme-error-transparent: rgba(219 70 65 / 75%);
- --theme-warning: #f5f587;
- --theme-success: #a3ffae;
- --theme-success-transparent: #a3ffae52;
- --theme: hsl(255deg 66.7% 75%);
- --theme-vibrant: hsl(255deg 78% 65%);
- --theme-transparent: hsl(255deg 66.7% 75% / 40%);
- --theme-transparent-vibrant: hsl(255deg 78% 65% / 54%);
- --theme-semi-transparent-vibrant: hsl(255deg 78% 65% / 75%);
- --theme-secondary: hsl(85deg 66.7% 55.3%);
- }
-}
-
-/* xs: "(min-width: 480px)",
-sm: "(min-width: 640px)",
-md: "(min-width: 768px)",
-lg: "(min-width: 1024px)",
-xl: "(min-width: 1280px)", */
-
-*,
-*::before,
-*::after {
- box-sizing: border-box;
-}
-
-body {
- width: 100%;
- background-color: var(--bg);
- color: var(--text);
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial,
- sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: antialiased;
- line-height: 1.55;
- overflow-x: hidden;
-}
-
-*:focus:not(:focus-visible) {
- outline: none !important;
-}
-
-a {
- color: var(--theme);
- font-weight: var(--semi-bold);
- text-decoration: none;
-}
-
-:is(button, .button) {
- display: flex;
- width: auto;
- align-items: center;
- justify-content: center;
- border: 2px solid var(--theme);
- appearance: none;
- background: var(--theme);
- border-radius: var(--rounded-sm);
- color: var(--button-text);
- cursor: pointer;
- font-size: var(--fonts-sm);
- font-weight: var(--bold);
- line-height: 1.2;
- outline-offset: 2px;
- padding-block: var(--s-1-5);
- padding-inline: var(--s-2-5);
- user-select: none;
-}
-
-:is(button, .button):focus-visible {
- outline: 2px solid var(--theme);
-}
-
-:is(button, .button):active {
- transform: translateY(1px);
-}
-
-:is(button, .button):disabled {
- cursor: not-allowed;
- opacity: 0.5;
- transform: initial;
-}
-
-:is(button, .button).outlined {
- background-color: transparent;
- color: var(--theme);
-}
-
-:is(button, .button).outlined-success {
- border-color: var(--theme-success);
- background-color: transparent;
- color: var(--theme-success);
-}
-
-:is(button, .button).tiny {
- font-size: var(--fonts-xs);
- padding-block: var(--s-1);
- padding-inline: var(--s-2);
-}
-
-:is(button, .button).minimal {
- padding: 0;
- border: none;
- background-color: transparent;
- color: var(--theme);
- outline: initial;
-}
-
-:is(button, .button).minimal-success {
- padding: 0;
- border: none;
- background-color: transparent;
- color: var(--theme-success);
-}
-
-:is(button, .button).success {
- border-color: var(--theme-success);
- background-color: var(--theme-success);
- outline-color: var(--theme-success);
-}
-
-:is(button, .button).destructive {
- border-color: var(--theme-error);
- background-color: transparent;
- color: var(--theme-error);
- outline-color: var(--theme-error);
-}
-
-:is(button, .button).minimal-destructive {
- padding: 0;
- border: none;
- background-color: transparent;
- color: var(--theme-error);
- outline-color: var(--theme-error);
-}
-
-:is(button, .button).loading {
- cursor: not-allowed;
- opacity: 0.6;
-}
-
-.button-icon {
- width: 1.25rem;
- margin-inline-end: var(--s-1-5);
-}
-
-.button-icon.lonely {
- margin-inline-end: 0;
-}
-
-:is(button, .button).tiny > .button-icon {
- width: 1rem;
- margin-inline-end: var(--s-1);
-}
-
-textarea:not(.plain) {
- padding: var(--s-2-5) var(--s-3);
- border: 1px solid var(--border);
- accent-color: var(--theme-secondary);
- background-color: transparent;
- border-radius: var(--rounded);
- color: var(--text);
- font-size: var(--fonts-sm);
- outline: none;
- overflow-wrap: normal;
- overflow-x: scroll;
- white-space: pre;
-}
-
-progress {
- accent-color: var(--theme);
-}
-
-textarea:not(.plain):focus-within {
- border-color: transparent;
-
- /* TODO: rectangle on Safari */
- outline: 2px solid var(--theme);
-}
-
-input:not(.plain) {
- height: 1rem;
- padding: var(--s-4) var(--s-3);
- border: 1px solid var(--border);
- accent-color: var(--theme-secondary);
- background-color: transparent;
- border-radius: var(--rounded);
- color: var(--text);
- font-size: var(--fonts-sm);
- outline: none;
-}
-
-input:user-invalid {
- border-color: transparent;
- outline: 2px solid var(--theme-error);
-}
-
-input:not(.plain):focus-within {
- border-color: transparent;
-
- /* TODO: rectangle on Safari */
- outline: 2px solid var(--theme);
-}
-
-input:not(.plain)::placeholder {
- color: var(--text-lighter);
- font-size: var(--fonts-xxs);
- font-weight: var(--semi-bold);
- letter-spacing: 0.5px;
-}
-
-input:not(.plain).error {
- border-color: transparent;
- outline: 2px solid var(--theme-error);
-}
-
-input[type="checkbox"] {
- width: 16px;
- height: 16px;
-}
-
-label {
- display: block;
- font-size: var(--fonts-xs);
- font-weight: var(--bold);
- margin-block-end: var(--label-margin);
-}
-
-details summary {
- cursor: pointer;
-}
-
-fieldset {
- border: none;
- background-color: var(--bg-darker-transparent);
- border-radius: var(--rounded);
- font-size: var(--fonts-sm);
- padding-block-end: var(--s-3);
- padding-inline: var(--s-3);
-}
-
-legend {
- background-color: transparent;
- border-radius: 2px;
- border-radius: var(--rounded-sm);
- font-size: var(--fonts-xs);
- font-weight: var(--bold);
-}
-
-article {
- padding-inline: var(--s-3);
- white-space: pre-line;
-}
-
-select {
- all: unset;
- width: 90%;
- border: 1px solid var(--border);
- background: var(--select-background, var(--bg-lighter));
-
- /* TODO: Get color from CSS var */
- background-image: url('data:image/svg+xml;utf8,');
- background-position-x: 92%;
- background-position-y: 50%;
- background-repeat: no-repeat;
- border-radius: var(--rounded);
- cursor: pointer;
- font-size: var(--fonts-sm);
- font-weight: 500;
- padding-block: 3.5px;
- padding-inline: var(--s-3);
-}
-
-select::selection {
- overflow: hidden;
- font-weight: bold;
-}
-
-select:focus {
- outline: 2px solid var(--theme);
-}
-
-hr {
- border-color: var(--theme-transparent);
-}
-
-abbr:not([title]) {
- text-decoration: none;
-}
-
-abbr[title] {
- cursor: help;
-}
-
-dialog {
- width: min(90%, 24rem);
- border: 0;
- margin: auto;
- background-color: var(--bg);
- border-radius: var(--rounded);
-}
-
-dialog::backdrop {
- background: hsla(237deg 98% 1% / 70%);
-}
-
-@supports ((-webkit-backdrop-filter: none) or (backdrop-filter: none)) {
- dialog::backdrop {
- -webkit-backdrop-filter: blur(7px) brightness(70%);
- backdrop-filter: blur(7px) brightness(70%);
- background-color: transparent;
- }
-}
-
-dialog[open],
-dialog::backdrop {
- animation: show 500ms ease;
-}
-
-@keyframes show {
- 0% {
- opacity: 0;
- }
-}
diff --git a/app/styles/utils.css b/app/styles/utils.css
new file mode 100644
index 000000000..7b01cadc6
--- /dev/null
+++ b/app/styles/utils.css
@@ -0,0 +1,71 @@
+.text-sm {
+ font-size: var(--fonts-sm);
+}
+
+.text-xs {
+ font-size: var(--fonts-xs);
+}
+
+.text-center {
+ text-align: center;
+}
+
+.text-lighter {
+ color: var(--text-lighter);
+}
+
+.text-error {
+ color: var(--theme-error);
+}
+
+.text-success {
+ color: var(--theme-success);
+}
+
+.font-semi-bold {
+ font-weight: var(--semi-bold);
+}
+
+.w-full {
+ width: 100%;
+}
+
+.mt-2 {
+ margin-block-start: var(--s-2);
+}
+
+.mt-4 {
+ margin-block-start: var(--s-4);
+}
+
+.ml-auto {
+ margin-inline-start: auto;
+}
+
+.mx-auto {
+ margin: 0 auto;
+}
+
+.hidden {
+ display: none;
+}
+
+.invisible {
+ visibility: hidden;
+}
+
+.flex {
+ display: flex;
+}
+
+.items-center {
+ align-items: center;
+}
+
+.justify-center {
+ justify-content: center;
+}
+
+.all-unset {
+ all: unset;
+}
diff --git a/app/styles/vars.css b/app/styles/vars.css
new file mode 100644
index 000000000..39ed5c414
--- /dev/null
+++ b/app/styles/vars.css
@@ -0,0 +1,104 @@
+:root {
+ --bg: hsl(202deg 100% 96%);
+ --bg-darker: hsl(202deg 90% 90%);
+ --bg-lighter: hsl(225deg 100% 88%);
+ --bg-lighter-transparent: hsla(225deg 100% 88% / 50%);
+ --bg-darker-very-transparent: hsl(202deg 90% 90% / 50%);
+ --bg-darker-transparent: hsla(202deg 90% 90% / 65%);
+ --bg-badge: #000;
+ --badge-text: rgb(255 255 255 / 95%);
+ --border: hsl(237deg 100% 86%);
+ --button-text: rgb(255 255 255 / 85%);
+ --button-text-transparent: rgb(0 0 0 / 65%);
+ --text: rgb(0 0 0 / 95%);
+ --text-lighter: rgb(75 75 75 / 95%);
+ --theme-error: rgb(199 13 6);
+ --theme-error-transparent: rgba(199 13 6 / 75%);
+ --theme-warning: #c9c900;
+ --theme-success: #00a514;
+ --theme-success-transparent: #00a51452;
+ --theme: hsl(255deg 64% 63%);
+ --theme-vibrant: hsl(255deg 100% 81%);
+ --theme-transparent: hsl(255deg 66.7% 75% / 40%);
+ --theme-very-transparent: hsl(255deg 66.7% 75% / 30%);
+ --theme-transparent-vibrant: hsl(255deg 100% 81% / 54%);
+ --theme-semi-transparent-vibrant: hsl(255deg 100% 81% / 75%);
+ --theme-secondary: hsl(85deg 66.7% 55.3%);
+ --rounded: 16px;
+ --rounded-sm: 10px;
+ --fonts-xl: 1.5rem;
+ --fonts-lg: 1.2rem;
+ --fonts-md: 1rem;
+ --fonts-sm: 0.92rem;
+ --fonts-xs: 0.8rem;
+ --fonts-xxs: 0.7rem;
+ --fonts-xxxs: 0.6rem;
+ --fonts-xxxxs: 0.5rem;
+ --extra-bold: 700;
+ --bold: 600;
+ --semi-bold: 500;
+ --body: 400;
+ --s-1: 0.25rem;
+ --s-1-5: 0.375rem;
+ --s-2: 0.5rem;
+ --s-2-5: 0.625rem;
+ --s-3: 0.75rem;
+ --s-4: 1rem;
+ --s-5: 1.25rem;
+ --s-6: 1.5rem;
+ --s-7: 1.75rem;
+ --s-8: 2rem;
+ --s-9: 2.25rem;
+ --s-10: 2.5rem;
+ --s-11: 2.75rem;
+ --s-12: 3rem;
+ --s-14: 3.5rem;
+ --s-16: 4rem;
+ --s-20: 5rem;
+ --s-24: 6rem;
+ --s-28: 7rem;
+ --s-32: 8rem;
+ --s-40: 10rem;
+ --s-48: 12rem;
+ --s-56: 14rem;
+ --s-64: 16rem;
+ --s-72: 18rem;
+ --s-80: 20rem;
+ --s-96: 2rem;
+ --sparse: 0.4px;
+ --label-margin: var(--s-1);
+}
+
+@media (prefers-color-scheme: dark) {
+ :root {
+ --bg: hsl(237.3deg 42.3% 30.6%);
+ --bg-darker: hsl(237.3deg 42.3% 26.6%);
+ --bg-lighter: hsl(237.3deg 42.3% 35.6%);
+ --bg-lighter-transparent: rgb(64 67 108 / 50%);
+ --bg-darker-very-transparent: hsla(237.3deg 42.3% 26.6% / 50%);
+ --bg-darker-transparent: hsla(237.3deg 42.3% 26.6% / 90%);
+ --bg-badge: #000;
+ --border: hsl(237.3deg 42.3% 45.6%);
+ --button-text: rgb(0 0 0 / 85%);
+ --button-text-transparent: rgb(0 0 0 / 65%);
+ --text: rgb(255 255 255 / 95%);
+ --text-lighter: rgb(255 255 255 / 55%);
+ --theme-error: rgb(219 70 65);
+ --theme-error-transparent: rgba(219 70 65 / 75%);
+ --theme-warning: #f5f587;
+ --theme-success: #a3ffae;
+ --theme-success-transparent: #a3ffae52;
+ --theme: hsl(255deg 66.7% 75%);
+ --theme-vibrant: hsl(255deg 78% 65%);
+ --theme-transparent: hsl(255deg 66.7% 75% / 40%);
+ --theme-transparent-vibrant: hsl(255deg 78% 65% / 54%);
+ --theme-semi-transparent-vibrant: hsl(255deg 78% 65% / 75%);
+ --theme-secondary: hsl(85deg 66.7% 55.3%);
+ }
+}
+
+/* xs: "(min-width: 480px)",
+ sm: "(min-width: 640px)",
+ md: "(min-width: 768px)",
+ lg: "(min-width: 1024px)",
+ xl: "(min-width: 1280px)", */