@import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Sans+KR:wght@100;200;300;400;500;600&display=swap");
@import url("https://fonts.googleapis.com/css2?family=Cairo:wght@200;300;400;500&display=swap");
@import url("https://fonts.googleapis.com/css2?family=Roboto:wght@100;300;400;500;700&display=swap");

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  list-style-type: none;
  text-decoration: none;
  color: black;
}
:root {
  --icon-color: rgba(255, 255, 255, 0.44);
  --gradient-background-first: rgba(36, 36, 45, 1);
  --gradient-background-second: rgba(14, 15, 19, 0.89);
  --gradient-image-background-first: #bfbfc1;
  --gradient-image-background-second: rgba(102, 161, 238, 0);
  --main-orange: #e06004;
  --main-blue: #3080e8;
  --lighter-blue: #66a1ee;
  --header-background: #2a2d3961;
  --gradient-active-icon-first: #006efd;
  --gradient-active-icon-second: #86baff;
  --gradient-blue-card-first: #2173a9;
  --gradient-blue-card-second: #234269;
  --gradient-orange-card-first: #993700;
  --gradient-orange-card-second: #562f1a;
  --selection-background: rgb(196, 196, 196);
  --selection-color: black;
  --main-font: "IBM Plex Sans KR", sans-serif;
  --icons-font: "Cairo", sans-serif;
  --card-font: "Roboto", sans-serif;
  --title-color: #aac0dc;
}
*::selection {
  background-color: var(--selection-background);
  color: var(--selection-color);
}
html {
  scroll-behavior: smooth;
}
section {
  width: 100% !important;
  overflow: hidden !important;
  margin-bottom: 10vh;
}

body {
  background-image: linear-gradient(
    to right bottom,
    var(--gradient-background-first),
    var(--gradient-background-second)
  );
}

/* !== customization for scrollbar == */
::-webkit-scrollbar {
  width: 6px;
}

::-webkit-scrollbar-track {
  background: rgb(182, 182, 182);
}

::-webkit-scrollbar-thumb {
  border-radius: 0.5rem;
  background: linear-gradient(
    to bottom,
    rgb(182, 182, 182),
    rgb(100, 100, 100)
  );
}

/* !=========== Revealing classes ============ */
/* these classes is to specify how the elements are going to reveal */
.toReveal {
  --delay: 0;
}
/* revealing from the bottom */
.dReveal {
  transform: translateY(4rem);
  opacity: 0;
  transition: 0.75s calc(var(--delay) * 0.1s);
}
/* revealing from the right */
.rReveal {
  transform: translateX(-4rem);
  opacity: 0;
  transition: 0.75s calc(var(--delay) * 0.1s);
}
/* revealing from the left */
.lReveal {
  transform: translateX(4rem);
  opacity: 0;
  transition: 0.75s calc(var(--delay) * 0.1s);
}
/* revealing from the top */
.uReveal {
  transform: translateY(-4rem);
  opacity: 0;
  transition: 0.75s calc(var(--delay) * 0.1s);
}
/* targetting the revealing , when we add the 'reveal' classname to the element it reveals */
.toReveal.uReveal.reveal {
  transform: translateY(0);
  opacity: 1;
}
.toReveal.rReveal.reveal {
  transform: translateX(0);
  opacity: 1;
}
.toReveal.lReveal.reveal {
  transform: translateX(0);
  opacity: 1;
}
.toReveal.dReveal.reveal {
  transform: translateY(0);
  opacity: 1;
}

/* !==== scroll top Button === */
.scrollTop {
  position: fixed;
  bottom: 6rem;
  right: -3rem;
  background-color: #89898b4f;
  border-radius: 50%;
  font-size: 1.6rem;
  padding: 0.7rem 0.9rem;
  color: var(--icon-color);
  transition: 0.3s;
  cursor: pointer;
  z-index: 1000;
  backdrop-filter: blur(5px);
}
.scrollTop:hover {
  color: white;
  background-color: #89898b73;
}

.scrollTop.show {
  right: 2rem;
}
@media (max-width: 768px) {
  .scrollTop:hover {
    background-color: #89898b4f;
    color: var(--icon-color);
  }
}
/* !============================================= header =============================================== */
/* this is the navigation menu in the bottom of the page */
header {
  position: fixed;
  width: 99%;
  left: 0.5%;
  bottom: 2%;
  transition: 0.3s;
  z-index: 999;
}
/* when we add the 'hide' classname the header disappears */
header.hide {
  transform: translateY(5rem);
}

header ul {
  backdrop-filter: blur(3px);
  width: 400px;
  margin: 0 auto;
  display: flex;
  justify-content: space-evenly;
  align-items: center;
  padding: 1rem 0;
  background-color: var(--header-background);
  border-radius: 3rem;
}

