@charset "UTF-8";
.noto-sans-regular {
  font-family: "Noto Sans TC", sans-serif;
  font-weight: 400;
}

.noto-sans-medium {
  font-family: "Noto Sans TC", sans-serif;
  font-weight: 500;
}

.noto-sans-semibold {
  font-family: "Noto Sans TC", sans-serif;
  font-weight: 600;
}

.noto-sans-bold {
  font-family: "Noto Sans TC", sans-serif;
  font-weight: 700;
}

.noto-sans-black {
  font-family: "Noto Sans TC", sans-serif;
  font-weight: 900;
}

.noto-serif-regular {
  font-family: "Noto Serif TC", sans-serif;
  font-weight: 300;
}

.noto-serif-medium {
  font-family: "Noto Serif TC", sans-serif;
  font-weight: 500;
}

.noto-serif-semibold {
  font-family: "Noto Serif TC", sans-serif;
  font-weight: 600;
}

.noto-serif-bold, .card .project__name, .about .slogan-1 h1 {
  font-family: "Noto Serif TC", sans-serif;
  font-weight: 700;
}

.lora-regular {
  font-family: "Lora", serif;
  font-optical-sizing: auto;
  font-weight: 400;
  font-style: normal;
}

.fade {
  -webkit-transition: all linear 0.2s;
  transition: all linear 0.2s;
}
.fade:hover {
  -webkit-transition: all linear 0.2s;
  transition: all linear 0.2s;
}

@-webkit-keyframes fadeOutAnimation {
  0% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}

@keyframes fadeOutAnimation {
  0% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}
@-webkit-keyframes pulse {
  0% {
    -webkit-transform: translate(0, 0);
            transform: translate(0, 0);
  }
  50% {
    -webkit-transform: translate(0, 4px);
            transform: translate(0, 4px);
  }
  100% {
    -webkit-transform: translate(0, 0);
            transform: translate(0, 0);
  }
}
@keyframes pulse {
  0% {
    -webkit-transform: translate(0, 0);
            transform: translate(0, 0);
  }
  50% {
    -webkit-transform: translate(0, 4px);
            transform: translate(0, 4px);
  }
  100% {
    -webkit-transform: translate(0, 0);
            transform: translate(0, 0);
  }
}
:root {
  --index-banner-ratio: 895 / 1920;
  --index-banner-h: calc(100vw * var(--index-banner-ratio));
  --swiper-navigation-top-offset: calc((var(--index-banner-h) + var(--swiper-navigation-h)) / 2);
  --swiper-navigation-sides-offset: 4.2vmin;
}

.banner .swiper-container {
  position: relative;
  width: 100%;
  height: 100%;
}
.banner .swiper-slide {
  position: relative;
  overflow: hidden;
  width: 100%;
  height: var(--index-banner-h);
}
.banner .swiper-slide img {
  -webkit-mask-image: url(../images/index/banner-mask.svg);
          mask-image: url(../images/index/banner-mask.svg);
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-position: center;
          mask-position: center;
  -webkit-mask-size: cover;
          mask-size: cover;
}

@media (max-width: 1024px) {
  :root {
    --swiper-navigation-top-offset: calc((var(--index-banner-h) - var(--swiper-navigation-h)) / 2);
  }
}
@media screen and (max-width: 767px), screen and (orientation: portrait) {
  :root {
    --index-banner-ratio: 238 / 375;
    --swiper-navigation-sides-offset: 5vw;
  }
  .banner .swiper-slide img {
    -webkit-mask-image: url(../images/index/banner-mask-mb.svg);
            mask-image: url(../images/index/banner-mask-mb.svg);
  }
}
:root {
  --about-pb: 9vmin;
  --about-container--max-w: 1184px;
  --about-container-w: 94%;
  --about-right-mt: -3.5vmin;
  --about-right-w: 70vmin;
  --about-content-mt: 3.4vmin;
  --about-content-mb: 4vmin;
  --about-content-line-h: 1.8;
  --about-content-spacing: .4vmin;
  --about-content-row: 5;
  --about-logo-w: 17.7vmin;
  --slogan-1-t: 12.4vw;
  --slogan-1-gap: 3vmin;
  --slogan-1-font-size: 5vmin;
  --slogan-1-spacing: 2vmin;
  --slogan-1-shadow: .2vmin .2vmin .4vmin rgba(0, 0, 0, .75);
  --project-wrap-py: 10px;
  --project-wrap-px: 2%;
  --project-wrap-gap: 1.9vmin;
  --project-title-mb: 4.6vmin;
  --project-name-font-size: 28px;
  --project-name-letter-spacing: 0.9vmin;
  --project-name-en-ml: -1.2vmin;
  --project-name-en-letter-spacing: 2px;
  --project-name-shadow-pl: 2.2vmin;
  --project-name-shadow-letter-spacing: 8px;
  --project-brackets-w: .6vmin;
  --project-brackets-h: 2.5vmin;
  --project-brackets-ml: 1.9vmin;
  --project-brackets-mb: -0.28vmin;
  --project-sub-title-font-size: 20px;
  --project-sub-title-letter-spacing: 5px;
  --project-content-row: 3;
  --project-content-line-h: 1.5;
  --project-content-mb: 30px;
  --project-content-font-size: 15px;
  --project-content-letter-spacing: 4px;
  --card-swiper-ratio: 750 / 1300;
  --card-swiper-w: 67.7vw;
  --card-swiper-h: calc(var(--card-swiper-w) * var(--card-swiper-ratio));
}

