html body {
    margin: 0;
    padding: 0;
    font-family: Arial, sans-serif;
    overflow: hidden;
}

.major-mono-display-regular {
  font-family: "Major Mono Display", monospace;
  font-weight: 400;
  font-style: normal;
}

/* main page transition fade out */
#home-page {
  transition: opacity 0.5s ease;
}

#home-page.hidden {
  opacity: 0;
  pointer-events: none;
}

header {
    background-color: transparent;
    height: 100px;
    width: 100vw;
    position: absolute;
    top: 0;
    display: flex;
    z-index: 10;
}

#logo {
    height: 100px;
    margin: auto 20px;
}

#nav {
    position: absolute;
    display: flex;
    gap: 50px;
    right: 320px;
    width: 400px;
    height: 80px;
    font-family: "Major Mono Display", monospace;
    font-size: 1.5em;
    font-weight: 400;
    align-items: center;
}

#nav a {
    color: black;
    text-decoration: none;
    transition: color 0.3s ease;
    display: inline-block;
    position: relative;
}

.nav-btn {
    background-color: transparent;
    padding: 10px 20px;
    cursor: pointer;
    font-family: "Major Mono Display", monospace;
    font-size: .7em;
    border: none;
}

.draw-border {
  transition: color 0.25s 0.0833333333s;
  position: relative;
}
.draw-border::before, .draw-border::after {
  border: 0 solid transparent;
  box-sizing: border-box;
  content: "";
  pointer-events: none;
  position: absolute;
  width: 0;
  height: 0;
  bottom: 0;
  right: 0;
}
.draw-border::before {
  border-bottom-width: 1px;
  border-left-width: 1px;
}
.draw-border::after {
  border-top-width: 1px;
  border-right-width: 1px;
}
.draw-border:hover {
  color: black;
}
.draw-border:hover::before, .draw-border:hover::after {
  border-color: black;
  transition: border-color 0s, width 0.25s, height 0.25s;
  width: 100%;
  height: 100%;
}
.draw-border:hover::before {
  transition-delay: 0s, 0s, 0.25s;
}
.draw-border:hover::after {
  transition-delay: 0s, 0.25s, 0s;
}

#shop-btn {
    height: 40px;
    width: 40px;
    position: absolute; 
    right: 240px;
    margin: 20px auto 0 auto;
    padding: 10px 20px;
    cursor: pointer;
    font-family: "Major Mono Display", monospace;
    font-size: .85em;
    background: transparent;
    border: 2px solid black;
    border-radius: 25px;
}


#contact-button {
    position: absolute;
    text-align: center;
    height: 40px;
    width: 190px;
    margin: 20px auto 0 auto;
    font-size: .85em;
    background-color: rgba(255, 255, 255, 0.8);
    color: black;
    font-weight: 400;
    cursor: pointer;
    font-family: "Major Mono Display", monospace;
    border-radius: 50px;
    right: 20px;
}

#background-shapes {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: -1; /* stays behind everything */
  overflow: hidden;
}

.shape {
  position: absolute;
  background: black;
  opacity: 0;
  transform: translateY(20px) rotate(0deg);
  transition: opacity 1s ease, transform 1s ease;
}

/* Random positions */
#shape1 {
  height: 250px;
  width: 250px;
  top: 50%;
  left: 10%;
  transition-delay: transform 0.5s;
  animation: float 35s ease-in-out infinite alternate;
  clip-path: polygon(50% 0%, 0% 100%, 100% 100%); /* triangle */
}
#shape2 {
  height: 300px;
  width: 300px;
  top: 10%;
  left: 60%;
  transition-delay: 0.5s;
  animation: float 30s ease-in-out infinite alternate;
  border-radius: 0; /* square */
}
#shape3 {
  height: 1000px;
  width: 1000px;
  top: 30%;
  left: 60%;
  transition-delay: 0.3s;
  animation: float 25s ease-in-out infinite alternate;
  clip-path: polygon(50% 0%, 0% 100%, 100% 100%); /* triangle */
}
#shape4 {
  height: 600px;
  width: 600px;
  top: -10%;
  left: -10%;
  transition-delay: 0.4s;
  border-radius: 0; /* square */
  animation: float 50s ease-in-out infinite alternate;
}
#shape5 {
  height: 400px;
  width: 400px;
  top: 70%;
  left: 32%;
  transition-delay: 0.1s;
  animation: float 40s ease-in-out infinite alternate;
}

/* When active */
#background-shapes.active .shape {
  opacity: 0.03;
}

