@charset "UTF-8";
html,
body,
select,
option,
.modal,
input,
* {
  font-family: "Noto Sans TC", "Heiti TC", "儷黑 Pro", "LiHei Pro", "文泉驛正黑", "WenQuanYi Zen Hei", "微軟正黑體", "Microsoft JhengHei", "新細明體", sans-serif, Arial, Helvetica, "Montserrat";
  font-size: 1rem;
  line-height: 1.5;
  font-weight: 400;
  color: #0e0e0e;
  box-sizing: border-box;
}

a {
  text-decoration: none;
}

h1,
h2,
h3,
h4,
h5,
h6 {
  font-weight: 700;
  margin-bottom: 0.5em;
}

h1,
h2 {
  font-size: clamp(2.4rem, 3.8vw, 3.8rem);
  line-height: 1.3;
}

h3 {
  font-size: clamp(2rem, 3vw, 3rem);
  line-height: 1.4;
}

h4 {
  font-size: clamp(1.5rem, 2.2vw, 2.2rem);
  line-height: 1.4;
}

h5 {
  font-size: clamp(1.1rem, 1.5vw, 1.5rem);
  line-height: 1.5;
}

h6 {
  font-size: 1.1rem;
  font-size: clamp(1rem, 1.2vw, 1.2rem);
  line-height: 1.5;
}

p {
  font-size: 1rem;
  font-size: clamp(0.8rem, 1vw, 1rem);
  line-height: 1.6;
  margin-bottom: 1em;
}

sub {
  font-size: 12px;
  color: #1fac3c;
  font-family: "Montserrat";
}

body {
  background: #ffffff;
}

section {
  padding: 0 clamp(2rem, 5vw, 5rem) calc(clamp(2rem, 5vw, 5rem) * 1.5);
}

::-webkit-input-placeholder {
  /* Chrome/Opera/Safari */
  color: #aaa;
}

::-moz-placeholder {
  /* Firefox 19+ */
  color: #aaa;
}

:-ms-input-placeholder {
  /* IE 10+ */
  color: #aaa;
}

:-moz-placeholder {
  /* Firefox 18- */
  color: #aaa;
}

html {
  -webkit-tap-highlight-color: #1fac3c;
}

::-moz-selection {
  /* Code for Firefox */
  color: #fff;
  background: #0d803b;
}

::selection {
  color: #fff;
  background: #0d803b;
}

@keyframes floating {
  from {
    transform: translateY(-10%);
  }
  50% {
    transform: translateY(10%);
  }
  to {
    transform: translateY(-10%);
  }
}
@keyframes subNav {}
body {
  --navHeight: 150px;
  font-size: 1rem;
  font-size: clamp(0.8rem, 1vw, 1rem);
}
@media only screen and (max-width: 900px) {
  body {
    --navHeight: 60px;
  }
}

main {
  padding-top: calc(var(--navHeight) + clamp(2rem, 5vw, 5rem) / 2);
  border-radius: 0 0 30px 30px;
  background: #fff;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3);
  position: relative;
  z-index: 1;
}

.home-top {
  display: grid;
  gap: clamp(2rem, 5vw, 5rem);
  grid-template-columns: 1fr 2fr;
  grid-template-rows: auto 100px;
  grid-template-areas: "info banner" "scrolldn banner";
}
.home-top .info {
  grid-area: info;
  background: #1fac3c;
  border-radius: clamp(1.5rem, 2.5vw, 2.5rem);
  padding: 2.5rem 2.5em 70px;
  overflow: hidden;
  position: relative;
}
.home-top .info::after {
  content: "";
  position: absolute;
  z-index: 0;
  right: 0;
  bottom: 0;
  width: clamp(9rem, 15vw, 15rem);
  height: clamp(9rem, 15vw, 15rem);
  transform: translate(0%, 40%);
  background-image: url("../images/logo_icon_white.svg");
  background-repeat: no-repeat;
  background-position: center center;
  background-size: contain;
  opacity: 0.1;
}
.home-top .info * {
  color: #fff;
}
.home-top .info h6 {
  font-weight: normal;
}
.home-top .info .navigator {
  position: absolute;
  z-index: 2;
  bottom: 1rem;
  left: 2.5rem;
}
.home-top .info .navigator span {
  display: inline-block;
  font-family: "Montserrat";
  font-weight: 700;
  font-size: clamp(1.5rem, 2.2vw, 2.2rem);
  margin-right: 0.8em;
  text-decoration: none;
  transition: all 0.3s;
  text-underline-offset: 0em;
  opacity: 0.5;
  cursor: pointer;
}
.home-top .info .navigator span:hover, .home-top .info .navigator span.selected {
  opacity: 1;
  text-decoration: underline;
  text-underline-offset: 0.3em;
  text-decoration-thickness: 5px;
  transform: translateY(-0.3em);
}
.home-top .banner {
  min-height: calc(100vh - var(--navHeight) - clamp(2rem, 5vw, 5rem));
  grid-area: banner;
  position: relative;
  border-radius: clamp(1.5rem, 2.5vw, 2.5rem);
  overflow: hidden;
  background: #f2f2f2;
}
.home-top .banner .slides {
  position: relative;
  width: 100%;
  height: 100%;
  z-index: 1;
}
.home-top .banner .slides .slide {
  position: absolute;
  z-index: 1;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  opacity: 0;
  transition: opacity 0.6s;
}
.home-top .banner .slides .slide.selected {
  opacity: 1;
}
.home-top .banner .slides .slide.selected img {
  width: 100%;
  height: 100%;
  margin-left: 0%;
  margin-top: 0%;
}
.home-top .banner .slides .slide img {
  width: 110%;
  height: 110%;
  margin-left: -5%;
  margin-top: -5%;
  object-fit: cover;
  transition: all 0.6s;
}
.home-top .banner .navigator {
  position: absolute;
  z-index: 2;
  right: 0;
  bottom: 0;
  background: #fff;
  display: flex;
  border-top-left-radius: clamp(1.5rem, 2.5vw, 2.5rem);
}
.home-top .banner .navigator > span {
  display: grid;
  flex: 0 0 100px;
  width: 100px;
  height: 100px;
  place-items: center;
  cursor: pointer;
}
.home-top .banner .navigator > span::after {
  content: "\f053";
  font-size: 24px;
  line-height: 1;
  font-family: "Fontawesome";
  transition: color 0.3s;
}
.home-top .banner .navigator > span.next::after {
  content: "\f054";
}
.home-top .banner .navigator > span:hover::after {
  color: #1fac3c;
}
.home-top .scrolldn {
  grid-area: scrolldn;
  font-family: "Montserrat";
  font-weight: 700;
}
.home-top .scrolldn .btn-scrolldn {
  display: inline-flex;
  align-items: center;
  font-size: 18px;
  line-height: 1.1;
}
.home-top .scrolldn .btn-scrolldn::before {
  content: "";
  width: 100px;
  display: inline-block;
  aspect-ratio: 1;
  background: #f2f2f2 url("../images/icon_arrow_dn.svg") no-repeat center center;
  background-size: auto 50%;
  border-radius: 100%;
  margin-right: 1em;
  animation: floating 1s infinite both;
}
@media only screen and (max-width: 900px) {
  .home-top {
    grid-template-columns: 1fr;
    grid-template-rows: auto auto auto;
    grid-template-areas: "banner" "info" "scrolldn";
  }
  .home-top .banner {
    min-height: unset;
    aspect-ratio: 16/9;
    margin-bottom: calc(-1 * clamp(2rem, 5vw, 5rem));
    border-bottom-right-radius: 0;
    border-bottom-left-radius: 0;
  }
  .home-top .banner .navigator {
    display: none;
  }
  .home-top .info {
    border-top-right-radius: 0;
    border-top-left-radius: 0;
    padding: clamp(1.5rem, 2.5vw, 2.5rem) clamp(1.5rem, 2.5vw, 2.5rem) 70px;
  }
  .home-top .info .navigator {
    left: auto;
    right: clamp(1.5rem, 2.5vw, 2.5rem);
  }
  .home-top .info .navigator span {
    margin-right: 0;
    margin-left: 0.8em;
  }
  .home-top .scrolldn .btn-scrolldn {
    font-size: 14px;
  }
  .home-top .scrolldn .btn-scrolldn::before {
    content: "";
    width: 50px;
  }
}

