@charset "utf-8";

/* CSS Document */

body {
  margin: 0;
  padding: 0;
  font-family: "Noto Sans TC", sans-serif;
  color: #18262e;
  text-decoration: none;
  letter-spacing: 2px;
  background-color: #000000;
}

* {
  &:focus {
    outline: none;
  }
}

a {
  text-decoration: none;
}

img {
  width: 100%;
  height: auto;
  display: block;
  margin: 0;
}

.container {
  max-width: 1140px;
  height: 100%;
  margin: 0 auto;
  padding: 0 5%;
}

.navigation-prev {
  position: absolute;
  left: 4%;
  top: 50%;
  translate: 0 -50%;
  width: 5%;
  aspect-ratio: 60 / 66;
  background: transparent url("../images/navigation-btn-bg.png") no-repeat 0 0;
  background-size: 200% auto;
  cursor: pointer;
  @media screen and (min-width: 768px) and (max-width: 959px) {
    width: 5%;
    left: 4%;
  }
  @media screen and (min-width: 960px) {
    width: 5%;
    left: 7%;
  }
  &::after {
    content: "";
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background: transparent url("../images/navigation-btn-bg.png") no-repeat 0
      100%;
    background-size: 200% auto;
    opacity: 0;
    transition: opacity 300ms ease;
  }
  @media (hover: hover) {
    &:hover {
      &::after {
        opacity: 1;
      }
    }
  }
}

.navigation-next {
  position: absolute;
  right: 4%;
  top: 50%;
  translate: 0 -50%;
  width: 5%;
  aspect-ratio: 60 / 66;
  background: transparent url("../images/navigation-btn-bg.png") no-repeat 100%
    0;
  background-size: 200% auto;
  transition: opacity 300ms ease;
  cursor: pointer;
  @media screen and (min-width: 768px) and (max-width: 959px) {
    width: 5%;
    right: 4%;
  }
  @media screen and (min-width: 960px) {
    width: 5%;
    right: 7%;
  }
  &::after {
    content: "";
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background: transparent url("../images/navigation-btn-bg.png") no-repeat
      100% 100%;
    background-size: 200% auto;
    opacity: 0;
    transition: opacity 300ms ease;
  }
  @media (hover: hover) {
    &:hover {
      &::after {
        opacity: 1;
      }
    }
  }
}

/* menuBar */

.logo {
  aspect-ratio: 147 / 135;
  width: 11vw;
  position: absolute;
  top: 1.8vw;
  left: 4.5vw;
  z-index: 1001;
  @media screen and (min-width: 768px) and (max-width: 959px) {
    width: 10vw;
    top: 16px;
    left: 32px;
  }
  @media screen and (min-width: 960px) {
    width: 8%;
    top: 3%;
    left: 3%;
  }
}

.logo img {
  width: 100%;
}

.nav-bar {
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 2vw;
  z-index: 1000;
  right: 3vw;
  top: 3.5vw;
  position: absolute;
  @media screen and (min-width: 768px) and (max-width: 959px) {
    gap: 2vw;
    position: absolute;
    right: 3vw;
    top: 3.5vw;
  }
  @media screen and (min-width: 960px) {
    gap: 38px;
    width: 114px;
    height: 418px;
    background: transparent url("../images/nav-bar-bg.png") no-repeat 0 0;
    position: fixed;
    padding-left: 20px;
    top: 50%;
    translate: 0 -50%;
    flex-direction: column;
    right: 0;
  }
}

.nav {
  font-size: 0;
  width: 6vw;
  aspect-ratio: 1 / 1;
  display: block;
  background: transparent url("../images/fixed-nav-bg.png") no-repeat 0 0;
  background-size: 200%;
  @media screen and (min-width: 768px) and (max-width: 959px) {
    width: 5vw;
  }
  @media screen and (min-width: 960px) {
    width: 46px;
  }
  &.official-site {
    background-position: 0 0;
    @media (hover: hover) {
      &:hover {
        background-position: 100% 0;
      }
    }
  }
  &.facebook {
    background-position: 0 33.33%;
    @media (hover: hover) {
      &:hover {
        background-position: 100% 33.33%;
      }
    }
  }
  &.youtube {
    background-position: 0 66.66%;
    @media (hover: hover) {
      &:hover {
        background-position: 100% 66.66%;
      }
    }
  }
  &.download {
    background-position: 0 100%;
    @media (hover: hover) {
      &:hover {
        background-position: 100% 100%;
      }
    }
  }
}