.about {
  background-image: url("../images/index/about-bg.webp");
  background-position: center bottom;
  background-size: cover;
  padding-bottom: var(--about-pb);
}
.about .container {
  max-width: var(--about-container--max-w);
  width: var(--about-container-w);
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: end;
}
.about .about__right {
  z-index: 1;
  margin-top: var(--about-right-mt);
  max-width: var(--about-right-w);
}
.about .slogan-1 {
  position: absolute;
  top: var(--slogan-1-t);
  z-index: 1;
  width: 100%;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
}
.about .slogan-1 > div {
  width: 80%;
  max-width: 1300px;
}
.about .slogan-1 .logo {
  margin-bottom: var(--slogan-1-gap);
  width: var(--about-logo-w);
}
.about .slogan-1 .logo img {
  width: 100%;
}
.about .slogan-1 h1 {
  padding-left: 8px;
  letter-spacing: var(--slogan-1-spacing);
  font-size: var(--slogan-1-font-size);
  text-shadow: var(--slogan-1-shadow);
  color: #fff;
}
.about .slogan-1 h1 > span:first-of-type::after {
  content: "，";
}
.about .about-content {
  margin-top: var(--about-content-mt);
  margin-bottom: var(--about-content-mb);
  letter-spacing: var(--about-content-spacing);
  text-align: justify;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: var(--about-content-row);
  line-height: calc(var(--body-font) * var(--about-content-line-h));
  max-height: calc(calc(var(--body-font) * var(--about-content-line-h)) * var(--about-content-row));
}
.about .btn-row {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: end;
}

.card .container {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
}
.card .container.style-1 {
  -webkit-box-orient: horizontal;
  -webkit-box-direction: reverse;
      -ms-flex-direction: row-reverse;
          flex-direction: row-reverse;
}
.card .container.style-2 {
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
      -ms-flex-direction: row;
          flex-direction: row;
}
.card .project-wrap {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  padding: var(--project-wrap-py) var(--project-wrap-px);
  width: calc(100vw - var(--card-swiper-w));
  background-image: url(../images/index/project-wrap-bg.webp);
  background-size: cover;
  color: #fff;
}
.card .project-wrap > div {
  max-width: 408px;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  -webkit-box-align: start;
      -ms-flex-align: start;
          align-items: start;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
}
.card .project__title {
  position: relative;
  margin-bottom: var(--project-title-mb);
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: end;
  width: 100%;
}
.card .project__name {
  position: relative;
  width: 100%;
  margin-bottom: var(--project-wrap-gap);
}
.card .project__name .name {
  position: absolute;
  left: 0;
  bottom: 0;
  font-size: var(--project-name-font-size);
  letter-spacing: var(--project-name-letter-spacing);
}
.card .project__name .name i.brackets {
  width: var(--project-brackets-w);
  height: var(--project-brackets-h);
  margin-right: var(--project-brackets-ml);
  margin-bottom: var(--project-brackets-mb);
}
.card .project__name .name i.brackets.right {
  margin-left: var(--project-brackets-ml);
  margin-top: var(--project-brackets-mb);
}
.card .project__name .en {
  margin-right: var(--project-name-en-ml);
  font-size: calc(var(--project-name-font-size) * 0.5);
  letter-spacing: var(--project-name-en-letter-spacing);
}
.card .project__name .name-shadow {
  padding-left: var(--project-name-shadow-pl);
  font-size: calc(var(--project-name-font-size) * 1.8);
  letter-spacing: var(--project-name-shadow-letter-spacing);
  color: rgba(0, 0, 0, 0.1);
}
.card .project__sub_title {
  margin-bottom: var(--project-wrap-gap);
  font-size: var(--project-sub-title-font-size);
  letter-spacing: var(--project-sub-title-letter-spacing);
  font-weight: bold;
}
.card .project__content {
  margin-bottom: var(--project-content-mb);
  font-size: var(--project-content-font-size);
  letter-spacing: var(--project-content-letter-spacing);
  text-align: justify;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: var(--project-content-row);
  line-height: calc(var(--body-font) * var(--project-content-line-h));
  max-height: calc(calc(var(--body-font) * var(--project-content-line-h)) * var(--project-content-row));
}
.card .project__btn {
  margin-bottom: var(--project-content-mb);
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: end;
  width: 100%;
}
.card .project__footer {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  gap: 6px;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  -webkit-box-align: end;
      -ms-flex-align: end;
          align-items: flex-end;
  width: 100%;
  font-size: 12px;
}
.card .project__footer > div {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 4px;
  letter-spacing: 2px;
}
.card .project-pic {
  position: relative;
  width: var(--card-swiper-w);
  height: var(--card-swiper-h);
  overflow: hidden;
}
.card .project-pic .swiper-button-next, .card .project-pic .swiper-button-prev {
  --swiper-navigation-top-offset: calc(var(--card-swiper-h) / 2);
}
.card .card-swiper {
  height: 100%;
}