.home-news {
  display: grid;
  gap: clamp(2rem, 5vw, 5rem);
  grid-template-columns: 1fr 1fr;
  grid-template-rows: 50px auto;
  grid-template-areas: "head calendar" "list calendar";
}
.home-news .head {
  grid-area: head;
  display: flex;
  align-items: center;
}
.home-news .head h4 {
  margin-bottom: 0;
}
.home-news .head ul {
  margin-left: auto;
  display: inline-flex;
  font-size: clamp(1rem, 1.1vw, 1.1rem);
  gap: 1rem;
}
.home-news .head ul li {
  display: flex;
  align-items: center;
}
.home-news .head ul li::before {
  content: "";
  display: inline-block;
  width: 1em;
  aspect-ratio: 1;
  border-radius: 100%;
  margin-right: 0.2em;
}
.home-news .news-list {
  grid-area: list;
}
.home-news .news-list ul li {
  font-size: clamp(1.1rem, 1.5vw, 1.5rem);
  display: flex;
  margin-bottom: 1.5em;
}
.home-news .news-list ul li.--course::before {
  background-image: url("../images/icon_course.svg");
  background-position: center center;
  background-size: 40% auto;
  background-repeat: no-repeat;
}
.home-news .news-list ul li.--new::before {
  background-image: url("../images/icon_news.svg");
  background-position: center center;
  background-size: 40% auto;
  background-repeat: no-repeat;
}
.home-news .news-list ul li::before {
  flex: 0 0 60px;
  content: "";
  display: inline-block;
  width: 60px;
  height: 60px;
  aspect-ratio: 1;
  border-radius: 100%;
  margin-right: 0.5em;
}
.home-news .news-list ul li a {
  width: 100%;
  display: block;
  font: inherit;
  text-decoration: none;
  border-bottom: 3px solid #0e0e0e;
  padding-bottom: 0.5em;
  padding-right: 35px;
  background: url("../images/icon_link.svg") no-repeat right 0.5rem top 0.5em;
  background-size: 22px auto;
  transition: all 0.3s;
}
.home-news .news-list ul li a span {
  font-family: "Montserrat";
  font-size: 0.7em;
  display: block;
  color: #aaaaaa;
}
.home-news .news-list ul li a:hover {
  color: #0d803b;
  background-position: right 0 top 0.2em;
}
@media only screen and (max-width: 900px) {
  .home-news {
    grid-template-columns: 1fr;
    grid-template-rows: auto auto auto;
    grid-template-areas: "head" "calendar" "list";
  }
}

.main-pages {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  grid-template-areas: "about about about" "person group tutor";
  gap: clamp(2rem, 5vw, 5rem);
}
.main-pages > * {
  position: relative;
}
.main-pages > * img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: clamp(1.5rem, 2.5vw, 2.5rem);
}
.main-pages .about {
  grid-area: about;
  border: 3px solid #0e0e0e;
  border-radius: clamp(1.5rem, 2.5vw, 2.5rem);
  background: #1fac3c;
}
.main-pages .about .des {
  padding: clamp(1.5rem, 2.5vw, 2.5rem);
}
.main-pages .about .des > * {
  color: #fff;
}
.main-pages .person {
  grid-area: person;
  border-radius: clamp(1.5rem, 2.5vw, 2.5rem);
}
.main-pages .group {
  grid-area: group;
  border-radius: clamp(1.5rem, 2.5vw, 2.5rem);
}
.main-pages .tutor {
  grid-area: tutor;
  border-radius: clamp(1.5rem, 2.5vw, 2.5rem);
}
@media only screen and (max-width: 900px) {
  .main-pages {
    grid-template-columns: 1fr 1fr;
    grid-template-areas: "about person" "group tutor";
  }
  .main-pages .about {
    border: none;
    background: none;
  }
  .main-pages .about .des {
    padding: 0rem;
  }
  .main-pages .about .des > * {
    color: #0e0e0e;
  }
}
@media only screen and (max-width: 500px) {
  .main-pages {
    grid-template-columns: 1fr;
    grid-template-areas: "about" "person" "group" "tutor";
  }
}

form .group:has(select:required:invalid)::after {
  display: block;
  content: "＊請作答";
  color: #ec7357;
  font-weight: 600;
}
form .group:not(.--optional):has([type=radio]):not(:has([type=radio]:checked))::after {
  display: block;
  content: "＊請作答";
  color: #ec7357;
  font-weight: 600;
}
form .group:not(.--optional):has([type=checkbox]):not(:has([type=checkbox]:checked))::after {
  display: block;
  content: "＊請作答";
  color: #ec7357;
  font-weight: 600;
}
form .group:has(textarea[required]):not(:has(textarea:valid))::after {
  display: block;
  content: "＊請作答";
  color: #ec7357;
  font-weight: 600;
}
form .group:has(input[type=text][required]):not(:has(input[type=text]:valid))::after,
form .group:has(input[type=number][required]):not(:has(input[type=number]:valid))::after,
form .group:has(input[type=date][required]):not(:has(input[type=date]:valid))::after,
form .group:has(input[type=email][required]):not(:has(input[type=email]:valid))::after,
form .group:has(input[type=time][required]):not(:has(input[type=time]:valid))::after,
form .group:has(input[type=tel][required]):not(:has(input[type=tel]:valid))::after {
  display: block;
  content: "＊請作答";
  color: #ec7357;
  font-weight: 600;
}
form.revealed label {
  pointer-events: none;
}
form.revealed .cta {
  opacity: 0.3;
  pointer-events: none;
}

