/* Algemeen */
* {
  /* Zorgt ervoor dat de padding en border bij de breedte horen */
  box-sizing: border-box;
  margin: 0;
}

html {
  color: var(--text-main-color);
  font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
}

/* Custom properties */
:root {
  --text-main-color: rgb(77, 0, 40);
  --text-accent-color: rgb(226, 3, 133);
  --link-hover: rgb(164, 70, 124);
  --light-color: rgb(255, 255, 255);
  --background-color: linear-gradient(0deg, rgb(255, 255, 255) 40%, rgb(252, 171, 213) 100%);
  --background-box-shadow: 0 0 20px 20px rgba(0, 0, 0, 0.1);

  /* Font maten */
  --font-size-heading-l: 2rem;
  --font-size-heading-m: 1.6rem;
  --font-size-heading-s: 1.4rem;
  --font-size-heading-xs: 1rem;

  --font-size-l: 1.4rem;
  --font-size-m: 1.1rem;
  --font-size-s: 1rem;
  --font-size-xs: 0.9rem;

  /* Header maten */
  h1 {
    font-size: var(--font-size-heading-m);
  }
  
  h2 {
    font-size: var(--font-size-heading-m);
  }

  h3 {
    font-size: var(--font-size-heading-s);
  }
  h4 {
    font-size: var(--font-size-heading-xs);
  }
}



.card {
  position: relative;
  display: flex;
  justify-content: center;
  padding: 1.5em;

  @media (min-width: 800px) {
    padding-top: 5em;
  }
}

/* Binnenkant visitekaart die voor- en achterkant flipt */
.card-inner {
  position: relative;
  width: clamp(21em, 80dvw, 30em);
  height: clamp(32em, 70dvw, 33em);
  transition: 3s;
  transform-style: preserve-3d;
  border-radius: 10px;
  box-shadow: var(--background-box-shadow);

  @media (min-width: 800px) {
    width: 38em;
    height: 22em;
  }

  &.is-flipped {
    transform: rotateY(180deg);
  }
}



/* Voorkant visitekaart */
.card-front {
  position: absolute;
  height: 100%;
  width: 100%;

  backface-visibility: hidden;
  border-radius: 10px;
  background: var(--background-color);
  padding: 1em;
  text-align: center;

  @media (min-width: 800px) {
    display: grid;
    grid-template-columns: 1fr 2fr;
    grid-template-rows: repeat(5, auto);
    background: linear-gradient(to left, rgb(255, 255, 255) 50%, rgb(252, 171, 213) 100%);
    padding-left: 2em;
  }

  /* Profiel foto */
  img {
    width: 10em;
    border-radius: 50%;
    border: 5px solid var(--light-color);
    box-shadow: 1px 1px 10px rgba(128, 128, 128, 0.384);

    @media (min-width: 800px) {
      grid-column: 1;
      grid-row: 1 / -1;
      justify-self: center;
      align-self: center;
      width: 13em;
    }
  }

  /* Naam, leeftijd en woonplaats */
  hgroup {
    font-size: var(--font-size-heading-m);
    font-weight: 700;
    
    @media (min-width: 800px) {
      padding-top: 1.5em;
    }
  }

  /* Text 'ik ben een 1e jaars frontend student' */
  p.i-am-text {
    display: grid;
    padding-block: 1em;
    font-weight: 700;
    font-size: var(--font-size-l);

    /* Cursor na text */
    span {
      position: relative;
      color: var(--text-accent-color);
      align-self: center;
      justify-self: center;
      width: fit-content;

      /* Laat animatie zien als er geen voorkeur is opgegeven voor minder bewegingen op het scherm */
      @media (prefers-reduced-motion: no-preference) {
        /* Cursor en typing effect */
        &::after {
          content: "";
          position: absolute;
          width: 100%;
          height: 100%;
          right: 0;
          background-color: var(--light-color);

          border-left: 1px solid;
          animation: --cursor 1s infinite, --typing 30s steps(22) infinite;
        }
      }
      
    }
  }

  /* Wrapper met social media links */
  ul {
    list-style: '';
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 1em 0;
    gap: 1em;

    @media (min-width: 800px) {
      padding-top: 0;
    }
  }

  /* Social media links */
  a {
    display: inline-flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;

    text-decoration: none;
    font-size: var(--font-size-xs);
    font-weight: 600;
    color: var(--text-main-color);

    svg {
      width: 2em;
      fill: var(--text-main-color);
    }

    &:hover {
      color: var(--link-hover);

      svg {
        fill: var(--link-hover);
      }
    }

    &:active {
      color: var(--text-accent-color);

      svg {
        fill: var(--text-accent-color);
      }
    }
  }

  .copyright {
    font-size: var(--font-size-xs);
    padding-top: 1em;

    @media (min-width: 800px) {
      padding: 0;

    }
  }
}