/* Rotation animation */
@keyframes float {
  from {
    transform: translateY(0px) rotate(0deg);
  }
  to {
    transform: translateY(-40px) rotate(360deg);
  }
}

main {
    background-size: cover;
    background-position: center;
    width: 100%;
    height: 100vh;
    color: white;
    z-index: 1;
}

#headline {
    font-size: 1.2em;
    position: absolute;
    top: 40%;
    left: 30%;
    transform: translate(-50%, -50%);
    text-align: center;
    font-family: "Major Mono Display", monospace;
    font-weight: 400;
    font-style: normal;
}

#introtext {
    font-size: 3em;
    margin-top: 10px;
    word-spacing: -20px;
}


.hero {
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
}

.pill {
  width: 150px;
  height: 150px;
  border-radius: 999px;
  position: relative;
  overflow: hidden;
  background: #111;
  
  transition: width 1.2s cubic-bezier(0.77, 0, 0.175, 1);
}

.logo {
  width: 100%;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  transition: opacity 0.6s ease;
  z-index: 2;
}

.pill-image {
  position: absolute;
  inset: 0;
  background: url('images/forest-landscape-background.png') center/cover no-repeat;
  width: 100%;
  opacity: 0;
  transition: opacity 1s ease;
}

#herotext-left, #herotext-right {
  font-size: 5em;
  font-weight: 900;
  font-style: normal;
  margin: 10px;
  position: relative;
  color: black;
  z-index: 1;
  opacity: 0;
  transition: opacity 1s ease;
}

#herotext-top {
    font-size: 2em;
    font-weight: 400;
    font-style: normal;
    margin-bottom: -20px;
    position: absolute;
    top: 260px;
    color: black;
    z-index: 1;
    opacity: 0;
    transition: opacity 1s ease;
}

#explore-btn {
    position: absolute;
    top: 70%;
    left: 50%;
    transform: translate(-50%, -50%);
    padding: 15px 30px;
    font-size: .85em;
    background-color: transparent;
    color: black;
    font-weight: 400;
    cursor: pointer;
    font-family: "Major Mono Display", monospace;
    border-radius: 50px;
    border: 2px solid black;
    animation-delay: 2.3s;
}

.page {
    pointer-events: none;
    width: 100%;
    height: 100vh;
    position: absolute;
    opacity: 0;
    margin: 0;
    padding: 0;
    z-index: -10;
    inset: 0;
}

.page.active {
  opacity: 1;
  pointer-events: auto;
  z-index: 5;
}

/* wipe transition element */
.wipe {
  position: fixed;
  top: -100%;
  left: 0;
  width: 100%;
  height: 100%;
  background: white;
  z-index: 9999;
  pointer-events: none;
  filter: blur(2px);

  background: linear-gradient(
    to bottom,
    white 0%,
    white 80%,
    rgba(255, 255, 255, 0.7) 90%,
    rgba(255, 255, 255, 0) 100%
  );

  clip-path: polygon(
    0% 0%,
    100% 0%,
    100% 85%,
    90% 88%,
    80% 84%,
    70% 90%,
    60% 85%,
    50% 92%,
    40% 86%,
    30% 90%,
    20% 85%,
    10% 88%,
    0% 85%
  );
}

/* wipe animation */
.wipe.active {
  animation: wipeIn 0.8s ease forwards, wave 1s infinite alternate;
}

@keyframes wipeIn {
  from {
    top: -100%;
  }
  to {
    top: 0%;
  }
}

@keyframes wave {
  0% {
    clip-path: polygon(
      0% 0%, 100% 0%, 100% 85%,
      90% 88%, 80% 84%, 70% 90%, 60% 85%,
      50% 92%, 40% 86%, 30% 90%, 20% 85%, 10% 88%, 0% 85%
    );
  }
  100% {
    clip-path: polygon(
      0% 0%, 100% 0%, 100% 87%,
      90% 84%, 80% 89%, 70% 85%, 60% 90%,
      50% 86%, 40% 92%, 30% 85%, 20% 88%, 10% 84%, 0% 87%
    );
  }
}

.wipe::after {
  content: "";
  position: absolute;
  bottom: -50px;
  left: 0;
  width: 100%;
  height: 150px;

  background: url("images/smoke-texture.png") center/cover no-repeat;
  opacity: 0.6;
  filter: blur(10px);
}