.calendar {
  grid-area: calendar;
  background: #f2f2f2;
  border: 3px solid #0e0e0e;
  border-radius: clamp(1.5rem, 2.5vw, 2.5rem);
  min-height: 230px;
  padding: clamp(1.5rem, 2.5vw, 2.5rem);
  font-size: 1.1rem;
  font-size: clamp(1rem, 1.2vw, 1.2rem);
  font-weight: 700;
  line-height: 1.5;
  align-self: flex-start;
}
.calendar .yearmonth {
  text-align: center;
  font-size: clamp(1.5rem, 2.2vw, 2.2rem);
  font-weight: 700;
  margin-bottom: clamp(1.5rem, 2.5vw, 2.5rem);
  display: flex;
  align-items: center;
  position: relative;
}
.calendar .yearmonth select,
.calendar .yearmonth option {
  cursor: pointer;
  font: inherit;
  padding: 0 5px;
  appearance: none;
  -webkit-appearance: none;
  border: none;
  outline: none;
  background: none;
  text-align: center;
}
.calendar .yearmonth .navigator {
  position: absolute;
  top: 0;
  right: 0;
}
/* navigator: <a class="prev/next"> 直接套用（staging 用 anchor 不用 span） */
.calendar .yearmonth .navigator > a,
.calendar .yearmonth .navigator > span {
  display: inline-grid;
  flex: 0 0 100px;
  width: clamp(2rem, 3vw, 3rem);
  height: clamp(2rem, 3vw, 3rem);
  place-items: center;
  background: #fff;
  border-radius: 100px;
  cursor: pointer;
  text-decoration: none;
  color: inherit;
}
.calendar .yearmonth .navigator > a::after,
.calendar .yearmonth .navigator > span::after {
  content: "\f053";
  font-size: clamp(1rem, 1.5vw, 1.5rem);
  line-height: 1;
  font-family: "Fontawesome";
  transition: color 0.3s;
}
.calendar .yearmonth .navigator > a.next::after,
.calendar .yearmonth .navigator > span.next::after {
  content: "\f054";
}
.calendar .yearmonth .navigator > a:hover::after,
.calendar .yearmonth .navigator > span:hover::after {
  color: #1fac3c;
}
.calendar .grid7 {
  display: grid;
  width: 100%;
  grid-template-columns: repeat(7, auto);
  justify-content: space-around;
  gap: 0.8em 0;
  margin-bottom: clamp(1.5rem, 2.5vw, 2.5rem);
}
.calendar .grid7 > * {
  aspect-ratio: 1;
  width: 30px;
  height: 30px;
  display: inline-block;
  text-align: center;
  line-height: 30px;
  cursor: pointer;
  pointer-events: none;
  position: relative;
  z-index: 1;
}
.calendar .grid7 > *.--new, .calendar .grid7 > *.--course {
  color: #fff;
  pointer-events: auto;
}
/* 今天之前的日期淡化（不要太淡以免看不清楚） */
.calendar .grid7 > *:has(~ .--today) {
  opacity: 0.45;
  pointer-events: none;
}
.calendar .grid7 > *::before {
  content: "";
  width: 100%;
  height: 100%;
  position: absolute;
  top: 50%;
  left: 50%;
  border-radius: 100px;
  transform: translate(-50%, -50%) scale(1.2);
  z-index: -1;
}

/* 今天：空心圓 border（對齊 DNN production legend ○今天） */
.--today::before {
  border: 2px solid #0e0e0e;
}

/* 課程：淺藍圓（production 比原設計稿更淺） */
.--course::before {
  background-color: #6bb8d4;
}

/* 月曆課程日期用 <a> 連結時，重置瀏覽器預設樣式 */
.calendar .grid7 > a {
  text-decoration: none;
  color: inherit;
}

.--new::before {
  background-color: #ec7357;
}

