/* =========================================================
   1. FOOTER GLOBAL (ULTRA-LANDAI & WIDE GRADUAL BLENDING)
   ========================================================= */

#footer.ct-footer {
  --ge-footer-heading: #ffffff;
  --ge-footer-text: rgba(230, 240, 255, 0.78);
  --ge-footer-soft: rgba(199, 217, 246, 0.54);

  --ge-footer-line: rgba(160, 200, 240, 0.17);
  --ge-footer-line-soft: rgba(160, 200, 240, 0.09);

  --ge-footer-border: rgba(177, 209, 248, 0.17);
  --ge-footer-border-hover: rgba(185, 215, 255, 0.34);

  --ge-footer-accent: #76AFFF;
  --ge-footer-accent-light: #A6C9FF;

  position: relative;
  isolation: isolate;

  color: var(--ge-footer-text);
  background-color: #061A3C;

  /* Ruang bernapas yang luas di atas agar teks tidak tertutup gradasi */
  padding-top: 220px !important;

  background-image:
    /* Transisi putih → transparan (dipindah dari ::after) */
    linear-gradient(
      to bottom,
      #ffffff 0%,
      rgba(255, 255, 255, 0.94) 10%,
      rgba(255, 255, 255, 0.83) 22%,
      rgba(255, 255, 255, 0.68) 35%,
      rgba(255, 255, 255, 0.51) 48%,
      rgba(255, 255, 255, 0.34) 62%,
      rgba(255, 255, 255, 0.19) 75%,
      rgba(255, 255, 255, 0.08) 87%,
      rgba(255, 255, 255, 0.02) 95%,
      transparent 100%
    ),

    /* Glow kiri atas */
    radial-gradient(
      ellipse at 15% 15%,
      rgba(111, 176, 240, 0.55) 0%,
      rgba(64, 140, 211, 0.35) 22%,
      rgba(24, 89, 158, 0.12) 47%,
      transparent 68%
    ),

    /* Glow kanan atas */
    radial-gradient(
      ellipse at 84% 15%,
      rgba(112, 175, 235, 0.35) 0%,
      rgba(46, 112, 182, 0.14) 32%,
      transparent 60%
    ),

    /* Biru → Dark Navy */
    linear-gradient(
      180deg,
      #4384C3 0%,
      #276CB1 12%,
      #0B4F94 29%,
      #07386F 48%,
      #05264F 68%,
      #041A39 84%,
      #03132B 100%
    ) !important;

  background-size:
    100% 320px,
    auto,
    auto,
    auto !important;

  background-position:
    top left,
    0 0,
    0 0,
    0 0 !important;

  background-repeat:
    no-repeat,
    no-repeat,
    no-repeat,
    no-repeat !important;
}

/* Garis grid dari #main (dark) yang berangsur hilang ke bawah */
#footer.ct-footer::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 190px; /* = jarak garis horizontal pertama */
  z-index: 1;
  pointer-events: none;

  --ge-grid-line: rgba(13, 27, 42, 0.095);
  --ge-grid-line-soft: rgba(13, 27, 42, 0.05);

  background-image:
    linear-gradient(90deg, var(--ge-grid-line) 1px, transparent 1px),
    linear-gradient(90deg, var(--ge-grid-line-soft) 1px, transparent 1px);

  background-size:
    33.333% 100%,
    33.333% 100%;

  background-position:
    0 0,
    26px 0;

  background-repeat: repeat-x;

  /* Penuh di paling atas, lalu hilang bertahap */
  -webkit-mask-image: linear-gradient(
    to bottom,
    #000 0%,
    rgba(0,0,0,0.85) 20%,
    rgba(0,0,0,0.6) 45%,
    rgba(0,0,0,0.3) 70%,
    rgba(0,0,0,0.08) 90%,
    transparent 100%
  );
  mask-image: linear-gradient(
    to bottom,
    #000 0%,
    rgba(0,0,0,0.85) 20%,
    rgba(0,0,0,0.6) 45%,
    rgba(0,0,0,0.3) 70%,
    rgba(0,0,0,0.08) 90%,
    transparent 100%
  );
}



/* =========================================================
   2. ARCHITECTURAL GRID
   ========================================================= */