.kv-bg {
  background: #000 url("../images/kv-bg-m.jpg") no-repeat center center;
  background-size: auto 100%;
  position: relative;
  width: 100%;
  padding-bottom: 173.697%;
  overflow: hidden;
  @media screen and (min-width: 768px) and (max-width: 959px) {
    padding-bottom: 111.11%;
    background: #000 url("../images/kv-bg.jpg") no-repeat center center;
    background-size: auto 100%;
  }
  @media screen and (min-width: 960px) {
    padding-bottom: 56.25%;
    background: #000 url("../images/kv-bg.jpg") no-repeat center center;
    background-size: 100%;
    max-height: 900px;
  }
}

.kv-main-title {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 100vw;
  translate: -50% -52.5%;
  @media screen and (min-width: 768px) and (max-width: 959px) {
    width: 100vw;
    translate: -50% -68%;
  }
  @media screen and (min-width: 960px) {
    width: 52%;
    translate: -50% -68%;
  }
  img {
    opacity: 0;
    will-change: opacity;
  }
}

.kv-icon-arrow {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 12vw;
  translate: -50% 200%;
  z-index: 100;
  opacity: 0;
  will-change: opacity;
  @media screen and (min-width: 768px) and (max-width: 959px) {
    width: 9vw;
    translate: -50% 40%;
  }
  @media screen and (min-width: 960px) {
    width: 5%;
    translate: -50% 30%;
  }
  img {
    animation: upDownAnimation 500ms infinite alternate;
  }
}

.bottom-bar {
  width: 100%;
  position: absolute;
  z-index: 999;
  bottom: 1vw;
  @media screen and (min-width: 768px) and (max-width: 959px) {
    bottom: 4%;
  }
  @media screen and (min-width: 960px) {
    bottom: 6%;
  }
}

@keyframes btn-fixed {
  0% {
    transform: translateY(100%);
  }
  100% {
    transform: translateY(0);
  }
}

.btn-fixed {
  position: fixed;
  bottom: 0;
  background: linear-gradient(
    180deg,
    rgba(6, 125, 204, 0) 0%,
    rgba(0, 0, 0, 0.9) 90%
  );
  animation: btn-fixed 0.5s ease-out;
}

.btn-fixed.bottom {
  display: none;
}

.btn-reserve-circle {
  text-align: center;
  width: 25vw;
  cursor: pointer;
  transition: 0.2s;
  margin: 0 auto 2vw;
  opacity: 0;
  will-change: opacity;
  @media screen and (min-width: 768px) and (max-width: 959px) {
    width: 22%;
    max-width: 264px;
    margin-bottom: 16px;
  }
  @media screen and (min-width: 960px) {
    width: 11%;
    margin-bottom: 24px;
  }
}

.btn-reserve-circle img {
  width: 100%;
}

.btn-reserve-circle:hover {
  transform: scale(1.08);
}

.bg-gift {
  background: #000 url("../images/bg-gift-m.jpg") no-repeat center center;
  background-size: auto 100%;
  position: relative;
  width: 100%;
  padding-bottom: 173.697%;
  overflow: hidden;
  @media screen and (min-width: 768px) and (max-width: 959px) {
    padding-bottom: 111.11%;
    background: #000 url("../images/bg-gift.jpg") no-repeat center center;
    background-size: auto 100%;
  }
  @media screen and (min-width: 960px) {
    padding-bottom: 56.25%;
    background: #000 url("../images/bg-gift.jpg") no-repeat center center;
    background-size: auto 100%;
    max-height: 900px;
  }
}

.gift-title {
  width: 69vw;
  position: absolute;
  left: 50%;
  top: 50%;
  translate: -51% -305%;
  z-index: 10;
  @media screen and (min-width: 768px) and (max-width: 959px) {
    width: 66%;
    translate: -46% -108%;
  }
  @media screen and (min-width: 960px) {
    width: 34%;
    translate: -46% -108%;
  }
}

.gift-item {
  width: 100vw;
  position: absolute;
  left: 50%;
  top: 50%;
  translate: -50% -43%;
  z-index: 10;
  @media screen and (min-width: 768px) and (max-width: 959px) {
    width: 89%;
    translate: -51% -41%;
    z-index: 0;
  }
  @media screen and (min-width: 960px) {
    width: 46%;
    translate: -51% -41%;
  }
  img {
    cursor: pointer;
  }
}

