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

html {
  scroll-behavior: smooth;
}

body {
  font-family: "Fira Code", monospace;

  background: #0b0b0b;
  color: #fff;

  overflow: hidden;
}


/* =========================
   PORTFOLIO PAGE
========================= */

.portfolio-page {
  display: block;

  height: 100vh;

  overflow-y: auto;
  overflow-x: hidden;

  padding: 0 8vw 80px;
}

.portfolio-content {
  width: 100%;
  max-width: 1200px;

  margin: 0 auto;

  padding-top: 1000px;
}

/* =========================
   CATEGORY
========================= */

.portfolio-category {
  width: 100%;

  padding: 35px 0;

  border-top: 1px solid #222;
}

.portfolio-category:first-child {
  border-top: none;
}


/* =========================
   CATEGORY HEADER
========================= */

.category-header {
  display: flex;
  align-items: baseline;

  gap: 15px;

  margin-bottom: 25px;
}

.category-number {
  color: #555;

  font-size: 11px;

  letter-spacing: 2px;
}

.category-header h2 {
  color: #fff;

  font-size: 26px;
  font-weight: 500;

  letter-spacing: -1px;
}


/* =========================
   PROJECT
========================= */

.portfolio-item {
  display: grid;

  grid-template-columns: 1fr 1.6fr;

  align-items: center;

  gap: 45px;

  padding: 25px;

  background: #111;
}


/* =========================
   TEXT
========================= */

.portfolio-info {
  text-align: left;
}

.portfolio-label {
  margin-bottom: 12px;

  color: #555;

  font-size: 10px;

  letter-spacing: 3px;
}

.portfolio-info h3 {
  color: #fff;

  font-size: 26px;
  font-weight: 500;

  line-height: 1.1;

  letter-spacing: -1px;
}

.portfolio-info p {
  max-width: 300px;

  margin-top: 15px;

  color: #777;

  font-size: 12px;

  line-height: 1.6;
}


/* =========================
   VIDEO
========================= */

.portfolio-video {
  width: 100%;

  display: flex;
  align-items: center;
  justify-content: center;

  background: #000;
}


/* =========================
   REELS + VFX — VERTICAL
========================= */

.reels-video,
.vfx-video {
  width: 100%;

  max-width: 330px;

  aspect-ratio: 9 / 16;

  margin-left: auto;
}

.reels-video video,
.vfx-video video {
  width: 100%;
  height: 100%;

  object-fit: cover;
}


/* =========================
   LESSON — HORIZONTAL
========================= */

.horizontal-video {
  aspect-ratio: 16 / 9;
}

.horizontal-video video {
  width: 100%;
  height: 100%;

  object-fit: contain;
}


/* =========================
   MOBILE
========================= */

@media (max-width: 700px) {

  .portfolio-page {
    padding: 210px 20px 60px;
  }

  .portfolio-category {
    padding: 30px 0;
  }

  .category-header {
    margin-bottom: 20px;
  }

  .category-header h2 {
    font-size: 21px;
  }

  .portfolio-item {
    grid-template-columns: 1fr;

    gap: 25px;

    padding: 20px;
  }

  .portfolio-info {
    order: 1;
  }

  .portfolio-video {
    order: 2;
  }

  .portfolio-info h3 {
    font-size: 22px;
  }

  .portfolio-info p {
    font-size: 12px;
  }

  .reels-video,
  .vfx-video {
    max-width: 100%;
  }

  .portfolio-content {
  padding-top: 1280px;
  }

}


/* =========================
   HEADER
========================= */

.header {
  position: fixed;

  top: 50;
  left: 0;

  width: 100%;
  height: 100vh;

  display: flex;
  justify-content: center;
  align-items: flex-start;

  pointer-events: none;

  z-index: 100;
}

.intro {
  margin-top: 40px;

  display: flex;
  flex-direction: column;
  align-items: center;

  pointer-events: auto;

  padding: 18px 24px 20px;
  border-radius: 18px;

  background: rgba(255, 255, 255, 0.08);
  backdrop-filter: blur(20px) saturate(120%);
  -webkit-backdrop-filter: blur(20px) saturate(120%);

  border: 1px solid rgba(255, 255, 255, 0.1);
  box-shadow: 0 12px 40px rgba(0, 0, 0, 0.25);
}

.nav {
  display: flex;
  align-items: center;
  gap: 8px;

  margin-top: 4px;
  padding-top: 18px;

  border-top: 1px solid rgba(255, 255, 255, 0.12);
}

.nav {
  margin-top: 18px !important;
}

/* =========================
   IDENTITY
========================= */

.identity {

  display: flex;

  align-items: center;

  gap: 18px;
}


/* =========================
   AVATAR
========================= */

.avatar {

  width: 72px;
  height: 72px;

  object-fit: cover;

  border-radius: 0;

  display: block;
}


/* =========================
   IDENTITY TEXT
========================= */

.identity-text {

  display: flex;

  flex-direction: column;

  align-items: flex-start;
}


.name {

  color: #fff;

  text-decoration: none;

  font-size: 26px;

  font-weight: 600;

  letter-spacing: -1px;

  transition: opacity 0.25s ease;
}

.name:hover {
  opacity: 0.7;
}