#footer.ct-footer::before {
  content: "";

  position: absolute;
  inset: 0;

  z-index: 0;

  pointer-events: none;

  background-image:
    linear-gradient(90deg, var(--ge-footer-line) 1px, transparent 1px),
    linear-gradient(90deg, var(--ge-footer-line-soft) 1px, transparent 1px),
    linear-gradient(180deg, var(--ge-footer-line) 1px, transparent 1px),
    linear-gradient(180deg, var(--ge-footer-line-soft) 1px, transparent 1px);

  background-size:
    33.333% 100%,
    33.333% 100%,
    100% 190px,
    100% 190px;

  background-position:
    0 0,
    26px 0,
    0 0,
    0 26px;

  background-repeat:
    repeat-x,
    repeat-x,
    repeat-y,
    repeat-y;

  -webkit-mask-image:
    linear-gradient(
      to bottom,
      transparent 0px,
      rgba(0,0,0,0.15) 40px,
      rgba(0,0,0,0.5) 110px,
      #000 190px,
      #000 57%,
      rgba(0,0,0,0.85) 70%,
      rgba(0,0,0,0.48) 84%,
      rgba(0,0,0,0.10) 96%,
      transparent 100%
    );

  mask-image:
    linear-gradient(
      to bottom,
      transparent 0px,
      rgba(0,0,0,0.15) 40px,
      rgba(0,0,0,0.5) 110px,
      #000 190px,
      #000 57%,
      rgba(0,0,0,0.85) 70%,
      rgba(0,0,0,0.48) 84%,
      rgba(0,0,0,0.10) 96%,
      transparent 100%
    );
}


/* =========================================================
   3. FOOTER ROWS (SPACING ADJUSTMENT FOR SEAMLESS EFFECT)
   ========================================================= */

#footer.ct-footer [data-row="top"] {
  position: relative;
  z-index: 2;
  background: transparent !important;
  background-color: transparent !important;

  /* Ruang tambahan agar teks tidak menumpuk dengan transisi memudar */
  padding-top: 80px !important;
}

#footer.ct-footer [data-row="middle"],
#footer.ct-footer [data-row="bottom"] {
  position: relative;
  z-index: 2;
  background: transparent !important;
  background-color: transparent !important;
}


/* =========================================================
   4. COLUMN GENERAL
   ========================================================= */

#footer.ct-footer .ge-footer__column {
  position: relative;
  color: var(--ge-footer-text);
}


/* =========================================================
   5. BRAND
   ========================================================= */

#footer.ct-footer .ge-footer__brand-name {
  margin: 0 0 18px;
  color: var(--ge-footer-heading);
  font-size: clamp(30px, 2.4vw, 42px);
  font-weight: 650;
  line-height: 1;
  letter-spacing: -0.04em;
}

#footer.ct-footer .ge-footer__brand-name::before,
#footer.ct-footer .ge-footer__brand-name::after {
  content: none !important;
  display: none !important;
}

#footer.ct-footer .ge-footer__description {
  max-width: 390px;
  margin: 0;
  color: var(--ge-footer-text);
  font-size: 14px;
  line-height: 1.8;
}


/* =========================================================
   6. COLUMN TITLE
   ========================================================= */

#footer.ct-footer .ge-footer__title {
  margin: 2px 0 22px;
  color: var(--ge-footer-heading);
  font-size: 13px;
  font-weight: 600;
  line-height: 1.4;
  letter-spacing: 0.035em;
}

#footer.ct-footer .ge-footer__title::before,
#footer.ct-footer .ge-footer__title::after {
  content: none !important;
  display: none !important;
}


/* =========================================================
   7. LINKS
   ========================================================= */

#footer.ct-footer .ge-footer__links {
  display: flex;
  flex-direction: column;
  gap: 11px;
  margin: 0;
  padding: 0;
  list-style: none;
}

#footer.ct-footer .ge-footer__links li {
  margin: 0;
  padding: 0;
  list-style: none;
}

#footer.ct-footer .ge-footer__links a {
  display: inline-block;
  width: fit-content;
  color: var(--ge-footer-text) !important;
  font-size: 14px;
  line-height: 1.5;
  text-decoration: none !important;
  transition: color 180ms ease, transform 180ms ease;
}

#footer.ct-footer .ge-footer__links a::before,
#footer.ct-footer .ge-footer__links a::after {
  content: none !important;
}

#footer.ct-footer .ge-footer__links a:hover {
  color: #ffffff !important;
  transform: translateX(4px);
}

#footer.ct-footer .ge-footer__links a:focus-visible {
  outline: 2px solid var(--ge-footer-accent);
  outline-offset: 4px;
  border-radius: 2px;
}


/* =========================================================
   8. SOCIAL
   ========================================================= */