@media (max-width: 1600px) {
  :root {
    --about-right-w: 80vmin;
  }
}
@media (max-width: 1400px) {
  :root {
    --card-swiper-w: 60vw;
    --slogan-1-font-size: 4vmin;
    --project-title-mb: 0;
    --project-name-font-size: 22px;
    --project-sub-title-font-size: 18px;
    --project-content-letter-spacing: 2px;
    --project-content-line-h: 1.3;
    --project-brackets-w: 6px;
    --project-brackets-h: 25px;
    --project-brackets-ml: 20px;
    --project-brackets-mb: -5px;
    --card-swiper-ratio: 300 / 375;
    --about-right-mt: 3.5vmin;
    --about-right-w: 80%;
  }
}
@media (max-width: 1024px) {
  :root {
    --slogan-1-t: calc(var(--index-banner-h) / 2);
    --project-sub-title-font-size: 17px;
    --project-sub-title-letter-spacing: 2px;
  }
  .about {
    padding-top: var(--header-h);
  }
  .about:before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: var(--header-h);
    background-image: url(../images/common/header-bg.webp);
    background-size: cover;
    background-position: center top;
  }
  .about .slogan-1 .logo {
    display: none;
  }
  .about .slogan-1 h1 > span:first-of-type::after {
    content: "";
  }
  .about .slogan-1 h1 > span {
    display: block;
  }
}
@media screen and (max-width: 767px), screen and (orientation: portrait) {
  :root {
    --about-container--max-w: 665px;
    --about-container-w: 76%;
    --about-right-w: 100%;
    --card-swiper-w: 100vw;
    --about-pb: 15vmin;
    --about-content-mt: 5vmin;
    --about-content-mb: 8vmin;
    --about-content-row: 8;
    --project-content-row: 5;
  }
  .about {
    background-image: url("../images/index/about-bg-mb.webp");
  }
  .about .btn-row {
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
  }
  .card {
    position: relative;
    padding-top: var(--card-title-h);
  }
  .card .container {
    position: relative;
    z-index: 2;
  }
  .card .container.style-1, .card .container.style-2 {
    width: 100%;
    -webkit-box-orient: vertical;
    -webkit-box-direction: reverse;
        -ms-flex-direction: column-reverse;
            flex-direction: column-reverse;
  }
  .card .project-wrap {
    width: 100%;
    background-position: center center;
    background-image: url(../images/index/project-wrap-bg-mb.webp);
  }
  .card .project-wrap > div {
    max-width: var(--about-container--max-w);
    width: var(--about-container-w);
  }
  .card .project__title {
    position: absolute;
    top: 0;
    left: 0;
    width: var(--card-swiper-w);
    height: var(--card-swiper-h);
  }
  .card .project-pic {
    width: 100%;
  }
  .card .block__title-bg {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
  }
  .card .block__title-bg img {
    width: 100%;
    height: 100%;
    -o-object-fit: cover;
       object-fit: cover;
    -o-object-position: left -26vw;
       object-position: left -26vw;
  }
  :root {
    --slogan-1-font-size: 20px;
    --slogan-1-shadow: 2px 2px 4px rgba(0, 0, 0, .75);
    --about-content-line-h: 1.5;
    --project-name-font-size: 20px;
    --project-brackets-ml: 12px;
    --project-wrap-gap: 14px;
  }
  .about .slogan-1 > div {
    width: calc(94% - 60px - 10%);
  }
}
@media (max-width: 350px) {
  :root {
    --project-name-font-size: 18px;
    --block-title-en-font-size: 26px;
    --block-title-en-letter-spacing: 2px;
  }
}
@media (orientation: landscape) and (max-height: 550px) {
  :root {
    --slogan-1-font-size: 22px;
    --project-content-mb: 12px;
    --project-brackets-ml: 12px;
  }
  .card .project__footer {
    display: none;
  }
}