/*------------- Animations -------------*/

@keyframes fade-in {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 100;
    }
}

@keyframes scroll-reverse {
    0% {
        transform: translateX(-350px);
    }

    100% {
        transform: translateX(180px);
    }
}

@keyframes scroll {
    0% {
        transform: translateX(1300px);
    }

    100% {
        transform: translateX(-600px);
    }
}

@keyframes floating {
    0% {
        transform: translate(0, 0px);
    }

    50% {
        transform: translate(0, 15px);
    }

    100% {
        transform: translate(0, -0px);
    }
}

@keyframes pop {
    from {
        transform: scale(0.97)
    }

    50% {
        transform: scale(1)
    }

    to {
        transform: scale(0.97)
    }
}

/*------------ Text effects ------------*/
.float {
    animation-name: floating;
    animation-duration: 3s;
    animation-iteration-count: infinite;
    animation-timing-function: ease-in-out;
}

.pop {
    animation: pop 1s ease-in-out infinite alternate;
}

.drop-shadow {
    filter: drop-shadow(0.4rem 0.4rem var(--dark-color));
}

/*------------ Utilities ------------*/

.hide-overflow {
    overflow: hidden;
}

.fullwidth {
    width: 100%;
}

.smaller {
    font-size: smaller;
}

.nopadding {
    padding: 0em;
}

.centered {
    display: flex;
    flex-flow: row nowrap;
    align-items: center;
    justify-content: center;
}

.scale-on-hover img {
    transition: transform .2s ease-out;
}

.scale-on-hover img:hover {
    transform: scale(1.2);
    transform-origin: center;
}

/* A positioned element without size.
Used to give other elements absolute positioning. */
.anchor {
    height: 0px;
    width: 0px;
    position: relative;
}

/*------------- Speech bubble -------------*/
/* Credits: https://projects.verou.me/bubbly/ */
.speech-bubble {
    position: relative;
    background: whitesmoke;
    border-radius: .4em;
    min-height: 5em;
}

.speech-bubble:after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 50%;
    width: 0;
    height: 0;
    border: 1em solid transparent;
    border-top-color: whitesmoke;
    border-bottom: 0;
    border-left: 0;
    margin-left: -0.5em;
    margin-bottom: -1em;
}

/*------------- Colors -------------*/
:root {

    /* By default the main color is this green, but it changes on every page */
    --main-color: #6DAC5D;
    --main-color-shadow: color-mix(in srgb, var(--main-color) 90%, black 10%);
    --accent-color: #e34926;
    --text-color: #241f31;
    --dark-color: #241f31;
    --light-color: #F4F2E9;
    --light-color-shadow: color-mix(in srgb, var(--light-color) 70%, black 30%);
}

/*------------- Fonts -------------*/
@font-face {
    font-family: layton-title;
    src: url(../assets/fonts/cv-block.otf);
}

@font-face {
    font-family: layton-text;
    src: url(../assets/fonts/professor-layton.otf)
}

/*------------- General styles -------------*/
* {
    scrollbar-color: var(--accent-color) var(--light-color);
    image-rendering: pixelated;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    font-family: layton-title;
}

a {
    color: var(--accent-color);
}

a:hover {
    color: var(--main-color);
    text-decoration: wavy underline;
}

mark {
    background-color: var(--accent-color);
    color: var(--light-color);
    font-weight: 1000;
    padding: 0em 0.5em;
}

/*------------- Layout -------------*/
.container {
    display: grid;

    width: 100%;
    max-width: 1300px;
    margin: auto;

    grid-template-columns: 12rem 1fr 18rem;
    grid-template-rows: 1fr 3fr 3rem;
    grid-template-areas:
        "header header header"
        "left center right"
        "footer footer footer";

    column-gap: 1em;
    row-gap: 0em;
}

header#header {
    grid-area: header;
    text-align: center;
    font-size: 1.3em;
    color: var(--dark-color);
}

