:root {
  --theme-color: #191E40;
  --theme-bg-color: #191E40;
  --theme-text-color: #191E40;
  --theme-bg-gradient: linear-gradient(90deg, rgba(255, 255, 255, 1) 0%, rgba(50, 109, 185, 1) 25%, rgba(180, 108, 249, 1) 50%, rgba(213, 153, 53, 1) 75%, rgba(102, 252, 251, 1) 100%);
  --container-wrapper: 16px;
  --margin-main-view: 70px;
  --padding-card-event: 0.75rem;
  --padding-section-movement: 5.5rem;
}

/* Layout */
header .header-container,
footer .sitemap-container {
  padding-left: var(--container-wrapper);
  padding-right: var(--container-wrapper);
}

main {
  /* margin-top: var(--margin-main-view); */
}

.container-wrapper {
  padding-left: var(--container-wrapper);
  padding-right: var(--container-wrapper);
}

/* Header */
header {
  color: white;
  background-color: var(--theme-bg-color);
  overflow: hidden;

  .header-top {
    background: var(--theme-bg-gradient);
    /* border-bottom: 1px solid #707070; */

    nav {
      padding-top: 10px;
      padding-bottom: 10px;

      .navbar-nav {
        gap: 2rem;

        .nav-link {
          padding-top: 0.375rem;
          padding-bottom: 0.375rem;
          text-wrap: nowrap;
        }
      }

      .navbar-social {
        gap: 0.75rem;

        .nav-link {
          color: var(--theme-color);
          background-color: white;
          width: 36px;
          height: 36px;
          border-radius: 36px;
          text-align: center;
        }
      }
    }
  }

  .header-bottom {
    .navbar-brand img {
      height: 44px;
      width: auto;
    }

    nav {
      height: 70px;

      .navbar-nav {
        height: 100%;
        gap: 2rem;

        .nav-item {
          position: relative;
          height: 100%;

          .nav-link {
            height: 100%;
            padding: 0;
            text-wrap: nowrap;
            display: flex;
            align-items: center;
          }
        }

        .nav-item::before {
          content: '';
          position: absolute;
          width: 0;
          height: 3px;
          bottom: 0;
          left: 0;
          background-color: white;
          visibility: hidden;
          transition: all 0.3s ease-in-out;
        }

        .nav-item:hover::before {
          visibility: visible;
          width: 100%;
        }

        .nav-item.active {
          .nav-link {
            background: white;
            background: var(--theme-bg-gradient);
            /* background: linear-gradient(90deg, rgba(62, 91, 169, 1) 0%, rgba(69, 50, 143, 1) 14%, rgba(125, 52, 147, 1) 28%, rgba(238, 47, 38, 1) 42%, rgba(240, 84, 37, 1) 56%, rgba(242, 235, 67, 1) 70%, rgba(98, 170, 69, 1) 84%); */
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
            font-weight: 700;
          }
        }

        .nav-item.active::before {
          visibility: visible;
          width: 100%;
        }
      }
    }
  }

  .header-subnavbar {
    nav {
      height: 60px;

      .navbar-nav {
        height: 100%;
        gap: 1.875rem;

        .nav-item {
          position: relative;
          height: 100%;

          .nav-link {
            font-size: 0.875rem;
            color: #999999;
            height: 100%;
            padding: 0;
            text-wrap: nowrap;
            display: flex;
            align-items: center;
          }
        }

        .nav-item.active {
          .nav-link {
            color: white;
            font-weight: 700;
          }
        }
      }
    }
  }
}