.gift-icon-plus {
  cursor: pointer;
  width: 16vw;
  aspect-ratio: 1 / 1;
  left: 50%;
  top: 50%;
  translate: 47% 36%;
  position: absolute;
  background: transparent url("../images/gift-icon-plus.png") no-repeat 0 100%;
  background-size: 100% auto;
  z-index: 10;
  @media screen and (min-width: 768px) and (max-width: 959px) {
    width: 8.2vw;
    translate: 86% -15%;
  }
  @media screen and (min-width: 960px) {
    width: 9%;
    translate: 108% -1%;
  }
  @media (hover: hover) {
    background-position: 0 0;
    &:hover {
      background-position: 0 100%;
      &::after {
        background-position: 0 100%;
      }
    }
  }
  &::after {
    content: "";
    width: 100%;
    height: 100%;
    position: absolute;
    left: 0;
    top: 0;
    background: transparent url("../images/gift-icon-plus.png") no-repeat 0 100%;
    background-size: 100% auto;
    animation: pulseAnimation 1200ms infinite;
    @media screen and (min-width: 960px) {
      background-position: 0 0;
    }
  }
}

.gift-cht {
  width: 118vw;
  position: absolute;
  left: 50%;
  top: 50%;
  translate: -21% -50%;
  z-index: 0;
  pointer-events: none;
  @media screen and (min-width: 768px) and (max-width: 959px) {
    width: 67%;
    translate: 2% -44%;
    z-index: 10;
  }
  @media screen and (min-width: 960px) {
    width: 34%;
    translate: 2% -44%;
    z-index: 10;
  }
}

.gift-modal-btn {
  cursor: pointer;
  background: transparent url("../images/gift-btn-more.png") no-repeat 0 0;
  background-size: 100% auto;
  font-size: 0;
  width: 30vw;
  position: absolute;
  left: 50%;
  top: 50%;
  translate: 48% 82%;
  aspect-ratio: 151 / 53;
  z-index: 2;
  @media screen and (min-width: 768px) and (max-width: 959px) {
    width: 20%;
    translate: 56% 0%;
  }
  @media screen and (min-width: 960px) {
    width: 18%;
    translate: 71% 24%;
  }
  @media (hover: hover) {
    &:hover {
      background-position: 0 100%;
    }
  }
}

.bg-revision {
  background: #000 url("../images/bg-revision-m.jpg") no-repeat center center;
  background-size: auto 100%;
  position: relative;
  width: 100%;
  padding-bottom: 173.697%;
  overflow: hidden;
  @media screen and (min-width: 768px) and (max-width: 959px) {
    padding-bottom: 111.11%;
    background: #000 url("../images/bg-revision.jpg") no-repeat center center;
    background-size: auto 100%;
  }
  @media screen and (min-width: 960px) {
    padding-bottom: 56.25%;
    background: #000 url("../images/bg-revision.jpg") no-repeat center center;
    background-size: 100%;
    max-height: 900px;
  }
}

.revision-title {
  width: 90vw;
  position: absolute;
  left: 50%;
  top: 50%;
  translate: -51% -126%;
  @media screen and (min-width: 768px) and (max-width: 959px) {
    width: 71%;
    translate: -51% -127%;
  }
  @media screen and (min-width: 960px) {
    width: 36%;
    translate: -51% -127%;
  }
}

.revision-slider {
  position: absolute;
  left: 50%;
  top: 50%;
  translate: -50% -38%;
  width: 100vw;
  overflow: hidden;
  @media screen and (min-width: 768px) and (max-width: 959px) {
    width: 100%;
    translate: -50% -29%;
  }
  @media screen and (min-width: 960px) {
    width: 70%;
    translate: -50% -29%;
  }
  .swiper-slide {
    opacity: 0;
  }
  .swiper-slide-prev {
    opacity: 1;
  }
  .swiper-slide-next {
    opacity: 1;
  }
  .swiper-slide-active {
    opacity: 1;
  }
}

.slide-box {
  position: relative;
  &::after {
    content: "";
    width: 100%;
    height: 100%;
    background: transparent url("../images/revision-frame.png") no-repeat 0 0;
    background-size: cover;
    position: absolute;
    left: 0;
    top: 0;
  }
  a {
    display: block;
    padding: 1.2% 1.2%;
  }
}

.bg-video {
  background: #000 url("../images/bg-video-m.jpg") no-repeat center center;
  background-size: auto 100%;
  position: relative;
  width: 100%;
  padding-bottom: 173.697%;
  overflow: hidden;
  @media screen and (min-width: 768px) and (max-width: 959px) {
    padding-bottom: 111.11%;
    background: #000 url("../images/bg-video.jpg") no-repeat center center;
    background-size: auto 100%;
  }
  @media screen and (min-width: 960px) {
    padding-bottom: 56.25%;
    background: #000 url("../images/bg-video.jpg") no-repeat center center;
    background-size: 100%;
    max-height: 900px;
  }
}

