<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 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 */

    :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: #1b1b1b;
            --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: #2b2b2b;

            --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: 'Roboto Flex', 'Lato', sans-serif;
            --font-mono: 'IBM Plex 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>