.bg-video {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0;
  transition: opacity 1s ease;
  z-index: -1;
  filter: blur(10px);
  transform: scale(1.5); /* Makes the element 1.5 times larger */
  transform-origin: center;
}

.bg-video.active {
  opacity: 1;
  filter: blur(0);
}

#contact {
    height: 100vh;
    background-color: white;
    color: white;
    font-family: "Major Mono Display", monospace;
    font-size: 1.5em;
    display: flex;
    justify-content: center;
    align-items: center;
}

#contact h1 {
    position: absolute;
    top: 30%;
    left: 42px;
    font-size: 2.7em;
    margin-bottom: 20px;
}

#vecteezy-link {
    color: white;
    font-size: .5em;
    position: absolute;
    top: 90%;
    left: 20px;
}

.email-form {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 340px;
    padding: 30px;
    border: 1px solid white;
    border-radius: 20px;
    backdrop-filter: blur(10px);
    font-family: "Major Mono Display", monospace;
}

.email-form h2 {
    margin-bottom: 20px;
    font-size: 1.2rem;
    letter-spacing: 2px;
}

.email-form input,
.email-form textarea {
    width: 90%;
    padding: 12px;
    margin-bottom: 15px;
    background: transparent;
    border: 1px solid white;
    border-radius: 10px;
    color: white;
    font-family: inherit;
    font-size: 0.7rem;
    outline: none;
}

.email-form textarea {
    resize: none;
    height: 80px;
}

.email-form input::placeholder,
.email-form textarea::placeholder {
    color: white;
    opacity: 0.6;
}

.email-form button {
    color: white;
    width: 99%;
    padding: 12px;
    background: transparent;
    border: white 1px solid;
    border-radius: 30px;
    cursor: pointer;
    font-family: inherit;
    font-size: 0.7rem;
    letter-spacing: 2px;
    transition: transform 0.2s ease;
}

.email-form button:hover {
    transform: scale(1.05);
}

.back-home {
    position: absolute;
    top: 80%;
    right: 100px;
    color: white;
    font-size: .7em;
    background-color: transparent;
    padding: 10px;
    border-radius: 50px;
    font-family: "Major Mono Display", monospace;
    cursor: pointer;
    border: 1px solid white;
    font-weight: bold;
}

#back-home:hover {
  transform: scale(1.05);
}

#projects {
  position: fixed;
  width: 100%;
  height: 100vh;
  color: black;
  font-family: "Major Mono Display", monospace;
  font-size: 1.5em;
  display: flex;
  justify-content: center;
  align-items: center;
  background: white;
  transform: translateY(100%);
  z-index: 10;
  transition: transform 1.5s ease;
}

#projects.active {
  transform: translateY(0);
}

#projects-title {
  font-size: 2.2em;
  position: absolute;
  top: 3%;
}

#projects-back {
  color: black;
  border-color: black;
}

#writing-widget {
  position: absolute;
  top: 40%;
  left: 25%;
  transform: translate(-50%, -50%);
  background: linear-gradient(165deg, white 30%, lightgrey 80%);
  border: 1px solid white;
  border-radius: 20px;
  box-shadow: 5px 10px 20px darkgrey;
  width: 610px;
  height: 350px;
  color: black;
}
#writing-progress {
  position: absolute;
  padding-left: 15px;
  height: 180px;
  width: 270px;
  top: 12px;
  left: 12px;
  transform: translateX(-50%, -50%);
  font-size: .3em;
  text-align: left;
  border-bottom: 1px solid lightgrey;
  border-right: 1px solid lightgrey;
  border-radius: 15px;
  background: white;
}
#quote {
  position: absolute;
  padding-left: 15px;
  height: 125px;
  width: 270px;
  top: 12px;
  right: 12px;
  font-size: .3em;
  font-weight: bold;
  background: grey;
  border-radius: 15px;
  box-shadow: 5px 5px 10px darkgrey;
}
#current-status {
  position: absolute;
  padding-left: 15px;
  height: 130px;
  width: 270px;
  bottom: 12px;
  left: 12px;
  font-size: .3em;
  font-weight: bold;
  background: white;
  border-radius: 15px;
  box-shadow: 5px 5px 10px darkgrey;
}
#latest-blog-posts {
  position: absolute;
  padding-left: 15px;
  height: 185px;
  width: 270px;
  bottom: 12px;
  right: 12px;
  font-size: .3em;
  font-weight: bold;
  background: white;
  border-radius: 15px;
  box-shadow: 5px 5px 10px darkgrey;
}




