Files
pages/src/routes/+layout.svelte
2026-01-21 11:05:03 +01:00

439 lines
12 KiB
Svelte
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<script>
import Header from "$lib/header.svelte";
import Footer from "$lib/footer.svelte";
let { children } = $props();
</script>
<div class="waters"></div>
<div class="all-content-container">
<Header />
{@render children()}
<Footer />
</div>
<style>
/* #region Old Fonts */
/* Roboto Flex */
@font-face {
font-family: "Roboto Flex";
src: url("/fonts/roboto-flex/flex.ttf");
}
/* Space Mono */
@font-face {
font-family: "Space Mono";
src: url("/fonts/space-mono/regular.ttf");
}
@font-face {
font-family: "Space Mono";
src: url("/fonts/space-mono/italic.ttf");
font-style: italic;
}
@font-face {
font-family: "Space Mono";
src: url("/fonts/space-mono/bold.ttf");
font-weight: bold;
}
@font-face {
font-family: "Space Mono";
src: url("/fonts/space-mono/bolditalic.ttf");
font-style: italic;
font-weight: bold;
}
/* IBM Plex Mono */
@font-face {
font-family: "IBM Plex Mono";
src: url("/fonts/ibm-plex-mono/medium.ttf");
font-weight: 500;
}
/* #endregion */
/* #region New Fonts */
/* Bai Jamjuree. wght: 200-700 */
@font-face {
font-family: "Bai Jamjuree";
src: url("/fonts/bai-jamjuree/extralight.ttf");
font-weight: 200;
}
@font-face {
font-family: "Bai Jamjuree";
src: url("/fonts/bai-jamjuree/extralight-italic.ttf");
font-weight: 200;
font-style: italic;
}
@font-face {
font-family: "Bai Jamjuree";
src: url("/fonts/bai-jamjuree/light.ttf");
font-weight: 300;
}
@font-face {
font-family: "Bai Jamjuree";
src: url("/fonts/bai-jamjuree/light-italic.ttf");
font-weight: 300;
font-style: italic;
}
@font-face {
font-family: "Bai Jamjuree";
src: url("/fonts/bai-jamjuree/regular.ttf");
font-weight: 400;
}
@font-face {
font-family: "Bai Jamjuree";
src: url("/fonts/bai-jamjuree/italic.ttf");
font-weight: 400;
font-style: italic;
}
@font-face {
font-family: "Bai Jamjuree";
src: url("/fonts/bai-jamjuree/medium.ttf");
font-weight: 500;
}
@font-face {
font-family: "Bai Jamjuree";
src: url("/fonts/bai-jamjuree/medium-italic.ttf");
font-weight: 500;
font-style: italic;
}
@font-face {
font-family: "Bai Jamjuree";
src: url("/fonts/bai-jamjuree/semibold.ttf");
font-weight: 600;
}
@font-face {
font-family: "Bai Jamjuree";
src: url("/fonts/bai-jamjuree/semibold-italic.ttf");
font-weight: 600;
font-style: italic;
}
@font-face {
font-family: "Bai Jamjuree";
src: url("/fonts/bai-jamjuree/bold.ttf");
font-weight: bold;
}
@font-face {
font-family: "Bai Jamjuree";
src: url("/fonts/bai-jamjuree/bold-italic.ttf");
font-weight: bold;
font-style: italic;
}
/* Kode Mono. wght: 400-700 */
@font-face {
font-family: "Kode Mono";
src: url("/fonts/kode-mono/variable-wght.ttf");
font-weight: 400 700;
font-style: normal;
}
/* #endregion */
:global {
:root {
--color-text: #d0d0d0;
--color-text-img: invert(98%) sepia(1%) saturate(4643%) hue-rotate(297deg) brightness(115%) contrast(76%);
--color-text-dark: #1e1e1e;
--color-highlight: #51B86B;
--color-header: color-mix(in srgb, var(--color-highlight) 80%, black);
--color-header-highlight: color-mix(in srgb, #6d1e26 80%, transparent);
--color-background: #111111;
--color-background-highlight: color-mix(in srgb, var(--color-highlight) 10%, transparent);
--color-background-highlight-hover: color-mix(in srgb, var(--color-highlight) 60%, transparent);
--color-waters: #242424;
--notch-size: 32px;
--notch-size-small: 16px;
--color-link-unvisited: #c2e8ff;
--color-link-visited: #ffd7f0;
--color-link-hovered: #ffdad5;
/* --font-title: 'Roboto Flex'; */
--font-sans-serif: 'Bai Jamjuree', sans-serif;
--font-mono: 'Kode Mono', monospace;
--font-stylised: 'Space Mono', monospace;
--page-width: 1200px;
--content-width: 1000px;
--screen-width-mobile: 800px;
--margin-content-side: 24px;
}
html {
scroll-behavior: smooth;
position: relative;
min-height: 100%;
}
body {
font-family: var(--font-sans-serif);
font-size: 1.2rem;
color: var(--color-text); /* text colour */
margin: 0;
background-color: var(--color-background);
}
.all-content-container {
display: flex;
flex-direction: column;
height: 100vh;
/* max-width: 100%; */
}
.waters {
position: fixed;
z-index: -99;
top: 0;
left: 0;
height: 100%;
width: 100%;
background-color: var(--color-waters);
mask-image: url('/bremen-waters-white.svg');
mask-position: center;
background-position: center;
background-attachment: fixed;
}
p, span, li, pre, a {
color: var(--color-text);
font-size: 1.1rem;
line-height: 1.6rem;
font-weight: 400;
}
ul {
padding: 0;
}
li::before {
content: "";
font-weight: 900;
color: var(--color-highlight);
padding-right: 8px;
}
li {
display: flex;
padding-left: 0;
margin-top: 4px;
margin-bottom: 4px;
transition: background-color 0.2s ease-in-out;
padding: 2px 12px;
}
li a {
display: inline;
}
h1 {
font-size: 4.0rem;
line-height: 4.0rem;
}
h2 {
font-size: 2.5rem;
line-height: 2.5rem;
}
h2::before {
letter-spacing: -0.5rem;
content: ' ';
margin-right: 15px;
}
h3 {
font-size: 2.0rem;
line-height: 2.0rem;
}
h3::before {
letter-spacing: -0.3rem;
content: ' ';
margin-right: 10px;
}
h4, h5, h6 {
font-size: 1.7rem;
line-height: 1.7rem;
}
h4::before {
letter-spacing: -0.26rem;
content: ' ';
margin-right: 6px;
}
h1, h2, h3, h4, h5, h6 {
font-weight: 870;
font-family: var(--font-sans-serif);
color: var(--color-highlight);
margin-top: 12px;
margin-bottom: 8px;
width: fit-content;
}
h1, h2, h3, h4, h5, h6, .wide-font {
font-variation-settings:
"wdth" 151, /* width */
"XTRA" 560, /* counter width */
"YTUC" 662, /* uppercase height */
"YTAS" 700, /* ascender height */
"YOPQ" 69, /* thin stroke */
"YTFI" 788 /* figure height */
;
}
code, .code-block {
font-family: var(--font-mono);
font-size: 0.8em;
font-weight: 500;
background-color: var(--color-background-highlight);
/* color: var(--color-background); */
border-radius: 8px;
padding-left: 6px;
padding-right: 6px;
}
img, video {
width: 80%;
margin-left: auto;
margin-right: auto;
display: flex;
}
.horizontally-centre-aligned {
width: 80%;
display: flex;
justify-content: center;
align-items: center;
margin-left: auto;
margin-right: auto;
}
.inline-img-left {
float: left;
max-width: 24%;
margin: 0 24px 24px 0;
}
.inline-img-right {
float: right;
max-width: 24%;
margin: 0 0 24px 24px;
}
a:link {
color: var(--color-link-unvisited);
text-decoration-style: dashed;
}
/* visited link */
a:visited {
color: var(--color-link-visited);
}
/* mouse over link */
a:hover {
color: var(--color-link-hovered);
}
.notched {
clip-path: polygon(
0% var(--notch-size),
var(--notch-size) 0%,
calc(100% - var(--notch-size)) 0%,
100% var(--notch-size),
100% calc(100% - var(--notch-size)),
calc(100% - var(--notch-size)) 100%,
var(--notch-size) 100%,
0% calc(100% - var(--notch-size))
);
}
.notched-small {
clip-path: polygon(
0% var(--notch-size-small),
var(--notch-size-small) 0%,
calc(100% - var(--notch-size-small)) 0%,
100% var(--notch-size-small),
100% calc(100% - var(--notch-size-small)),
calc(100% - var(--notch-size-small)) 100%,
var(--notch-size-small) 100%,
0% calc(100% - var(--notch-size-small))
);
}
.project-subtitle {
color: var(--color-highlight);
font-weight: 700;
font-style: italic;
margin-top: 0;
font-family: var(--font-mono);
}
.project-banner-container {
position: relative;
width: 80%;
margin-left: auto;
margin-right: auto;
display: flex;
}
.project-banner {
margin: 0; /* reset left/right margins */
width: 100%;
}
.project-icon {
float: left;
margin: 16px 16px 16px 0;
width: 20%;
}
.project-date {
font-size: 1rem;
font-weight: 700;
line-height: 1rem;
width: fit-content;
margin: 0;
padding: 0;
color: var(--color-text-dark);
background-color: var(--color-highlight);
font-family: var(--font-stylised);
padding: 4px;
}
.project-date-embed {
position: absolute;
left: 0;
bottom: 0;
}
.pixelated-img {
image-rendering: pixelated;
}
@media screen and (max-width: 800px) {
h1 {
font-size: 2.3rem;
line-height: 2.4rem;
}
h2 {
font-size: 1.8rem;
line-height: 1.8rem;
}
h3 {
font-size: 1.6rem;
line-height: 1.6rem;
}
h4, h5, h6 {
font-size: 1.4rem;
line-height: 1.4rem;
}
/* p, span, li, pre, a {
} */
}
}
</style>