aside#left-section {
    grid-area: left;

    /* This is a vertical flexbox*/
    display: flex;
    flex-direction: column;
}

aside#right-section {
    grid-area: right;
}

main {
    overflow: visible;
    display: flex;
    flex-flow: row wrap;
    align-items: stretch;
    align-content: flex-start;
    justify-content: space-between;
}

/* Centered, like in the homepage */
main#main-section {
    grid-area: center;
}

/* Takes up the center and right sections */
main#bigger-main-section {
    grid-column: center / right;
    align-items: stretch;
}

footer#footer {
    grid-area: footer;
}

/*------------- Navigation menu -------------*/
nav#navbar {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    font-family: layton-title;
}

.navbar-item {
    margin: 0.5em;
    /* Soft circular drop shadow */
    background-image: radial-gradient(var(--light-color-shadow), transparent 60%);
}

.navbar-item:hover {
    transition: transform 0.2s ease-out;
    transform: scale(1.1);
}

.navbar-item a {
    display: block;
    margin-top: -0.9em;
    line-height: 1.2;
    max-width: 8ch;

    color: black;

    /* Thick white border */
    text-shadow: white 3px 0px 0px, white 2.83487px 0.981584px 0px, white 2.35766px 1.85511px 0px, white 1.62091px 2.52441px 0px, white 0.705713px 2.91581px 0px, white -0.287171px 2.98622px 0px, white -1.24844px 2.72789px 0px, white -2.07227px 2.16926px 0px, white -2.66798px 1.37182px 0px, white -2.96998px 0.42336px 0px, white -2.94502px -0.571704px 0px, white -2.59586px -1.50383px 0px, white -1.96093px -2.27041px 0px, white -1.11013px -2.78704px 0px, white -0.137119px -2.99686px 0px, white 0.850987px -2.87677px 0px, white 1.74541px -2.43999px 0px, white 2.44769px -1.73459px 0px, white 2.88051px -0.838247px 0px;
    text-decoration: none;
}

/*------------- Boxes -------------*/
.basic-box {
    margin: 0.3em;
    padding: 0em;
    background: color-mix(in srgb, var(--light-color) 90%, transparent 10%);
    background-clip: padding-box;
}

.scroll-box {
    display: flex;
    flex-direction: column;

    /* Override this where needed */
    height: fit-content;
    overflow: hidden;
    margin: 0.3rem;
}

.scroll-box .title {
    flex-shrink: 0;
    padding: 0.5em;
    background: var(--dark-color);
    color: var(--light-color);
    font-family: layton-title;
    text-align: center;
}

.scroll-box .scroll-content {
    flex-grow: 1;
    overflow-y: auto;
    padding: 1em;
    background: color-mix(in srgb, var(--light-color) 90%, transparent 10%);
}

.scroll-content ul {
    list-style-image: url(/assets/img/tiny/carrot2.gif);
}

/*------------ Body & backgrounds ------------*/
body {
    background-color: var(--main-color-shadow);
    color: var(--text-color);
    font-family: layton-text, layton-title;

}

body.checkerboard {
    background-color: var(--main-color);
    background-image: linear-gradient(45deg, var(--main-color-shadow) 25%, transparent 25%, transparent 75%, var(--main-color-shadow) 75%, var(--main-color-shadow)),
        linear-gradient(45deg, var(--main-color-shadow) 25%, transparent 25%, transparent 75%, var(--main-color-shadow) 75%, var(--main-color-shadow));
    background-size: 60px 60px;
    background-position: 0 0, 30px 30px;
}