/* Offcanvas */
.offcanvas {
  /* border-left: none !important; */
  color: white;
  background-color: var(--theme-bg-color);

  .offcanvas-body {
    .navbar-nav {
      font-size: 1.125rem;

      .nav-item {
        border-bottom: 1px solid #9A9A9A;

        .nav-link {
          padding: 0.875rem 0;
          position: relative;
        }

        .nav-link.dropdown-toggle::after {
          position: absolute;
          right: 0.25rem;
          top: 50%;
          transform: translateY(-50%);
        }

        .nav-link:focus-visible {
          box-shadow: none;
          -webkit-box-shadow: none;
        }

        .dropdown-menu {
          border: none;
          border-radius: 0;
          background-color: transparent;

          .dropdown-item {
            color: white;
            padding: 0.5rem 1rem;
          }

          .dropdown-item:active,
          .dropdown-item:focus,
          .dropdown-item:focus-visible,
          .dropdown-item:hover {
            outline: 0;
            background-color: white;
            color: var(--theme-color);
          }
        }

        .dropdown-menu.show {
          position: relative !important;
          transform: unset !important;
          margin-top: -0.5rem !important;
        }
      }

      .nav-item:last-child {
        border-bottom: none;
      }
    }

    .offcanvas-social {
      gap: 0.75rem;

      .nav-link {
        font-size: 1.25rem;
        color: var(--theme-color);
        background-color: white;
        width: 44px;
        height: 44px;
        border-radius: 44px;
        display: flex;
        align-items: center;
        justify-content: center;
      }
    }
  }
}

/* Footer */
footer {
  color: white;
  background-color: var(--theme-bg-color);
  overflow: hidden;

  .sitemap {

    .sitemap-container {
      padding-top: 60px;
      padding-bottom: 40px;

      img.sitemap-logo {
        height: 54px;
      }

      .sitemap-social {
        .social-item {
          width: 32px;
          height: 32px;
          background-color: white;
          border-radius: 4px;
          color: var(--theme-bg-color);
          display: flex;
          align-items: center;
          justify-content: center;
        }
      }
    }
  }
}

.copyright {
  .copyright-wrapper {
    font-size: 0.75rem;
    color: black;
    text-align: center;
    background-color: white;
    padding: 0.625rem var(--container-wrapper);
  }
}

/* Theme */
.theme-bg-color {
  background-color: var(--theme-bg-color);
}

.theme-text-color {
  color: var(--theme-text-color);
}