.profession {

  margin-top: 7px;

  color: #777;

  font-size: 13px;

  letter-spacing: 0;
}


/* =========================
   NAVIGATION
========================= */

.nav {

  display: flex;

  gap: 8px;

  margin-top: 30px;
}

.nav-arrow {
  display: flex;

  align-items: center;
  justify-content: center;

  color: #777;

  font-size: 16px;

  user-select: none;

  transition:
    transform 0.25s ease,
    color 0.25s ease;
}

.nav-arrow.passed {
  transform: scale(1.5);
  color: #fff;
}


.nav-link {
  border: none;
  outline: none;

  background: none;
  color: #fff;

  font-family: inherit;
  font-size: 13px;

  cursor: pointer;

  padding: 11px 18px;
  min-width: 110px;

  transition: background 0.2s ease;
}


/* Hover */

.nav-link:hover {
  background: #2F4F4F;
  color: #fff;
}


/* Active */

.nav-link.active {
  background: #fff;
  color: #000;
}


/* =========================
   HORIZONTAL SCROLL
========================= */

.horizontal-scroll {

  width: 100vw;
  height: 100vh;

  display: flex;

  overflow-x: auto;
  overflow-y: hidden;

  scroll-snap-type: x mandatory;

  scrollbar-width: none;
}

.horizontal-scroll::-webkit-scrollbar {
  display: none;
}


/* =========================
   PAGES
========================= */

.page {

  flex: 0 0 100vw;

  width: 100vw;
  height: 100vh;

  display: flex;

  align-items: center;

  justify-content: center;

  padding: 210px 10vw 80px;

  scroll-snap-align: start;
}


/* =========================
   CONTENT
========================= */

.content {

  width: 100%;

  max-width: 1100px;

  text-align: center;
}


.eyebrow {

  margin-bottom: 25px;

  color: #555;

  font-size: 11px;

  letter-spacing: 4px;
}


h1 {

  font-size: clamp(55px, 8vw, 130px);

  font-weight: 500;

  line-height: 0.9;

  letter-spacing: -5px;
}


.content p {

  max-width: 500px;

  margin: 40px auto 0;

  color: #777;

  font-size: 16px;

  line-height: 1.6;
}


/* =========================
   MOBILE
========================= */

@media (max-width: 700px) {

  .intro {
    margin-top: 35px;
  }


  .avatar {

    width: 55px;
    height: 55px;
  }


  .identity {

    gap: 12px;
  }


  .name {
    font-size: 18px;
  }


  .profession {
    font-size: 10px;
  }


  .nav {

    gap: 5px;

    margin-top: 25px;
  }


  .nav-link {

    min-width: auto;

    padding: 9px 11px;

    font-size: 11px;
  }


  .page {

    padding: 180px 25px 60px;
  }


  h1 {

    font-size: clamp(50px, 16vw, 80px);

    letter-spacing: -3px;
  }



}


.portfolio-page {
  scrollbar-width: none;
  -ms-overflow-style: none;
}

.portfolio-page::-webkit-scrollbar {
  display: none;
}

.resume-block {
  width: 100%;
  max-width: 850px;
  margin: 60px auto 0;
  text-align: left;
}

.resume-item {
  padding: 25px 0;
  border-top: 1px solid #222;
}

.resume-item:last-child {
  border-bottom: 1px solid #222;
}

.resume-item h2 {
  color: #fff;
  font-size: 18px;
  font-weight: 500;
  margin-bottom: 12px;
}

.resume-item p {
  max-width: 700px;
  color: #777;
  font-size: 12px;
  line-height: 1.7;
}


.contacts-list {
  width: 100%;
  max-width: 600px;
  margin: 60px auto 0;

  display: flex;
  flex-direction: column;
}

.contact-item {
  display: flex;
  align-items: center;
  gap: 20px;

  padding: 22px 0;

  color: #fff;
  text-decoration: none;

  border-top: 1px solid #222;

  transition: opacity 0.2s ease;
}

.contact-item:last-child {
  border-bottom: 1px solid #222;
}

.contact-item:hover {
  opacity: 0.6;
}

.contact-icon {
  width:200px;
  font-size: 20px;
  text-align: center;
}

.contact-text {
  font-size: 20px;
}


@media (max-width: 700px) {

  .resume-block {
    margin-top: 30px;
  }

  .resume-item {
    padding: 14px 0;
  }

  .resume-item h2 {
    font-size: 15px;
    margin-bottom: 6px;
  }

  .resume-item p {
    font-size: 11px;
    line-height: 1.5;
  }

}







.software-grid {
  display: flex;
  flex-direction: column;
  gap: 2px;

  margin-top: 25px;
}

.software-card {
  display: flex;
  align-items: center;
  gap: 20px;

  min-width: 0;
}

.software-image {
  width: 42px;
  height: 42px;

  display: block;
  object-fit: contain;

  background: transparent;
}

.software-card h3 {
  display: none;
}

.skill-dots {
  display: flex;
  gap: 5px;
  margin-left: 5px;
}

.skill-dots span {
  display: block;

  width: 7px;
  height: 7px;

  background: #333;
}

.skill-dots span.filled {
  background: #fff;
}


