@import url('https://fonts.googleapis.com/css2?family=Noto+Sans HK:wght@100;300;400;500;700;900&display=swap');

:root {
  /* color theme */
  --white: hsl(0, 0%, 100%);
  --main-green-0: hsl(80, 60%, 50%);
  --main-green--1: hsl(82, 63%, 44%);
  --main-green-0-rgb: 153, 204, 51;
  --main-brown: hsl(37, 34%, 32%);
  --grey-text: hsl(0, 0%, 38%);
  --grey-light: hsl(210, 12%, 97%);
  --grey-dark: hsl(228, 13%, 85%);
  --main-green-4: hsl(70, 64%, 95%);
  /* card style's border-radius */
  --card-radius: 60px;
}

* {
  margin: 0;
  box-sizing: border-box;
}

body,
html {
  background-color: var(--white);
  font-family: Noto Sans HK;
  color: var(--grey-text);
  -webkit-font-smoothing: antialiased;
  margin: 0;
  padding: 0;
}

footer {
  width: 100%;
  font-size: 12px;
  padding: 12px 0px;
  text-align: center;
  border-top: solid 1px var(--grey-dark);
}

@media screen and (max-width: 640px) {
  :root {
    --card-radius: 40px; /* reduce card radius on mobile */
  }
}

/* Global: Text title style ------------------------------------ */
.title {
  font-size: 32px;
  font-weight: bold;
  text-align: center;
  color: var(--main-green-0);
  width: 100%;
}
.sub-title {
  font-size: 20px;
  font-weight: bold;
  text-align: center;
  color: var(--main-brown);
}
.body-text {
  font-size: 16px;
  line-height: 28px;
  color: var(--grey-text);
}
.align-center {
  text-align: center;
}

/* Global: Reusable element: Spacings style ------------------------------------ */

/* for all sections under slider  */
.main-container {
  gap: 80px;
  margin: 80px 0px;
}
.inner-container {
  gap: 80px;
}

@media screen and (max-width: 768px) {
  .main-container {
    margin-top: 40px;
  }
}

/* for each section  */
.section {
  width: 100%;
  gap: 20px;
  display: flex;
  flex-direction: column;
  align-items: center;
}

/* set max width to 1180px and add margin on both sides */
.container {
  max-width: 1180px;
  margin: 0px 20px;
  gap: 20px;
}

.inner{
  background-color: var(--white);
  border-radius: var(--card-radius);
  padding: 0px 20px;
  text-align: left;
}

/* for section with full width and fill grey background */
.full-width-bg {
  background-color: var(--grey-light);
  width: 100%;
  display: flex;
  justify-content: center;
  padding: 40px 0px;
  gap: 20px;
}

/* remove gap between flex items */
.no-gap {
  gap: 0;
}
.gap-20 {
  gap: 20px;
}
/* inline image with text  */
.inline-icon {
  height: 52px;
  vertical-align: middle;
  margin-right: 20px;
}

/* Global: Reusable element ------------------------------------ */
.btn {
  color: var(--white);
  font-size: 16px;
  line-height: 100%;
  background-color: var(--main-green-0);
  border: none;
  border-radius: 4px;
  padding: 8px;
  cursor: pointer;
  opacity: 1;
  transition-duration: 0.3s;
}
.btn:hover {
  background-color: var(--main-green--1);
}

/* Global: flex control ------------------------------------ */
.flex-grid {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  justify-content: center;
  align-items: flex-start;
}

.flex-row {
  display: flex;
  flex-direction: row;
  align-items: center;
}

.flex-col {
  display: flex;
  flex-direction: column;
  align-items: center;
}

/* for 2 column layout */
.flex-2Col {
  display: flex;
  align-items: center;
}

.flex-2Col > .container {
  margin: 0; /* cancel margin on container for 2 column layout, space between columns use gap instead */
  align-items: flex-start; /*  align items to left under 2 column layout */
  flex: 1; /* set even space between columns */
}
.flex-2Col  .title{
  text-align: left!important;
}


.flex-1 {
  flex: 1;
}

@media screen and (max-width: 768px) {
  /* Turn 2 Column to 1 Column on Mobile */
  .flex-2Col {
    flex-direction: column;
    gap: 40px;
  }

  /* Turn container to align center on mobile */
  .flex-2Col .container {
    align-items: unset;
  }

  /* Turn all flex-row to align center on mobile */
  .flex-2Col .flex-row {
    justify-content: center;
  }

  .flex-2Col  .title{
    text-align: center!important;
  }
}

/* - */
/* - */
/* - */
/* - */
/* Elements specific begin*/

/* Header Navigation: ------------------------------------*/
.headerContainer {
  width: 1180px;
  max-width: calc(100% - 40px);
  padding: 20px 0px;
  display: flex;
  flex-wrap: wrap;
  flex-direction: row;
}