.theme-text-coming-soon {
  background: black;
  background: linear-gradient(90deg, rgba(50, 109, 185, 1) 0%, rgba(180, 108, 249, 1) 33%, rgba(213, 153, 53, 1) 66%, rgba(102, 252, 251, 1) 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}

.page-theme {

  .page-theme-wrapper {
    padding-top: 2.5rem;
    padding-bottom: 2.5rem;
  }

  .page-theme-title {
    font-size: 2.375rem;
    margin-bottom: 0.875rem;
  }
}

.section-theme {

  .section-theme-wrapper {
    padding-top: 2.5rem;
    padding-bottom: 2.5rem;
  }

  .section-theme-title {
    font-size: 2.375rem;
    margin-bottom: 0.875rem;
  }
}

/* Button */
.btn-theme {
  border: none;
  color: white;
  background: linear-gradient(94deg, #835E00 0.34%, #C19F46 59.51%, #ECCB76 100%);
  /* background: linear-gradient(45deg, #0037ff, #00adff); */
}

.btn-theme:hover,
.btn-theme:active,
.btn-theme:focus-visible {
  color: var(--theme-color) !important;
}

.btn-theme.btn-lg {
  font-size: 1.125rem;
}

/* Page */
.general-introduction-page {
  .page-theme-wrapper {
    .page-theme-content {
      .row>* {
        padding-left: 1rem;
        padding-right: 1rem;
      }

      .table tbody tr th,
      .table tbody tr td {
        padding-top: 0.75rem;
        padding-bottom: 0.75rem;
      }
    }
  }
}

.overview-page {
  .page-theme-wrapper {
    .page-theme-content {
      border-top: 2px solid black;
      border-bottom: 2px solid black;
      padding-top: 1.5rem;
      padding-bottom: 1.5rem;
    }
  }
}

.contact-us-page {
  .page-theme-wrapper {
    padding-left: var(--container-wrapper);
    padding-right: var(--container-wrapper);
  }
}

/* Section */
.section-film-screening {
  position: relative;
  background: linear-gradient(180deg, rgba(25, 30, 64, 1) 0%, rgba(5, 6, 13, 1) 100%);

  .section-theme-wrapper {
    position: relative;
    z-index: 2;
  }

  .section-theme-title {
    margin-bottom: 2.5rem;
  }

  .program-films {
    display: flex;
    padding-left: var(--container-wrapper);
    margin-bottom: 3.5rem;

    .header-film {
      width: auto;
      min-width: 185px;
      display: flex;
      align-items: center;
      gap: 0.75rem;
      padding-right: 1rem;

      .header-title {
        font-size: 5.625rem;
        color: transparent;
        -webkit-text-stroke-width: 1px;
        -webkit-text-stroke-color: white;
      }

      .header-subtitle {
        font-size: 1.5rem;
        text-wrap: nowrap;
        line-height: 1.06;
        margin-top: 0.687em;
      }
    }

    .list-film {
      flex: 1;
      min-width: 1px;

      .splide {

        .splide__track {
          padding-right: 1.875rem !important;
        }

        .splide__pagination {
          position: relative;
          bottom: 0;
          margin-top: 0.625rem;
        }
      }
    }
  }

  .program-films:last-child {
    margin-bottom: 0;
  }

  .bg-element-1 {
    position: absolute;
    right: 0;
    bottom: 0;
    z-index: 1;
    opacity: 0.35;
    width: 350px;
    max-width: 40%;
  }
}

.section-festival-events {
  .list-event {
    margin: 0 calc(-1 * var(--padding-card-event));

    .splide {
      .splide__pagination {
        position: relative;
        bottom: 0;
        margin-top: 0.625rem;
      }
    }
  }
}

.section-movement {
  background-color: #F8F8F8;

  .section-theme-title {
    position: relative;
  }

  .section-theme-title::before {
    content: "";
    /* background: #7e1da8; */
    background: var(--theme-bg-gradient);
    height: 4px;
    width: 100%;
    display: block;
    position: absolute;
    left: 0;
    bottom: 0;
    right: 0;
    z-index: 2;
  }

  .row {
    margin: 0 calc(-1 * var(--padding-section-movement));
  }

  .row>* {
    padding-left: var(--padding-section-movement);
    padding-right: var(--padding-section-movement);
  }

  .list-highlight {
    list-style: none;

    .list-item {
      padding: 1.5rem 0;
      border-bottom: 1px solid #E0E0E0;

      .list-title {
        font-size: 1.125rem;
        line-height: 1.36;
      }

      .list-title:hover {
        text-decoration: underline;
      }
    }

    .list-item:last-child {
      border-bottom: none;
    }
  }

  .list-news {
    list-style: none;

    .list-item {
      padding: 1.5rem 0;
      border-bottom: 1px solid #E0E0E0;
      display: flex;
      align-items: center;

      .list-header {
        width: auto;
        display: flex;
        align-items: center;
        justify-content: center;
        flex-direction: column;
        border-right: 1px solid #9E9E9E;
        padding-right: 1.25rem;

        .header-title {
          font-size: 2.625rem;
          color: #9E9E9E;
          line-height: 1;
        }

        .header-subtitle {
          font-size: 1.125rem;
          color: #9E9E9E;
          line-height: 1;
        }
      }

      .list-body {
        flex: 1;
        padding-left: 1.25rem;

        .list-title {
          font-size: 1.125rem;
          line-height: 1.36;
        }

        .list-title:hover {
          text-decoration: underline;
        }
      }
    }

    .list-item:last-child {
      border-bottom: none;
    }
  }
}

.section-contact-us {
  .card-contact {
    padding: 1.875rem;
    background-color: black;
    border-radius: 24px;
    margin-bottom: 1.5rem;

    .contact-us-logo {
      max-width: 100%;
    }

    .contact-us-social {
      .social-item {
        margin-bottom: 0.625rem;

        .icon i {
          width: 32px;
          height: 32px;
          display: flex;
          align-items: center;
          justify-content: center;
          background-color: white;
          border-radius: 4px;
          font-size: 1.5rem;
          color: black;
        }

        .text {
          font-size: 1.125rem;
        }
      }
    }
  }

  .card-location {
    padding: 1.875rem;
    background-color: black;
    border-radius: 24px;
    height: 100%;

    iframe {
      border-radius: 20px;
    }
  }
}

.srction-partners {
  background: white;
  padding: 0 var(--container-wrapper);

  .section-list {
    display: flex;
    flex-direction: row;
    justify-content: space-around;
    align-items: center;
    flex-wrap: wrap;

    .partner-item {
      width: 120px;
      height: 120px;
      object-fit: contain;
      /* border-left: 1px solid white; */
    }
  }
}

.section-video-present {
  .section-theme-wrapper {
    position: relative;
    z-index: 2;
  }

  .element-bg-1,
  .element-bg-2 {
    position: absolute;
    z-index: 1;
  }

  .element-bg-1 {
    width: auto;
    height: 100%;
    left: 0;
    top: 0;
    bottom: 0;
    display: none;
  }

  .element-bg-2 {
    width: auto;
    height: 36%;
    right: 0;
    bottom: 0;
  }
}

/* Banner */
.banner-page {
  position: relative;
  height: 150px;
  overflow: hidden;

  .banner-content {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    font-size: 2rem;
    text-align: center;
    color: white;
    padding: 2.5rem 0;
    z-index: 2;
    text-shadow: 1px 3px 7px rgba(0, 0, 0, 0.6);
  }

  .background-black {
    opacity: 0.35;
  }
}

.section-banner-highlight {
  position: relative;
  width: 100%;
  /* height: calc(100dvh - 127px); */
}

.section-banner-highlight::before {
  content: "";
  /* background: #7e1da8; */
  /* background: linear-gradient(90deg, rgba(125, 52, 147, 1) 0%, rgba(69, 50, 143, 1) 14%, rgba(62, 91, 169, 1) 28%, rgba(98, 170, 69, 1) 41%, rgba(242, 235, 67, 1) 56%, rgba(240, 84, 37, 1) 70%, rgba(238, 47, 38, 1) 84%); */
  background: var(--theme-bg-gradient);
  height: 6px;
  width: 100%;
  display: block;
  position: absolute;
  left: 0;
  bottom: 0;
  right: 0;
  z-index: 2;
}

.section-announce-theme-1 {
  background-color: var(--theme-bg-color);
  background-repeat: no-repeat;
  background-size: auto;
  background-position: 50% 50%;

  .section-theme-title {
    margin-bottom: 1.5rem;
  }

  .section-wrapper {
    gap: 3.5rem;

    .section-body {
      flex: 1;

      .section-brief {
        font-size: 1rem;
        color: #BDBDBD;
        margin-bottom: 2rem;
      }
    }

    .section-banner {
      flex: 1;

      img {
        width: 100%;
      }
    }
  }
}

.section-announce-theme-2 {
  .section-wrapper {
    .section-banner {
      flex: initial;

      img {
        width: 100%;
      }
    }

    .section-body {
      flex: 1;
      background-repeat: no-repeat;
      background-position: 50% 50%;
      background-size: cover;
      display: flex;
      align-items: center;

      .section-content {
        width: 90%;
        margin: auto;
        padding: 2.5rem 0;

        .section-title {
          font-size: 2.375rem;
          color: white;
          margin-bottom: 1rem;
        }

        .section-brief {
          font-size: 1rem;
          color: #BDBDBD;
          margin-bottom: 2rem;
        }
      }
    }
  }
}

.highlight-detail-page {
  .news-article {
    line-height: 1.67;

    p {
      margin: 0;
    }

    img {
      max-width: 100%;
      height: auto !important;
    }
  }
}

.news-detail-page {
  .news-article {
    line-height: 1.67;

    p {
      margin: 0;
    }

    img {
      max-width: 100%;
      height: auto !important;
    }
  }
}

/* Card */
.card-film {
  display: block;
  margin: 0 0.625rem;
  cursor: grab;

  .card-thumbnail {
    width: 100%;
    height: auto;
    aspect-ratio: 2/3;
    max-height: 255.66px;
    cursor: pointer;
    position: relative;

    img {
      width: 100%;
      height: 100%;
      object-fit: cover;
    }

    .overlay {
      display: flex;
      align-items: center;
      justify-content: center;
      background: rgba(34, 34, 34, .8);
      position: absolute;
      top: 0;
      bottom: 0;
      left: 0;
      right: 0;
      z-index: 2;
      opacity: 0;
      transition: opacity 0.3s ease-in-out;

      .icon {
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 1.125rem;
        width: 45px;
        height: 45px;
        border-radius: 45px;
        background-color: #AC65F3;
      }
    }
  }

  :hover {
    .overlay {
      opacity: 1;
    }
  }

  .card-theater {
    text-align: center;
    font-size: 0.875rem;
    color: white;
    background-color: #D89D44;
    padding: 0.125rem 0;
  }

  .card-body {
    margin: 0.625rem 0;

    .card-title {
      font-size: 0.875rem;
      height: calc(0.875rem * 1.2 * 2);
    }

    .card-show-time {
      font-size: 0.75rem;
      color: #D89D44;
      margin-top: 0.375rem;
    }
  }
}

.card-gala-premiere {

  .card-thumbnail {
    position: relative;
    width: 100%;
    height: auto;
    aspect-ratio: 2 / 3;
    max-height: 390px;

    img {
      width: 100%;
      height: 100%;
      object-fit: cover;
    }

    .card-brief {
      display: flex;
      align-items: center;
      margin: 1rem;
      padding: 1.875rem;
      color: white;
      background: rgba(34, 34, 34, .8);
      position: absolute;
      top: 0;
      bottom: 0;
      left: 0;
      right: 0;
      opacity: 0;
      transition: opacity 0.3s ease-in-out;

      p {
        margin: 0;
        overflow: hidden;
        display: -webkit-box;
        -webkit-box-orient: vertical;
        -webkit-line-clamp: 15;
      }
    }

    a {
      position: absolute;
      top: 0;
      bottom: 0;
      left: 0;
      right: 0;
      z-index: 2;
    }
  }

  :hover {
    .card-brief {
      opacity: 1;
    }
  }

  .card-body {
    padding: 0.625rem 0 1.75rem;

    .card-title {
      font-size: 1.625rem;
      width: fit-content;
      position: relative;
      padding-bottom: 0.25rem;
    }

    .card-title::before {
      content: '';
      position: absolute;
      width: 0;
      height: 3px;
      bottom: 0;
      left: 0;
      background-color: black;
      visibility: hidden;
      transition: all 0.3s ease-in-out;
    }

    .card-title:hover::before {
      visibility: visible;
      width: 100%;
    }
  }
}

.card-event {
  display: block;
  margin: 0 var(--padding-card-event);

  .card-thumbnail {
    width: 100%;
    height: auto;
    aspect-ratio: 2/3;
    max-height: 369px;

    img {
      width: 100%;
      height: 100%;
      object-fit: cover;
    }
  }

  .card-body {
    padding: 0.625rem 0;

    .card-title {
      font-size: 1.625rem;
      max-height: calc(1.625rem * 1.2 * 2);
      width: fit-content;
    }
  }
}

.card-award {
  background-color: black;
  background-repeat: no-repeat;
  background-size: cover;
  background-position: center center;
  border-radius: 10px;
  padding: 2.5rem 1.25rem 1.25rem;
  margin-bottom: 1.5rem;

  .card-title {
    font-size: 2.25rem;
    text-align: center;
    text-transform: uppercase;
    line-height: 1;
    margin: 0 auto;
    margin-bottom: 1.25rem;
    /* max-width: 80%; */
    text-wrap: nowrap;
    background: linear-gradient(91deg, #835E00 0.21%, #ECCB76 51.47%);
    background-clip: text;
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
  }

  .card-body {
    border-radius: 10px;
    background-color: white;
    padding: 2.5rem 1.25rem 1.25rem;

    .card-image {
      width: 70%;
      max-height: 100px;
      object-fit: contain;
    }
  }
}

.card-profile {
  margin-bottom: 3rem;

  .card-thumbnail {
    width: 100%;
    height: auto;
    aspect-ratio: 2/3;
    background-color: #D9D9D9;
    /* max-height: 245.25px; */

    img {
      width: 100%;
      height: 100%;
      object-fit: cover;
    }
  }

  .card-body {
    padding-top: 0.625rem;

    .card-title {
      /* font-size: 1.375rem; */
      text-transform: uppercase;
      margin-bottom: 0.375rem;
    }

    .card-brief {
      font-size: 0.875rem;
      color: #616161;
    }
  }
}

.card-news {
  display: flex;
  /* gap: 1.875rem; */
  gap: 0;
  flex-direction: column;
  margin-bottom: 1.5rem;

  .card-thumbnail {
    img {
      display: block;
      width: 100%;
      height: 215px;
      object-fit: cover;
    }
  }

  .card-body {
    padding: 1rem 0.5rem;

    .card-title {
      font-size: 1.25rem;
      line-height: 1.4;
      margin-bottom: 1.25rem;
    }

    .card-public-date {
      font-size: 0.875rem;
      color: #949494;
    }
  }
}

.card-news:hover {
  transition: 0.5s;
  color: white;
  background-color: var(--theme-color);
}

/* Modal */
.modal-film {
  .modal-body {
    button.btn-close {
      position: absolute;
      top: 1rem;
      right: 1rem;
    }

    .film-image {
      img {
        width: 100%;
        height: auto;
        display: block;
      }
    }

    .film-content {
      padding: 1.875rem 2.25rem;

      .film-synopsis {
        line-height: 1.75;

        p {
          margin: 0;
        }
      }

      .btn-ticket,
      .btn-booking {
        border: none;
        color: white;
        background: linear-gradient(94deg, #835E00 0.34%, #C19F46 59.51%, #ECCB76 100%);
        padding-left: 1.375rem;
        padding-right: 1.375rem;
      }

      .btn-booking {
        background: linear-gradient(94deg, #0000FF 0.34%, #00BFFF 100%);
      }

      .btn-ticket:hover,
      .btn-booking:hover {
        box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px;
        -webkit-box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px;
      }
    }
  }
}

/* Cookie Policy */
.cookie-policy {
  display: flex;
  justify-content: center;
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 99;
  align-items: center;
  padding: 20px;
  width: 100%;
  animation-name: slide-bar;
  animation-direction: normal;
  animation-duration: 900ms;
  animation-timing-function: linear;
  animation-fill-mode: forwards;
}

@keyframes slide-bar {
  from {
    transform: translateY(50px);
  }

  to {
    transform: translateY(0);
  }
}

.policy-banner {
  color: black;
  background-color: white;
  padding: 20px;
  opacity: 1;
  width: unset;
  max-width: 1280px;
  margin: 0 auto;
  border: 1px solid rgb(232, 232, 232);
  border-radius: 8px;
  box-shadow: rgb(0 0 0 / 10%) 0px 2px 8px 0px;
}

.policy-banner .policy-title {
  margin-bottom: 5px;
}

.policy-banner .policy-link {
  /* margin: 0 0.2em; */
  color: var(--theme-color);
}

.policy-btn .policy-btn-accept {
  width: 100%;
  background-color: var(--theme-color);
  border-radius: 10px;
  font-weight: 500;
  color: white;
  padding-left: 1rem;
  padding-right: 1rem;

  @media (min-width: 768px) {
    width: fit-content;
  }
}

/* Page Loding */
.loading {
  width: 100%;
  height: 100%;
  background-color: rgba(255, 255, 255, 0.85);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  position: fixed;
  z-index: 9999;
  text-align: center;
  vertical-align: middle;
}

.loading:after {
  content: "";
  background-image: url('/public/img/loading/icon_bars-loadding.gif');
  background-repeat: no-repeat;
  background-size: contain;
  width: 130px;
  height: 130px;
  display: inline-block;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}