body.honeypot {
    background:
        radial-gradient(circle farthest-side at 0% 50%, var(--main-color) 23.5%, rgba(240, 166, 17, 0) 0)21px 30px,
        radial-gradient(circle farthest-side at 0% 50%, var(--main-color-shadow) 24%, rgba(240, 166, 17, 0) 0)19px 30px,
        linear-gradient(var(--main-color) 14%, rgba(240, 166, 17, 0) 0, rgba(240, 166, 17, 0) 85%, var(--main-color) 0)0 0,
        linear-gradient(150deg, var(--main-color) 24%, var(--main-color-shadow) 0, var(--main-color-shadow) 26%, rgba(240, 166, 17, 0) 0, rgba(240, 166, 17, 0) 74%, var(--main-color-shadow) 0, var(--main-color-shadow) 76%, var(--main-color) 0)0 0,
        linear-gradient(30deg, var(--main-color) 24%, var(--main-color-shadow) 0, var(--main-color-shadow) 26%, rgba(240, 166, 17, 0) 0, rgba(240, 166, 17, 0) 74%, var(--main-color-shadow) 0, var(--main-color-shadow) 76%, var(--main-color) 0)0 0,
        linear-gradient(90deg, var(--main-color-shadow) 2%, var(--main-color) 0, var(--main-color) 98%, var(--main-color-shadow) 0%)0 0 var(--main-color);
    background-size: 40px 60px;
}

body.tablecloth {
    background-color: var(--light-color);
    background-image: linear-gradient(90deg, rgba(62, 178, 79, 0.5) 50%, transparent 50%),
        linear-gradient(rgba(62, 178, 79, 0.5) 50%, transparent 50%);
    background-size: 50px 50px;
}

/*------------- Borders -------------*/
/* Made with https://maxbittker.github.io/broider/ */
.broider {
    border-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAB+klEQVRYR+1ZS3bDIAyMe4+2m1yg9z9DX7uvN75IHEgMBiRgJOS6i2YXR5+RRpYEmS7F5/r+sZbP0u/z8jVxv6d6XiAYQeQ5e6UecdoGul7m5bsD9MX5vUXfCNBc46laBdrLZBl1MITqSeWDv6AXs8M7ZGL1yXKPpY6l8gRoBtAXFkssU0Ub4FY92/z2BDWh1Nk49VYk2di9ngCUCXl14Kc2lTZAtzLg3l4rJmyAWqFp2PkHapNkX0z+czvjrdeF0Gn4daPpPNe5xrTAyYQZQ6Q0HcEn42dbguhS8ua2J2A61ZaNHmhkwKQAgz3h9rTDOBKo9wJsTxhJRwMlS0l4cH11lIdu0OPPCc7LJ1Ag1BBCfaoVXyapYhlpN6ZCQOtPPZnU1BPmsG3qAVTTE9VAO2eyGkMkoyjoc4FiLDyCHgXa6y1lwn6/RhHqmWOOetaPZjStxVZ2h2e9JdBWiyNAY+NnqaExHw108KbkT8166aw5Vh6q0Uh49hYmZSBoZ9pwdLNeBEwk3IzDtyZ1H9VmiOiB8RgA7c0YJqQSHHuPldsFgIIhN1KsCIVYA4CakTxkaAgoumkNIdyUlUCFZBrcpWZAhe4tEgXbGN6e0DPQ8NV4exmpByx1LJUvD5HiCwjk7xjuuFuG3GOivz01r3Tq5/nc8V7t0sBqx/E7QYAVHYBlJ/8AAAAASUVORK5CYII=") 14 / 14px / 0 round;
    border-width: 14px;
    border-style: solid;
}

.pixel-border {
    border: 6px var(--dark-color) solid;
    border-radius: 6px;
}