#footer.ct-footer .ge-footer__socials {
  display: flex;
  flex-wrap: wrap;
  gap: 9px;
  margin-top: 26px;
}

#footer.ct-footer .ge-footer__social {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  box-sizing: border-box;
  border: 1px solid var(--ge-footer-border);
  border-radius: 8px;
  background: rgba(170, 205, 255, 0.045);
  color: rgba(233, 242, 255, 0.82) !important;
  font-size: 14px;
  text-decoration: none !important;
  transition: background 180ms ease, border-color 180ms ease, color 180ms ease, transform 180ms ease;
}

#footer.ct-footer .ge-footer__social span {
  display: flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
}

#footer.ct-footer .ge-footer__social:hover {
  background: rgba(173, 207, 255, 0.15);
  border-color: var(--ge-footer-border-hover);
  color: #ffffff !important;
  transform: translateY(-2px);
}

#footer.ct-footer .ge-footer__social:focus-visible {
  outline: 2px solid var(--ge-footer-accent);
  outline-offset: 3px;
}


/* =========================================================
   9. CONTACT
   ========================================================= */

#footer.ct-footer .ge-footer__contact {
  display: flex;
  flex-direction: column;
  gap: 19px;
  margin: 0;
  font-style: normal;
}

#footer.ct-footer .ge-footer__contact-item {
  display: grid;
  grid-template-columns: 36px minmax(0, 1fr);
  gap: 13px;
  align-items: start;
}

#footer.ct-footer .ge-footer__contact-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  box-sizing: border-box;
  border: 1px solid var(--ge-footer-border);
  border-radius: 8px;
  background: rgba(168, 204, 255, 0.045);
  color: rgba(211, 228, 255, 0.78);
  transition: background 180ms ease, border-color 180ms ease, color 180ms ease, transform 180ms ease;
}

#footer.ct-footer .ge-footer__contact-icon svg {
  display: block;
  width: 17px;
  height: 17px;
}

#footer.ct-footer .ge-footer__contact-item:hover .ge-footer__contact-icon {
  background: rgba(172, 207, 255, 0.12);
  border-color: var(--ge-footer-border-hover);
  color: #ffffff;
  transform: translateY(-1px);
}

#footer.ct-footer .ge-footer__contact-content {
  min-width: 0;
}

#footer.ct-footer .ge-footer__contact-label {
  display: block;
  margin-bottom: 4px;
  color: var(--ge-footer-soft);
  font-size: 10.5px;
  font-weight: 500;
  line-height: 1.4;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

#footer.ct-footer .ge-footer__contact-content p {
  margin: 0;
  color: var(--ge-footer-text);
  font-size: 13.5px;
  line-height: 1.7;
}

#footer.ct-footer .ge-footer__contact-content a {
  color: var(--ge-footer-text) !important;
  font-size: 13.5px;
  line-height: 1.6;
  text-decoration: none !important;
  transition: color 180ms ease;
}

#footer.ct-footer .ge-footer__contact-content a:hover {
  color: #ffffff !important;
}

#footer.ct-footer .ge-footer__contact-content a:focus-visible {
  outline: 2px solid var(--ge-footer-accent);
  outline-offset: 3px;
  border-radius: 2px;
}


/* =========================================================
   10. MIDDLE ROW (GIANT WORDMARK)
   ========================================================= */

#footer.ct-footer [data-row="middle"] {
  overflow: hidden;
}

#footer.ct-footer [data-row="middle"] .ct-widget {
  margin: 0;
}

#footer.ct-footer .ge-footer__wordmark-wrap {
  position: relative;
  width: 100%;
  overflow: hidden;
  box-sizing: border-box;
  padding-top: 28px;
}

#footer.ct-footer .ge-footer__wordmark {
  display: block;
  width: max-content;
  max-width: none;
  margin: 0 0 -0.06em;
  white-space: nowrap;
  font-size: clamp(110px, 17vw, 285px);
  font-weight: 650;
  line-height: 0.78;
  letter-spacing: -0.065em;

  background: linear-gradient(
    to bottom,
    rgba(234, 243, 255, 0.90) 0%,
    rgba(205, 222, 245, 0.76) 34%,
    rgba(151, 181, 221, 0.54) 55%,
    rgba(103, 144, 195, 0.28) 73%,
    rgba(68, 111, 168, 0.08) 88%,
    rgba(48, 91, 150, 0) 100%
  );

  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  -webkit-text-fill-color: transparent;

  -webkit-mask-image: linear-gradient(
    to bottom,
    #000 0%,
    #000 42%,
    rgba(0,0,0,0.92) 57%,
    rgba(0,0,0,0.68) 72%,
    rgba(0,0,0,0.28) 88%,
    transparent 100%
  );

  mask-image: linear-gradient(
    to bottom,
    #000 0%,
    #000 42%,
    rgba(0,0,0,0.92) 57%,
    rgba(0,0,0,0.68) 72%,
    rgba(0,0,0,0.28) 88%,
    transparent 100%
  );

  pointer-events: none;
  user-select: none;
}