.--course.--new::before {
  background: linear-gradient(0deg, #3b7994 50%, #ec7357 50%) !important;
}

/* Sprint 2-B drift tail:designer 沒寫 today + course 同格的合一規則,
   兩個各自 ::before 規則屬性不衝突但視覺上 today border 太細看不到 course bg。
   明確疊一個既有 border 又有 bg 的版本。 */
/* 今天 + 課程/消息：border 加 bg 同時顯示 */
.--today.--course::before {
  border: 2px solid #0e0e0e;
  background-color: #6bb8d4;
}
.--today.--new::before {
  border: 2px solid #0e0e0e;
  background-color: #ec7357;
}
.--today.--course.--new::before {
  border: 2px solid #0e0e0e;
  background: linear-gradient(0deg, #6bb8d4 50%, #ec7357 50%) !important;
}

.chart-rate {
  background: #fbc444;
  border: 3px solid #0e0e0e;
  border-radius: clamp(1.5rem, 2.5vw, 2.5rem);
  min-height: 230px;
  padding: clamp(1.5rem, 2.5vw, 2.5rem);
}
.chart-rate > div {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1em;
}
.chart-rate > div .digitGSAP {
  flex: 0 0 auto;
}
.chart-rate > div .digitGSAP::after {
  font-size: inherit;
  color: #0e0e0e;
}

.tutor {
  position: relative;
}
.tutor .photo {
  aspect-ratio: 4/3;
  border-radius: clamp(1.5rem, 2.5vw, 2.5rem);
  overflow: hidden;
  margin-bottom: 0.5em;
}
.tutor .photo img {
  aspect-ratio: inherit;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top center;
  transition: transform 0.3s;
}
@media only screen and (max-width: 500px) {
  .tutor .photo {
    aspect-ratio: 1;
  }
}
.tutor .info {
  position: relative;
  z-index: 1;
}
.tutor .info > *:first-child {
  position: absolute;
  top: 0;
  left: 0;
  transform: translateY(-100%);
  background: #fff;
  padding: 0.5em 1em 0 0;
  border-top-right-radius: 1em;
}

a:hover .photo img {
  transform: scale(1.1);
}

.tutorlink {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1em;
}
.tutorlink .photo {
  width: 200px;
  height: 150px;
  aspect-ratio: 4/3;
  border-radius: 1em;
}
.tutorlink .photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: all 0.3s;
}
@media only screen and (max-width: 500px) {
  .tutorlink {
    grid-template-columns: 1fr;
  }
  .tutorlink .photo {
    width: 100%;
  }
}

a.tutorlink:hover img {
  transform: scale(1.1);
}
a.tutorlink:hover * {
  color: #1fac3c;
}

.article {
  border-bottom: 3px solid #0e0e0e;
}
.article .photo {
  aspect-ratio: 4/3;
  border-radius: clamp(1.5rem, 2.5vw, 2.5rem) clamp(1.5rem, 2.5vw, 2.5rem) 0 0;
  overflow: hidden;
  margin-bottom: 1em;
}
.article .photo img {
  aspect-ratio: inherit;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
  transition: transform 0.3s;
}
@media only screen and (max-width: 500px) {
  .article .photo {
    aspect-ratio: 1;
  }
}
.article .info {
  font-size: clamp(1.1rem, 1.5vw, 1.5rem);
  width: 100%;
  display: block;
  text-decoration: none;
  padding-bottom: 0.5em;
  padding-right: 50px;
  background: url("../images/icon_link.svg") no-repeat right 0.5rem top 0.5em;
  background-size: 22px auto;
  transition: all 0.3s;
}
.article .info * {
  font: inherit;
}
.article .info span {
  font-size: 0.7em;
  display: block;
  color: #aaaaaa;
  font-family: "Montserrat";
}
.article:not(:has(img)) {
  border-top: 3px solid #0e0e0e;
}
.article:not(:has(img)) .photo {
  display: none;
}
.article:not(:has(img)) .info {
  padding-top: 1em;
  padding-bottom: 1em;
  border: none;
}

a.article:hover .photo img {
  transform: scale(1.1);
}
a.article:hover .info {
  color: #0d803b;
  background-position: right 0 top 0.2em;
}

form {
  min-width: 1px;
}

.form-wrapper {
  --max-input-width: 650px;
}
.form-wrapper .btn-eye {
  display: grid;
  place-items: center;
}
.form-wrapper .btn-eye::after {
  content: "\f06e";
  font-family: "fontawesome";
  cursor: pointer;
}
.form-wrapper .btn-eye.hide::after {
  content: "\f070";
}
.form-wrapper .group {
  margin-bottom: 1.5em;
  display: inline-block;
  min-width: 40%;
  margin-right: 9%;
}
.form-wrapper .group.--lg {
  min-width: 100%;
  margin-right: 0;
}
@media only screen and (max-width: 500px) {
  .form-wrapper .group {
    min-width: 100%;
    margin-right: 0%;
  }
}
.form-wrapper .group-flex {
  display: inline-flex;
  min-height: 40px;
  align-items: center;
  gap: 0 1em;
  flex-wrap: wrap;
}
.form-wrapper .group-flex > * {
  width: auto;
}
.form-wrapper input[type=radio],
.form-wrapper input[type=checkbox] {
  opacity: 0;
}
.form-wrapper label:has([type=radio]) {
  cursor: pointer;
  position: relative;
}
.form-wrapper label:has([type=radio])::before {
  content: "\f1db";
  color: #0e0e0e;
  position: absolute;
  font-family: "fontawesome";
  top: 20px;
  left: 0;
  font-size: 1.3em;
  line-height: 1;
  transform: translateY(-50%);
}
@media only screen and (max-width: 900px) {
  .form-wrapper label:has([type=radio])::before {
    font-size: 1.4em;
  }
}
.form-wrapper label:has([type=radio]) input[type=radio] {
  opacity: 0;
}
.form-wrapper label:has([type=radio]:checked)::before {
  color: #1fac3c;
  content: "\f058";
}
.form-wrapper label:has([type=checkbox]) {
  cursor: pointer;
  position: relative;
}
.form-wrapper label:has([type=checkbox])::before {
  content: "\f096";
  color: #0e0e0e;
  position: absolute;
  font-family: "fontawesome";
  top: 20px;
  left: 0;
  font-size: 1.3em;
  line-height: 1;
  transform: translateY(-50%);
}
@media only screen and (max-width: 900px) {
  .form-wrapper label:has([type=checkbox])::before {
    font-size: 1.4em;
  }
}
.form-wrapper label:has([type=checkbox]) input[type=checkbox] {
  opacity: 0;
}
.form-wrapper label:has([type=checkbox]:checked)::before {
  color: #1fac3c;
  content: "\f14a";
}
.form-wrapper textarea {
  width: 100%;
  appearance: none;
  outline: none;
  display: block;
  line-height: 40px;
  font-size: clamp(1rem, 1.2vw, 1.2rem);
  color: #0e0e0e;
  border: none;
  border: 2px solid transparent;
  background-color: #f2f2f2;
  padding: 0 0.5em;
  border-radius: 10px;
}
.form-wrapper textarea.error {
  border-color: #ec7357;
}
.form-wrapper textarea:focus {
  border-color: #0e0e0e;
}
.form-wrapper textarea:invalid {
  border-color: #ec7357;
}
.form-wrapper textarea:disabled {
  background-color: transparent;
}
.form-wrapper input[type=text],
.form-wrapper input[type=email],
.form-wrapper input[type=date],
.form-wrapper input[type=time],
.form-wrapper input[type=number],
.form-wrapper input[type=password],
.form-wrapper input[type=tel] {
  min-width: unset;
  width: 100%;
  appearance: none;
  outline: none;
  display: block;
  line-height: 40px;
  font-size: clamp(1rem, 1.2vw, 1.2rem);
  color: #0e0e0e;
  border: none;
  border: 2px solid transparent;
  background-color: #f2f2f2;
  padding: 0 0.5em;
  border-radius: 10px;
}
.form-wrapper input[type=text].error,
.form-wrapper input[type=email].error,
.form-wrapper input[type=date].error,
.form-wrapper input[type=time].error,
.form-wrapper input[type=number].error,
.form-wrapper input[type=password].error,
.form-wrapper input[type=tel].error {
  border-color: #ec7357;
}
.form-wrapper input[type=text]:focus,
.form-wrapper input[type=email]:focus,
.form-wrapper input[type=date]:focus,
.form-wrapper input[type=time]:focus,
.form-wrapper input[type=number]:focus,
.form-wrapper input[type=password]:focus,
.form-wrapper input[type=tel]:focus {
  border-color: #0e0e0e;
}
.form-wrapper input[type=text]:invalid,
.form-wrapper input[type=email]:invalid,
.form-wrapper input[type=date]:invalid,
.form-wrapper input[type=time]:invalid,
.form-wrapper input[type=number]:invalid,
.form-wrapper input[type=password]:invalid,
.form-wrapper input[type=tel]:invalid {
  border-color: #ec7357;
}
.form-wrapper input[type=text]:disabled,
.form-wrapper input[type=email]:disabled,
.form-wrapper input[type=date]:disabled,
.form-wrapper input[type=time]:disabled,
.form-wrapper input[type=number]:disabled,
.form-wrapper input[type=password]:disabled,
.form-wrapper input[type=tel]:disabled {
  background-color: transparent;
}
.form-wrapper select,
.form-wrapper option {
  min-width: unset;
  width: 100%;
  appearance: none;
  outline: none;
  display: block;
  line-height: 40px;
  font-size: clamp(1rem, 1.2vw, 1.2rem);
  color: #0e0e0e;
  border: none;
  background: url("../images/icon_dn.svg") no-repeat right 0.5em center;
  background-size: 15px auto;
  background-color: #f2f2f2;
  padding: 0 2.5em 0 0.5em;
  border-radius: 10px;
  border: 2px solid transparent;
}
.form-wrapper select:focus,
.form-wrapper option:focus {
  border-color: #0e0e0e;
}
.form-wrapper select.error,
.form-wrapper option.error {
  border-color: #ec7357;
}
.form-wrapper select:invalid,
.form-wrapper option:invalid {
  border-color: #ec7357;
}
.form-wrapper label {
  font-size: clamp(1rem, 1.2vw, 1.2rem);
  line-height: 40px;
  display: inline-block;
  margin-right: 1em;
}
.form-wrapper .condition-radio > input {
  opacity: 0;
  pointer-events: none;
}
.form-wrapper .condition-radio:has([type=radio]:checked) > input, .form-wrapper .condition-radio:has([type=checkbox]:checked) > input {
  opacity: 1;
  pointer-events: auto;
}

.form-wrapper-training input[type=text] {
  max-width: 100%;
  appearance: none;
  outline: none;
  display: block;
  line-height: 50px;
  background: #fff;
  font-size: 16px;
  color: #0e0e0e;
  border-radius: 100px;
  border: 3px solid #0e0e0e;
  padding: 0 1em;
  margin-right: 1em;
  margin-bottom: 1em;
}
.form-wrapper-training input[type=text]::after {
  content: "";
  flex: none;
  width: 30px;
  height: 30px;
  margin-right: 0.5em;
  margin-left: 0.5em;
  background: #f2f2f2 url("../images/icon_arrow_dn.svg") no-repeat center center;
  border-radius: 100%;
  background-size: 50% auto;
  transform: rotate(-90deg);
  transition: transform 0.3s, background 0.3s;
}
.form-wrapper-training .btn-search {
  cursor: pointer;
  width: 40px;
  height: 40px;
}
.form-wrapper-training .btn-search::after {
  content: "";
  display: inline-block;
  flex: none;
  width: 100%;
  height: 100%;
  background: #f2f2f2 url("../images/icon_arrow_dn.svg") no-repeat center center;
  border-radius: 100%;
  background-size: 50% auto;
  transform: rotate(-90deg);
  transition: transform 0.3s, background 0.3s;
}
.form-wrapper-training .btn-search:hover::after {
  background-size: 55% auto;
  transform: translateX(0.3em) rotate(-90deg);
}

header {
  position: fixed;
  width: 100%;
  top: 0;
  left: 0;
  z-index: 9999;
  background: rgba(255, 255, 255, 0.7);
  backdrop-filter: blur(6px);
}
header .container {
  position: relative;
  height: var(--navHeight);
  padding: 0 clamp(2rem, 5vw, 5rem);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: min(2rem, 2vw);
}
header .container .logo {
  height: min(50%, 6vw);
  width: auto;
  display: block;
}
header .container .logo img {
  width: auto;
  height: 100%;
}
header .container .mmb {
  position: relative;
  flex: none;
  width: 30px;
  height: 30px;
  cursor: pointer;
  z-index: 2;
  display: none;
}
header .container .mmb::after {
  content: "";
  position: absolute;
  height: 4px;
  width: 100%;
  background: #0e0e0e;
  top: 25%;
  right: 0;
  transition: all 0.3s;
  border-radius: 4px;
}
header .container .mmb::before {
  content: "";
  position: absolute;
  height: 4px;
  width: 70%;
  background: #0e0e0e;
  bottom: 25%;
  right: 0;
  transition: all 0.3s;
  border-radius: 4px;
}
header .container nav ul {
  font-size: 1rem;
  font-weight: 700;
  display: flex;
  align-items: center;
  gap: min(2rem, 2vw);
  flex-wrap: wrap;
  justify-content: right;
}
header .container nav ul li a {
  display: block;
  font: inherit;
  text-decoration: none;
  text-underline-offset: 0.8em;
  transition: all 0.3s;
}
header .container nav ul li.btn_login {
  line-height: 46px;
  border: 3px solid #0e0e0e;
  border-radius: 25px;
  padding: 0 1em 0 8px;
  display: flex;
  align-items: center;
  transition: background 0.4s;
  position: relative;
}
header .container nav ul li.btn_login::before {
  content: "";
  position: relative;
  z-index: 1;
  display: inline-block;
  width: 26px;
  height: 26px;
  background: url("../images/icon_user.svg") no-repeat center center;
  background-size: contain;
  margin-right: 0.5em;
}
header .container nav ul li.btn_login::after {
  content: "";
  position: absolute;
  z-index: 0;
  display: inline-block;
  width: 26px;
  height: 26px;
  background: #fbc444;
  border-radius: 100%;
  display: none;
  animation: zoomIn 0.8s both;
}
header .container nav ul li:hover.btn_login, header .container nav ul li.selected.btn_login {
  background-color: #0d803b;
}
header .container nav ul li:hover.btn_login a, header .container nav ul li.selected.btn_login a {
  color: #fff;
  text-decoration: none;
}
header .container nav ul li:hover.btn_login::after, header .container nav ul li.selected.btn_login::after {
  display: block;
}
header .container nav ul li:hover a, header .container nav ul li.selected a {
  color: #0d803b;
  text-decoration: underline;
  text-underline-offset: 0.5em;
  text-decoration-thickness: 3px;
}
@media only screen and (max-width: 900px) {
  header.active .container .mmb::after {
    top: calc(50% - 2px);
    transform: rotate(45deg);
    background: #fbc444;
  }
  header.active .container .mmb::before {
    width: 100%;
    bottom: calc(50% - 2px);
    transform: rotate(-45deg);
    background: #fbc444;
  }
  header.active .container nav {
    transform: translateX(0);
  }
  header .container .logo {
    height: 40px;
  }
  header .container nav {
    position: absolute;
    z-index: 1;
    top: 0px;
    left: 0;
    background: #0d803b;
    min-height: 100dvh;
    width: 100%;
    padding: clamp(2rem, 5vw, 5rem);
    align-items: center;
    transition: transform 0.3s;
    display: grid;
    transform: translateX(110%);
  }
  header .container nav ul {
    display: block;
  }
  header .container nav ul li {
    font-size: 1.5rem;
    margin-bottom: 0.5em;
  }
  header .container nav ul li a {
    color: #fff;
  }
  header .container nav ul li a:hover {
    color: #fbc444;
    text-decoration: none;
  }
  header .container nav ul li.btn_login {
    margin-top: 2.5em;
    border-color: #fff;
    max-width: 250px;
    justify-content: center;
  }
  header .container nav ul li.btn_login::before {
    filter: invert(1);
  }
  header .container nav ul li.btn_login::after {
    display: none !important;
  }
  header .container .mmb {
    display: block;
  }
}

footer {
  position: fixed;
  width: 100%;
  bottom: 0;
  z-index: 0;
  background: #0d803b;
}
footer .container {
  padding: calc(clamp(2rem, 5vw, 5rem) + 20px) clamp(2rem, 5vw, 5rem) clamp(2rem, 5vw, 5rem);
  display: grid;
  gap: clamp(2rem, 5vw, 5rem);
  grid-template-areas: "logo brief link" "logo copyright copyright";
}
footer .container .logo {
  grid-area: logo;
}
footer .container .logo img {
  width: min(250px, 30vw);
}
footer .container .brief {
  max-width: 550px;
  grid-area: brief;
}
footer .container .brief * {
  color: #fff;
  margin-bottom: 0;
}
footer .container .link {
  grid-area: link;
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  justify-content: right;
  align-self: start;
}
footer .container .link li a {
  text-decoration: none;
  color: #fff;
  font-weight: 600;
  text-underline-offset: 0.8em;
  transition: all 0.3s;
}
footer .container .link li a:hover {
  text-decoration: underline;
  text-decoration-thickness: 3px;
  text-underline-offset: 0.5em;
}
footer .container .copyright {
  border-top: 3px solid #fff;
  padding-top: clamp(2rem, 5vw, 5rem);
  grid-area: copyright;
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
}
footer .container .copyright .contact {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  justify-content: right;
  align-self: start;
}
footer .container .copyright .contact li,
footer .container .copyright .contact a {
  text-decoration: none;
  color: #fff;
  text-underline-offset: 0.8em;
  transition: all 0.3s;
}
footer .container .copyright .contact a:hover {
  text-decoration: underline;
  text-underline-offset: 0.5em;
}
footer .container .copyright .contact li {
  background: var(--icon) no-repeat left center;
  background-size: 20px 20px;
  padding-left: 25px;
}
footer .container .copyright div {
  color: #fff;
  margin-left: auto;
}
@media only screen and (max-width: 900px) {
  footer .container {
    grid-template-areas: "logo brief" "link link" "copyright copyright";
  }
  footer .container .link {
    justify-content: left;
  }
  footer .container .copyright {
    flex-direction: column;
  }
  footer .container .copyright .contact {
    justify-content: left;
  }
}

.table-wrapper {
  overflow-y: hidden !important;
  overflow-x: auto !important;
  width: 100%;
}
@media only screen and (max-width: 900px) {
  .table-wrapper {
    width: calc(100% + 2 * clamp(2rem, 5vw, 5rem));
    margin-left: calc(-1 * clamp(2rem, 5vw, 5rem));
  }
}
.table-wrapper .table {
  border-radius: clamp(1.5rem, 2.5vw, 2.5rem);
  padding: clamp(1.5rem, 2.5vw, 2.5rem);
  position: relative;
  border: 3px solid #0e0e0e;
  background: #f2f2f2;
  font-size: clamp(1rem, 1.2vw, 1.2rem);
  line-height: 1.5;
}
@media only screen and (max-width: 900px) {
  .table-wrapper .table {
    margin: 0 clamp(2rem, 5vw, 5rem);
    width: fit-content;
    min-width: 900px;
  }
}
.table-wrapper .table .tutorlink {
  grid-template-columns: auto 1fr;
}
.table-wrapper .table .tutorlink .photo {
  width: 80px;
  height: 80px;
  aspect-ratio: 1;
}
@media only screen and (max-width: 500px) {
  .table-wrapper .table .tutorlink {
    grid-template-columns: auto 1fr;
  }
  .table-wrapper .table .tutorlink .photo {
    width: 80px;
  }
}
.table-wrapper .table table {
  width: 100%;
}
.table-wrapper .table table thead {
  border-bottom: 3px solid #0e0e0e;
}
.table-wrapper .table table tbody tr {
  border-bottom: 1px solid;
}
.table-wrapper .table table tbody tr:last-child {
  border: none;
}
.table-wrapper .table table a:not(.cta) {
  color: #1fac3c;
  font-weight: 700;
}
.table-wrapper .table table a:not(.cta):hover {
  text-decoration: underline;
}
.table-wrapper .table table th {
  font-weight: 700;
  text-align: left;
  padding: 1em 1em 1em 0;
  white-space: nowrap;
}
.table-wrapper .table table td {
  text-align: left;
  padding: 1em 1em 1em 0;
  white-space: nowrap;
}
.table-wrapper .table .pagination {
  margin-top: clamp(2rem, 5vw, 5rem);
  text-align: center;
}
.table-wrapper .table .pagination > a,
.table-wrapper .table .pagination > span {
  cursor: pointer;
  display: inline-block;
  font-family: "Montserrat";
  font-size: 1.1rem;
  font-size: clamp(1rem, 1.2vw, 1.2rem);
  line-height: 1;
  padding: 0 0.2em 0.1em;
  margin: 0 0.3em;
  transition: all 0.3s;
}
.table-wrapper .table .pagination > a.selected,
.table-wrapper .table .pagination > span.selected {
  color: #1fac3c;
  border-bottom: 3px solid #1fac3c;
  transform: translateY(-0.3em);
}
.table-wrapper .table .pagination > a:hover,
.table-wrapper .table .pagination > span:hover {
  color: #1fac3c;
}
.table-wrapper .table .pagination > a.siblings::before,
.table-wrapper .table .pagination > span.siblings::before {
  content: "...";
}

.grid43 {
  display: grid;
  grid-template-columns: 4fr 3fr;
  gap: clamp(2rem, 5vw, 5rem);
}
@media only screen and (max-width: 900px) {
  .grid43 {
    grid-template-columns: 1fr;
  }
}

.grid21 {
  display: grid;
  grid-template-columns: 2fr 1fr;
  gap: clamp(2rem, 5vw, 5rem);
}
@media only screen and (max-width: 900px) {
  .grid21 {
    grid-template-columns: 1fr;
  }
}

.grid12 {
  display: grid;
  grid-template-columns: 1fr 2fr;
  gap: clamp(2rem, 5vw, 5rem);
}
@media only screen and (max-width: 900px) {
  .grid12 {
    grid-template-columns: 1fr;
  }
}

.grid11 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(2rem, 5vw, 5rem);
}
@media only screen and (max-width: 900px) {
  .grid11 {
    grid-template-columns: 1fr;
  }
}
.grid11 > * {
  align-self: start;
}