.headerContainer img {
  height: 54px;
  margin: 0 auto 0 0;
}

.nav-list {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 20px;
}
.menu-btn {
  height: fit-content;
  padding: 4px 8px;
  font-size: 16px;
  color: var(--grey-text);
  background-color: transparent;
  border: none;
  cursor: pointer;
  transition-duration: 0.3s;
  border-radius: 4px;
  display: block;
}

.menu-btn:hover,
.currentPage {
  background-color: var(--main-green-0);
  color: var(--white);
}

.material-symbols-outlined {
  font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
  color: var(--grey-text);
  cursor: pointer;
}

.mobile-menu {
  display: none !important;
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  background-color: var(--white);
  z-index: 1999;
  padding: 40px 20px;
  box-sizing: border-box;
  gap: 40px;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  transition-duration: 0.3s;
}
.menu-icon {
  display: none !important;
  align-self: end;
}

.no-scroll {
  overflow: hidden;
}

@media screen and (max-width: 900px) {
  .headerContainer {
    justify-content: center;
  }
}
@media screen and (max-width: 768px) {
  .menu-icon {
    display: block !important;
  }
  .nav-list :not(:last-child) {
    display: none;
  }
  .menu-btn {
    padding: 8px 12px;
  }
}
/* Hero banner: ------------------------------------*/

/* hero slider banner */
.slider {
  position: relative;
  border-radius: var(--card-radius);
  overflow: hidden;
  width: calc(100% - 40px); /* full width - 20px margin on both sides */
}

/* slider control container */
.slider-control {
  position: absolute;
  z-index: 999;
  left: 52px;
  top: 50%;
  transform: translateY(-50%);
}

/* slider control button separator */
.slider-control-line {
  background-color: var(--white);
  width: 1px;
  height: 32px;
}

/* slider control button */
.slide-btn {
  width: 52px;
  height: 52px;
  border-radius: 50%;
  font-size: 20px;
  text-align: center;
  display: flex;
  justify-content: center;
  align-items: center;
  cursor: pointer;
  border: solid 1px var(--white);
  color: var(--white);
  background-color: rgba(var(--main-green-0-rgb), 0);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  box-sizing: border-box;
  transition-duration: 0.3s;
}
.slide-btn:hover {
  background-color: rgba(var(--main-green-0-rgb), 1);
  color: var(--white);
}

/* slider -> slide container */
.slide {
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  opacity: 0;
  transition-duration: 1s;
  transform: scale(1.1);
  text-shadow: 0px 0px 8px rgba(0, 0, 0, 0.25);
}

/* slider -> slide text */
.slide p {
  color: var(--white);
  font-weight: bold;
  transition-duration: 1s;
  transform: scale(0.5);
}

/* slider -> slide -> first line */
.slide :first-child {
  font-size: 24px;
  padding-left: 244px; /* CHANGE HERE: Indent for animation on active */
}

/* slider -> slide -> second line */
.slide :last-child {
  font-size: 56px;
  padding-left: 344px; /* CHANGE HERE: Indent for animation on active */
}

/* active animation for slide and control button */
.active {
  background-color: var(--white);
  opacity: 1;
  transform: scale(1);
  color: var(--grey-text);
  pointer-events: none; /* disable active button */
}

/* active animation specific for slide text */
.active p {
  padding-left: 144px !important;
  transform: scale(1);
}

@media screen and (max-width: 768px) {
  .slide :first-child {
    font-size: 18px;
  }

  .slide :last-child {
    font-size: 36px;
  }
}
@media screen and (max-width: 640px) {
  .slide :first-child {
    width: 100%;
    position: absolute;
    text-align: center;
    padding-left: unset;
    top: calc(50% - 32px - 8vw);
    left: 50%;
    transform: translateX(-50%);
    font-size: 5vw;
  }

  .slide :last-child {
    width: 100%;
    position: absolute;
    text-align: center;
    padding-left: unset;
    top: calc(50% - 32px);
    left: 50%;
    transform: translateX(-50%);
    font-size: 8vw;
  }
  .active p {
    padding: unset !important;
  }
  .slider-control {
    flex-direction: row;
    left: 50%;
    top: unset;
    bottom: 20px;
    /* transform: translateY(unset); */
    transform: translateX(-50%);
  }
  .slider-control-line {
    width: 32px;
    height: 1px;
  }
  .slide-btn {
    width: 32px;
    height: 32px;
  }
}

/* 我們的服務 Client Logo: : ------------------------------------*/
.client-logo-container {
  gap: 40px;
}
.client-logo-container img {
  /* Logo image asset must fit to this size */
  height: 52px;
  width: 54px; 
  transition: opacity 1s ease-in-out;
}
.fade {
  opacity: 0;
}

.fade-in {
  opacity: 1;
}

/* 精選案例: ------------------------------------*/