header li {
  cursor: pointer;
  transition: 0.2s ease;
  background-color: #006efd00;
  padding: 0.5rem;
  border-radius: 50%;
}

header ul li i {
  color: var(--icon-color);
  font-size: 1.5rem;
  transition: 0.1s ease;
}

header li:hover i {
  color: #fff;
}
header li:hover a {
  text-shadow: 0 0 10px #ffffff80;
}
header li.active {
  background-color: #006efd;
}

header li.active i {
  color: #fff;
}

/* !================================= Home ==================================== */

#home {
  min-height: 70vh;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}
#home .title {
  min-height: 25vh;
  text-align: center;
  padding: 2rem 0 0;
  font-family: var(--main-font);
  margin-bottom: 2rem;
}

.hello {
  color: white;
  letter-spacing: 2px;
  margin-bottom: 1rem;
  font-size: 2rem;
  font-weight: 600;
}

.job {
  margin: 0 auto;
  letter-spacing: 2px;
  color: white;
  font-size: 1.25rem;
  text-align: center;
  overflow: hidden;
  white-space: nowrap;
  width: 0;
  transition: 2s;
  transition-delay: 3s;
}
.job span {
  color: white;
  text-shadow: 0 0 10px #ffffff4a;
}
.job.showText {
  width: 20rem;
}

#home .main {
  width: 80%;
  margin: 0 auto 2rem;
  display: flex;
  justify-content: space-between;
  align-items: center;
}

#home .icons-left ul,
#home .icons-right ul {
  display: flex;
  flex-direction: column;
  align-items: center;
}
#home .icons-left li,
#home .icons-right li {
  margin-bottom: 0.75rem;
  position: relative;
}
#home .icons-left li {
  transform: translateX(-7rem);
  opacity: 0;
  transition: 0.2s ease-in calc(0.1s * var(--delay));
}
#home .icons-right li {
  transform: translateX(7rem);
  opacity: 0;
  transition: 0.2s ease-in calc(0.1s * var(--delay));
}
#home li.reveal {
  transform: translateX(0);
  opacity: 1;
}
#home .icons-left li::before {
  content: var(--text);
  color: white;
  font-family: var(--icons-font);
  font-size: 1.15rem;
  position: absolute;
  left: 150%;
  top: 50%;
  transform: translateY(-50%);
  transition: 0.3s;
  width: 0;
  overflow: hidden;
}
#home .icons-right li::before {
  content: var(--text);
  color: white;
  font-family: var(--icons-font);
  font-size: 1.15rem;
  position: absolute;
  right: 150%;
  top: 50%;
  transform: translateY(-50%);
  transition: 0.3s;
  width: 0;
  overflow: hidden;
}
#home .icons-left li:hover::before {
  width: 7rem;
}
#home .icons-right li:hover::before {
  width: 4rem;
}

#home i {
  color: var(--icon-color);
  font-size: 1.75rem;
  transition: 0.2s ease-in;
  cursor: pointer;
}

#home li:hover i {
  color: white;
}
#home li:hover a {
  text-shadow: 0 0 10px #ffffff80;
}

#home .image > div {
  min-height: 50vh;
  background-image: linear-gradient(
    to bottom,
    var(--gradient-image-background-first),
    var(--gradient-image-background-second)
  );
  border-radius: 10rem 10rem 0 0;
  max-width: 320px;
  display: flex;
  justify-content: center;
  align-items: center;
}

#home .image > div img {
  max-width: 100%;
  transform: translateY(-3rem);
  opacity: 0;
  transition: 0.7s ease-out calc(0.1s * var(--delay));
}
#home .image > div img.reveal {
  transform: translateY(0);
  opacity: 1;
}
#home .header-toggle {
  width: 30px;
  height: 30px;
}
/* the eye icon that targets the header appears according to the state of the header if it's displayed or hidden */
#home .hide-header,
#home .show-header {
  transition: 0.2s ease-in;
  transform: scale(0);
  position: absolute;
}
#home .hide-header.show,
#home .show-header.show {
  transform: scale(1);
  display: block !important;
}

@media (max-width: 762px) {
  /* no more text on hover on the aside icons */
  #home li::before {
    content: "" !important;
  }
  /* the scroll bar will be hidden on phones */
  ::-webkit-scrollbar {
    display: none;
  }
}

@media (max-width: 567px) {
  /* no more aside icons */
  #home ul li {
    display: none;
  }
  /* leaving the toggle button for the header */
  #home .header-toggle {
    display: block !important;
  }
  /* repositionning the header toggler icon */
  #home .header-toggle i {
    top: -12rem;
  }

  header ul {
    width: 90%;
  }
  .hello {
    font-size: 1.5rem;
  }

  .title {
    padding: 2rem 0.5rem 1rem !important;
  }
  #home .image > div {
    transform: translateX(15px) !important;
  }
}

/* !===================== SKILLS ============================= */

