573 lines
13 KiB
SCSS
573 lines
13 KiB
SCSS
$breakpoint-sm: 40rem;
|
|
$breakpoint-md: 48rem;
|
|
$breakpoint-lg: 64rem;
|
|
$breakpoint-xl: 80rem;
|
|
$breakpoint-2xl: 96rem;
|
|
|
|
$breakpoint-mobile: $breakpoint-md;
|
|
$mobile-navigation-height: 4rem;
|
|
|
|
:root {
|
|
--color-neutral-50: #f2f0f5;
|
|
--color-neutral-100: #d1c6e0;
|
|
--color-neutral-200: #b2a0cb;
|
|
--color-neutral-300: #957eb5;
|
|
--color-neutral-400: #7a60a0;
|
|
--color-neutral-500: #61468b;
|
|
--color-neutral-600: #4b3176;
|
|
--color-neutral-700: #371f60;
|
|
--color-neutral-800: #26114b;
|
|
--color-neutral-900: #180736;
|
|
--color-neutral-950: #0c011f;
|
|
--color-argon-50: #e1abc9;
|
|
--color-argon-100: #da87b5;
|
|
--color-argon-200: #d464a1;
|
|
--color-argon-300: #cd448f;
|
|
--color-argon-400: #c6257d;
|
|
--color-argon-500: #b0166f;
|
|
--color-argon-600: #9a0a61;
|
|
--color-argon-700: #830755;
|
|
--color-argon-800: #6d0449;
|
|
--color-argon-900: #56023c;
|
|
--color-argon-950: #3f012d;
|
|
--color-krypton-50: #b2d9ea;
|
|
--color-krypton-100: #8cc9e4;
|
|
--color-krypton-200: #69bade;
|
|
--color-krypton-300: #4badd8;
|
|
--color-krypton-400: #2493c2;
|
|
--color-krypton-500: #167fac;
|
|
--color-krypton-600: #0a6c96;
|
|
--color-krypton-700: #075c81;
|
|
--color-krypton-800: #044c6b;
|
|
--color-krypton-900: #023c55;
|
|
--color-krypton-950: #012c3f;
|
|
--color-green-50: #c0f49a;
|
|
--color-green-100: #a7e57a;
|
|
--color-green-200: #8fd75d;
|
|
--color-green-300: #7ac843;
|
|
--color-green-400: #66b92d;
|
|
--color-green-500: #54aa18;
|
|
--color-green-600: #47990f;
|
|
--color-green-700: #397e0a;
|
|
--color-green-800: #2b6206;
|
|
--color-green-900: #1f4703;
|
|
--color-green-950: #122b01;
|
|
--color-red-50: #e6afaf;
|
|
--color-red-100: #dd9090;
|
|
--color-red-200: #d57272;
|
|
--color-red-300: #cc5757;
|
|
--color-red-400: #c33d3d;
|
|
--color-red-500: #bb2626;
|
|
--color-red-600: #b21010;
|
|
--color-red-700: #950808;
|
|
--color-red-800: #780404;
|
|
--color-red-900: #5c0202;
|
|
--color-red-950: #3f0101;
|
|
|
|
--color-white: #ffffff;
|
|
|
|
--color-dark-foreground: var(--color-neutral-50);
|
|
--color-dark-background: var(--color-neutral-950);
|
|
--color-dark-shade-1: var(--color-neutral-900);
|
|
--color-dark-shade-2: var(--color-neutral-800);
|
|
--color-dark-shade-3: var(--color-neutral-700);
|
|
--color-dark-shade-4: var(--color-neutral-600);
|
|
--color-dark-text-1: var(--color-neutral-200);
|
|
--color-dark-text-2: var(--color-neutral-300);
|
|
--color-dark-text-3: var(--color-neutral-400);
|
|
--color-dark-text-4: var(--color-neutral-500);
|
|
--color-dark-primary: var(--color-argon-400);
|
|
--color-dark-secondary: var(--color-krypton-300);
|
|
--color-dark-error: var(--color-red-500);
|
|
--color-dark-success: var(--color-green-500);
|
|
--color-dark-accent-1: #60a5f9;
|
|
--color-dark-accent-2: #d381f7;
|
|
--color-dark-accent-3: #ff7975;
|
|
|
|
--color-light-foreground: var(--color-neutral-950);
|
|
--color-light-background: var(--color-neutral-50);
|
|
--color-light-shade-1: var(--color-neutral-100);
|
|
--color-light-shade-2: var(--color-neutral-200);
|
|
--color-light-shade-3: var(--color-neutral-300);
|
|
--color-light-shade-4: var(--color-neutral-400);
|
|
--color-light-text-1: var(--color-neutral-800);
|
|
--color-light-text-2: var(--color-neutral-700);
|
|
--color-light-text-3: var(--color-neutral-600);
|
|
--color-light-text-4: var(--color-neutral-500);
|
|
--color-light-primary: var(--color-argon-600);
|
|
--color-light-secondary: var(--color-krypton-500);
|
|
--color-light-error: var(--color-red-600);
|
|
--color-light-success: var(--color-green-600);
|
|
--color-light-accent-1: #303ec0;
|
|
--color-light-accent-2: #6c366c;
|
|
--color-light-accent-3: #932f0a;
|
|
|
|
--color-cmyk-primary: var(--color-dark-primary);
|
|
--color-cmyk-secondary: var(--color-dark-secondary);
|
|
|
|
--line-height-loose: 1.4;
|
|
--line-height-relaxed: 1.3;
|
|
--line-height-base: 1.2;
|
|
--line-height-snug: 1.1;
|
|
--line-height-tight: 1;
|
|
|
|
--text-xs: 0.75rem;
|
|
--text-sm: 0.875rem;
|
|
--text-base: 1rem;
|
|
--text-lg: 1.125rem;
|
|
--text-xl: 1.25rem;
|
|
--text-2xl: 1.5rem;
|
|
--text-3xl: 1.875rem;
|
|
--text-4xl: 2.25rem;
|
|
--text-5xl: 3rem;
|
|
--text-6xl: 3.75rem;
|
|
--text-7xl: 4.5rem;
|
|
|
|
--container-3xs: 16rem;
|
|
--container-2xs: 18rem;
|
|
--container-xs: 20rem;
|
|
--container-sm: 24rem;
|
|
--container-md: 28rem;
|
|
--container-lg: 32rem;
|
|
--container-xl: 36rem;
|
|
--container-2xl: 42rem;
|
|
--container-3xl: 48rem;
|
|
--container-4xl: 56rem;
|
|
--container-5xl: 64rem;
|
|
--container-6xl: 72rem;
|
|
--container-7xl: 80rem;
|
|
}
|
|
|
|
@mixin theme_dark() {
|
|
--color-foreground: var(--color-dark-foreground);
|
|
--color-background: var(--color-dark-background);
|
|
--color-shade-1: var(--color-dark-shade-1);
|
|
--color-shade-2: var(--color-dark-shade-2);
|
|
--color-shade-3: var(--color-dark-shade-3);
|
|
--color-shade-4: var(--color-dark-shade-4);
|
|
--color-text-1: var(--color-dark-text-1);
|
|
--color-text-2: var(--color-dark-text-2);
|
|
--color-text-3: var(--color-dark-text-3);
|
|
--color-text-4: var(--color-dark-text-4);
|
|
--color-primary: var(--color-dark-primary);
|
|
--color-secondary: var(--color-dark-secondary);
|
|
--color-error: var(--color-dark-error);
|
|
--color-success: var(--color-dark-success);
|
|
--color-accent-1: var(--color-dark-accent-1);
|
|
--color-accent-2: var(--color-dark-accent-2);
|
|
--color-accent-3: var(--color-dark-accent-3);
|
|
|
|
--filter-glow-primary: drop-shadow(0 0 0.0625em var(--color-white))
|
|
drop-shadow(0 0 0.125em var(--color-primary))
|
|
drop-shadow(0 0 0.25em var(--color-primary));
|
|
--filter-glow-secondary: drop-shadow(0 0 0.0625em var(--color-white))
|
|
drop-shadow(0 0 0.125em var(--color-secondary))
|
|
drop-shadow(0 0 0.25em var(--color-secondary));
|
|
--color-glow-primary: var(--color-white);
|
|
--color-glow-secondary: var(--color-white);
|
|
--transition-glow:
|
|
filter 150ms cubic-bezier(0, 1.7, 1, -0.3) 50ms,
|
|
border-color 150ms cubic-bezier(0, 1.7, 1, -0.3) 50ms;
|
|
|
|
--text-glow-primary: drop-shadow(0 0 0.03125em var(--color-white))
|
|
drop-shadow(0 0 0.0625em var(--color-primary))
|
|
drop-shadow(0 0 0.125em var(--color-primary));
|
|
--text-glow-secondary: drop-shadow(0 0 0.03125em var(--color-white))
|
|
drop-shadow(0 0 0.0625em var(--color-secondary))
|
|
drop-shadow(0 0 0.125em var(--color-secondary));
|
|
|
|
.light-only {
|
|
display: none;
|
|
}
|
|
|
|
.dark-only {
|
|
display: initial;
|
|
}
|
|
}
|
|
|
|
@mixin theme_light() {
|
|
--color-foreground: var(--color-light-foreground);
|
|
--color-background: var(--color-light-background);
|
|
--color-shade-1: var(--color-light-shade-1);
|
|
--color-shade-2: var(--color-light-shade-2);
|
|
--color-shade-3: var(--color-light-shade-3);
|
|
--color-shade-4: var(--color-light-shade-4);
|
|
--color-text-1: var(--color-light-text-1);
|
|
--color-text-2: var(--color-light-text-2);
|
|
--color-text-3: var(--color-light-text-3);
|
|
--color-text-4: var(--color-light-text-4);
|
|
--color-primary: var(--color-light-primary);
|
|
--color-secondary: var(--color-light-secondary);
|
|
--color-error: var(--color-light-error);
|
|
--color-success: var(--color-light-success);
|
|
--color-accent-1: var(--color-light-accent-1);
|
|
--color-accent-2: var(--color-light-accent-2);
|
|
--color-accent-3: var(--color-light-accent-3);
|
|
|
|
--filter-glow-primary: drop-shadow(0 0 0.0625em var(--color-argon-950));
|
|
--filter-glow-secondary: drop-shadow(0 0 0.0625em var(--color-krypton-950));
|
|
--color-glow-primary: var(--color-argon-800);
|
|
--color-glow-secondary: var(--color-krypton-800);
|
|
--transition-glow:
|
|
filter 150ms cubic-bezier(0, 2, 1, -0.7) 50ms,
|
|
border-color 150ms cubic-bezier(0, 2, 1, -0.7) 50ms;
|
|
|
|
--text-glow-primary: drop-shadow(0 0 0.03125em var(--color-argon-950));
|
|
--text-glow-secondary: drop-shadow(0 0 0.03125em var(--color-krypton-950));
|
|
|
|
.light-only {
|
|
display: initial;
|
|
}
|
|
|
|
.dark-only {
|
|
display: none;
|
|
}
|
|
}
|
|
|
|
.dark {
|
|
@include theme_dark();
|
|
}
|
|
|
|
.light {
|
|
@include theme_light();
|
|
}
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
html {
|
|
@include theme_dark();
|
|
|
|
&:has(#themeLight:checked) {
|
|
@include theme_light();
|
|
}
|
|
}
|
|
#themeToggleDark {
|
|
display: none;
|
|
}
|
|
}
|
|
|
|
@media (prefers-color-scheme: light) {
|
|
html {
|
|
@include theme_light();
|
|
|
|
&:has(#themeDark:checked) {
|
|
@include theme_dark();
|
|
}
|
|
}
|
|
#themeToggleLight {
|
|
display: none;
|
|
}
|
|
}
|
|
|
|
// fonts
|
|
|
|
@font-face {
|
|
font-family: "Athiti";
|
|
font-weight: 700;
|
|
src: url("../font/athiti/Athiti-Bold.woff2") format("woff2");
|
|
}
|
|
|
|
@font-face {
|
|
font-family: "Athiti";
|
|
font-weight: 600;
|
|
src: url("../font/athiti/Athiti-SemiBold.woff2") format("woff2");
|
|
}
|
|
|
|
@font-face {
|
|
font-family: "Athiti";
|
|
font-weight: 500;
|
|
src: url("../font/athiti/Athiti-Medium.woff2") format("woff2");
|
|
}
|
|
|
|
@font-face {
|
|
font-family: "Athiti";
|
|
font-weight: 400;
|
|
src: url("../font/athiti/Athiti-Regular.woff2") format("woff2");
|
|
}
|
|
|
|
@font-face {
|
|
font-family: "Athiti";
|
|
font-weight: 300;
|
|
src: url("../font/athiti/Athiti-Light.woff2") format("woff2");
|
|
}
|
|
|
|
@font-face {
|
|
font-family: "Athiti";
|
|
font-weight: 200;
|
|
src: url("../font/athiti/Athiti-ExtraLight.woff2") format("woff2");
|
|
}
|
|
|
|
@font-face {
|
|
font-family: "Departure Mono";
|
|
src: url("../font/departuremono/DepartureMono-Regular.woff2") format("woff2");
|
|
}
|
|
|
|
@font-face {
|
|
font-family: "Argon Glow";
|
|
font-weight: 100;
|
|
src: url("../font/argonglow/ArgonGlow-Thin.woff2") format("woff2");
|
|
}
|
|
|
|
@font-face {
|
|
font-family: "Argon Glow";
|
|
font-weight: 200;
|
|
src: url("../font/argonglow/ArgonGlow-ExtraLight.woff2") format("woff2");
|
|
}
|
|
|
|
@font-face {
|
|
font-family: "Argon Glow";
|
|
font-weight: 300;
|
|
src: url("../font/argonglow/ArgonGlow-Light.woff2") format("woff2");
|
|
}
|
|
|
|
@font-face {
|
|
font-family: "Argon Glow";
|
|
font-weight: 400;
|
|
src: url("../font/argonglow/ArgonGlow-Regular.woff2") format("woff2");
|
|
}
|
|
|
|
@font-face {
|
|
font-family: "Argon Glow";
|
|
font-weight: 500;
|
|
src: url("../font/argonglow/ArgonGlow-Medium.woff2") format("woff2");
|
|
}
|
|
|
|
@font-face {
|
|
font-family: "Argon Glow";
|
|
font-weight: 600;
|
|
src: url("../font/argonglow/ArgonGlow-SemiBold.woff2") format("woff2");
|
|
}
|
|
|
|
@font-face {
|
|
font-family: "Argon Glow";
|
|
font-weight: 700;
|
|
src: url("../font/argonglow/ArgonGlow-Bold.woff2") format("woff2");
|
|
}
|
|
|
|
@font-face {
|
|
font-family: "Argon Glow";
|
|
src: url("../font/argonglow/ArgonGlow-VariableVF.woff2") format("woff2");
|
|
font-weight: 100 900;
|
|
}
|
|
|
|
// Styling of components begins here
|
|
|
|
:root {
|
|
font-size: 1rem;
|
|
}
|
|
|
|
body {
|
|
background-color: var(--color-background);
|
|
color: var(--color-foreground);
|
|
font-family: "Athiti", ui-sans, sans-serif;
|
|
line-height: var(--line-height-base);
|
|
}
|
|
|
|
.main-title,
|
|
h1,
|
|
.h1,
|
|
h2,
|
|
.h2,
|
|
h3,
|
|
.h3,
|
|
h4,
|
|
.h4,
|
|
h5,
|
|
.h5,
|
|
h6,
|
|
.h6 {
|
|
font-family: "Argon Glow", ui-sans, sans-serif;
|
|
font-weight: 400;
|
|
margin: 1rem 0;
|
|
}
|
|
|
|
.main-title {
|
|
font-size: var(--text-7xl);
|
|
line-height: var(--line-height-base);
|
|
}
|
|
|
|
h1,
|
|
.h1 {
|
|
font-size: var(--text-5xl);
|
|
line-height: var(--line-height-base);
|
|
}
|
|
|
|
h2,
|
|
.h2 {
|
|
font-size: var(--text-4xl);
|
|
line-height: var(--line-height-base);
|
|
}
|
|
|
|
h3,
|
|
.h3 {
|
|
font-size: var(--text-3xl);
|
|
line-height: var(--line-height-base);
|
|
}
|
|
|
|
h4,
|
|
.h4 {
|
|
font-size: var(--text-2xl);
|
|
line-height: var(--line-height-loose);
|
|
}
|
|
|
|
h5,
|
|
.h5 {
|
|
font-size: var(--text-xl);
|
|
line-height: var(--line-height-loose);
|
|
}
|
|
|
|
h6,
|
|
.h6 {
|
|
font-size: var(--text-lg);
|
|
line-height: var(--line-height-loose);
|
|
}
|
|
|
|
pre {
|
|
font-family: "Departure Mono", ui-monospace, monospace;
|
|
font-size: 0.8em;
|
|
display: block;
|
|
padding: 1rem;
|
|
border-radius: 1rem;
|
|
border: solid 0.3em var(--color-shade-2);
|
|
|
|
code {
|
|
background-color: initial;
|
|
border: initial;
|
|
border-radius: initial;
|
|
padding: initial;
|
|
font-size: inherit;
|
|
}
|
|
}
|
|
|
|
code,
|
|
.code {
|
|
font-family: "Departure Mono", ui-monospace, monospace;
|
|
font-size: 0.8em;
|
|
border: solid 0.15em var(--color-shade-2);
|
|
border-radius: 0.2em;
|
|
padding: 0 0.2em;
|
|
}
|
|
|
|
pre span,
|
|
code span,
|
|
.code span {
|
|
&.comment {
|
|
color: var(--color-text-4);
|
|
font-style: italic;
|
|
}
|
|
|
|
&.neutral {
|
|
color: var(--color-text-2);
|
|
}
|
|
|
|
&.identifier {
|
|
color: var(--color-primary);
|
|
}
|
|
|
|
&.function {
|
|
color: var(--color-accent-1);
|
|
font-style: italic;
|
|
}
|
|
|
|
&.keyword {
|
|
color: var(--color-accent-2);
|
|
}
|
|
|
|
&.number {
|
|
color: var(--color-accent-3);
|
|
}
|
|
|
|
&.string {
|
|
color: var(--color-accent-3);
|
|
font-style: italic;
|
|
}
|
|
}
|
|
|
|
table {
|
|
width: fit-content;
|
|
border-collapse: collapse;
|
|
|
|
th,
|
|
td {
|
|
padding: 0.25rem 0.5rem;
|
|
border: solid 0.1em var(--color-shade-4);
|
|
}
|
|
|
|
tr th {
|
|
text-align: left;
|
|
background-color: var(--color-shade-1);
|
|
}
|
|
|
|
thead {
|
|
position: sticky;
|
|
top: $mobile-navigation-height;
|
|
z-index: 10;
|
|
|
|
@media (min-width: $breakpoint-mobile) {
|
|
top: 0;
|
|
}
|
|
|
|
tr > th {
|
|
outline-width: 0.1em;
|
|
outline-style: solid;
|
|
outline-offset: -0.05em;
|
|
outline-color: var(--color-shade-4);
|
|
}
|
|
}
|
|
|
|
&.row-hover {
|
|
tbody tr:hover {
|
|
th {
|
|
background-color: var(--color-shade-3);
|
|
}
|
|
|
|
td {
|
|
background-color: var(--color-shade-2);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
a {
|
|
color: var(--color-accent-1);
|
|
text-decoration: underline;
|
|
|
|
&:hover,
|
|
&:active,
|
|
&:focus {
|
|
color: var(--color-accent-3);
|
|
text-decoration: none;
|
|
}
|
|
|
|
&:visited {
|
|
color: var(--color-accent-2);
|
|
text-decoration: underline;
|
|
|
|
&:hover,
|
|
&:active,
|
|
&:focus {
|
|
color: var(--color-accent-3);
|
|
text-decoration: none;
|
|
}
|
|
}
|
|
}
|
|
|
|
figure {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
|
|
img {
|
|
width: 100%;
|
|
max-height: 30vh;
|
|
object-fit: contain;
|
|
object-position: center;
|
|
}
|
|
}
|
|
|
|
img {
|
|
width: 80%;
|
|
max-height: 30vh;
|
|
object-fit: contain;
|
|
object-position: center;
|
|
margin: 0 auto;
|
|
}
|