/* school building divider  */
.divider-school {
  width: 100%;
  height: 60px;
  background-image: url('https://i.imgur.com/8JegBCT.jpeg');
  background-repeat: repeat-x;
  background-size: auto 60px;
}

/* Card-精選案例 */
.case-item {
  position: relative;
  background-color: var(--white);
  border-radius: var(--card-radius);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  padding: 20px 32px;
  width: 380px;
  min-height: 354px;
  box-sizing: border-box;
}

/* case school logo */
.case-item img {
  height: 112px;
}
/* case school name */
.case-school {
  font-weight: bold;
  color: var(--main-brown);
}

/* case content */
.case-content {
  display: -webkit-box;
  -webkit-line-clamp: 4;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* case content tooltip */
.tooltip {
  position: absolute;
  background-color: rgba(51, 51, 51, 0.9);
  color: #fff;
  padding: 5px;
  border-radius: 3px;
  white-space: pre-wrap;
  z-index: 1000;
  display: none;
  pointer-events: none;
}

/* container for showcase section end */
.cloud-section-end {
  position: relative;
  width: 100%;
}

/* define cloud image width for both side */
.cloud-section-end img {
  width: 462px;
  max-width: 50%;
  position: absolute;
  top: 0px;
  /* z-index: -999; */
}

/* left cloud image */
.cloud-section-end :first-child {
  left: 0px;
}

/* middle cloud image pattern*/
/* .cloud-section-end :nth-child(2) { */
.cloud-section-end :nth-child(2) {
  height: 25px;
  background-image: url('https://i.imgur.com/dkQmJ3A.png');
  background-repeat: repeat-x;
  background-size: auto 25px;
}

/* right cloud image */
.cloud-section-end :last-child {
  right: 0px;
}

@media screen and (max-width: 820px) {
  .case-item {
    width: 100%;
    min-height: unset;
  }

  .case-content {
    -webkit-line-clamp: unset;
  }

  .tooltip {
    display: none;
  }
}

/* 客户評語: ------------------------------------*/
/* Testimonial: ------------------------------------*/

/* container for testimonial */
.card-testimonial {
  max-width: 380px;
}

/* testimonial upper part */
.card-testimonial .upper {
  padding: 40px 32px 32px;
  background-color: var(--main-green-4);
  -webkit-border-radius: var(--card-radius);
  -webkit-border-bottom-right-radius: 0;
  -moz-border-radius: var(--card-radius);
  -moz-border-radius-bottomright: 0;
  border-radius: var(--card-radius);
  border-bottom-right-radius: 0;
  display: flex;
  flex-direction: column;
  gap: 24px;
}

/* the "quote" icon in upper part of testimonial card */
.card-testimonial .upper img {
  -o-object-fit: contain;
  object-fit: contain;
  align-self: start;
  height: 32px;
}

/* testimonial quote text */
.card-testimonial .quote {
  font-size: 20px;
  font-weight: bold;
  line-height: 1.8;
  color: var(--main-green-0);
}

/* testimonial bottom part */
.card-testimonial .bottom {
  width: 100%;
  display: flex;
  flex-direction: row;
}

/* testimonial bottom -> left part: for reveal the green color from upper right round corner */
.card-testimonial .info {
  width: -webkit-fit-content;
  width: -moz-fit-content;
  width: fit-content;
  max-width: 240px; /* to prevent the".bubble-end" to be eaten by long text */
  display: flex;
  gap: 12px;
  flex-direction: row;
  background-color: var(--main-green-4);
  position: relative;
  z-index: 0;
  padding: 20px 20px 0px;
}

/* testimonial bottom -> left part: fill white color and add round corner */
.card-testimonial .info::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: var(--white);
  z-index: -1;
  border-top-right-radius: 40px;
}

/* testimonial bottom -> left part: school logo */
.card-testimonial .info img {
  height: 52px;
}

/* testimonial bottom -> left part: text container */
.card-testimonial .content {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 4px;
}

/* testimonial quote giver name */
.card-testimonial .name {
  font-size: 14px;
  color: var(--main-green-0);
  font-weight: bold;
}

/* testimonial quote giver school */
.card-testimonial .school {
  font-size: 14px;
  color: var(--main-brown);
  font-weight: normal;
}

/* testimonial bottom -> right part: color fill to complete the bubble shape */
.card-testimonial .bubble-end {
  flex: 1;
  background-color: var(--main-green-4);
  -webkit-border-bottom-right-radius: var(--card-radius);
  -webkit-border-bottom-left-radius: 44px;
  -moz-border-radius-bottomright: var(--card-radius);
  -moz-border-radius-bottomleft: 44px;
  border-bottom-right-radius: var(--card-radius);
  border-bottom-left-radius: 44px;
}

@media screen and (max-width: 820px) {
  .card-testimonial {
    min-width: 100%;
    height: -webkit-fit-content;
    height: -moz-fit-content;
    height: fit-content;
  }
}