/* Typing animatie van text (voorkant visitekaart) */
@keyframes --typing {
  10%, 15%, 30%, 35%, 50%, 55%, 70%, 75%, 90%, 95%{
    width: 0;
  }
  5%, 20%, 25%, 40%, 45%, 60%, 65%, 80%, 85%, 100% {
    width: 100%;
  }
}

/* Animatie cursor na text (voorkant visitekaart)*/
@keyframes --cursor {
  100% {
    border-left: 1px solid transparent;
  }
}



/* Achterkant visitekaart */
.card-back {
  position: absolute;
  height: 100%;
  width: 100%;
  transform: rotateY(180deg);
  backface-visibility: hidden;

  padding: 1.5em;
  border-radius: 10px;
  background: var(--background-color);

  /* Filter knoppen */
  menu {
    display: flex;
    align-items: center;
    justify-content: space-around;
    list-style: "";
    padding: 3em 0;

    @media (min-width: 800px) {
      padding: 1em 0;
    }

    button {
      background-color: transparent;
      border: 1px solid transparent;
      color: var(--text-main-color);
      
      font-weight: 600;
      font-size: var(--font-size-s);

      &:hover {
        cursor: pointer;
        text-decoration: 2px solid underline;
        text-underline-offset: 2px;
      }

      &:active {
        color: var(--text-accent-color);
      }

      /* Als een filter knop aangeklikt is */
      &.is-clicked {
        color: var(--text-accent-color);
        text-decoration: 2px solid underline;
        text-underline-offset: 2px;
      }
    }
  }

  /* Algemene styling van de filter items */
  ul {
    list-style: "";
    padding: 0;
    display: flex;
    gap: 1em;
    position: absolute;
    bottom: 15%;
    left: 50%;
    transform: translateX(-50%);
    
    font-weight: 550;
    scale: 0;
    transition: 2s;

    @media (min-width: 800px) {
      bottom: 1em;
      gap: 4em;
    }

    li {
      display: grid;
      text-align: center;
      width: 5em;
    }

    img {
      width: 5em;
    }
  }

  .ambitions {
    color: var(--text-accent-color);
    text-shadow: 1px 0.1px black;

    &.is-clicked {
      scale: 1;
    }
  }

  .work.is-clicked {
    scale: 1;
  }

  .hobbies.is-clicked {
    scale: 1;
  }

}



/* Flip knop */
.flip-card-button {
  display: inline-flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 0.5em;
  margin-left: 50%;
  transform: translate(-50%);

  background-color: transparent;
  border: 1px solid transparent;
  color: var(--text-main-color);
  font-weight: 600;
  
  transition: 0.2s;

  &:hover {
    cursor: pointer;
    scale: 1.1;
    margin-left: 51%;
  }

  &:active {
    color: var(--text-accent-color); 

    svg {
      fill: var(--text-accent-color);
    }
  }

  svg {
    fill: var(--text-main-color);
  }
}