.pokemon {
    border-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFQAAABUCAYAAAAcaxDBAAADFklEQVR4Xu2cjZKDIAyEa9//mc9DT+ekRJIl0cK4nbmfsSHAx4YA2k6v8jUL17ZLU/o7L7+e9KrwWDFkPCQ4kIMHkIV4EKiuCALVGUEWAtB16tudFCGvjQBUe5/GS5+Xnx93896Klwy1t7ZQZ97GCOU1GG1V5l57ZwD28di59P+UFKnF34GAC/hWuAnoXqipMIhoNHOJibbO1Mb8NgY3DSjEY2igN42cGeie+j4VZ3Zg6pBrYjLVUBgtVS6dsodSVesQDypUHzMY6KdLaCGrt2d4i5xHGXHcy4NDrM0cBEqgIIFg84NCxeRFhYLAGfIgMM3cCfSdlm/1QxltGaE1cLT3nUD19TCB5pLgHAqGSKZQIS0RqAeoUJZACRQkEGzOpESgwQSC3VGh4UDrZ7q2pHS6a53zR0+CG9+jOyo0eFQI9DKg8p0SW8hXGsWtJ7eeLs3mIV+qlAoF8XIOBYFVzZP8ZoUoFQoC9ykUHRGwcSOa+4CmHkMORiQEthniIS2BIAdg40Y0h3iUQKfX/E4uKreVuA5NsjisnoCkJB8KPA9o9Vky5GM1hq3WiDEMttkZ8kxKn7wJFFSgZu4EmpKSsnB63hxaRw4kJdkRgfK0SYvq6vvOkGdSui4plcvQ9QpDvjnkd3TlEasrhgYrzJAPHrAVaGWzxCwPAqdCQWCa+XVAN9kzKTUnJS7sFwLXKXTjS4VSodo0ieyUitU5szyIVwz5A9Y60GQ4K191wpBvCvnzZyIJtAnoeVwQKIGCs2ZuzmWTC19ZmEAJNJhAsDsqlECDCQS7o0IJNJhAsDsqlECDCQS7m5Vvm+NpEwicIQ8C08xhoFoBrcKQ9+vPtIZUcYsTez/sluc3sQsfiNNbeNgqqUyqg/bI1u8rrLSvQ40FKtUWW8M/o72uq/w3jobUHO0A+QtzbiM1TU4StLIqiEeHQC3wLDZ/tOyWp5LsAKjyZFVV4kXZFpk1xqtcrAOgrdrYYX6D4bkITED34oVxugB9nDlUC30603IGt57guEUBPY07LQTA9nZvHgX00NF8fiHQXAMZj19M3PZGPWzADgAAAABJRU5ErkJggg==") 12 / 12px / 0 round;
    border-width: 12px;
    border-style: solid;
}

.epic-border {
    border-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFQAAABUCAYAAAAcaxDBAAADB0lEQVR4Xu2c7W7DIAxF2z1Mpb3/s0yTqj1Lt2Zqt4Z8HBscQtDdX4xtDhcDabLzSX+hBM6h3uTsJKDBIhBQAQ0mEOxOChXQYALB7qTQ2kDfL5fvxZi3e8tbcEaNu/u8XldFiApdBVpr8EOWy9NaK4vfODsC7VO+FYDmgouT3SBeXGpBOt4QaC7IoJHt5GZDoDuNaOewhwY6HCCGddDS36GBtgTymcvmQClACqX2MSw6P/KHmyMBoABdAH05kNB4BTSZ8VIBCWjrQNMZpiVSe+Oh/P7aF+4dNJ5whVLCtQFSDU8BVVryy9dESohmtDZgmvA6QFdumQI6lkT4kqcllqPIyBsTrZg6Cl2hUJpgDuCSPqX5Uv9DKLQEYNqXgEihTtrNAyUF0K7q5OE2p/ikSBpf2l685CkgDchNyNmB4guogI5/hqYa5uSF5lIoIvIZCKiPF1pbgVovD7TCtCmtvRkzM10CmgCjZw9ThuMHQwJaDHSMeGOg08dQpABKCIui08BaQ61uKX/V0MPW0Ecpohm2KsVqJ4VaSRntBNQIymomoFZSRjsBNYKymgmolZTR7hXocL38SN6Rb/zx3e3+DvrX6ChGCjFyyTaj+I0Dnb7UTwPKJmXsSPGXgc6/i0DHPh3sD3uwfyiKZtgoPLNZvkLnQ1D+UuiKQue+LhHQYz1tmi4LPW2CalR6rKAaZi6GmYYUv3R8aVqqoXvu8pYfsrTkteRd3zlvvstTAG+NMpdK17e3/8al+VL/4hpKATYDaiY/NizNl/rvCrTmZ9lPrASEBED9dwWaKbKibgSkOaB07iuiEdCZ8hNQJ2QBdQIjcwElQs72wwGl8VGNov7edtqEUn+UH/nbfJf3JjzYZx+nZg77BMCbH/kzAl3+NpECeBP2KpDso/Mjf0agy2lTAAFNCFBNIYX01k4CKlZob8BoPAJKhJztAvoAln1ySID3BbSBf7fXF1Dn8tzCXECDqQpoa0CD8+neHZ5DuycQPEABFdBgAsHupFABDSYQ7E4KFdBgAsHufgDJA12CFFAskAAAAABJRU5ErkJggg==") 28 / 20px / 0 round;
    border-width: 20px;
    border-style: solid;
}



