@import url(https://fonts.googleapis.com/css2?family=Source+Sans+Pro:ital,wght@0,300;0,400;0,600;1,700&display=swap);
#theme ul,
* {
  list-style: none;
}
#myBtn,
#theme,
canvas {
  position: fixed;
}
#myBtn:hover,
body {
  background-color: var(--dark-gray);
}
#theme,
#theme ul,
header {
  display: flex;
}
.hero-text h1,
header .logo {
  font-size: 5rem;
  text-transform: uppercase;
}
.btn,
.hero-page .hero-text {
  box-shadow: 0 0 0 5px var(--primary), 0 -1px 0 2px var(--secondary);
}
.hero-bubble,
.hero-image,
.logo::before {
  background-image: linear-gradient(to right, var(--primary), var(--secondary));
  background-size: cover;
  z-index: -1;
}
*,
.btn:hover,
.hero-services .my-services .service:hover h2 {
  color: var(--light);
}
.bg,
.pl__ball-texture,
.project,
.projects {
  overflow: hidden;
}
* {
  padding: 0;
  margin: 0;
  box-sizing: border-box;
  text-decoration: none;
  border: none;
  outline: 0;
}
#theme li span,
#theme ul li {
  border-radius: 50%;
  text-align: center;
}
@font-face {
  font-family: duck;
  src: url("font/Rubber-Duck.ttf");
}
:root {
  --primary:#ff4757;
  --light-primary: hsl(330, 91%, 49%);
  --secondary: #ffc312;
  --light-secondary: hsl(283, 100%, 50%);
  --dark-gray: hsl(0, 0%, 11%);
  --light-gray: hsl(0, 0%, 41%);
  --light: hsl(0, 0%, 100%);
}
::-webkit-scrollbar {
  width: 1rem;
}
::-webkit-scrollbar-thumb {
  background-color: var(--secondary);
  border-radius: 2rem;
}
::-webkit-scrollbar-track {
  background-color: var(--dark-gray);
}
#theme,
.btn {
  transition: 0.3s;
  background-color: var(--primary);
}