.grid111 {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: clamp(2rem, 5vw, 5rem);
}
@media only screen and (max-width: 900px) {
  .grid111 {
    grid-template-columns: 1fr 1fr;
  }
}
@media only screen and (max-width: 500px) {
  .grid111 {
    grid-template-columns: 1fr;
  }
}

.grid1111 {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr 1fr;
  gap: clamp(2rem, 5vw, 5rem);
}
@media only screen and (max-width: 900px) {
  .grid1111 {
    grid-template-columns: 1fr 1fr;
  }
}
@media only screen and (max-width: 500px) {
  .grid1111 {
    grid-template-columns: 1fr;
  }
}

.--gap-sm {
  gap: calc(clamp(2rem, 5vw, 5rem) / 2);
}

.color-board {
  border-radius: clamp(1.5rem, 2.5vw, 2.5rem);
  padding: clamp(1.5rem, 2.5vw, 2.5rem);
  display: grid;
  position: relative;
}
.color-board > *:nth-child(2) {
  align-self: end;
}
.color-board.--gray {
  border: 3px solid #0e0e0e;
  background: #f2f2f2;
}
.color-board.--white {
  border: 3px solid #0e0e0e;
  background: #ffffff;
}
.color-board.--khaki {
  border: 3px solid #0e0e0e;
  background: #f3ecd9;
}
.color-board.--green {
  border: 3px solid #0e0e0e;
  background: #1fac3c;
}
.color-board.--green * {
  color: #fff;
}