/*------------- Header -------------*/
#header-text-container {
    display: inline-block;
    padding: 4em;
    background: url(/assets/img/icons/sunflower-border.png) no-repeat;
    background-position: center center;
    background-size: 100%;

    /* Thick white border */
    text-shadow: rgb(255, 255, 255) 5px 0px 0px, rgb(255, 255, 255) 4.90033px 0.993347px 0px, rgb(255, 255, 255) 4.60531px 1.94709px 0px, rgb(255, 255, 255) 4.12668px 2.82321px 0px, rgb(255, 255, 255) 3.48353px 3.58678px 0px, rgb(255, 255, 255) 2.70151px 4.20736px 0px, rgb(255, 255, 255) 1.81179px 4.6602px 0px, rgb(255, 255, 255) 0.849836px 4.92725px 0px, rgb(255, 255, 255) -0.145998px 4.99787px 0px, rgb(255, 255, 255) -1.13601px 4.86924px 0px, rgb(255, 255, 255) -2.08073px 4.54649px 0px, rgb(255, 255, 255) -2.94251px 4.04248px 0px, rgb(255, 255, 255) -3.68697px 3.37732px 0px, rgb(255, 255, 255) -4.28444px 2.57751px 0px, rgb(255, 255, 255) -4.71111px 1.67494px 0px, rgb(255, 255, 255) -4.94996px 0.7056px 0px, rgb(255, 255, 255) -4.99147px -0.291871px 0px, rgb(255, 255, 255) -4.83399px -1.27771px 0px, rgb(255, 255, 255) -4.48379px -2.2126px 0px, rgb(255, 255, 255) -3.95484px -3.05929px 0px, rgb(255, 255, 255) -3.26822px -3.78401px 0px, rgb(255, 255, 255) -2.4513px -4.35788px 0px, rgb(255, 255, 255) -1.53666px -4.75801px 0px, rgb(255, 255, 255) -0.560763px -4.96846px 0px, rgb(255, 255, 255) 0.437495px -4.98082px 0px, rgb(255, 255, 255) 1.41831px -4.79462px 0px, rgb(255, 255, 255) 2.34258px -4.41727px 0px, rgb(255, 255, 255) 3.17346px -3.86382px 0px, rgb(255, 255, 255) 3.87783px -3.15633px 0px, rgb(255, 255, 255) 4.4276px -2.32301px 0px, rgb(255, 255, 255) 4.80085px -1.39708px 0px, rgb(255, 255, 255) 4.98271px -0.415447px 0px;
}

/*------------- Media queries -------------*/

/*  This is my humble attempt at making the website look decent on mobile */
@media screen and (width <=800px) {
    .container {
        grid-template-columns: 90vw;
        grid-template-rows: 18rem 1fr 2fr 1fr 1rem;
        grid-template-areas:
            "header"
            "left"
            "center"
            "right"
            "footer";
        margin: 1rem;
        justify-self: center;
        row-gap: 1rem;
    }
}
