/* 
  Variáveis para cores:
  --fundo-principal
  --texto
  --texto-inverso
  --destaque
  --destaque-inverso
  --fundo-card
*/

*{
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

:root{
  --fundo-principal: #f5f5ff;
  --texto: #070707;
  --texto-inverso: #ffffff;
  --destaque: #430663;
  --destaque-inverso: #950DDE;
  --fundo-card: #e2e2e2;
  --text-hover: #eeff00fa;
}

html, body {
  width: 100%;
}

body{
  font-family: Verdana, Geneva, Tahoma, sans-serif;
  line-height: 1.5em;
  background-color: var(--fundo-principal);
  color: var(--texto);
  transition: background-color 0.5s, color 0.5s;
}

body.escuro{
  --fundo-principal:#222222;
  --texto: #e0e0e0;
  --texto-inverso: #ffffff;
  --destaque: #950DDE;
  --destaque-inverso: #5D008E;
  --fundo-card: rgb(34, 34, 34);
}


body.escuro::after {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  rotate: 60deg;
  background:
    linear-gradient(45deg, white, transparent) 10% -20% / 2px 90px no-repeat,
    linear-gradient(45deg, white, transparent) 30% -40% / 2px 110px no-repeat,
    linear-gradient(45deg, white, transparent) 50% -30% / 2px 100px no-repeat,
    linear-gradient(45deg, white, transparent) 70% -50% / 2px 120px no-repeat,
    linear-gradient(45deg, white, transparent) 90% -20% / 2px 95px no-repeat;

  animation: estrelas-rapidas 5s linear infinite;
  opacity: 0.7;
}

body.escuro::before {
  rotate: 60deg;
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 0;

  background:
    linear-gradient(45deg, rgba(255,255,255,.8), transparent) 15% -10% / 2px 70px no-repeat,
    linear-gradient(45deg, rgba(255,255,255,.8), transparent) 35% -30% / 2px 90px no-repeat,
    linear-gradient(45deg, rgba(255,255,255,.8), transparent) 55% -20% / 2px 85px no-repeat,
    linear-gradient(45deg, rgba(255,255,255,.8), transparent) 75% -40% / 2px 100px no-repeat;

  animation: estrelas-medias 8s linear infinite;
  opacity: 0.5;
}

body.escuro .estrelas-lentas {
  rotate: 60deg;
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 0;

  background:
    linear-gradient(45deg, rgba(255,255,255,.5), transparent) 20% -20% / 2px 60px no-repeat,
    linear-gradient(45deg, rgba(255,255,255,.5), transparent) 60% -30% / 2px 80px no-repeat;

  animation: estrelas-lentas 12s linear infinite;
}

@keyframes estrelas-rapidas {
  from {
    background-position:
      10% -30%,
      30% -50%,
      50% -40%,
      70% -60%,
      90% -30%;
  }
  to {
    background-position:
      -20% 120%,
      0% 140%,
      20% 130%,
      40% 160%,
      60% 150%;
  }
}

@keyframes estrelas-medias {
  from {
    background-position:
      15% -20%,
      35% -40%,
      55% -30%,
      75% -50%;
  }
  to {
    background-position:
      10% 120%,
      30% 140%,
      50% 130%,
      70% 150%;
  }
}

@keyframes estrelas-lentas {
  from {
    background-position:
      20% -20%,
      60% -30%;
  }
  to {
    background-position:
      30% 120%,
      70% 140%;
  }
}


header{
  background-color: var(--destaque);
  color: var(--texto);
  padding: 10px;
  display: flex;
  justify-content: flex-end;
  align-content: center;
  position: sticky;
  top: 0;
  z-index: 999;
}

nav#menu ul{
  list-style: none;
  display: flex;
  gap: 10px;
}

nav#menu a{
  text-decoration: none;
  color: var(--texto-inverso);
  font-weight: 600;
  padding: 12px 10px;
  border-radius: 5px;
  transition: background-color 0.5s, color 0.5s;
}

nav#menu a:hover{
  background-color: var(--texto-inverso);
  color: var(--destaque);
}

main{
  display: grid;
  grid-template-columns: auto 90vw auto;
  gap: 20px;
  margin-top: 20px;
}

section#ficha{
  background-color: var(--fundo-card);
  padding: 20px;
  border-radius: 8px;
  border: 1px solid var(--texto);
  grid-column: 2;
  z-index: 2;
}