.color-header-board {
  background: #fff;
  border: 3px solid #0e0e0e;
  border-radius: clamp(1.5rem, 2.5vw, 2.5rem);
  position: relative;
}
.color-header-board .header {
  border-radius: clamp(1.5rem, 2.5vw, 2.5rem) clamp(1.5rem, 2.5vw, 2.5rem) 0 0;
  padding: clamp(1.5rem, 2.5vw, 2.5rem);
  border-bottom: 3px solid #0e0e0e;
  position: relative;
}
.color-header-board .header.--yellow {
  background: #ffdd8f;
}
.color-header-board .header.--blue {
  background: #c9e2ec;
}
.color-header-board .header.--gooseYellow {
  background: #fbc444;
}
.color-header-board .header.--khaki {
  background: #f3ecd9;
}
.color-header-board .header.--red {
  background: #ffb19f;
}
.color-header-board .header.--yt {
  background: #ec7357;
}
.color-header-board .header.--yt > * {
  color: #fff;
}
.color-header-board .header.--green {
  background: #1fac3c;
}
.color-header-board .header.--green > * {
  color: #fff;
}
.color-header-board .body {
  border-radius: 0 0 clamp(1.5rem, 2.5vw, 2.5rem) clamp(1.5rem, 2.5vw, 2.5rem);
  padding: clamp(1.5rem, 2.5vw, 2.5rem);
  display: grid;
  align-items: space-between;
  position: relative;
}