html {
  font-size: clamp(6px, 8px, 12px);
  scroll-behavior: smooth;
  --font: "Source Sans Pro", sans-serif;
}
body {
  font-family: var(--font, "Source Sans Pro", sans-serif);
  font-weight: 300 !important;
}
#theme {
  color: #fff;
  font-family: Ubuntu, sans-serif;
  width: 200px;
  align-items: center;
  padding: 10px;
  justify-content: center;
  top: 100px;
  right: -250px;
  flex-direction: column;
  z-index: 8;
  -webkit-backdrop-filter: blur(5px);
  -moz-backdrop-filter: blur(5px);
  -o-backdrop-filter: blur(5px);
  -ms-backdrop-filter: blur(5px);
  backdrop-filter: blur(5px);
  border-radius: 5px 0 0 5px;
  font-weight: 300;
  box-shadow: 0 0 0 2px #fff, 0 0 0 5px var(--primary);
}
#myBtn,
.menu {
  display: none;
  cursor: pointer;
}
#theme.active {
  right: 0;
}
#theme ul {
  height: 300px;
  width: 250px;
  flex-direction: column;
  align-items: center;
  flex-wrap: wrap;
}
#theme ul li {
  margin: 10px;
  box-shadow: 0 0 0 1px #fff;
}
#theme li span {
  display: block;
  width: 40px;
  height: 40px;
  flex: 0 0 100%;
  position: relative;
  box-shadow: 0 0 10px var(--secondary), 0 0 10px var(--dark-gray);
  -webkit-border-radius: 50%;
  -moz-border-radius: 50%;
  -ms-border-radius: 50%;
  -o-border-radius: 50%;
}
#theme .my-theme,
#theme .your-theme {
  padding: 10px;
  width: 100%;
}
#theme .your-theme h2 {
  font-size: 1.6rem;
  display: block;
  margin-bottom: 10px;
}
#theme .your-theme input {
  width: 100%;
  border: none;
  outline: 0;
}
.theme-text,
a:active,
a:hover {
  color: var(--primary);
}
section {
  padding-top: 9rem;
}
canvas {
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: -1;
}
#myBtn {
  bottom: 2rem;
  right: 2rem;
  z-index: 99;
  background-color: var(--light-gray);
  color: var(--light-primary);
  padding: 2rem;
  border-radius: 1rem;
  font-size: 2rem;
  -webkit-text-stroke: 2px var(--light);
}
.container {
  max-width: 1600px;
  margin: auto;
}
header {
  justify-content: space-between;
  align-items: center;
  padding: 2rem;
  position: relative;
  transition: 0.3s;
  border-radius: 0 0 1rem 1rem;
}
header.active {
  background-color: rgba(0, 0, 0, 0.3);
  border-bottom: 1px solid var(--light);
  position: sticky;
  top: 0;
  backdrop-filter: blur(1rem) brightness(60%);
  width: 100%;
  z-index: 99;
}
.filter input,
textarea {
  background-color: transparent;
}
header .logo {
  font-weight: 700;
  letter-spacing: 3px;
  position: relative;
  font-family: horbse;
}
.menu {
  font-size: 4rem;
}
.logo::before {
  content: "";
  position: absolute;
  width: 15rem;
  height: 15rem;
  transform: translate(-4.8rem, -5.5rem);
  border-radius: 51% 89% 46% 54%;
}
header nav ul {
  display: flex;
  gap: 4rem;
  font-size: 2rem;
}
header nav ul li a {
  display: inline-block;
  transition: 0.3s;
  position: relative;
  font-weight: 700;
  font-size: clamp(1.5rem, 3vw, 2.5rem);
}
.animate {
  opacity: 0.5;
  transform: translateY(30px);
  scale: 0.8;
}
.animate.animated {
  opacity: 1;
  transition-delay: 0.3s;
  transform: translateY(0);
  scale: 1;
}
.typing {
  font-family:duck;
  letter-spacing: 2px;
  margin-left: 1rem;
  -webkit-text-stroke: 1px var(--light);
  font-size: clamp(2rem, 8vw, 8rem);
}
.hero-page {
  display: flex;
  padding: 3rem 5rem;
  align-items: center;
  gap: 5rem;
  justify-content: center;
  flex-wrap: wrap;
  position: relative;
}
.hero-page .hero-text {
  max-width: 62%;
  margin: auto;
  backdrop-filter: blur(10px);
  padding: 2rem 1rem;
  border-radius: 2rem;
  background-color: rgba(0, 0, 0, 0.3);
}
.hero-text h1 {
  line-height: 1.4;
}
.btn,
.btn-group button a,
.contact-info .contact-text,
p.description {
  text-transform: capitalize;
}
.hero-text p {
  font-size: 2.5rem;
  margin-top: 2rem;
}
.btn {
  display: inline-block;
  padding: 1rem 2.5rem;
  font-size: 2rem;
  font-weight: 400;
  margin-top: 3rem;
  border-radius: 3rem;
  cursor: pointer;
}
.contact-area,
.hero-services .my-services .service {
  background-color: rgba(0, 0, 0, 0.3);
  backdrop-filter: blur(10px);
}
.btn:hover {
  background-color: unset;
}
.hero-bubble,
.hero-image {
  border-radius: 44% 56% 64% 36%/73% 72% 28% 27%;
  height: 45rem;
  width: 45rem;
  margin: auto;
  overflow: hidden;
  position: relative;
}
.hero-bubble {
  position: absolute;
  bottom: -30%;
  z-index: -2;
  left: 3rem;
  width: 40rem;
  height: 30rem;
  opacity: 0.5;
  rotate: 34deg;
}
.hero-bubble::before,
.hero-image::before {
  content: "";
  position: absolute;
  top: 20%;
  right: 8%;
  z-index: -1;
  rotate: 20deg;
  border-radius: 44% 56% 64% 36%/73% 72% 28% 27%;
  width: 5rem;
  height: 5rem;
  background-color: var(--primary);
  border: 2rem dotted var(--light);
  animation: 5s linear infinite backwards rotate;
  box-shadow: 0 0 10px var(--light-gray);
}
.hero-bubble::after,
.hero-image::after {
  content: "";
  position: absolute;
  z-index: -1;
  bottom: 20%;
  left: -2%;
  rotate: 120deg;
  border-radius: 44% 56% 64% 36%/73% 72% 28% 27%;
  width: 5rem;
  height: 5rem;
  background-color: var(--secondary);
  border: 2rem dashed var(--light-secondary);
  animation: 5s linear infinite rotate;
  box-shadow: 0 0 30px var(--light-gray);
}
.project,
img,
textarea {
  border-radius: 1rem;
}
@keyframes rotate {
  0%,
  100% {
    transform: rotate3d(1, 0.4, 1, 40deg) translate3d(5vw, 5vw, 5vw);
    border-color: #00fba7;
    opacity: 0.5;
    scale: 0.6;
  }
  50% {
    transform: rotate3d(2, -5, -1, 160deg) translate3d(-5vw, -5vh, 5vw);
    border-color: #ff6a00;
  }
  70% {
    transform: rotate3d(2, -5, -1, 360deg) translate3d(-8vh, -8vh, -5vw);
    border-color: #00f3fb;
    opacity: 0.9;
    scale: 3;
  }
}
.hero-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transform: translateY(2rem);
  margin-left: 10%;
}
.contact-me,
.hero-services,
.portfolio {
  text-align: center;
  position: relative;
}
.contact-me .hero-text h1,
.hero-services .hero-text h1,
.portfolio .hero-text h1 {
  font-weight: 400;
  text-decoration: underline;
  font-variant: small-caps;
  text-transform: unset;
  font-size: clamp(2rem, 10vw, 7rem);
  color: var(--light);
}
.hero-services .my-services {
  margin-top: 5rem;
  display: flex;
  flex-wrap: wrap;
  gap: 4rem;
  justify-content: center;
  align-items: center;
}
.hero-services .my-services .service {
  flex: 0 1 45rem;
  text-align: center;
  margin: 0 2rem;
  padding: 2rem;
  border-radius: 1rem;
  box-shadow: 0 0 1rem var(--light-gray);
  transition: 0.4s ease-in;
}
.hero-services .my-services .service > div:not(:last-child) {
  margin-bottom: 2.4rem;
}
.hero-services .my-services .service:hover {
  background-color: var(--light-secondary);
  color: var(--light-secondary);
}
.hero-services .my-services .service:hover .icon {
  margin-left: auto;
}
.hero-services .my-services .service h2 {
  font-size: 3rem;
  font-weight: 300;
  margin-bottom: 1rem;
  color: var(--light);
}
.hero-services .my-services .service p {
  font-size: 2rem;
}
img {
  width: 100%;
  height: 100%;
  object-fit: 100%;
  object-position: top;
}
.hero-services .hero-bubble {
  rotate: -180deg;
  right: 0;
  left: unset;
  bottom: -15rem;
  scale: 0.6;
  opacity: 0.3;
  background-image: radial-gradient(
    var(--light-primary) 30%,
    var(--light-secondary)
  );
}
.projects {
  padding: 2rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 3rem;
}
.filter {
  margin: 2rem auto;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 2rem;
  flex-wrap: wrap;
  position: relative;
}
.filter input {
  padding: 2rem;
  width: 80%;
  max-width: 45rem;
  border-radius: 2rem;
  outline: 0.3rem double var(--light-gray);
}
.filter .btn {
  margin-top: 0;
}
#searchResult {
  width: 100%;
  font-size: 2rem;
}
.project {
  flex: 0 1 45rem;
  margin: auto;
  height: 30rem;
  position: relative;
  box-shadow: 0 0 20px rgba(0, 0, 0, 0.7);
  background-image: linear-gradient(45deg, var(--primary), var(--secondary));
  transition: 0.4s ease-in;
}
.bg,
.loader {
  position: fixed;
  left: 0;
  width: 100vw;
  top: 0;
}
.project:hover {
  transform: scale(0.9);
  z-index: 1;
  outline: 0.3rem dashed var(--light-gray);
}
.project .project-image {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  transition: 0.2s ease-in;
}
.project .project-details {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  transform: translateY(100%);
  transition: 0.2s ease-in;
}
.project:hover .project-image {
  transform: translateY(-100%);
}
.project:hover .project-details {
  transform: translateY(0);
  padding: 2rem;
  position: relative;
}
.project .project-details h3 {
  font-size: 2rem;
  text-decoration: underline;
}
p.description {
  font-size: 1.6rem;
  margin: 1rem 0;
}
.project .project-details p span {
  position: relative;
  padding: 1rem;
  font-size: 1.6rem;
  text-transform: capitalize;
  cursor: pointer;
}
.project .project-details p span::before {
  content: "#";
  color: attr(data-color);
}
.btn-group {
  margin-top: 1rem;
}
.btn-group button {
  padding: 1rem;
  background-image: linear-gradient(145deg, var(--primary), var(--secondary));
  border-radius: 3rem;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
  flex: 1 1 25rem;
}
.btn-group button a {
  width: 100%;
  height: 100%;
  display: inline-block;
  color: inherit;
}
.contact-form h3 {
  font-size: 3rem;
  margin-bottom: 2rem;
}
.contact-me {
  padding: 9rem 3rem;
}
.contact-me p {
  margin-bottom: 4rem;
}
.contact-area {
  display: flex;
  flex-wrap: wrap;
  gap: 3rem;
}
.contact-area > div {
  flex: 1 1 35rem;
}
.contact-form,
.contact-link {
  outline: 0.5rem dashed var(--light-gray);
  padding: 3rem;
  border-radius: 3rem;
}
.contact-form:hover,
.contact-link:hover {
  outline-color: var(--primary);
}
.contact-link .contact-info {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 4rem;
}
.contact-info:not(:last-child) {
  margin-bottom: 3rem;
}
.contact-link .contact-info .icon {
  width: 5rem;
  height: 5rem;
}
.contact-info .contact-text {
  color: var(--light-gray);
  text-align-last: left;
  font-size: 1.6rem;
}
.contact-info .contact-text p {
  margin-left: 2rem;
  margin-top: 1rem;
}
.contact-info .contact-text p a {
  text-transform: lowercase;
}
.form-area form {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 3rem;
}
.form-area .input-area {
  flex: 1 1 25rem;
  height: 5rem;
}
.form-area .text-area,
.submit-btn {
  flex: 1 1 100%;
}
textarea {
  width: 100%;
  border: 0.3rem dashed var(--light-gray);
  padding: 1rem;
  font-family: sans-serif;
}
.submit-btn button {
  cursor: pointer;
  width: 100%;
  height: 5rem;
  background-color: var(--light-gray);
  border-radius: 3rem;
}
.submit-btn button.active {
  background-color: var(--primary);
}
.input-area input {
  font-size: 1.8rem;
  border: 0.3rem dashed var(--light-gray);
  width: 100%;
  height: 100%;
  padding: 1rem;
  border-radius: 4rem;
  background-color: transparent;
}
input:focus {
  border-color: var(--primary);
}
::placeholder {
  color: var(--primary);
}
@media screen and (max-width: 1200px) {
  .hero-page .hero-text {
    max-width: 55%;
  }
  .hero-page .hero-image {
    max-width: 30%;
  }
  .project {
    flex: 1 1 35rem;
  }
  .contact-area > div {
    flex: 1 1 50rem;
  }
  .contact-form .input-area {
    flex: 1 1 30rem;
  }
}
@media screen and (max-width: 750px) {
  .menu,
  header nav ul {
    display: block;
  }
  .hero-text h1,
  header .logo {
    font-size: 3rem;
  }
  .logo::before {
    width: 13rem;
    height: 13rem;
  }
  .hero-page {
    justify-content: flex-start;
  }
  .hero-page .hero-text {
    max-width: 100%;
  }
  .hero-image {
    order: -1;
    min-height: 45rem;
  }
  .hero-text p {
    font-size: 1.6rem;
  }
  .contact-area .input-area,
  .project {
    flex: 1 1 30rem;
  }
  .hero-bubble {
    scale: 0.6;
  }
  .contact-area > div {
    flex: 1 1 20rem;
    flex: 1 1 50rem;
  }
  .contact-link .contact-info .icon {
    width: 4rem;
    height: 4rem;
  }
  .contact-info .contact-text {
    font-size: 1.2rem;
  }
  .contact-form h3 {
    font-size: 2rem;
  }
  header nav {
    position: fixed;
    top: -1000px;
    transition: 0.3s;
    left: 0;
    z-index: 2;
  }
  nav.active {
    top: 0;
  }
  header nav ul {
    width: 70vw;
    height: 100vh;
    background-color: var(--dark-gray);
    counter-reset: no;
    overflow: auto;
    padding: 2rem;
  }
  header nav ul li a {
    white-space: nowrap;
    padding: 2rem;
    position: relative;
    color: var(--light-gray);
    transition: 0.2s;
    color: #fff;
    width: 100%;
  }
  header nav ul li a::before {
    content: counter(no) ".";
    counter-increment: no;
    margin-right: 2rem;
    color: var(--color);
  }
  header nav ul li a::after {
    content: "";
    width: 100%;
    height: 100%;
    background-color: var(--color);
    position: absolute;
    left: 0;
  }
  header nav.active ul li a::after {
    animation: 1s linear forwards width;
    animation-delay: var(--delay);
  }
  @keyframes width {
    100% {
      width: 5%;
      left: 100%;
    }
  }
  header nav ul li a:hover {
    color: var(--color);
  }
}
@media screen and (max-width: 1080px) {
  .hero-page .hero-text {
    max-width: 100%;
  }
  .hero-page .hero-image {
    max-width: 100%;
    min-height: 50rem;
  }
}
.bg {
  height: 100vh;
  background-color: inherit;
  display: flex;
  flex-wrap: wrap;
  gap: 30px;
  transform: perspective(1000px);
  z-index: -1;
}
.bg span {
  position: relative;
  display: inline-block;
  height: clamp(2rem, 5vw, 5rem);
  width: clamp(2rem, 5vw, 5rem);
  transform-style: preserve-3d;
  transition: 0.4s ease-in-out;
  animation: 6s linear infinite alternate opacity;
}
.bgAnimation {
  animation: 6s linear infinite rotate;
}
.bg span:nth-child(odd) {
  animation-delay: -5s;
}
.bg span:nth-child(2n) {
  animation-delay: -10s;
}
@keyframes opacity {
  0% {
    opacity: 0;
    transform: translate3d(-10vw, -20vw, -30vh);
  }
  100% {
    opacity: 1;
    transform: translate3d(-5vw, -42vw, 30vh);
  }
}
@media screen and (max-width: 300px) {
  .contact-link {
    padding: 1.5rem;
  }
  .contact-link .contact-info {
    gap: 1.5rem;
  }
}
.loader {
  z-index: 9999;
  display: grid;
  place-items: center;
  min-height: 100vh;
  background-color: #e6edfd;
}
.pl,
.pl__ball,
.pl__ball-inner-shadow,
.pl__ball-side-shadows,
.pl__ball-texture,
.pl__inner-ring,
.pl__outer-ring,
.pl__track-cover {
  border-radius: 50%;
}
.pl {
  position: relative;
  width: 16em;
  height: 16em;
}
.pl__ball,
.pl__ball-inner-shadow,
.pl__ball-outer-shadow,
.pl__ball-side-shadows,
.pl__ball-texture,
.pl__ball-texture:before,
.pl__inner-ring,
.pl__outer-ring,
.pl__track-cover {
  position: absolute;
}
.pl__ball,
.pl__ball-inner-shadow,
.pl__ball-outer-shadow,
.pl__ball-texture:before,
.pl__track-cover {
  animation: 3s linear infinite ball;
}
.pl__ball {
  top: calc(50% - 1.25em);
  left: calc(50% - 1.25em);
  transform: rotate(0) translateY(-6.5em);
  width: 2.5em;
  height: 2.5em;
}
.pl__ball-inner-shadow {
  animation-name: ballInnerShadow;
  box-shadow: 0 0.1em 0.2em hsla(0, 0%, 0%, 0.3),
    0 0 0.2em hsla(0, 0%, 0%, 0.1) inset,
    0 -1em 0.5em hsla(0, 0%, 0%, 0.15) inset;
  width: 100%;
  height: 100%;
}
.pl__ball-outer-shadow {
  animation-name: ballOuterShadow;
  background-image: linear-gradient(hsla(0, 0%, 0%, 0.15), hsla(0, 0%, 0%, 0));
  border-radius: 0 0 50% 50%/0 0 100% 100%;
  filter: blur(2px);
  top: 50%;
  left: 0;
  width: 100%;
  height: 250%;
  transform: rotate(20deg);
  transform-origin: 50% 0;
  z-index: -2;
}
.pl__ball-side-shadows {
  background-color: hsla(0, 0%, 0%, 0.1);
  filter: blur(2px);
  width: 100%;
  height: 100%;
  transform: scale(0.75, 1.1);
  z-index: -1;
}
.pl__ball-texture {
  width: 100%;
  height: 100%;
  transform: translate3d(0, 0, 0);
}
.pl__ball-texture:before {
  animation-name: ballTexture;
  animation-duration: 0.25s;
  background: url("https://blogger.googleusercontent.com/img/a/AVvXsEiLbRl4il0vp26ghBcIYh0DTi86ILtYs8z6m-hqNA4IcHArQ0bUFSOrQwigdWw2hrCrQYFuJjcoto-ANxwFZKJZzC_9mNk2e4xN_1D5IuUW1G6AlicSO4r1t69wb0__V-dUDRiNYjn4jsrLvvspjq009hdNyPbkx-mRsw5_05zHn0ja8nZS8nvNiOuO1-2_")
    0 0/50% 100%;
  content: "";
  display: block;
  filter: brightness(1.05);
  top: 0;
  right: 0;
  width: 200%;
  height: 100%;
}
.pl__inner-ring {
  box-shadow: 0 -0.25em 0.5em hsla(0, 0%, 100%, 0.4),
    0 0.5em 0.75em hsla(0, 0%, 100%, 0.4) inset,
    0 0.5em 0.375em hsla(0, 0%, 0%, 0.15),
    0 -0.5em 0.75em hsla(0, 0%, 0%, 0.15) inset;
  top: 2.375em;
  left: 2.375em;
  width: calc(100% - 4.75em);
  height: calc(100% - 4.75em);
}
.pl__outer-ring {
  box-shadow: 0 -0.45em 0.375em hsla(0, 0%, 0%, 0.15),
    0 0.5em 0.75em hsla(0, 0%, 0%, 0.15) inset,
    0 0.25em 0.5em hsla(0, 0%, 100%, 0.4),
    0 -0.5em 0.75em hsla(0, 0%, 100%, 0.4) inset;
  top: 0.75em;
  left: 0.75em;
  width: calc(100% - 1.5em);
  height: calc(100% - 1.5em);
}
.pl__track-cover {
  animation-name: trackCover;
  background-image: conic-gradient(
    #e6edfd 210deg,
    hsla(223, 90%, 95%, 0) 270deg
  );
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}
@keyframes ball {
  from {
    transform: rotate(0) translateY(-6.5em);
  }
  50% {
    transform: rotate(180deg) translateY(-6em);
  }
  to {
    transform: rotate(360deg) translateY(-6.5em);
  }
}
@keyframes ballInnerShadow {
  from {
    transform: rotate(0);
  }
  to {
    transform: rotate(-360deg);
  }
}
@keyframes ballOuterShadow {
  from {
    transform: rotate(20deg);
  }
  to {
    transform: rotate(-340deg);
  }
}
@keyframes ballTexture {
  from {
    transform: translateX(0);
  }
  to {
    transform: translateX(50%);
  }
}
@keyframes trackCover {
  from {
    transform: rotate(0);
  }
  to {
    transform: rotate(360deg);
  }
}

/* language section styled */
.flex {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 2rem;
  flex-wrap: wrap;
  margin-block: 2rem;
}
.language-img {
  width: 5vw;
}