.video-title {
  width: 84vw;
  position: absolute;
  left: 50%;
  top: 50%;
  translate: -46% -119%;
  @media screen and (min-width: 768px) and (max-width: 959px) {
    width: 66%;
    translate: -46% -115%;
  }
  @media screen and (min-width: 960px) {
    width: 33%;
    translate: -46% -115%;
  }
}

.videobox {
  position: absolute;
  width: 93vw;
  height: auto;
  aspect-ratio: 16 / 9;
  background: transparent url("../images/videobox-bg.png") no-repeat 0 0;
  background-size: cover;
  left: 50%;
  top: 50%;
  translate: -50% -33%;
  @media screen and (min-width: 768px) and (max-width: 959px) {
    width: 86%;
    translate: -50% -25%;
  }
  @media screen and (min-width: 960px) {
    width: 50%;
    translate: -50% -25%;
  }
}

.videobox iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: calc(100% - 2px);
  height: calc(100% - 2px);
}

.bg-notice {
  background: #000;
  padding: 3vw 0;
  @media screen and (min-width: 768px) and (max-width: 959px) {
    padding: 8% 0;
  }
  @media screen and (min-width: 960px) {
    padding: 8% 0;
  }
}

.notice-title {
  font-size: 6vw;
  font-weight: 700;
  min-width: 100px;
  margin-top: 4vw;
  line-height: 1.25;
  letter-spacing: 0.5vw;
  font-family: "Noto Sans TC", serif;
  color: #fff;
  text-align: center;
  font-weight: 500;
  @media screen and (min-width: 768px) and (max-width: 959px) {
    font-size: 24px;
    margin-top: 24px;
    letter-spacing: 4px;
  }
  @media screen and (min-width: 960px) {
    font-size: 24px;
    margin-top: 24px;
    letter-spacing: 4px;
  }
}

.notice-text {
  color: #ffffff;
  font-size: 4vw;
  line-height: 2;
  font-weight: 300;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 20px;
  padding-left: 0;
  @media screen and (min-width: 768px) and (max-width: 959px) {
    gap: 20px;
    font-size: 20px;
  }
  @media screen and (min-width: 960px) {
    gap: 20px;
    font-size: 20px;
  }
  li {
    position: relative;
    padding-left: 6vw;
    @media screen and (min-width: 768px) and (max-width: 959px) {
      padding-left: 3%;
    }
    @media screen and (min-width: 960px) {
      padding-left: 3%;
    }
    &::before {
      content: "";
      background: transparent url("../images/notice-icon.png") no-repeat 0 0;
      width: 3vw;
      aspect-ratio: 14 / 25;
      position: absolute;
      left: 0;
      top: 0;
      translate: 0 20%;
      @media screen and (min-width: 768px) and (max-width: 959px) {
        width: 2%;
      }
      @media screen and (min-width: 960px) {
        width: 2%;
      }
    }
    a {
      color: #fff;
      border-bottom: solid 1px #fff;
    }
  }
}

.text-highlight {
  color: #fe3500;
  font-weight: 500;
}

.modal-bg {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.9);
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 1002;
  overflow: hidden;
  overscroll-behavior: contain;
}

.modal {
  position: relative;
  color: #fff;
  height: fit-content;
  font-size: 22px;
  border-radius: 8px;
  background-repeat: no-repeat;
  background-position: center;
  width: 100%;
  max-width: 870px;
}

.modal-content {
  display: flex;
  flex-direction: column;
  align-items: center;
  box-sizing: border-box;
  padding: 6vw 3vw 3vw 3vw;
  @media screen and (min-width: 960px) {
    padding: 48px 24px 24px 24px;
  }
}

.modal-text {
  margin-top: 1vw;
  padding: 0 2vw 0 4vw;
  color: #ff3f00;
  font-size: 4vw;
  @media screen and (min-width: 960px) {
    margin-top: 12px;
    padding: 0 4px 0 16px;
    font-size: 24px;
  }
}

.modal-btn {
  display: flex;
  gap: 24px;
  margin: 12px 0 8px;
}

.icon-x {
  position: absolute;
  top: 0;
  right: 5vw;
  width: 5vw;
  height: 5vw;
  cursor: pointer;
  background: transparent url("../images/icon-close.png") no-repeat 0 0;
  background-size: cover;
  font-weight: 300;
  font-size: 0;
  @media screen and (min-width: 960px) {
    width: 30px;
    height: 30px;
    right: 120px;
  }
}