.tags {
  display: flex;
  flex-wrap: wrap;
}
.tags > * {
  color: #0e0e0e;
  font-weight: 600;
  font-size: clamp(0.8rem, 1vw, 1rem);
  line-height: 1;
  margin-right: 0.5em;
  margin-bottom: 0.5em;
  padding: 0.5em 0.8em;
  background: #fff;
  border-radius: 100px;
  display: flex;
  align-items: center;
}
.tags .--target::before,
.tags .--type::before,
.tags .--time::before {
  content: "";
  width: 20px;
  height: 20px;
  background: url("../images/icon_target.svg") no-repeat center center;
  background-size: contain;
  margin-right: 0.5em;
}
.tags .--type::before {
  background: url("../images/icon_file.svg") no-repeat center center;
  background-size: contain;
}
.tags .--time::before {
  background: url("../images/icon_timer.svg") no-repeat center center;
  background-size: contain;
}

ul.disc {
  margin-left: 1.5em;
  list-style-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='-2.2 -2.4 4 4'><circle r='1.2' /></svg>");
  margin-bottom: 1em;
}

ol {
  list-style-type: decimal;
  margin-left: 1.5em;
  margin-bottom: 1em;
}
ol ::marker {
  font-family: "Montserrat";
}

.digit {
  display: inline-flex;
  font-family: "Montserrat";
  font-weight: 700;
  display: grid;
}
.digit.--center {
  place-items: center;
  text-align: center;
}
.digit.--end {
  place-items: end;
  text-align: right;
}
.digit > span {
  font-size: clamp(6rem, 10vw, 10rem);
  line-height: 1;
}
.digit * {
  margin-bottom: 2rem;
}

.accordion {
  border-bottom: 3px solid #0e0e0e;
}
.accordion .item {
  border-top: 3px solid #0e0e0e;
}
.accordion .item .quiz {
  padding: 0.5em 0;
  padding-right: 20px;
  margin-bottom: 0;
  cursor: pointer;
  position: relative;
}
.accordion .item .quiz::after {
  content: "\f107";
  font-family: "fontawesome";
  position: absolute;
  right: 0;
  top: 50%;
  transform: translateY(-50%);
}
.accordion .item .ans {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows 0.5s, margin 0.5s;
}
.accordion .item .ans > * {
  overflow: hidden;
}
.accordion .item:hover .quiz::after {
  color: #1fac3c;
}
.accordion .item.active .quiz::after {
  content: "\f106";
}
.accordion .item.active .ans {
  margin: 0.5em 0 1em;
  grid-template-rows: 1fr;
}

[data-label]::before {
  font-family: "Montserrat", "Noto Sans TC";
  content: attr(data-label);
  color: #1fac3c;
  text-decoration: underline;
  text-decoration-thickness: 3px;
  text-underline-offset: 0.3em;
  margin-right: 0.3em;
  transform: translateY(-0.3em);
  display: inline-block;
}

