/* #region Fonts */
@font-face {
    font-family: 'Public Sans';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url(https://cdn.mernacher.at/fonts/public-sans/variable/PublicSans[wght].ttf) format("truetype");
    /* Please see: https://github.com/uswds/public-sans */
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
    font-family: 'Work Sans';
    font-style: normal;
    font-weight: 100 1000;
    font-stretch: 0% 200%;
    src: url(https://cdn.mernacher.at/fonts/work-sans/variable/WorkSans[wght].ttf) format("truetype");
    /* Please see: https://github.com/weiweihuanghuang/Work-Sans/ */
}

@font-face {
    font-family: 'JetbrainsMono';
    font-style: normal;
    font-weight: 100 1000;
    font-stretch: 0% 200%;
    src: url(https://cdn.mernacher.at/fonts/jetbrains-mono/fonts/variable/JetBrainsMono[wght].ttf) format("truetype");
    /* Please see: https://github.com/JetBrains/JetBrainsMono/ */
}

/* #endregion */

/* #region Common */
:root {
    --primary: 29, 62, 94;
    --primary-2: 32, 136, 227;
    --white: 255, 255, 255;

    --secondary: 112, 153, 65;
    --secondary-1: 119, 192, 36;
}

html {
    font-family: 'Public Sans';
    font-weight: 400;
    font-size: 1.25rem;
}

body {
    margin: 0;
    padding: 0;

    background-color: black;
}

h1 {
    /* font-family: 'Work Sans'; */
    font-weight: 700;
    font-size: 2rem;

    margin-bottom: 0;
}

h2 {
    /* font-family: 'Work Sans'; */
    font-weight: 700;
    font-size: 1.5rem;

    margin-bottom: 0;
}

h3 {
    font-family: 'Work Sans';
    font-weight: 700;
    font-size: 1rem;

    margin-bottom: 0;
}

code {
    font-family: "JetbrainsMono";
    font-weight: 400;
    font-size: 1.5rem;
}

.code {
    font-family: "JetbrainsMono";
    font-weight: 400;
}

p {
    margin-block-start: 0;
    margin-block-end: 0;
}

.d-flex {
    display: flex;
}

.d-none {
    display: none;
}

.flex-space-around {
    justify-content: space-around;
}

.flex-space-between {
    justify-content: space-between;
}

.flex-space-evenly {
    justify-content: space-evenly;
}

.flex-row {
    flex-direction: row;
}

.flex-column {
    flex-direction: column;
}

.allow-overflow-y {
    overflow-y: auto;
}

.vertical-divider {
    border-left: rgba(255, 255, 255, 1) 3px solid;
    margin-left: 5px;
    margin-right: 5px;
    transform: scale(0.75);
}

.fill {
    height: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction: column;
    text-align: center;
}

a {
    text-decoration: none;
    color: rgba(var(--secondary-1), 1)
}

a:hover {
    text-decoration: underline;
    color: rgba(var(--secondary), 1)
}

.opacity-0 {
    opacity: 0 !important;
}

.opacity-25 {
    opacity: 0.25 !important;
}

.opacity-50 {
    opacity: 0.5 !important;
}

.opacity-75 {
    opacity: 0.75 !important;
}

.opacity-100 {
    opacity: 0.75 !important;
}

.scale-50 {
    transform: scale(0.5);
}

.align-items-center {
    align-items: center;
}

.w-small {
    width: 10px;
}

.font-size-1-5 {
    font-size: 1.5rem;
}

/* #endregion */

/* #region Page background */

@keyframes backgroundPan {
    0% {
        background-position: 0% -250%;
    }

    100% {
        background-position: 100% 0%;
    }
}

.background {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: black;

    overflow: hidden;
}

body.mobile>.background {
    display: none !important;
}

.background>.dots {
    position: absolute;
    top: 0;
    left: 0;

    margin: 0;
    padding: 0;

    width: 100%;
    height: 100%;

    background-position: 0% 0%;
    background: radial-gradient(rgba(255, 255, 255, 0.2) 2%,
            transparent 10%) rgb(0, 0, 0, 0);
    background-size: 5vmin 5vmin;
    background-color: transparent;


    animation: backgroundPan 120s linear infinite;
    z-index: 2;
}

@keyframes rotate {
    from {
        rotate: 0deg;
    }

    50% {
        scale: 1 1.5;
    }

    to {
        rotate: 360deg;
    }
}


.background>.blob {
    background-color: white;
    height: 20vmax;
    aspect-ratio: 1;
    position: absolute;
    left: 50%;
    top: 50%;
    translate: -50% -50%;
    border-radius: 50%;
    background: linear-gradient(to right, rgba(236, 9, 104, 0.25), rgba(196, 120, 20, 0.25));
    animation: rotate 20s infinite;
    opacity: 0.8;
    z-index: 0;
    display: block;
}

@media (max-width: 600px) or (prefers-reduced-motion) {
    .background {
        display: none;
        background: transparent;
        animation: none;
    }
}

.background>.blur {
    position: absolute;
    width: 100%;
    height: 100%;
    backdrop-filter: blur(12vmax);
    z-index: 1;
    background-color: transparent;
}

.background>.vignette {
    width: 100%;
    height: 100%;
    position: absolute;
    margin: 0;
    padding: 0;

    background: radial-gradient(circle,
            rgba(0, 0, 0, 0) 70%,
            rgba(0, 0, 0, 1) 100%);

    background-size: 100% 100%;


    z-index: 3;
}

.container {
    position: absolute;
    width: 100%;
    height: 100%;


    display: flex;
    justify-content: space-around;
    align-items: center;
    text-align: center;
    flex-grow: 1;
    flex-shrink: 1;

    z-index: 10;

    overflow-y: auto;
}

.container.mobile {
    display: block;
    justify-content: unset;
    align-items: unset;
    text-align: unset;
}

/* Smartphone stuff */
@media (max-width: 600px) {
    .background>.dots {
        background: black;
    }

    .container {
        flex-direction: column;
        height: inherit;
    }

    .vignette {
        background: none;
    }
}

/* #endregion Page background */

/* #region Holo containers */
.holocontainer {
    position: relative;
    display: flex;

    border: rgba(var(--primary), 1) 2px solid;

    /* 
    aspect-ratio: 10 / 16; 

    width, height is in aspect ratio 10 / 16
    */
    width: 50vh;
    height: 80vh;

    flex-direction: column;

    border-radius: 1rem;

    overflow: hidden;

    margin: 20px;

    -webkit-box-shadow: 0px 0px 200px -10px rgba(var(--primary), 1);
    -moz-box-shadow: 0px 0px 200px -10px rgba(var(--primary), 1);
    box-shadow: 0px 0px 200px -10px rgba(var(--primary), 1);
}

.backlight-100 {
    -webkit-box-shadow: 0px 0px 200px -10px rgba(var(--primary), 1);
    -moz-box-shadow: 0px 0px 200px -10px rgba(var(--primary), 1);
    box-shadow: 0px 0px 200px -10px rgba(var(--primary), 1);
}

.backlight-50 {
    -webkit-box-shadow: 0px 0px 200px -10px rgba(var(--primary), 0.5);
    -moz-box-shadow: 0px 0px 200px -10px rgba(var(--primary), 0.5);
    box-shadow: 0px 0px 200px -10px rgba(var(--primary), 0.5);
}

.backlight-0 {
    -webkit-box-shadow: 0px 0px 200px -10px rgba(var(--primary), 0);
    -moz-box-shadow: 0px 0px 200px -10px rgba(var(--primary), 0);
    box-shadow: 0px 0px 200px -10px rgba(var(--primary), 0);
}

.holocontainer:after,
.holocontainer:before {
    content: "";
    height: 5px;
    position: absolute;
    z-index: 4;
    left: 50%;
    translate: -50% 0%;
    background-color: white;
}

.holocontainer:before {
    width: 15%;
    top: 0rem;
    border-bottom-left-radius: 1rem;
    border-bottom-right-radius: 1rem;
}

.holocontainer:after {
    width: 25%;
    bottom: 0rem;
    border-top-left-radius: 1rem;
    border-top-right-radius: 1rem;
}


/* Smartphone stuff */
@media (max-width: 600px) {
    .holocontainer {
        /* margin-bottom: 50px; */
        margin-top: 50px;
        width: 90vw !important;
        min-height: 80vh !important;
        height: unset !important;
    }
}


.holocontainer.mobile {
    margin-top: 50px;
    width: 90vw !important;
    min-height: 80vh !important;
    height: unset !important;
}

.holocontainer>.background {
    position: absolute;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
}

.holocontainer>.background.fancy {
    background-size: cover;
    background-position: 50% 50%;
    filter: sepia(100%) hue-rotate(175deg);
    opacity: 0.5;
}

.holocontainer>.background.img-1 {
    /* 
        Photo by Daniel Roe on Unsplash (https://unsplash.com/@danielroe)
        thx :)
    */
    background-image: url(https://cdn.mernacher.at/images/background-1.jpg);
}

.holocontainer>.background.img-2 {
    /* 
        Photo by Etienne Bösiger on Unsplash (https://unsplash.com/@etienne_boesiger)
        thx :)
    */
    background-image: url(https://cdn.mernacher.at/images/background-2-w500.webp);
}

.holocontainer>.background.img-3 {
    /* 
        Photo by Mads Schmidt Rasmussen on Unsplash (https://unsplash.com/@mvds)
        thx :)
    */
    background-image: url(https://cdn.mernacher.at/images/background-3-w500.webp);
}

@keyframes pan-holo {
    0% {
        background-position: 0% 0%;
    }

    100% {
        background-position: 0% 100%;
    }
}

@keyframes wobbly-holo {
    0% {
        opacity: 1;
    }

    50% {
        opacity: 0.25;
    }

    100% {
        opacity: 1;
    }
}

@media (max-width: 600px) or (prefers-reduced-motion) {
    .holocontainer>.holo {
        animation: none !important;
        background: none !important;
        background-color: rgba(var(--primary-2), 0.2) !important;
        background-size: 100% 100% !important;
    }
}

.holocontainer.mobile>.holo {
    animation: none !important;
    background: none !important;
    background-color: rgba(var(--primary-2), 0.2) !important;
    background-size: 100% 100% !important;
}

.holocontainer>.holo {
    position: absolute;
    background:
        linear-gradient(rgba(var(--primary-2), 0.1),
            rgba(var(--primary-2), 0.5) 6px,
            transparent 3px);
    background-size: 100% 18px;

    height: 100%;
    width: 100%;
    top: 0;
    left: 0;

    animation: pan-holo 50s linear infinite, wobbly-holo 5s linear infinite;
}

@media (max-width: 600px) {
    .holocontainer>.content {
        display: block;
    }
}

.holocontainer>.content {
    position: relative;

    display: flex;

    align-items: center;
    text-align: center;
    flex-direction: column;

    flex-grow: 1;

    overflow-y: auto;
    overflow-x: hidden;

    top: 0;
    left: 0;

    /* margin: 5px; */
    color: rgba(var(--white), 1);

    padding-left: 10px;
    padding-right: 10px;

}

.holocontainer>.content>.pfp {
    position: relative;
    display: grid;
    background-image: url(https://cdn.mernacher.at/images/personal/itsame_v2.jpg);
    background-size: cover;
    background-position: 50% 30%;
    min-width: 50%;
    border-radius: 50%;
    aspect-ratio: 1 / 1;
}

@media (max-width: 600px) {
    .holocontainer>.content>.pfp {
        min-width: 50vw;
    }
}

.holocontainer>.content>.pfp::after {
    content: '';
    display: block;

    border-radius: 50% 50%;

    transform: translate(-1px, -1px);

    width: 100%;
    height: 100%;

    backdrop-filter: saturate(100%);

    border: rgba(var(--primary-2), 0.5) 1px solid;
}


.holocontainer>.content>.links {
    display: flex;

    height: 100%;
    margin-top: 50px;
    margin-bottom: 50px;

    flex-direction: column;
    justify-content: space-between;

    font-size: 2rem;
}

/* #endregion */

/* #region Icons */
div.icon {
    aspect-ratio: 1;
}

div.icon.tiny {
    width: 0.75rem;
}

div.icon.small {
    width: 1rem;
}

div.icon.notsmall-notmedium {
    width: 1.5rem;
}

div.icon.medium {
    width: 2rem;
}

div.icon.large {
    width: 4rem;
}

div.icon.white {
    /* filter: invert(100%) sepia(0%) saturate(7500%) hue-rotate(130deg) brightness(109%) contrast(109%) */
    filter: saturate(0%) contrast(0) brightness(200%);
}

div.icon.gitlab {
    background: transparent url(https://cdn.mernacher.at/images/logos/gitlab.svg) no-repeat;
    transform: scale(1.5);
}

div.icon.mail {
    background: transparent url(https://cdn.mernacher.at/images/fontawesome/envelope-regular.svg) no-repeat;
}

div.icon.mastodon {
    background: transparent url(https://cdn.mernacher.at/images/logos/mastodon.svg) no-repeat;
}

div.icon.twitter {
    background: transparent url(https://cdn.mernacher.at/images/logos/twitter_white.svg) no-repeat;
}

div.icon.linkedin {
    background: transparent url(https://cdn.mernacher.at/images/logos/linkedin.svg) no-repeat;
}

div.icon.link {
    background: transparent url(https://cdn.mernacher.at/images/fontawesome/link-solid.svg) no-repeat;
}

div.icon.html5 {
    background: transparent url(https://cdn.mernacher.at/images/html5.svg) no-repeat;
}

div.icon.css3 {
    background: transparent url(https://cdn.mernacher.at/images/css3.svg) no-repeat;
}

div.icon.csharp {
    background: transparent url(https://cdn.mernacher.at/images/csharp.svg) no-repeat;
}

div.icon.js {
    background: transparent url(https://cdn.mernacher.at/images/js.svg) no-repeat;
}

/* #endregion */

/* #region Links */

table.links>tbody>tr>td {
    font-family: "Work Sans";
}

table.links>tbody>tr>td>a {
    color: white;
}

table.links>tbody>* {
    display: block;
    margin-bottom: 50px;
}

/* #endregion */

/* #region Creator's Pick */
.creators-pick {
    background-color: rgba(var(--primary), 0.75);
    border: rgba(var(--primary-2), 1) 2px solid;
    border-radius: 10px;
    width: 75%;
    margin: 10px;

    padding-bottom: 10px;
}

.creators-pick>.tech-tags {
    justify-content: center;
    align-items: center;
    margin-top: 5px;
    margin-bottom: 15px;
}

.creators-pick>.tech-tags>* {
    margin-left: 5px;
    margin-right: 5px;
}

.creators-pick>.links {
    margin-left: 5px;
    margin-right: 5px;
}

/* #endregion */

/* #region Slider Checkbox */
.switch {
    display: inline-block;
    height: 34px;
    position: relative;
    width: 60px;
}

.switch input {
    display: none;
}

.slider {
    background-color: #ccc;
    bottom: 0;
    cursor: pointer;
    left: 0;
    position: absolute;
    right: 0;
    top: 0;
    transition: .4s;
}

.slider:before {
    background-color: #fff;
    bottom: 4px;
    content: "";
    height: 26px;
    left: 4px;
    position: absolute;
    transition: .4s;
    width: 26px;
}

input:checked+.slider {
    background-color: #66bb6a;
}

input:checked+.slider:before {
    transform: translateX(26px);
}

.slider.round {
    border-radius: 34px;
}

.slider.round:before {
    border-radius: 50%;
}

/* #endregion */
