@charset "UTF-8";
/***************************
variable
 ***************************/
:root {
  --color-lightGray: #c2c9cc;
  --color-white: #ffffff;
  --color-darkgray: #131414;
  --color-black: #000000;
  --color-bg: linear-gradient(#131414, #a8afb1);
  --font-size-12px: clamp(10px, 0.625vw, 12px);
  --font-size-16px: clamp(14px, 0.9vw, 16px);
  --font-size-24px: clamp(16px, 1.25vw, 24px);
  --font-size-32px: clamp(24px, 1.666vw, 32px);
  --font-size-56px: clamp(48px, 2.916vw, 56px);
  --ma-25: 1.3vw;
  --ma50: 3vw;
  --ma80: 4vw;
  --ma100: 5.208vw;
  --ma200: 10.416vw;
}

/***************************
hover
 ***************************/
.works__title {
  display: block;
  margin: var(--ma100) auto;
  width: fit-content;
  color: var(--color-lightGray);
  font-size: var(--font-size-32px);
}
.works__year {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
  height: 100%;
  margin: 0 auto;
  background: var(--color-darkgray);
  color: var(--color-lightGray);
  margin-bottom: var(--ma-25);
  font-size: var(--font-size-16px);
}
.grid_area {
  width: fit-content;
  margin: 0 auto;
}
.grid {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 0.833vw;
  margin-bottom: var(--ma-25);
}
.grid img {
  width: 21vw;
  height: 15vw;
  object-fit: cover;
  cursor: pointer;
  transition: 0.4s;
}

/***************************
 モーダル
 ***************************/
.modal {
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.85);
  justify-content: center;
  align-items: center;
  flex-direction: column;
  z-index: 9999;
  opacity: 0;
  transition: opacity 0.4s ease;
  overflow: hidden;
}

.modal.open {
  display: flex;
  opacity: 1;
  z-index: 100000;
}

.modal.fade-out {
  opacity: 0;
  transition: opacity 0.4s ease;
}

.modal img {
  max-width: 90%;
  max-height: 80%;
  box-shadow: 0 0 20px rgba(0, 0, 0, 0.5);
  transition: opacity 0.3s ease;
}

.modal img.fade {
  opacity: 0;
}

.caption {
  color: #fff;
  font-size: 1rem;
  margin-top: 15px;
  max-width: 80%;
  text-align: center;
  line-height: 1.6;
}

.modal__close {
  position: absolute;
  top: 20px;
  right: 30px;
  color: white;
  font-size: 2rem;
  cursor: pointer;
}

/* 矢印 */
.arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  color: white;
  font-size: 3rem;
  cursor: pointer;
  user-select: none;
  transition: opacity 0.2s ease;
}

.arrow:hover {
  opacity: 0.7;
}

.arrow.left {
  left: 40px;
}

.arrow.right {
  right: 40px;
}

@media (max-width: 767px) {
  .works__title {
    margin: 8vh auto 10vh;
  }
  .grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 2vw;
    margin-bottom: 8vh;
    margin-top: 3vh;
    padding: auto 2vw;
  }
  .grid img {
    width: auto;
    height: 47vw;
    aspect-ratio: 1/1;
  }
  .works__year {
    margin: auto;
    margin-bottom: 5vh;
  }
  .arrow {
    display: none;
  }
  .caption {
    font-size: 0.9rem;
  }
  .nav {
    position: fixed;
    top: 0;
    left: 60vw;
    width: 40vw;
    padding: 2vw;
    height: 100vh;
    background-color: rgba(0, 0, 0, 0.7);
    box-shadow: 2px 0 4px rgba(0, 0, 0, 0.1);
    transform: translateX(100vw);
    transition: transform 0.4s;
    z-index: 90;
    top: 0px;
  }
  .nav.active {
    transform: translateX(0vw);
    opacity: 1;
  }
}
@media (min-width: 768px) {
  .header {
    position: fixed;
    z-index: 10000;
  }

  .hamburger {
    position: fixed;
    top: 0;
    left: 1vw;
    z-index: 100;
    width: 3vh;
    height: 3.5vh;
    border: none;
    background: transparent;
    cursor: pointer;
  }

  .hamburger__line {
    position: absolute;
    margin: auto;
    left: 0;
    width: 3vh;
    height: 1px;
    background-color: var(--color-lightGray);
    transition: all 0.4s;
  }

  .hamburger__line:nth-of-type(1) {
    top: 0.55vw;
  }
  .hamburger__line:nth-of-type(2) {
    top: 1.1vw;
  }
  .hamburger__line:nth-of-type(3) {
    top: 1.65vw;
  }

  /* メニューオープン時 */
  .hamburger.active .hamburger__line:nth-of-type(1) {
    transform: translateY(0.55vw) rotate(-45deg);
  }
  .hamburger.active .hamburger__line:nth-of-type(2) {
    opacity: 0;
  }
  .hamburger.active .hamburger__line:nth-of-type(3) {
    transform: translateY(-0.55vw) rotate(45deg);
  }
  .nav {
    position: fixed;
    top: 0;
    left: 0;
    width: fit-content;
    padding: 2vw;
    height: 100vh;
    background-color: rgba(0, 0, 0, 0.7);
    box-shadow: 2px 0 4px rgba(0, 0, 0, 0.1);
    transform: translateX(-100%);
    transition: transform 0.4s;
    z-index: 90;
    top: 0px;
  }
  .nav ul li a {
    margin-bottom: 5vh;
  }
  .nav__list {
    padding: 7vh 0 0;
  }
}

.warksFadeIn {
  opacity: 0;
  transform: translateY(2vw);
  transition-delay: var(--fade-delay, 0s);
}
.warksFadeIn.show {
  opacity: 1;
  transform: translateY(0);
}
/***************************
hover
 ***************************/
.grid img:hover {
  filter: brightness(60%);
  transition-delay: 0s !important;
}