/* sliding shutters transition */
.slide-shutters {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 300%;
  display: flex;
  pointer-events: none;
  z-index: 9999;
}
/* INDIVIDUAL LINES */
.line {
  position: relative;
  --i: 0;
  flex: 1;
  background: linear-gradient(
    to bottom,
    #000 0%,
    #0a0a0a 40%,
    #000 100%
  );

  /* 👇 THIS is the magic */
  height: 200vh; 
  transform: translateY(-100%);
}
.line::before {
  content: "";
  position: absolute;
  bottom: -60px;
  left: 0;
  width: 100%;
  height: 120px;

  background: url("images/smoke-texture.png") center/cover no-repeat;
  opacity: 0.25;
  filter: blur(10px);
}
.line::after {
  content: "";
  position: absolute;
  right: 0;
  top: 0;
  width: 2px;
  height: 100%;

  background: linear-gradient(
    to bottom,
    transparent,
    rgba(255,255,255,0.25),
    transparent
  );

  filter: blur(1px);
  opacity: 0.7;
}
.slide-shutters.active .line {
  animation: shutters 1.2s cubic-bezier(.77,0,.18,1) forwards;
  animation-delay: calc(var(--i) * 0.08s);
}
/* ONE continuous animation */
.slide-shutters.active .line {
  animation: shutters 1.2s linear forwards;
  animation-delay: calc(var(--i) * 0.04s);
}
/* keyframe goes all the way through */
@keyframes shutters {
  from {
    transform: translateY(-100%);
  }
  to {
    transform: translateY(100%);
  }
}


/* tracking in expand animation.
just add the .tracking-in-expand class to an element to apply the animation*/
.tracking-in-expand.animate-text{
	-webkit-animation: tracking-in-expand 2s cubic-bezier(0.215, 0.610, 0.355, 1.000) 0.5s both;
	        animation: tracking-in-expand 2s cubic-bezier(0.215, 0.610, 0.355, 1.000) 0.5s both;
}

@-webkit-keyframes tracking-in-expand {
  0% {
    letter-spacing: -0.5em;
    opacity: 0;
  }
  40% {
    opacity: 0.6;
  }
  100% {
    opacity: 1;
  }
}
@keyframes tracking-in-expand {
  0% {
    letter-spacing: -0.5em;
    opacity: 0;
  }
  40% {
    opacity: 0.6;
  }
  100% {
    opacity: 1;
  }
}


/* fade-in animation.
just add the .fade-in class to an element to apply the animation*/
.fade-in.animate-text{
	-webkit-animation: fade-in 2s linear 0.5s both;
	        animation: fade-in 2s linear 0.5s both;
}

@-webkit-keyframes fade-in {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}
@keyframes fade-in {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

/* slide-in-right-blurred animation.
just add the .slide-in-blurred-right class to an element to apply the animation*/
.slide-in-blurred-right.animate-text{
	-webkit-animation: slide-in-blurred-right 2s cubic-bezier(0.230, 1.000, 0.320, 1.000) 0.5s both;
	        animation: slide-in-blurred-right 2s cubic-bezier(0.230, 1.000, 0.320, 1.000) 0.5s both;
}

@-webkit-keyframes slide-in-blurred-right {
  0% {
    -webkit-transform: translateX(1000px) scaleX(2.5) scaleY(0.2);
            transform: translateX(1000px) scaleX(2.5) scaleY(0.2);
    -webkit-transform-origin: 0% 50%;
            transform-origin: 0% 50%;
    -webkit-filter: blur(40px);
            filter: blur(40px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateX(0) scaleY(1) scaleX(1);
            transform: translateX(0) scaleY(1) scaleX(1);
    -webkit-transform-origin: 50% 50%;
            transform-origin: 50% 50%;
    -webkit-filter: blur(0);
            filter: blur(0);
    opacity: 1;
  }
}
@keyframes slide-in-blurred-right {
  0% {
    -webkit-transform: translateX(1000px) scaleX(2.5) scaleY(0.2);
            transform: translateX(1000px) scaleX(2.5) scaleY(0.2);
    -webkit-transform-origin: 0% 50%;
            transform-origin: 0% 50%;
    -webkit-filter: blur(40px);
            filter: blur(40px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateX(0) scaleY(1) scaleX(1);
            transform: translateX(0) scaleY(1) scaleX(1);
    -webkit-transform-origin: 50% 50%;
            transform-origin: 50% 50%;
    -webkit-filter: blur(0);
            filter: blur(0);
    opacity: 1;
  }
}
