@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);
  --ma25: 1.3vw;
  --ma50: 3vw;
  --ma80: 4vw;
  --ma100: 5.208vw;
  --ma200: 10.416vw;
}
.header__logo {
  position: fixed;
}
.exhibition__title {
  display: block;
  margin: var(--ma100) auto;
  width: fit-content;
  color: var(--color-lightGray);
  font-size: var(--font-size-32px);
}

.info__wrap {
  margin: var(--ma100) auto;
  width: 35vw;
  overflow: hidden;
}

.img__wrap {
  display: flex;
  justify-content: center;
  gap: 0.833vw;
  margin-top: var(--ma100);
  opacity: 0;
  transform: translateY(2vw);
  transition: all 0.8s ease-out;
}

.img__yoko {
  width: 35.1vw;
}

.img__tate {
  height: 35.1vw;
}

.info {
  display: block;
  width: fit-content;
  margin: 0 auto;
  color: var(--color-white);
  text-align: center;
  padding-top: 1.25vw;
  opacity: 0;
  transform: translateY(2vw);
  transition: all 0.8s ease;
  position: relative;
}

/* テキスト部分 */
.info__day {
  display: block;
  font-size: clamp(12px, 0.833vw, 24px);
  margin-top: var(--ma25);
}
.info__title {
  display: block;
  font-size: clamp(16px, 1.25vw, 36px);
  margin: 0.5vw;
}
.info__gallery {
  display: block;
  font-size: clamp(12px, 0.833vw, 24px);
  margin-bottom: var(--ma50);
}

/* --- アニメーション用クラス --- */

/* 画像が下からフェードイン */
.img__wrap.show {
  opacity: 1;
  transform: translateY(0);
}

/* テキストが下からフェードイン */
.info.show {
  opacity: 1;
  transform: translateY(0);
  transition-delay: 0.3s;
}

/* 下線アニメーション：中央から両方向に伸びる */
.info::after {
  content: "";
  position: absolute;
  bottom: -2vw;
  left: 0%;
  width: 100%;
  height: 1px;
  background: var(--color-lightGray);
  transform: scaleX(0);
  transform-origin: center; /* ← 中央を起点に */
  transition: transform 0.8s ease-in-out;
}

.info.show-border::after {
  transform: scaleX(1);
}

@media (max-width: 767px) {
  .exhibition__title {
    margin: 8vh auto 10vh;
  }
  .info__wrap {
    width: auto;
    padding-bottom: 4vh;
    border-bottom: none;
  }
  .img__wrap {
    justify-content: center;
    width: 100vw;
    margin: 0 auto;
    overflow: hidden;
  }
  .img__yoko {
    width: 60vw;
  }
  .img__tate {
    width: auto;
    height: 60vw;
  }
  .info__day {
    margin-top: var(--ma100);
  }
}
@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;
  }
}