[data-seq]::before {
  font-family: "Montserrat", "Noto Sans TC";
  content: attr(data-seq);
  color: #1fac3c;
  margin-right: 0.3em;
  display: inline-block;
}

[data-underlabel]::after {
  font-family: "Montserrat", "Noto Sans TC";
  content: attr(data-underlabel);
  font-size: clamp(1.1rem, 1.5vw, 1.5rem);
  display: block;
}

[data-prefix]::before {
  font-family: "Montserrat", "Noto Sans TC";
  content: attr(data-prefix);
  color: #1fac3c;
  font-size: max(0.5em, 12px);
}

[data-postfix]::after {
  font-family: "Montserrat", "Noto Sans TC";
  content: attr(data-postfix);
  color: #1fac3c;
  font-size: max(0.5em, 12px);
}

.--sticky {
  align-self: start;
  position: sticky;
  top: var(--navHeight);
}
@media only screen and (max-width: 900px) {
  .--sticky {
    position: unset;
  }
}

.photo {
  border-radius: clamp(1.5rem, 2.5vw, 2.5rem);
  overflow: hidden;
}
.photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.label {
  display: inline-block;
  color: #fff;
  line-height: 2;
  background: #0e0e0e;
  border-radius: 100px;
  letter-spacing: 0.05em;
  padding: 0 1em;
  margin-right: 1em;
  margin-bottom: 1em;
  white-space: nowrap;
  justify-self: left;
}
.label:last-child {
  margin: 0;
}

.cta {
  cursor: pointer;
  display: inline-flex;
  color: #fff;
  line-height: 3;
  background: #1fac3c;
  border-radius: 100px;
  border: 3px solid #0e0e0e;
  letter-spacing: 0.05em;
  padding: 0 0.5em 0 1em;
  margin-right: 1em;
  margin-bottom: 1em;
  align-items: center;
  white-space: nowrap;
}
.cta.--yellow {
  background: #fbc444;
  color: #0e0e0e;
}
.cta.--red {
  background: #ec7357;
}
.cta.--back {
  padding: 0 1em 0 0.5em;
}
.cta.--back::before {
  display: block;
}
.cta.--back::after {
  display: none;
}
.cta:last-child {
  margin: 0;
}
.cta::after, .cta::before {
  content: "";
  flex: none;
  width: 30px;
  height: 30px;
  margin-right: 0.5em;
  margin-left: 0.5em;
  background: #f2f2f2 url("../images/icon_arrow_dn.svg") no-repeat center center;
  border-radius: 100%;
  background-size: 50% auto;
  transform: rotate(-90deg);
  transition: transform 0.3s, background 0.3s;
}
.cta::before {
  display: none;
  transform: rotate(90deg);
}
.cta:hover::after {
  background-size: 55% auto;
  transform: translateX(0.3em) rotate(-90deg);
}
.cta:hover::before {
  background-size: 55% auto;
  transform: translateX(-0.3em) rotate(90deg);
}

.underline-btn {
  font-family: "Montserrat", "Noto Sans TC";
  font-size: clamp(1.1rem, 1.5vw, 1.5rem);
  text-decoration: underline;
  text-underline-offset: 0.4em;
  display: inline-block;
  text-decoration-thickness: 3px;
  transition: all 0.3s;
  cursor: pointer;
}
.underline-btn:hover {
  color: #1fac3c;
  text-underline-offset: 0.15em;
}

.goto-btn {
  position: absolute;
  bottom: 0;
  right: 0;
  z-index: 1;
}
.goto-btn a {
  padding: 0 0.5rem;
  display: block;
  font-size: clamp(1rem, 2.2vw, 2.2rem);
  height: 100px;
  line-height: 100px;
  display: block;
  background: #fff;
  border-top-left-radius: clamp(1.5rem, 2.5vw, 2.5rem);
  text-decoration: none;
  font-weight: 700;
  display: flex;
  align-items: center;
  transform: translate(0.5rem, 36px);
  white-space: nowrap;
}
.goto-btn a::before {
  content: "";
  flex: none;
  width: 60px;
  height: 60px;
  aspect-ratio: 1;
  margin-right: 0.5em;
  margin-left: 0.5em;
  background: #f2f2f2 url("../images/icon_arrow_dn.svg") no-repeat center center;
  border-radius: 100%;
  background-size: 40% auto;
  transform: rotate(90deg);
  transition: transform 0.3s, background 0.3s;
}
.goto-btn a:hover::before {
  background-size: 45% auto;
  transform: translateX(-0.3em) rotate(90deg);
}
@media only screen and (max-width: 900px) {
  .goto-btn a {
    height: 50px;
    line-height: 50px;
    transform: translate(0.5rem, 15px);
  }
  .goto-btn a::before {
    width: 30px;
    height: 30px;
  }
}

.section-title {
  background: #1fac3c;
  border-radius: clamp(1.5rem, 2.5vw, 2.5rem);
  padding: clamp(1.5rem, 2.5vw, 2.5rem);
  overflow: hidden;
  position: relative;
  letter-spacing: 0.2em;
}
.section-title::after {
  content: "";
  position: absolute;
  z-index: 0;
  right: 0;
  bottom: 0;
  width: clamp(9rem, 15vw, 15rem);
  height: clamp(9rem, 15vw, 15rem);
  transform: translate(0%, 40%);
  background-image: url("../images/logo_icon_white.svg");
  background-repeat: no-repeat;
  background-position: center center;
  background-size: contain;
  opacity: 0.1;
}
.section-title * {
  color: #fff;
  margin-bottom: 0;
}
@media only screen and (max-width: 500px) {
  .section-title {
    letter-spacing: 0em;
    padding: 0.7rem 1rem;
  }
}

.spliter {
  height: calc(clamp(2rem, 5vw, 5rem) / 2);
}

.gap {
  height: clamp(2rem, 5vw, 5rem);
}

hr {
  width: 100%;
  border: none;
  border-top: 1px solid rgba(0, 0, 0, 0.3);
}

.fancybox__container {
  z-index: 99999 !important;
}

.fancybox__backdrop {
  background: rgba(0, 0, 0, 0.88) !important;
}

.fancybox__content {
  background: none !important;
  padding: 0 !important;
  width: 90% !important;
  max-width: 850px !important;
  margin-top: clamp(2rem, 5vw, 5rem) !important;
  margin-bottom: clamp(2rem, 5vw, 5rem) !important;
}

.f-button {
  background-color: #0d803b !important;
  border-radius: 100px !important;
  outline: unset !important;
  border: unset !important;
  box-shadow: unset !important;
  --f-button-svg-stroke-width: 3 !important;
}
.f-button svg {
  stroke: #fff !important;
}