.success {
  width: 60vw;
  aspect-ratio: 1 / 1;
  position: relative;
  @media screen and (min-width: 960px) {
    width: 400px;
  }
}

.success img {
  position: absolute;
  width: 200vw;
  left: 50%;
  top: 50%;
  translate: -50% -50%;
  pointer-events: none;
  @media screen and (min-width: 960px) {
    width: 1250px;
  }
}

.reserve-area {
  display: flex;
  margin-top: 0;
  gap: 1.2%;
}

.input-area {
  width: 63%;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: start;
  flex: 1;
  gap: 16px;
}

.input-box {
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1vw;
  width: 100%;
  aspect-ratio: 748 / 132;
  padding: 0;
  background: transparent url("../images/input-box-bg-m.png") no-repeat 0 0;
  background-size: 100% auto;
  @media screen and (min-width: 960px) {
    aspect-ratio: 871 / 133;
    background: transparent url("../images/input-box-bg.png") no-repeat 0 0;
    background-size: 100% auto;
  }
}

.dropdown,
.input-field {
  border: 1px solid #562110;
  border-radius: 8px;
  padding: 1.2vw;
  font-size: 3.5vw;
  color: #ffffff;
  @media screen and (min-width: 960px) {
    font-size: 24px;
    padding: 12px;
  }
}

.dropdown {
  appearance: none; /* 隱藏預設的瀏覽器樣式 */
  -webkit-appearance: none; /* 適用於 Safari */
  -moz-appearance: none; /* 適用於 Firefox */
  background-color: rgba(0, 0, 0, 0.9);
  color: #6a6a6a;
  background-image: url("../images/dropdown-arrow.png");
  background-repeat: no-repeat;
  background-position: right 10px center;
  background-size: 12px;
  width: 25vw;
  @media screen and (min-width: 960px) {
    width: 150px;
  }
}

.dropdown.selected {
  color: #fff;
}

.input-field {
  width: 45vw;
  letter-spacing: 0.5px;
  @media screen and (min-width: 960px) {
    width: 320px;
  }
}

input[type="text"] {
  background-color: rgba(0, 0, 0, 0.9);
  outline: none;
}

input::placeholder {
  color: #6a6a6a;
}

.dropdown:focus,
.dropdown:focus-visible,
input[type="text"]:focus {
  outline: none;
  border-color: #752b14;
}

.btn-style {
  border: none;
  background-color: transparent;
  cursor: pointer;
  margin: 0;
  padding: 0;
  width: 18vw;
  @media screen and (min-width: 960px) {
    width: 120px;
  }
}

.btn-style img {
  width: 100%;
  transition: 0.2s;
}

.btn-style:hover img {
  transform: scale(1.05);
}

.icon-scroll {
  width: 3.5%;
  height: auto;
  margin: 0 auto 2%;
}

.gift-modal {
  position: relative;
}

.gift-list-box {
  position: relative;
  box-sizing: border-box;
  width: 100vw;
  aspect-ratio: 768 / 544;
  background: transparent url("../images/gift-list-box-m.png") no-repeat center
    0;
  background-size: 100% auto;
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 5vw 0;
  @media screen and (min-width: 960px) {
    max-width: 1200px;
    background: transparent url("../images/gift-list-box.png") no-repeat center
      0;
    background-size: auto 100%;
    aspect-ratio: 1374 / 544;
    padding: 48px 0;
  }
}

.gift-list-box .icon-x {
  top: -8vw;
  @media screen and (min-width: 960px) {
    top: -40px;
    right: 240px;
  }
}

.gift-item-01 {
  width: 80vw;
  @media screen and (min-width: 960px) {
    max-width: 522px;
  }
}

@keyframes upDownAnimation {
  from {
    translate: 0 0;
  }
  to {
    translate: 0 -10%;
  }
}

@keyframes pulseAnimation {
  from {
    scale: 1;
    opacity: 1;
  }
  to {
    scale: 1.4;
    opacity: 0;
  }
}

.kv-canvas-container {
  position: absolute;
  width: 133%;
  aspect-ratio: 1300 / 750;
  top: 50%;
  left: 50%;
  translate: -50% -69%;
  z-index: 20;
  display: none;
  @media screen and (min-width: 768px) and (max-width: 959px) {
    width: 133%;
    display: block;
    translate: -50% -70%;
  }
  @media screen and (min-width: 960px) {
    width: 68%;
    display: block;
  }
  canvas {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
  }
}