section#ficha img.foto{
  background-position: top center;
  width: 200px;
  aspect-ratio: 1/1;
  object-fit: cover;
  overflow: hidden;
  border-radius: 20%;
  border: 5px solid var(--fundo-card);
  outline: 5px solid var(--destaque);
  display: block;
  margin: auto;
  margin-bottom: 15px;
}

section#ficha h1{
 color: var(--destaque);
  margin: 15px 0;
  font-size: 1.5em;
  text-align: center;
}

section#ficha p{
  text-align: justify;
  text-indent: 10px;
}

section#music{
  width: 100%;
  height: fit-content;
  margin: 10px;
}

#music iframe{
  width: 100%;
  height: calc(220px - 66px);
  margin: 10px 0;
}

div#social{
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 1.8em;
  gap: 1em;
  
}

div#social a{
  color: var(--destaque);
  transition: color 0.5s;
}

div#social a:hover{
  color: var(--destaque-inverso);
}

section#detalhes{
  grid-column: 2;
  z-index: 2;
}

article{
  background-color: var(--fundo-card);
  padding: 20px;
  margin-bottom: 20px;
  border-radius: 8px;
  border: 1px solid var(--texto);
}

article h2{
  color: var(--destaque);
  margin-bottom: 20px;
}

.video-container{
  position: relative;
  width: 100%;
  margin: auto;
  aspect-ratio: 16/9;
}

.video-container iframe{
  position: relative;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border-radius: 8px;
}

#skill-container{
  display: grid;
  grid-template-columns: 1fr;
  gap: 30px;
}

#skill-container .info{
  display: flex;
  justify-content: space-between;
  align-items: center;
}

#skill-container .nome{
  font-weight: bold;
  color: var(--texto);
}

#skill-container .porcent{
  font-weight: bold;
  color: var(--destaque);
}

#skill-container .barra{
  width: 100%;
  height: 8px;
  background-color: var(--fundo-principal);
  border-radius: 4px;
}

#skill-container .progresso{
  height: 100%;
  background-color: var(--destaque-inverso);
  border-radius: 4px;
  transition: width 1s ease;
}

#formacao-container{
  display: flex;
  flex-direction: column-reverse;
  gap: 20px;
  
}

#formacao-container .curso{
  background-color: var(--fundo-principal);
  border-radius: 8px;
  border-left: 5px solid var(--destaque);
  padding-left: 15px;
  transition: border-left-width 0.5s, border-color 0.5s;
}

#formacao-container .curso:hover{
  border-left-width: 15px;
  border-color: var(--destaque-inverso);
  cursor: pointer;
}

#formacao-container .periodo{
  font-size: 0.8em;
  font-weight: bold;
  color: var(--texto);
}

#formacao-container .instituicao{
  color: var(--destaque);
  font-size: 1.1em;
}

#projetos-container{
  display: flex;
  flex-direction: column-reverse;
  gap: 20px;
}

#projetos-container .projeto{
  display: flex;
  flex-direction: column;
  gap: 15px;
  background-color: var(--fundo-principal);
  border-radius: 8px;
  padding: 10px;
  border-left: 5px solid var(--destaque);
  transition: border-left-width 0.5s, border-color 0.5s;
}

#projetos .titulo{
  color: var(--destaque);
}

#projetos .projeto:hover{
 border-color: var(--destaque-inverso);
 border-left-width: 15px;
  cursor: pointer;
}

#projetos .foto{
  width: 100%;
  aspect-ratio: 16/9;
  object-fit: cover;
  overflow: hidden;
  border-radius: 8px;
}

footer{
  background-color: var(--destaque);
  color: var(--texto-inverso);
  text-align: center;
  padding: 12px;
  position: relative;
  z-index: 999;
}

footer a{
  color: var(--texto-inverso);
  text-decoration: none;
  font-weight: bold;
}
footer a:hover{
  color: var(--text-hover);
  text-decoration: underline;
}

@media screen and (min-width: 768px){
  main{
    grid-template-columns: auto 320px 1fr auto;
  }

  section#ficha{
    grid-column: 2 / 3;
    
    height: fit-content;
    position: sticky;
    top: 60px;
  }

  section#detalhes{
    grid-column: 3 / 4;
  }

  #skill-container{
    grid-template-columns: 1fr 1fr;
  }

  #projetos-container .projeto-info{
    max-width: 80%;
  }

  #projetos-container .projeto{
    flex-direction: row-reverse;
    justify-content: space-between;
  }

  #projetos-container .foto{
    aspect-ratio: 1 / 1;
    max-width: 20%;
    max-height: 200px;
  }
  
}