#skills {
  display: flex;
  justify-content: space-around;
  flex-direction: column;
}
.title {
  text-align: center;
  margin-bottom: 4rem;
  display: flex;
  flex-direction: column;
  gap: 1rem;
  align-items: center;
}
.title h2 {
  font-family: var(--main-font);
  letter-spacing: 6px;
  font-weight: 300;
  color: var(--title-color);
  font-size: 1.5rem;
}

#skills .main {
  width: 70%;
  margin: 0 auto;
  display: flex;
  justify-content: center;
  gap: 2rem;
}

#skills .man img {
  max-width: 300px;
}

.skills {
  max-width: 30rem;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  max-height: 50vh;
  align-self: center;
}

.skills i {
  background-color: #37373766;
  padding: 1rem 1.25rem;
  border-radius: 50%;
  font-size: 2.25rem;
  margin: 1rem 1rem 2rem;
  color: var(--icon-color);
  cursor: pointer;
  position: relative;
}
.skills i::after {
  content: attr(data-name);
  position: absolute;
  color: white;
  bottom: 115%;
  left: 50%;
  font-size: 1.25rem;
  font-family: sans-serif;
  transform: translateX(-50%) scale(0);
  transform-origin: center bottom;
  opacity: 0;
  transition: 0.2s;
}
.skills i:hover {
  color: var(--original-color);
}
.skills i:hover::after {
  transform: translateX(-50%) scale(1);
  opacity: 1;
}

@media (max-width: 992px) {
  #skills .main {
    flex-wrap: wrap;
  }
}

@media (max-width: 600px) {
  #skills .main {
    width: 90%;
  }
}
/* !======================= Projects ===================== */

#projects .title h2 {
  margin-top: -1.5rem;
}

#projects .main {
  display: flex;
  flex-direction: column;
  gap: 2rem;
  align-items: center;
}

#projects .buttons {
  display: flex;
  justify-content: space-between;
  align-items: center;
  width: 350px;
}

#projects .buttons > div {
  font-family: var(--main-font);
  font-size: 1.2rem;
  color: white;
  background-color: rgba(52, 52, 52, 0.8);
  border-radius: 1rem;
  padding: 0.25rem 0.85rem;
  letter-spacing: 1px;
  font-weight: 300;
  cursor: pointer;
  position: relative;
  overflow: hidden;
  z-index: 33;
}
.buttons > div::before {
  content: "";
  position: absolute;
  top: 0;
  right: -50%;
  height: 100%;
  width: 50%;
  background-color: white;
  transition: 0.35s;
  z-index: -1;
}
.buttons > div::after {
  content: "";
  position: absolute;
  top: 0;
  left: -50%;
  height: 100%;
  width: 50%;
  background-color: white;
  transition: 0.35s;
  z-index: -1;
}
.buttons > div:hover::before {
  right: 0;
}
.buttons > div:hover::after {
  left: 0;
}
.buttons > div:hover {
  color: black !important;
  box-shadow: 0 0 10px -1px white;
}
#projects .buttons > div.active {
  color: #202020;
  background-color: white;
  box-shadow: 0 0 10px -1px white;
}
#projects .buttons > div.active::before,
#projects .buttons > div.active::after {
  display: none;
}

#projects .projects {
  width: 70%;
  margin: 1rem auto;
  display: flex;
  flex-wrap: wrap;
  justify-content: space-evenly;
}

.projects .project {
  width: 250px;
  height: 200px;
  margin: 1rem 0.5rem;
  cursor: pointer;
  overflow: hidden;
  border-radius: 1rem;
  box-shadow: -1px 0 10px -5px #161616b8;
  position: relative;
  transform-origin: center center;
}

.projects .project:hover img {
  transform-origin: center center;
  transform: scale(1.3);
  opacity: 0.8;
}

#projects .projects img {
  width: 100%;
  height: 100%;
  transition: 200ms ease-in-out;
}

.project .demo {
  position: absolute;
  top: 2.5rem;
  left: 50%;
  transform: translateX(-50%) scale(0);
  transform-origin: center center;
  transition: 0.2s;
  z-index: 5;
}

.project:hover .demo {
  transform: translateX(-50%) scale(1);
}

.project i {
  font-size: 1.25rem;
  color: rgba(255, 255, 255, 0.9);
  border: solid 3px rgba(255, 255, 255, 0.5);
  border-radius: 50%;
  padding: 0.5rem 0.4rem;
  position: absolute;
  bottom: 1rem;
  left: 50%;
  transform: translateX(-50%) translateY(3rem);
  opacity: 0;
  transition: 0.2s;
}
.project i:hover {
  color: rgba(0, 0, 0, 0.801);
  background-color: white;
  border-color: white;
  box-shadow: 0 0 10px -5px white;
}