/* =========================================================
   11. BOTTOM ROW & COPYRIGHT
   ========================================================= */

#footer.ct-footer [data-row="bottom"] {
  z-index: 3;
}

#footer.ct-footer [data-row="bottom"]::before,
#footer.ct-footer [data-row="bottom"]::after {
  content: none !important;
  display: none !important;
}

#footer.ct-footer .ge-footer__bottom {
  width: 100%;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}

#footer.ct-footer .ge-footer__copyright {
  margin: 0;
  color: rgba(196, 215, 243, 0.55);
  font-size: 12px;
  line-height: 1.65;
}

#footer.ct-footer .ge-footer__copyright a {
  color: rgba(196, 215, 243, 0.55) !important;
  text-decoration: none !important;
  transition: color 180ms ease;
}

#footer.ct-footer .ge-footer__copyright a:hover {
  color: #ffffff !important;
}

#footer.ct-footer .ge-footer__copyright-separator {
  display: inline-block;
  margin: 0 8px;
  color: rgba(190, 216, 255, 0.20);
}


/* =========================================================
   12. INNER CLEANUP & MOBILE
   ========================================================= */

#footer.ct-footer .ct-widget {
  color: var(--ge-footer-text);
}

#footer.ct-footer .ct-widget a {
  box-shadow: none;
}

@media (max-width: 767px) {
  #footer.ct-footer [data-row="top"] {
    padding-top: 60px !important;
  }

  /* Garis dark dari #main (posisi mobile sama dengan #main) */
  #footer.ct-footer::after {
    height: 145px;
    background-size:
      50% 100%,
      50% 100%;

    background-position:
      0 0,
      18px 0;
  }

  #footer.ct-footer::before {
    -webkit-mask-image: linear-gradient(
      to bottom,
      transparent 0px,
      rgba(0,0,0,0.15) 30px,
      rgba(0,0,0,0.5) 85px,
      #000 145px,
      #000 57%,
      rgba(0,0,0,0.85) 70%,
      rgba(0,0,0,0.48) 84%,
      rgba(0,0,0,0.10) 96%,
      transparent 100%
    );
    mask-image: linear-gradient(
      to bottom,
      transparent 0px,
      rgba(0,0,0,0.15) 30px,
      rgba(0,0,0,0.5) 85px,
      #000 145px,
      #000 57%,
      rgba(0,0,0,0.85) 70%,
      rgba(0,0,0,0.48) 84%,
      rgba(0,0,0,0.10) 96%,
      transparent 100%
    );
    background-size:
      50% 100%,
      50% 100%,
      100% 145px,
      100% 145px;

    background-position:
      0 0,
      18px 0,
      0 0,
      0 18px;
  }

  #footer.ct-footer .ge-footer__brand-name { font-size: 30px; }
  #footer.ct-footer .ge-footer__description { max-width: 100%; font-size: 13.5px; }
  #footer.ct-footer .ge-footer__title { margin-bottom: 17px; }
  #footer.ct-footer .ge-footer__links { gap: 9px; }
  #footer.ct-footer .ge-footer__socials { margin-top: 22px; }
  #footer.ct-footer .ge-footer__contact { gap: 17px; }
  #footer.ct-footer .ge-footer__wordmark-wrap { padding-top: 22px; }
  #footer.ct-footer .ge-footer__wordmark { font-size: clamp(72px, 23vw, 140px); line-height: 0.82; letter-spacing: -0.055em; }
  #footer.ct-footer .ge-footer__copyright { font-size: 11.5px; }
  #footer.ct-footer .ge-footer__bottom { justify-content: flex-start; }
}

@media (prefers-reduced-motion: reduce) {
  #footer.ct-footer .ge-footer__links a,
  #footer.ct-footer .ge-footer__social,
  #footer.ct-footer .ge-footer__contact-icon,
  #footer.ct-footer .ge-footer__contact-content a,
  #footer.ct-footer .ge-footer__copyright a {
    transition: none !important;
  }
}