.project:hover i {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}
.project > div {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
  background-image: linear-gradient(to bottom, #26272c99, #0c0c0cc2);
  opacity: 0;
  transition: 0.3s;
}

.project:hover > div {
  opacity: 1;
}

.project::before {
  content: attr(data-name);
  position: absolute;
  top: 1rem;
  left: 50%;
  transform: translateX(-50%);
  width: 0;
  text-align: center;
  white-space: nowrap;
  overflow: hidden;
  z-index: 55;
  font-size: 1.35rem;
  color: white;
  text-shadow: 0 0 black;
  font-family: var(--icons-font);
  transition: 0.25s;
  transition-delay: 150ms;
}

.project:hover::before {
  width: 150px;
}

.project.hide {
  display: none !important;
}
/* !======================= Education and Experience ========== */

#education .title h2 {
  font-size: 1.25rem;
}

#education .main {
  width: 60%;
  margin: 4rem auto;
  display: flex;
  justify-content: space-between;
}

#education .experience .card {
  background-image: linear-gradient(
    to left,
    var(--gradient-orange-card-second),
    var(--gradient-orange-card-first)
  );
}
#education .education .card {
  background-image: linear-gradient(
    to left,
    var(--gradient-blue-card-second),
    var(--gradient-blue-card-first)
  );
}

#education .card {
  padding: 1rem;
  border-radius: 0.75rem;
  margin-bottom: 2rem;
  min-height: 15vh;
  max-width: 300px;
  position: relative;
}
#education .card::before {
  content: "";
  position: absolute;
  top: 0;
  height: 140%;
  left: -2rem;
  width: 2px;
}
#education .education .card::before {
  background-color: var(--main-blue);
}
#education .experience .card::before {
  background-color: var(--main-orange);
}
#education .card::after {
  content: "";
  position: absolute;
  top: 0;
  height: 1rem;
  left: -2.5rem;
  width: 1rem;
  border-radius: 50%;
}
#education .education .card::after {
  background-color: var(--main-blue);
}
#education .experience .card::after {
  background-color: var(--main-orange);
}
#education .experience .card:last-child::before,
#education .education .card:last-child::before {
  height: 100%;
}

#education .card h3 {
  font-size: 1.25rem;
  color: white;
  font-family: var(--card-font);
  font-weight: 400;
  margin: 1rem 0 1.5rem;
  letter-spacing: 2px;
}

#education .card p {
  font-family: var(--main-font);
  color: rgba(255, 255, 255, 0.8);
  font-size: 0.75rem;
  font-weight: 300;
}

#education .card h4 {
  letter-spacing: 2px;
  font-size: 0.9rem;
  color: #dedede;
  font-family: var(--main-font);
  font-weight: 300;
  padding: 0 0 0 0.5rem;
}

@media (max-width: 1180px) {
  #education .main {
    width: 75%;
    gap: 3rem;
  }
}

@media (max-width: 940px) {
  #education .main {
    width: 70%;
    flex-direction: column;
    align-items: center;
  }
}

/* !====================== Contact =================== */

#contact .title {
  margin-bottom: 7rem;
}

#contact .main {
  display: flex;
  width: 70%;
  margin: 2rem auto;
  gap: 2rem;
  justify-content: space-around;
}

#contact .my-image {
  flex: 50%;
  display: flex;
  flex-flow: column;
  align-items: center;
  padding-right: 2rem;
  border-right: solid 2px #bfbfc1;
}

#contact .my-image img {
  border-radius: 50%;
  margin-bottom: 3rem;
}
#contact .socials {
  display: flex;
}
#contact i {
  color: var(--icon-color);
  font-size: 1.5rem;
  margin: 0 0.5rem;
}
#contact i:hover {
  color: #fff;
}
#contact .text {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

#contact .text h2,
#contact .text h1 {
  font-family: var(--main-font);
  color: white;
  font-weight: 300;
  letter-spacing: 1px;
  line-height: 1.5;
}
#contact .text h2 {
  font-size: 1.25rem;
}
#contact .text h1 {
  font-size: 1.5rem;
}

@media (max-width: 940px) {
  #contact .main {
    width: 80%;
  }
}

@media (max-width: 760px) {
  #contact .title {
    margin-bottom: 0;
  }
  #contact .main {
    flex-direction: column;
    width: 85%;
  }
  #contact .my-image {
    flex: 100%;
    padding-right: 0;
    border-right: none;
  }
  #contact i {
    font-size: 1.75rem;
  }
  #contact .text {
    margin-top: 2rem;
    flex: 100%;
  }
  #contact .text h2,
  #contact .text h1 {
    margin-bottom: 1.75rem;
  }
}

/* !========== Preloading page ================= */

.preloader {
  position: fixed;
  width: 100vw;
  height: 100vh;
  background-color: black;
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 99999;
}
.preloader img {
  width: 150px;
}
