:root {
  --teal: #1f8f8a;
  --teal2: #22a6a0;
  --dark: #0b0f14;
  --text: #e9f2ff;
  --sub: rgba(233,242,255,.78);
  --border: rgba(255,255,255,.12);
  --shadow: 0 18px 60px rgba(0,0,0,.45);
  --radius-lg: 18px;
  --radius-md: 14px;
  --ease: cubic-bezier(.2,.8,.2,1);
  --ring: 0 0 0 4px rgba(34,166,160,.16);
  --glassBG: radial-gradient(120% 120% at 0% 0%, rgba(34,166,160,.22), rgba(6,8,11,0) 55%),
            radial-gradient(120% 120% at 100% 0%, rgba(255,255,255,.10), rgba(6,8,11,0) 60%),
            rgba(255,255,255,.05);
  --glassBGStrong: radial-gradient(130% 130% at 0% 0%, rgba(34,166,160,.28), rgba(6,8,11,0) 60%),
                 radial-gradient(120% 120% at 100% 0%, rgba(255,255,255,.12), rgba(6,8,11,0) 62%),
                 rgba(255,255,255,.06);
}

* { box-sizing: border-box; }
html, body { height: 100%; scroll-behavior: auto; }
:root{ --header-h: 84px; }
body{ padding-top: var(--header-h); }

body {
  margin: 0;
  font-family: "Plus Jakarta Sans", system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
  color: var(--text);
  background: #06080b;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

/* ===== Ultra Premium Polish (cinematic, subtle) ===== */

/* Luxury grain overlay (very subtle) */
body::after {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  opacity: .055;
  background-image:
    radial-gradient(closest-side, rgba(255,255,255,.08), transparent 60%),
    radial-gradient(closest-side, rgba(0,0,0,.10), transparent 65%),
    repeating-linear-gradient(0deg, rgba(255,255,255,.03) 0 1px, transparent 1px 5px);
  background-size: 120px 120px, 180px 180px, 100% 6px;
  mix-blend-mode: overlay;
}

/* Keep main layers above the grain */
.topbar, .header, main, section, footer { position: relative; z-index: 1; }


a { color: inherit; text-decoration: none; }
.container { width: min(1120px, calc(100% - 40px)); margin: 0 auto; }

/* Premium polish: consistent focus ring */
:focus { outline: none; }
:focus-visible {
  box-shadow: var(--ring);
  border-radius: 12px;
}

@media (prefers-reduced-motion: reduce) {
  html, body { scroll-behavior: auto; }
  * { transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; }
}

.topbar {
  background: linear-gradient(90deg, rgba(31,143,138,.20), rgba(34,166,160,.10));
  border-bottom: 1px dotted rgba(233,242,255,.18);
}
.topbar__inner {
  display: flex; gap: 14px; align-items: center;
  padding: 10px 0;
  font-size: 13px;
}
.pill {
  display: inline-flex; align-items: center;
  padding: 6px 10px;
  border-radius: 999px;
  background: rgba(31,143,138,.18);
  border: 1px solid rgba(31,143,138,.35);
  color: #c8fffa;
  font-weight: 800;
  letter-spacing: .4px;
}
.topbar__text { color: var(--sub); }
.waLink {
  color: #bff7f2;
  text-decoration: underline;
  text-underline-offset: 3px;
  font-weight: 800;
}
.topbar__right { margin-left: auto; display: flex; gap: 8px; align-items: center; }
.iconBtn {
  width: 34px; height: 34px;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 12px;
  border: 1px solid rgba(255,255,255,.12);
  background: rgba(255,255,255,.04);
  color: rgba(233,242,255,.85);
}
.iconBtn:hover { background: rgba(255,255,255,.07); color: #fff; }
.iconBtn svg { width: 18px; height: 18px; }

.header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  width: 100%;
  z-index: 9999;
  -webkit-backdrop-filter: blur(14px);
  backdrop-filter: blur(14px);
  background: #06080b;
  border-bottom: 1px dotted rgba(233,242,255,.18);
}
.header.is-scrolled {
  box-shadow: 0 14px 50px rgba(0,0,0,.55);
}

/* Scroll progress indicator (thin luxury bar) */
.scrollProgress {
  position: absolute;
  left: 0;
  right: 0;
  bottom: -3px;
  height: 2px;
  background: rgba(255,255,255,.06);
  overflow: hidden;
}
.scrollProgress > span {
  display: block;
  height: 100%;
  width: 0%;
  background: linear-gradient(90deg, rgba(31,143,138,.95), rgba(34,166,160,.95));
  box-shadow: 0 0 0 1px rgba(34,166,160,.18), 0 10px 30px rgba(34,166,160,.18);
  transform-origin: left;
}

.header__inner {
  display: flex; align-items: center; justify-content: space-between;
  padding: 12px 0;
  gap: 16px;
}

/* Biar logo tidak ikut mengecil saat ruang sempit */
.brand { flex: 0 0 auto; }
.brand__logo {
  height: 44px;
  width: auto;
  display: block;
  filter: drop-shadow(0 10px 30px rgba(0,0,0,.4));
}

/* Default: pakai logo desktop */
.brand__logo--mobile { display: none; }


.nav { display: flex; gap: 10px; align-items: center; flex: 1; }
/* Nav links center area */
.nav__links{
  position: relative;
  display:flex;
  gap: 22px;
  align-items:center;
  margin: 0 auto;
  padding-bottom: 14px; /* ruang untuk dot */
}

/* Premium moving dot indicator (single element, smooth) */
.nav__indicator{
  position:absolute;
  left: 0;
  bottom: 2px; /* jarak aman dari teks */
  width: 7px;
  height: 7px;
  border-radius: 999px;
  background: rgba(34,166,160,.95);
  box-shadow:
    0 10px 24px rgba(0,0,0,.22),
    0 0 0 4px rgba(34,166,160,.14),
    0 0 24px rgba(34,166,160,.25);
  opacity: 0;

  /* Posisi pakai CSS variable (INSTANT), tidak ada transition translate */
  transform: translate3d(var(--x, 0px), 0, 0) scale(.92);

  transition: opacity 160ms ease;
  will-change: transform, opacity;
  pointer-events:none;
}

.nav__indicator.is-ready{ opacity: 1; }

/* Premium: pop/glow tanpa slide */
.nav__indicator.is-pop{
  animation: navDotPop 320ms cubic-bezier(.2,1,.2,1);
}

@keyframes navDotPop{
  0%   { transform: translate3d(var(--x, 0px),0,0) scale(.92); filter: brightness(1); }
  45%  { transform: translate3d(var(--x, 0px),0,0) scale(1.18); filter: brightness(1.12); }
  100% { transform: translate3d(var(--x, 0px),0,0) scale(1.00); filter: brightness(1); }
}

  45%{ transform: translate3d(0,-1px,0) scale(1.18); filter: saturate(1.2); }
  100%{ transform: translate3d(0,0,0) scale(1); filter: saturate(1); }
}

/* Reduce motion */
@media (prefers-reduced-motion: reduce){
  .nav__indicator{ transition: none; animation: none !important; }
}
.nav__cta{ margin-left:auto; }
.nav__link {
  color: var(--sub);
  font-weight: 700;
  font-size: 14px;
  padding: 10px 10px;
  border-radius: 12px;
  white-space: nowrap;
  position: relative;
  transition: color .18s var(--ease), background .18s var(--ease);
}
.nav__link:hover { background: rgba(255,255,255,.06); color: #fff; }
.nav__link.is-active { color: #c8fffa; }

@keyframes underlineIn {
  from { transform: scaleX(.4); opacity: .4; }
  to { transform: scaleX(1); opacity: 1; }
}

.nav__toggle {
  display: none;
  width: 44px; height: 44px;
  border-radius: 14px;
  border: 1px solid var(--border);
  background: rgba(255,255,255,.04);
  cursor: pointer;
}
.nav__toggle span {
  display: block;
  height: 2px;
  width: 18px;
  background: rgba(233,242,255,.85);
  margin: 5px auto;
  border-radius: 99px;
}

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 12px 16px;
  border-radius: 14px;
  border: 1px solid var(--border);
  background: rgba(255,255,255,.04);
  color: #fff;
  font-weight: 900;
  letter-spacing: .2px;
  transition: transform .18s var(--ease), background .18s var(--ease), box-shadow .18s var(--ease);
}
.btn:hover { transform: translateY(-1px); background: rgba(255,255,255,.07); box-shadow: 0 10px 30px rgba(0,0,0,.35); }
.btn--primary {
  background: linear-gradient(135deg, rgba(31,143,138,.95), rgba(34,166,160,.95));
  border-color: rgba(34,166,160,.35);
  box-shadow: 0 12px 40px rgba(31,143,138,.25);
}
.btn--primary:hover { box-shadow: 0 16px 52px rgba(31,143,138,.30); }
.btn--ghost { background: rgba(255,255,255,.03); }
.btn--full { width: 100%; }
.btn--sm { padding: 10px 12px; border-radius: 12px; font-weight: 900; }
/* Icon alignment: perfectly centered (fix WA phone not centered) */
.btn__icon{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  flex: 0 0 20px;
}
.btn__icon svg { width: 100%; height: 100%; display: block; }

.hero { position: relative; padding: 54px 0 20px; overflow: hidden; }

/* Cinematic light sweep on hero (subtle) */
.hero::after {
  content: "";
  position: absolute;
  inset: -20% -40% auto -40%;
  height: 280px;
  pointer-events: none;
  background: linear-gradient(120deg, transparent 25%, rgba(255,255,255,.06), transparent 75%);
  transform: translateX(-30%) rotate(8deg);
  animation: heroSweep 9s var(--ease) infinite;
  opacity: .65;
}

@keyframes heroSweep {
  0% { transform: translateX(-45%) rotate(8deg); opacity: .10; }
  30% { opacity: .35; }
  55% { opacity: .20; }
  100% { transform: translateX(45%) rotate(8deg); opacity: .10; }
}
.hero__grid {
  display: grid;
  grid-template-columns: 1.1fr .9fr;
  gap: 26px;
  align-items: start;
}
.hero h1 {
  font-size: clamp(34px, 5vw, 52px);
  line-height: 1.05;
  margin: 0 0 14px;
}
.lead { margin: 0 0 18px; color: var(--sub); font-size: 16px; line-height: 1.6; }
.hero__cta { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 18px; }

.hero__stats { display: grid; gap: 10px; margin-top: 10px; }
.stat {
  display: grid;
  grid-template-columns: 34px 1fr;
  gap: 10px;
  align-items: center;
  padding: 12px 12px;
  border-radius: 16px;
  background: rgba(255,255,255,.04);
  border: 1px solid var(--border);
}
.stat__num {
  width: 34px; height: 34px;
  border-radius: 12px;
  display: grid; place-items: center;
  background: rgba(31,143,138,.20);
  border: 1px solid rgba(31,143,138,.35);
  color: #c8fffa;
  font-weight: 900;
}
.stat__text { color: var(--sub); font-weight: 700; font-size: 14px; }

.hero__card {
  position: relative;
  border-radius: 22px;
  background: linear-gradient(180deg, rgba(255,255,255,.06), rgba(255,255,255,.03));
  border: 1px solid var(--border);
  box-shadow: var(--shadow);
  overflow: hidden;
}
.hero__badge {
  position: absolute;
  top: 16px; left: 16px;
  padding: 7px 10px;
  border-radius: 999px;
  background: rgba(11,15,20,.6);
  border: 1px solid rgba(255,255,255,.12);
  color: #bff7f2;
  font-weight: 900;
  font-size: 12px;
}
.hero__panel { padding: 52px 18px 18px; }
.hero__panel h3 { margin: 0 0 6px; }
.muted { color: var(--sub); }

.form label {
  display: block;
  margin: 10px 0 6px;
  color: rgba(233,242,255,.85);
  font-weight: 800;
  font-size: 13px;
}
.form .inline {
  display: inline-flex;
  gap: 8px;
  align-items: center;
  margin: 10px 0 0;
  color: rgba(233,242,255,.78);
  font-weight: 800;
  font-size: 13px;
}
.form input, .form textarea {
  width: 100%;
  background: rgba(6,8,11,.55);
  border: 1px solid rgba(255,255,255,.14);
  border-radius: 14px;
  padding: 12px 12px;
  color: #fff;
  outline: none;
}
.form input:focus, .form textarea:focus {
  border-color: rgba(34,166,160,.55);
  box-shadow: 0 0 0 4px rgba(34,166,160,.10);
}
.row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.tiny { color: rgba(233,242,255,.55); font-size: 12px; margin-top: 10px; }

.hero__bg {
  position: absolute;
  inset: -30% -20% auto -20%;
  height: 380px;
  background: radial-gradient(closest-side, rgba(34,166,160,.22), transparent 70%);
  filter: blur(2px);
  pointer-events: none;
}

.section {
  position: relative;
  padding: 62px 0;
  background: radial-gradient(1200px 600px at 20% -10%, rgba(31,143,138,.40), transparent 65%),
              radial-gradient(900px 500px at 90% 0%, rgba(34,166,160,.22), transparent 60%),
              linear-gradient(180deg, #06080b, var(--dark));
  background-repeat: no-repeat;
  background-size: cover;
}

/* Ambient gradient drift (very subtle life) */
.section::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: .22;
  background:
    radial-gradient(800px 420px at var(--amb-x, 18%) var(--amb-y, 0%), rgba(34,166,160,.18), transparent 65%),
    radial-gradient(680px 380px at calc(var(--amb-x, 18%) + 60%) calc(var(--amb-y, 0%) + 10%), rgba(31,143,138,.14), transparent 60%);
  animation: ambientDrift 18s ease-in-out infinite alternate;
}

@keyframes ambientDrift {
  0% { transform: translate3d(0, 0, 0) scale(1); filter: saturate(1); }
  100% { transform: translate3d(0, -18px, 0) scale(1.02); filter: saturate(1.08); }
}

/* Spotlight hover (desktop only via JS adds .spotlight) */
.spotlight {
  position: relative;
  overflow: hidden;
}
.spotlight::before {
  content: "";
  position: absolute;
  inset: -2px;
  pointer-events: none;
  opacity: 0;
  transition: opacity .18s var(--ease);
  background: radial-gradient(280px 220px at var(--mx, 50%) var(--my, 50%), rgba(255,255,255,.10), transparent 60%);
}
.spotlight.is-hover::before { opacity: 1; }

.spotlight::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: 0;
  transition: opacity .18s var(--ease);
  background: radial-gradient(320px 240px at var(--mx, 50%) var(--my, 50%), rgba(34,166,160,.10), transparent 65%);
  mix-blend-mode: screen;
}
.spotlight.is-hover::after { opacity: .75; }

.section--alt {
  /*
    Dibuat sama seperti section "Lokasi":
    - tidak ada background/band tambahan
    - tidak ada border-top/bottom tambahan
    Supaya gradasi halaman terlihat konsisten dan mulai dari garis tipis bawah header.
  */
  background: transparent;
  border-top: 0;
  border-bottom: 0;
}
.section--cta {
  background: transparent;
  border-top: 0;
}
.section__head { margin-bottom: 20px; }
.section__head--row {
  display: flex;
  gap: 16px;
  align-items: flex-end;
  justify-content: space-between;
  flex-wrap: wrap;
}
.section__head h2 { margin: 0; font-size: 28px; }
.section__sub { margin: 8px 0 0; color: var(--sub); }

.grid { display: grid; gap: 14px; }
.grid--4 { grid-template-columns: repeat(4, 1fr); }
.grid--3 { grid-template-columns: repeat(3, 1fr); }
.grid--2 { grid-template-columns: repeat(2, 1fr); }

.card {
  background: var(--glassBG);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 16px;
  box-shadow: 0 10px 40px rgba(0,0,0,.22);
  transition: transform .22s var(--ease), background .22s var(--ease), border-color .22s var(--ease);
}
.card:hover {
  transform: translateY(-2px);
  background: rgba(255,255,255,.06);
  border-color: rgba(255,255,255,.16);
}
.card--img .thumb {
  height: 120px;
  border-radius: var(--radius-md);
  border: 1px solid rgba(255,255,255,.10);
  margin-bottom: 12px;
  position: relative;
  overflow: hidden;
}
.card--img .thumb::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(120deg, transparent 20%, rgba(255,255,255,.06), transparent 80%);
  transform: translateX(-60%);
  transition: transform .6s var(--ease);
}
.card:hover .thumb::after { transform: translateX(60%); }
.thumb--teal { background: linear-gradient(135deg, rgba(31,143,138,.45), rgba(34,166,160,.15)); }
.thumb--dark { background: linear-gradient(135deg, rgba(255,255,255,.10), rgba(255,255,255,.02)); }
.thumb--mix  { background: linear-gradient(135deg, rgba(34,166,160,.22), rgba(255,255,255,.05)); }

.icon { font-size: 22px; }
.card h3 { margin: 10px 0 6px; }
.card p { margin: 0; color: var(--sub); line-height: 1.6; }
.list { margin: 10px 0 0; padding-left: 18px; color: rgba(233,242,255,.70); }
.list li { margin: 6px 0; }
.link { display: inline-block; margin-top: 12px; color: #bff7f2; font-weight: 900; }

.ctaRow { display: flex; gap: 12px; margin-top: 18px; flex-wrap: wrap; }

.filters { display: flex; gap: 8px; flex-wrap: wrap; }
.chip {
  border: 1px solid var(--border);
  background: rgba(255,255,255,.03);
  color: rgba(233,242,255,.85);
  border-radius: 999px;
  padding: 10px 12px;
  font-weight: 900;
  font-size: 13px;
  cursor: pointer;
  transition: transform .18s var(--ease), background .18s var(--ease), border-color .18s var(--ease), color .18s var(--ease);
}
.chip:hover { transform: translateY(-1px); background: rgba(255,255,255,.05); }
.chip.is-active {
  background: rgba(31,143,138,.22);
  border-color: rgba(31,143,138,.40);
  color: #c8fffa;
}

.game {
  border-radius: var(--radius-lg);
  border: 1px solid var(--border);
  background: rgba(255,255,255,.04);
  padding: 14px;
  transition: transform .22s var(--ease), background .22s var(--ease), border-color .22s var(--ease);
}
.game:hover { transform: translateY(-2px); background: rgba(255,255,255,.05); border-color: rgba(255,255,255,.16); }
.game__img {
  height: 140px;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,.10);
  background: linear-gradient(135deg, rgba(31,143,138,.18), rgba(255,255,255,.04));
  margin-bottom: 12px;
}
.game__top { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.tag {
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .3px;
  color: #c8fffa;
  background: rgba(31,143,138,.18);
  border: 1px solid rgba(31,143,138,.35);
  padding: 6px 10px;
  border-radius: 999px;
}
.game__title {
  margin: 10px 0 0;
  font-weight: 900;
  color: rgba(233,242,255,.90);
}
.game__hint { margin-top: 8px; color: rgba(233,242,255,.55); font-size: 13px; }

.price {
  border-radius: 22px;
  padding: 18px;
  border: 1px solid var(--border);
  background: rgba(255,255,255,.04);
}
.price--featured {
  background: linear-gradient(180deg, rgba(31,143,138,.16), rgba(255,255,255,.03));
  border-color: rgba(34,166,160,.35);
  box-shadow: 0 14px 60px rgba(31,143,138,.18);
}
.badge {
  display: inline-flex;
  padding: 6px 10px;
  border-radius: 999px;
  border: 1px solid var(--border);
  background: rgba(255,255,255,.04);
  font-weight: 900;
  font-size: 12px;
  color: rgba(233,242,255,.85);
}
.badge--solid {
  background: rgba(31,143,138,.22);
  border-color: rgba(31,143,138,.40);
  color: #c8fffa;
}
.price__mid { display: flex; align-items: baseline; gap: 10px; margin: 10px 0 12px; }
.price__amt { font-size: 28px; font-weight: 900; color: #bff7f2; }

.attention {
  margin-top: 18px;
  border-radius: 22px;
  border: 1px solid rgba(34,166,160,.35);
  background: radial-gradient(900px 240px at 20% 10%, rgba(31,143,138,.28), transparent 65%),
              rgba(255,255,255,.03);
  padding: 16px 16px 6px;
}
.attention__head {
  font-weight: 1000;
  letter-spacing: 1px;
  color: #c8fffa;
  display: inline-flex;
  padding: 8px 12px;
  border-radius: 999px;
  border: 1px solid rgba(31,143,138,.35);
  background: rgba(31,143,138,.14);
}
.attention ul { margin: 12px 0; padding-left: 18px; color: rgba(233,242,255,.78); }
.attention li { margin: 10px 0; line-height: 1.6; }

.projects { display: grid; gap: 12px; }
.project {
  border-radius: 22px;
  border: 1px solid rgba(255,255,255,.12);
  background: rgba(255,255,255,.04);
  padding: 16px;
}
.project__meta h3 { margin: 0 0 6px; }
.project__thumbs { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 12px; }
.thumbBtn {
  border: 1px solid rgba(255,255,255,.12);
  background: rgba(255,255,255,.03);
  border-radius: 16px;
  padding: 0;
  cursor: pointer;
  overflow: hidden;
}
.thumbPh {
  display: block;
  width: 220px;
  height: 130px;
  background: linear-gradient(135deg, rgba(31,143,138,.18), rgba(255,255,255,.04));
}
.thumbPh.alt { background: linear-gradient(135deg, rgba(255,255,255,.08), rgba(34,166,160,.10)); }

.quote {
  border-radius: 18px;
  border: 1px solid var(--border);
  background: rgba(255,255,255,.04);
  padding: 16px;
}
.quote__by { color: rgba(233,242,255,.6); font-weight: 900; margin-top: 10px; }
.readMore {
  margin-top: 10px;
  border: 0;
  background: transparent;
  color: #bff7f2;
  font-weight: 900;
  cursor: pointer;
  padding: 0;
}

.iggrid {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 10px;
}
.igcard {
  border-radius: 18px;
  border: 1px solid rgba(255,255,255,.12);
  background: rgba(255,255,255,.03);
  overflow: hidden;
  position: relative;
}
.igcard span {
  display: block;
  aspect-ratio: 1 / 1;
  background: linear-gradient(135deg, rgba(31,143,138,.18), rgba(255,255,255,.04));
}
.igcard::after {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(220px 180px at 20% 20%, rgba(34,166,160,.14), transparent 60%);
  pointer-events: none;
}

.review {
  display: grid;
  grid-template-columns: 1.1fr .9fr;
  gap: 16px;
  align-items: start;
}
.ratingSummary {
  margin-top: 14px;
  border-radius: 22px;
  border: 1px solid rgba(255,255,255,.12);
  background: rgba(255,255,255,.03);
  padding: 14px;
  display: grid;
  grid-template-columns: 200px 1fr;
  gap: 14px;
}
.score__num { font-size: 42px; font-weight: 1000; color: #bff7f2; line-height: 1; }
.score__stars { color: rgba(233,242,255,.9); letter-spacing: 1px; font-weight: 1000; }
.ratingSummary__bars { display: grid; gap: 8px; align-content: start; }
.barRow { display: grid; grid-template-columns: 40px 1fr 50px; gap: 10px; align-items: center; }
.bar {
  height: 10px;
  border-radius: 999px;
  background: rgba(255,255,255,.08);
  overflow: hidden;
  border: 1px solid rgba(255,255,255,.12);
}
.bar > span {
  display: block;
  height: 100%;
  width: 0%;
  background: linear-gradient(90deg, rgba(31,143,138,.95), rgba(34,166,160,.95));
}

.stars { display: inline-flex; gap: 6px; margin-bottom: 14px; }
.stars button {
  width: 40px;
  height: 40px;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,.12);
  background: var(--glassBG);
  color: rgba(233,242,255,.45);
  cursor: pointer;
  font-size: 18px;
}
.stars button.is-on { color: #bff7f2; border-color: rgba(34,166,160,.35); background: var(--glassBGStrong); }

/* Give submit button a little breathing room from the rating row */
#reviewForm .btn[type="submit"],
#reviewForm button[type="submit"] { margin-top: 6px; }

/* Premium UI Modal (used for form feedback instead of browser alert) */
.uiModal[hidden] { display: none; }
.uiModal {
  position: fixed;
  inset: 0;
  z-index: 11000;
}
.uiModal__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(3, 6, 10, .62);
  backdrop-filter: blur(10px);
}
.uiModal__panel {
  position: absolute;
  left: 50%;
  top: 18vh;
  transform: translateX(-50%);
  width: min(560px, calc(100vw - 28px));
  border-radius: 22px;
  border: 1px solid rgba(255,255,255,.12);
  background:
    radial-gradient(120% 140% at 0% 0%, rgba(34,166,160,.18), transparent 55%),
    radial-gradient(120% 140% at 100% 0%, rgba(31,143,138,.12), transparent 55%),
    rgba(10, 12, 16, .78);
  box-shadow: 0 22px 70px rgba(0,0,0,.55);
  padding: 18px 18px 16px;
  display: grid;
  grid-template-columns: 44px 1fr;
  gap: 14px;
}
.uiModal__icon {
  width: 44px;
  height: 44px;
  border-radius: 16px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(255,255,255,.12);
  background: rgba(255,255,255,.04);
  color: #bff7f2;
}
.uiModal__title {
  font-weight: 900;
  letter-spacing: .2px;
  font-size: 18px;
}
.uiModal__desc {
  margin-top: 6px;
  color: rgba(233,242,255,.78);
  line-height: 1.5;
}
.uiModal__actions {
  grid-column: 1 / -1;
  display: flex;
  justify-content: flex-end;
  margin-top: 10px;
}

@media (prefers-reduced-motion: no-preference) {
  .uiModal__panel {
    animation: uiPop .18s ease-out;
  }
  @keyframes uiPop {
    from { opacity: 0; transform: translateX(-50%) translateY(10px) scale(.98); }
    to { opacity: 1; transform: translateX(-50%) translateY(0) scale(1); }
  }
}

.footer {
  padding: 26px 0;
  border-top: 1px solid rgba(255,255,255,.08);
  background: rgba(6,8,11,.65);
}
.footer__inner {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
}
.footer__brand { font-weight: 1000; letter-spacing: .2px; }
.footer__right { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
.footer__links { display: flex; gap: 12px; color: rgba(233,242,255,.7); }
.footer__links a:hover { color: #fff; }

.wa {
  position: fixed;
  right: 18px;
  bottom: 18px;
  z-index: 10050;
  background: linear-gradient(135deg, rgba(31,143,138,.95), rgba(34,166,160,.95));
  border: 1px solid rgba(34,166,160,.35);
  box-shadow: 0 16px 60px rgba(31,143,138,.26);
  color: #fff;
  padding: 12px 14px;
  border-radius: 999px;
  font-weight: 1000;
  display: inline-flex;
  align-items: center;
  gap: 10px;
}
/* WA icon alignment: perfectly centered */
.wa__icon{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  flex: 0 0 22px;
}
.wa__icon svg { width: 100%; height: 100%; display: block; }

.modal{
  position: fixed;
  inset: 0;
  display: none;
  z-index: 100;
  align-items: center;
  justify-content: center;
  padding: 24px 12px;
}
.modal.is-open{ display: flex; }
.modal__backdrop { position: absolute; inset: 0; background: rgba(0,0,0,.55); backdrop-filter: blur(2px); }
.modal__panel {
  position: relative;
  width: min(780px, calc(100% - 40px));
  margin: 0;
  border-radius: 22px;
  border: 1px solid rgba(255,255,255,.14);
  background: rgba(6,8,11,.92);
  box-shadow: var(--shadow);
  padding: 16px;
  max-height: 86vh;
  overflow: auto;
}
.modal__close {
  position: absolute;
  right: 12px;
  top: 12px;
  width: 40px; height: 40px;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,.12);
  background: rgba(255,255,255,.03);
  color: #fff;
  cursor: pointer;
}
.modal__close:hover { background: rgba(255,255,255,.07); }
.modal__thumbs { display: flex; gap: 10px; flex-wrap: wrap; margin: 10px 0 12px; }
.modal__thumb {
  width: 240px;
  height: 140px;
  border-radius: 16px;
  border: 1px solid rgba(255,255,255,.12);
  background: linear-gradient(135deg, rgba(31,143,138,.18), rgba(255,255,255,.04));
}

@media (max-width: 980px) {
  .grid--4 { grid-template-columns: repeat(2, 1fr); }
  .grid--3 { grid-template-columns: repeat(2, 1fr); }
  .hero__grid { grid-template-columns: 1fr; }
  .review { grid-template-columns: 1fr; }
  .ratingSummary { grid-template-columns: 1fr; }
  .iggrid { grid-template-columns: repeat(3, 1fr); }
}

@media (max-width: 760px) {
  /* Layout tweaks on mobile (header handled by MOBILE-ONLY NAV) */
  .row { grid-template-columns: 1fr; }
  .grid--3 { grid-template-columns: 1fr; }
  .grid--2 { grid-template-columns: 1fr; }
  .iggrid { grid-template-columns: repeat(2, 1fr); }
  .thumbPh { width: 100%; min-width: 240px; }
}


/* Supaya judul section tidak ketutup header saat klik menu */
[data-spy] { scroll-margin-top: 110px; }

/* ===== Review List (Approved Only) ===== */
#reviewList{
  display:flex;
  flex-direction:column;
  gap: 12px;
}
.reviewItem{
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 18px;
  padding: 14px;
  background: rgba(255,255,255,.03);
}

/* Review card: pola seperti "ATTENTION" (gradient hanya untuk item genap: 2,4,6,...) */
.reviewItem:nth-child(even){
  background: var(--glassBGStrong);
  border-color: rgba(34,166,160,.28);
  box-shadow:
    0 0 0 1px rgba(34,166,160,.10),
    0 22px 60px rgba(0,0,0,.35);
}
.reviewTop{
  display:flex;
  justify-content:space-between;
  gap: 12px;
  align-items:flex-start;
}
.reviewName{ font-weight: 1000; letter-spacing: .1px; }
.reviewMeta{ font-size: 12px; color: rgba(233,242,255,.65); margin-top: 2px; }
.reviewStars{ display:flex; gap: 4px; }
.reviewStars .star{ opacity: .35; }
.reviewStars .star.is-on{ opacity: 1; color: rgba(233,242,255,.95); }
.reviewComment{ margin-top: 10px; color: rgba(233,242,255,.88); line-height: 1.55; white-space: pre-wrap; }
.emptyState{
  border: 1px dashed rgba(255,255,255,.18);
  border-radius: 18px;
  padding: 12px;
  color: rgba(233,242,255,.65);
}


/* === IG Embed (tanpa API) === */

/* Single IG post + CTA */
.ig-card{
  max-width: 560px;
  margin: 0 auto;
  display: grid;
  gap: 14px;
}

.ig-embed .instagram-media{
  width: 100% !important;
  min-width: 0 !important;
  margin: 0 !important;
  border-radius: 18px;
  overflow: hidden;
}

.ig-all{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 12px 18px;
  border-radius: 999px;
  font-weight: 900;
  text-decoration: none;
  border: 1px solid rgba(255,255,255,.18);
  background: rgba(255,255,255,.04);
  color: var(--text);
}

.ig-all:hover{
  border-color: rgba(255,255,255,.35);
}

.ig-embed-grid{
  display: grid;
  gap: 18px;
  align-items: start;
}

/* Mobile: 1 post per baris (embed IG punya min-width) */
@media (max-width: 767px){
  .ig-embed-grid{ grid-template-columns: 1fr; }
}

/* Desktop: menyesuaikan, biasanya 4 kolom kalau space cukup */
@media (min-width: 768px){
  .ig-embed-grid{ grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }
}

.ig-item{ width: 100%; }

.ig-embed-grid .instagram-media{
  width: 100% !important;
  min-width: 0 !important;
  margin: 0 !important;
}

.ig-actions{
  display: flex;
  justify-content: center;
  margin-top: 16px;
}

.ig-btn{
  padding: 10px 16px;
  border-radius: 12px;
  border: 1px solid rgba(255,255,255,.18);
  background: transparent;
  color: var(--text);
  cursor: pointer;
  font-weight: 800;
}

.ig-btn:hover{
  border-color: rgba(255,255,255,.35);
}

/* === Lokasi (Maps button) === */
.locCard{
  display:flex;
  align-items:center;
  justify-content: space-between;
  gap: 16px;
  padding: 18px;
  border: 1px solid var(--border);
  border-radius: 18px;
  background: rgba(255,255,255,.03);
}

.locCard__title{
  font-weight: 900;
  letter-spacing: .2px;
  margin-bottom: 4px;
}

/* === Header hide on scroll down / show on scroll up === */
.header{
  transition: transform .25s ease, box-shadow .25s ease;
  will-change: transform;
}

.header.is-hidden{
  /* nonaktif: header harus selalu terlihat */
  transform: translateY(0);
}

/* =========================
   Follow Us (below Lokasi)
========================= */
.follow{
  margin-top: 18px;
  padding: 16px;
  border: 1px solid rgba(255,255,255,.10);
  border-radius: 16px;
  background: rgba(255,255,255,.03);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  flex-wrap: wrap;
}
.follow__title{
  font-weight: 900;
  letter-spacing: .2px;
}
.follow__icons{
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
.social{
  width: 44px;
  height: 44px;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(255,255,255,.14);
  background: rgba(255,255,255,.04);
  transition: transform .18s ease, background .18s ease, border-color .18s ease;
}
.social svg{
  width: 20px;
  height: 20px;
}
.social:hover{
  transform: translateY(-2px);
  background: rgba(255,255,255,.08);
  border-color: rgba(255,255,255,.22);
}



/* =========================
   Premium Motion (Reveal)
   ========================= */
:root{
  --ease-out: cubic-bezier(.16,1,.3,1);
  --ease-soft: cubic-bezier(.2,.8,.2,1);
}

.reveal{
  opacity: 0;
  transform: translateY(14px) scale(.99);
  filter: blur(6px);
  will-change: transform, opacity, filter;
}

.reveal.is-in{
  opacity: 1;
  transform: none;
  filter: blur(0);
  transition:
    opacity 720ms var(--ease-out),
    transform 720ms var(--ease-out),
    filter 720ms var(--ease-out);
  transition-delay: var(--d, 0ms);
}

/* Lebih halus untuk item kecil (hanya saat belum masuk) */
.card.reveal:not(.is-in), .game.reveal:not(.is-in), .reviewItem.reveal:not(.is-in), .quote.reveal:not(.is-in){
  transform: translateY(10px) scale(.995);
  filter: blur(4px);
}

/* Pastikan blur benar-benar hilang setelah elemen "masuk" */
.card.reveal.is-in, .game.reveal.is-in, .reviewItem.reveal.is-in, .quote.reveal.is-in{
  filter: none;
  transform: none;
}

@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior: auto; }
  .reveal{ opacity: 1 !important; transform: none !important; filter: none !important; }
  .reveal.is-in{ transition: none !important; }
}

/* =========================
   Premium Micro-interactions
   ========================= */
a, button, .btn, .chip, .nav__link{
  transition: color 180ms var(--ease-soft), background-color 180ms var(--ease-soft), transform 180ms var(--ease-soft), box-shadow 180ms var(--ease-soft), opacity 180ms var(--ease-soft);
}

.btn:active{ transform: translateY(1px); }
.card:hover, .game:hover, .reviewItem:hover{
  transform: translateY(-3px);
}


/* === WhatsApp icon (use provided asset, keep it white) === */
.icon-wa{
  width: 1em;
  height: 1em;
  display: block;
  filter: brightness(0) invert(1);
}

/* ensure icon wrappers center perfectly */
.btn__icon, .wa__icon{
  display:flex;
  align-items:center;
  justify-content:center;
}
.btn__icon{ width: 20px; height: 20px; }
.wa__icon{ width: 22px; height: 22px; }

/* Quick Booking: give breathing room above submit button */
.hero .form .btn--full{
  margin-top: 14px;
}

/* =========================
   FAQ (Premium accordion)
   ========================= */
.faq{ display:grid; gap:12px; }
.faqItem{
  border-radius: 18px;
  border: 1px solid rgba(170, 220, 255, .12);
  background: linear-gradient(135deg, rgba(35, 239, 217, .14), rgba(28, 58, 90, .18));
  box-shadow: 0 18px 44px rgba(0,0,0,.22);
  overflow:hidden;
}
.faqItem > summary{
  cursor:pointer;
  list-style:none;
  padding: 16px 18px;
  font-weight: 700;
  letter-spacing: .2px;
  color: rgba(233,242,255,.92);
  display:flex;
  align-items:center;
  justify-content:space-between;
}
.faqItem > summary::-webkit-details-marker{ display:none; }
.faqItem > summary:after{
  content:"+";
  font-weight: 800;
  opacity:.7;
  transition: transform 220ms var(--ease-soft), opacity 220ms var(--ease-soft);
}
.faqItem[open] > summary:after{ content:"–"; opacity:1; }
.faqBody{
  padding: 0 18px 16px;
  color: rgba(233,242,255,.78);
  line-height: 1.7;
}

/* Footer contact */
.footer__right{ display:flex; gap: 22px; align-items:flex-start; }
.footer__contact{ display:grid; gap: 8px; max-width: 520px; }
.footer__contact a{ color: rgba(233,242,255,.78); }
.footer__contact a:hover{ color: rgba(35,239,217,.95); }
@media (max-width: 820px){
  .footer__right{ flex-direction: column; gap: 14px; }
}

/* Review WA link */
.reviewWa{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding: 4px 10px;
  border-radius: 999px;
  border: 1px solid rgba(170,220,255,.14);
  background: rgba(255,255,255,.06);
  color: rgba(233,242,255,.82);
  text-decoration:none;
}
.reviewWa:hover{ background: rgba(35,239,217,.12); border-color: rgba(35,239,217,.22); }

/* Review verified badge */
.reviewBadge{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding: 4px 10px;
  border-radius: 999px;
  border: 1px solid rgba(35,239,217,.20);
  background: linear-gradient(135deg, rgba(35,239,217,.14), rgba(28, 58, 90, .16));
  color: rgba(233,242,255,.88);
  font-weight: 800;
  letter-spacing: .2px;
  font-size: 12px;
}
.reviewBadge::before{ content:"✓"; opacity:.9; }


/* =========================
   GALERI (galeri.html)
   ========================= */
.galleryControls{
  display:flex;
  gap:16px;
  align-items:flex-end;
  justify-content:space-between;
  margin: 18px 0 14px;
  flex-wrap:wrap;
}
.galleryControls__left{display:flex; flex-direction:column; gap:8px;}
.galleryControls__right{flex:1; min-width:240px; max-width:420px;}
.select,.input{
  width:100%;
  border-radius:14px;
  border:1px solid rgba(233,242,255,.14);
  background:rgba(11,17,29,.55);
  color:rgba(233,242,255,.92);
  padding:12px 14px;
  outline:none;
}
.select:focus,.input:focus{
  border-color: rgba(0,194,186,.45);
  box-shadow: 0 0 0 4px rgba(0,194,186,.12);
}

.yearAccordion{display:flex; flex-direction:column; gap:12px;}
.yearPanel{
  border-radius:22px;
  border:1px solid rgba(233,242,255,.12);
  background: rgba(11,17,29,.55);
  overflow:hidden;
  box-shadow: 0 18px 60px rgba(0,0,0,.35);
}
.yearPanel__head{
  width:100%;
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:16px 18px;
  background: linear-gradient(135deg, rgba(0,194,186,.18), rgba(0,0,0,0));
  border:0;
  color: rgba(233,242,255,.95);
  cursor:pointer;
}
.yearPanel__title{font-weight:800; letter-spacing:.2px;}
.yearPanel__meta{display:flex; align-items:center; gap:10px;}
.yearPanel__chev{opacity:.8; transition: transform .2s ease;}
.yearPanel__head[aria-expanded="true"] .yearPanel__chev{transform: rotate(180deg);}
.yearPanel__body{padding: 0 16px 16px;}
.yearPanel__inner{padding-top: 12px;}
.yearPanel__grid{
  display:grid;
  grid-template-columns: repeat(2, minmax(0,1fr));
  gap:14px;
}
@media (min-width: 820px){
  .yearPanel__grid{grid-template-columns: repeat(3, minmax(0,1fr));}
}

.projectCard{
  border-radius:20px;
  border:1px solid rgba(233,242,255,.12);
  background: radial-gradient(1200px 600px at 30% 0%, rgba(0,194,186,.18), rgba(0,0,0,0)) , rgba(10,14,22,.55);
  overflow:hidden;
}
.projectCard__thumb{
  width:100%;
  height:160px;
  background-image: var(--thumb);
  background-size:cover;
  background-position:center;
  border:0;
  padding:0;
  display:block;
  cursor:pointer;
  border-bottom: 1px solid rgba(233,242,255,.10);
}

/* selang-seling frame thumbnail (1 gradient, 2 tidak, dst) */
.projectCard.is-gradient .projectCard__thumb{
  background-image:
    linear-gradient(180deg, rgba(0,194,186,.18), rgba(0,0,0,0.0)),
    var(--thumb);
  outline: 1px solid rgba(0,194,186,.38);
  outline-offset: -1px;
}
.projectCard__body{padding:14px 14px 16px;}
.projectCard__titleRow{display:flex; align-items:center; justify-content:space-between; gap:10px;}
.projectCard__title{font-weight:800; line-height:1.2;}
.projectCard__summary{margin-top:8px; color: rgba(233,242,255,.70); font-size: 14px; line-height:1.55;}

/* ===== Game cards (list page) ===== */
.gameCard{ padding:0; overflow:hidden; }
.gameCard__thumb{ width:100%; height:160px; background-size:cover; background-position:center; border-bottom:1px solid rgba(233,242,255,.10); }
.gameCard__body{ padding:16px; }
.linkBtn{
  margin-top:12px;
  background:transparent;
  border:0;
  padding:0;
  color: rgba(233,242,255,.86);
  cursor:pointer;
  font-weight:700;
}
.linkBtn:hover{color:#fff; text-decoration: underline;}

.pager{margin-top:16px;}
.pager__row{display:flex; gap:8px; flex-wrap:wrap; align-items:center;}
.pager__btn{
  min-width:38px;
  height:38px;
  padding:0 10px;
  border-radius:12px;
  border:1px solid rgba(233,242,255,.14);
  background: rgba(11,17,29,.55);
  color: rgba(233,242,255,.90);
  cursor:pointer;
}
.pager__btn:hover{border-color: rgba(0,194,186,.45);}
.pager__btn.is-active{
  background: rgba(0,194,186,.20);
  border-color: rgba(0,194,186,.55);
}
.pager__btn:disabled{opacity:.5; cursor:not-allowed;}
.pager__dots{opacity:.6; padding:0 6px;}

/* ===== NEWS (premium) ===== */
.newsGrid{
  display:grid;
  grid-template-columns: repeat(12, 1fr);
  gap:14px;
}

.newsCard{
  grid-column: span 4;
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.10);
  border-radius: 18px;
  overflow:hidden;
  box-shadow: 0 14px 40px rgba(0,0,0,.25);
  transition: transform .18s ease, border-color .18s ease;
}
.newsCard:hover{ transform: translateY(-2px); border-color: rgba(191,247,242,.35); }

.newsCard--featured{ grid-column: span 8; }

.newsThumb{
  width:100%;
  aspect-ratio: 16/9;
  object-fit: cover;
  display:block;
  background: rgba(255,255,255,.06);
}

.newsBody{ padding:14px 14px 16px; }
.newsMeta{ display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin-bottom:8px; }
.newsMetaItem{ font-size: 12px; color: rgba(233,242,255,.70); display:inline-flex; align-items:center; gap:6px; }
.newsMetaDot{ width:4px; height:4px; border-radius:50%; background: rgba(233,242,255,.35); display:inline-block; }
.newsBadge{
  font-size: 12px;
  padding: 5px 10px;
  border-radius: 999px;
  background: rgba(191,247,242,.10);
  border: 1px solid rgba(191,247,242,.22);
  color: rgba(233,242,255,.92);
}
.newsDate{ font-size: 12px; color: rgba(233,242,255,.65); }
.newsTitle{ margin:0; font-size: 16px; line-height: 1.35; }
.newsExcerpt{ margin:8px 0 0; color: rgba(233,242,255,.72); font-size: 13.5px; }
.newsLink{ display:inline-flex; gap:8px; align-items:center; margin-top:10px; color: rgba(191,247,242,.95); font-weight: 700; }
.newsLink:hover{ text-decoration: underline; }

/* Tags (clean minimal) */
.tagRow{ display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin-top:10px; }
.tagChip{
  font-size: 12px;
  padding: 6px 10px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,.12);
  background: rgba(255,255,255,.05);
  color: rgba(233,242,255,.78);
}
.tagChip:hover{ border-color: rgba(191,247,242,.35); color: rgba(233,242,255,.92); }

@media (max-width: 920px){
  .newsCard{ grid-column: span 6; }
  .newsCard--featured{ grid-column: span 12; }
}
@media (max-width: 560px){
  .newsCard{ grid-column: span 12; }
}

/* News detail */
.breadcrumb{ display:flex; gap:8px; flex-wrap:wrap; align-items:center; color: rgba(233,242,255,.65); font-size: 12.5px; }
.breadcrumb a{ color: rgba(191,247,242,.95); }
.breadcrumb span{ opacity:.7; }
.article{
  background: rgba(255,255,255,.03);
  border: 1px solid rgba(255,255,255,.10);
  border-radius: 22px;
  padding: 18px;
  box-shadow: 0 14px 40px rgba(0,0,0,.25);
}
.article h1{ margin: 10px 0 10px; font-size: clamp(24px, 3.4vw, 44px); line-height:1.12; }
.article .article__meta{ display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin-top:8px; }
.article .article__meta .newsBadge{ background: rgba(255,255,255,.06); border-color: rgba(255,255,255,.12); }
.article .article__cover{ width:100%; border-radius: 18px; margin-top:14px; aspect-ratio: 16/9; object-fit:cover; background: rgba(255,255,255,.06); }
.articleContent{ margin-top:14px; color: rgba(233,242,255,.78); }
.articleContent h2{ margin-top:18px; }
.articleContent a{ color: rgba(191,247,242,.95); }
.relatedGrid{ display:grid; grid-template-columns: repeat(12, 1fr); gap: 12px; margin-top: 14px; }
.relatedGrid .newsCard{ grid-column: span 4; }
@media (max-width: 920px){ .relatedGrid .newsCard{ grid-column: span 6; } }
@media (max-width: 560px){ .relatedGrid .newsCard{ grid-column: span 12; } }

.verifiedBadge{
  display:inline-flex;
  align-items:center;
  gap:6px;
  font-size: 12px;
  font-weight: 800;
  color: rgba(233,242,255,.95);
  padding: 6px 10px;
  border-radius: 999px;
  border:1px solid rgba(0,194,186,.35);
  background: rgba(0,194,186,.16);
}

/* Improve existing thumb placeholder so it can show image too */
.thumbPh{
  background-size: cover;
  background-position: center;
}



/* === Enhancements: hover + stagger animations for Games & Galeri === */
@keyframes fadeUp {
  from { opacity: 0; transform: translateY(14px); }
  to { opacity: 1; transform: translateY(0); }
}
.fadeUp {
  animation: fadeUp .55s cubic-bezier(.2,.8,.2,1) both;
}

.gameCard, .projectCard {
  transition: transform .22s ease, box-shadow .22s ease, border-color .22s ease;
  will-change: transform;
}
.gameCard:hover, .projectCard:hover {
  transform: translateY(-6px);
  box-shadow: 0 22px 70px rgba(0,0,0,.55);
  border-color: rgba(0,194,186,.32);
}

.gameCard__thumb, .projectCard__thumb, .thumbPh {
  background-position: center;
  background-size: 105%;
  transition: background-size .32s ease, filter .22s ease;
}
.gameCard:hover .gameCard__thumb,
.projectCard:hover .projectCard__thumb {
  background-size: 112%;
  filter: saturate(1.05) contrast(1.03);
}

/* Alternating gradient frame for gallery thumbnails (odd=gradient, even=plain) */
.projectCard__thumb, .thumbPh {
  position: relative;
  overflow: hidden;
}
.projectCard__thumb::before,
.thumbPh::before{
  content:"";
  position:absolute;
  inset:0;
  border-radius: inherit;
  padding: 1px;
  background: linear-gradient(135deg, rgba(0,194,186,.75), rgba(255,255,255,.08));
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  opacity: 0;
  pointer-events: none;
  transition: opacity .22s ease;
}
.projectCard:nth-child(odd) .projectCard__thumb::before,
.project:nth-child(odd) .thumbPh::before{
  opacity: 1;
}

/* Make modal always centered & above header */
.modal{
  z-index: 9999;
  padding: 72px 16px 40px;
  box-sizing: border-box;
}
.modal__panel{
  max-height: min(86vh, 820px);
}

/* Optional: clickable thumbs hint cursor */
.projectCard__thumb, .thumbBtn, .thumbPh { cursor: pointer; }


@media (hover: none) {
  .spotlight::before, .spotlight::after { display:none !important; }
  .nav__link:hover { background: transparent; }
}

/* Reviews grid (homepage) */
#reviewList{
  display:grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
}
@media (max-width: 980px){
  #reviewList{ grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 600px){
  #reviewList{ grid-template-columns: 1fr; }
}
.reviewItem{ height: 100%; }
.reviewComment{ margin-top: 10px; }
.reviewReadMore{
  margin-top: 10px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-weight: 700;
  border: 0;
  background: transparent;
  color: rgba(200,255,250,.95);
  cursor: pointer;
  padding: 0;
}
.reviewReadMore:hover{ text-decoration: underline; }

/* Reviews modal list */
#reviewsModalList .reviewItem{ margin-bottom: 12px; }



/* ===== MOBILE-ONLY NAV (revised) ===== */
@media (max-width: 760px){

  /* Mobile header height ONLY (desktop stays default) */
  :root{ --header-h: 64px; }
  body{ padding-top: var(--header-h); }

  /* Hide desktop header parts (mobile overlay provides them) */
  .header .brand,
  .header .nav__toggle,
  .header .nav__links,
  .header .nav__indicator{
    display: none !important;
  }

  /* Mobile overlay header */
  .mNavHeader{
    position: fixed;
    top: 0; left: 0; right: 0;
    height: var(--header-h);
    display: flex;
    align-items: center;
    z-index: 9999;

    /* glass */
    background: rgba(6,8,11,.92);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border-bottom: 1px solid rgba(255,255,255,.08);
  }

  .mNavHeader .mNavInner{
    width: calc(100% - 20px);
    margin: 0 auto;
    display:flex;
    align-items:center;
    justify-content: space-between;
    gap: 8px;
  }

  .mNavHeader .mLogoWrap{
    display:flex;
    align-items:center;
    gap:10px;
    min-width: 0;
  }

  .mNavHeader .mLogoWrap img{
    height: 36px;
    width: auto;
    display:block;
  }

  .mNavHeader .mRight{
    display:flex;
    align-items:center;
    gap: 6px;
  }

  /* WhatsApp pill */
  .mNavHeader .mPill{
    display:inline-flex;
    align-items:center;
    gap: 6px;
    padding: 6px 10px;
    font-size: 12px;
    font-weight: 800;
    border-radius: 999px;
    border: 1px solid rgba(255,255,255,.12);
    background: rgba(34,166,160,.12);
    color: var(--teal2);
    white-space: nowrap;
  }

  /* Burger */
  .mNavHeader .mBurger{
    width: 40px;
    height: 40px;
    border-radius: 10px;
    border: 1px solid rgba(255,255,255,.12);
    background: rgba(255,255,255,.05);
    display:inline-flex;
    align-items:center;
    justify-content:center;
    cursor:pointer;
  }

  .mNavHeader .mBurger svg{
    width: 22px;
    height: 22px;
    fill: none;
    stroke: var(--teal2);
    stroke-width: 2.2;
    stroke-linecap: round;
  }

  .mNavHeader .mBurger[data-open="1"] .line2{ opacity: 0; }
  .mNavHeader .mBurger[data-open="1"] .line1{ transform: translateY(6px) rotate(45deg); transform-origin: 12px 12px; }
  .mNavHeader .mBurger[data-open="1"] .line3{ transform: translateY(-6px) rotate(-45deg); transform-origin: 12px 12px; }

  .mNavHeader .mBurger .line1,
  .mNavHeader .mBurger .line2,
  .mNavHeader .mBurger .line3{
    transition: transform .18s var(--ease), opacity .12s var(--ease);
  }
  /* Dropdown (RIGHT + AUTO-FIT WIDTH + GLASS) */
  .mNavDrop{
    position: fixed;
    top: calc(var(--header-h) + 6px);

    /* right aligned, not full width */
    right: 10px;
    left: auto;

    /* width hugs the longest menu label (capped on small screens) */
    width: max-content;
    min-width: 210px;
    max-width: calc(100vw - 20px);

    z-index: 9999;
    display: none;

    padding: 10px;
    border-radius: 16px;
    border: 1px solid rgba(255,255,255,.12);

    /* more transparent + stronger blur glass */
    background: rgba(10,14,18,.58);
    backdrop-filter: blur(22px) saturate(140%);
    -webkit-backdrop-filter: blur(22px) saturate(140%);

    box-shadow: 0 18px 60px rgba(0,0,0,.55);

    /* make menu items hug content */
    display: none;
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
  }
  .mNavDrop[data-open="1"]{ display:flex; }
  .mNavDrop a{
    display: inline-flex;
    align-items: center;
    width: auto;
    max-width: 100%;
    box-sizing: border-box;

    padding: 10px 14px;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 700;

    /* if very long label, keep inside the box */
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  .mNavDrop a:hover{ background: rgba(255,255,255,.06); }
  .mNavDrop a[data-active="1"]{ color: var(--teal2); background: rgba(34,166,160,.08); }

/* Hide the desktop indicator dots on mobile (only) */
  .nav__indicator, .nav__dots, .nav__dot{ display:none !important; }

  /* footer nav wrap: target common footer link group */
  .footer__links, .footer__nav, .footer__menu{
    flex-wrap: wrap !important;
  }
  .footer__links a, .footer__nav a, .footer__menu a{
    margin: 4px 10px 4px 0 !important;
    white-space: nowrap;
  }
}
/* ===== END MOBILE-ONLY NAV (revised) ===== */

/* ===== FORCE ALL THUMBNAILS TO 3:2 ===== */

/* News list thumb */
.newsThumb{
  aspect-ratio: 3 / 2 !important;
  width: 100%;
  height: auto;
  object-fit: cover;
}

/* News detail cover */
.article .article__cover{
  aspect-ratio: 3 / 2 !important;
  width: 100%;
  height: auto;
  object-fit: cover;
}

/* Gallery + Games thumbs */
.projectCard__thumb,
.gameCard__thumb{
  aspect-ratio: 3 / 2 !important;
  height: auto !important;
  width: 100%;
  background-size: cover;
  background-position: center;
}

/* Old project thumbs */
.thumbPh{
  aspect-ratio: 3 / 2 !important;
  height: auto !important;
}
/* ===== STABILIZER: stop glitch/freeze ===== */

/* 1) Matikan blur glass yang sering bikin flicker/freeze */
.mNavHeader{
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

/* 2) Matikan blur reveal (blur = berat banget di GPU) */
.reveal{
  filter: none !important;
  will-change: auto !important;
}

/* 3) Matikan animasi hero yang infinite */
.hero::after{
  animation: none !important;
}
/* ===== ANTI-GLITCH STABILIZER ===== */

/* 1) Matikan blur glass (paling sering bikin flicker/freeze) */
.header, .mNavHeader{
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  background: rgba(6,8,11,.96) !important;
}

/* 2) Matikan overlay grain + mix-blend (berat di GPU) */
body::after{
  content: none !important;
}

/* 3) Matikan blur filter reveal (berat banget) */
.reveal{
  filter: none !important;
  will-change: auto !important;
}

/* 4) Kurangi efek hover yang memaksa repaint besar */
.projectCard__thumb, .gameCard__thumb, .thumbPh{
  transition: none !important;
  filter: none !important;
  background-size: cover !important;
}
/* ===== FIX GLITCH KHUSUS GALERI ===== */

/* Matikan grain overlay + blend (sering jadi penyebab utama) */
.page-galeri::after{
  content: none !important;
}

/* Matikan blur/backdrop-filter di header pada galeri */
.page-galeri .header,
.page-galeri .mNavHeader{
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

/* Kurangi repaint berat di card galeri */
.page-galeri .projectCard,
.page-galeri .projectCard__thumb{
  transition: none !important;
  filter: none !important;
}
/* ===== GLOBAL SAFE ANIMATION MODE ===== */
@media (prefers-reduced-motion: reduce){
  *{
    animation: none !important;
    transition: none !important;
    scroll-behavior: auto !important;
  }
}
/* ===== GLOBAL ANTI-GLITCH (PAKSA MATIKAN EFEK BERAT) ===== */

/* 1) Matikan blur glass */
.header, .mNavHeader, .navbar, .nav, .navWrap{
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

/* 2) Matikan overlay/noise/grain kalau ada */
body::after, body::before{
  content: none !important;
  display: none !important;
}

/* 3) Matikan animasi/transition berat (pilih aman: hanya elemen besar) */
.hero::after,
.reveal,
.projectCard, .projectCard__thumb,
.gameCard, .gameCard__thumb,
.newsCard, .newsThumb,
.thumbPh{
  animation: none !important;
  transition: none !important;
  filter: none !important;
  transform: none !important;
}

/* 4) Matikan smooth scroll (hindari “loncat”/repaint) */
html{ scroll-behavior: auto !important; }

/* ===== HOME GAME THUMB 3:2 ===== */
.game__img,
img.game__img{
  aspect-ratio: 3 / 2 !important;
  height: auto !important;
  width: 100% !important;
  border-radius: 14px;
  overflow: hidden;
}

/* kalau .game__img adalah DIV background-image */
.game__img{
  background-size: cover !important;
  background-position: center !important;
}

/* kalau ternyata pakai <img> di dalam */
.game__img img{
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
/* ===== ANTI-GLITCH KHUSUS HOME GAME ===== */

/* Matikan overlay grain/noise hanya di homepage */
.page-home::after,
.page-home::before{
  content: none !important;
  display: none !important;
}

/* Matikan blur glass header hanya di homepage (paling sering flicker) */
.page-home .header,
.page-home .mNavHeader{
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

/* Matikan animasi/transition/filter hanya pada section game home */
.page-home .game,
.page-home .game__img,
.page-home .gameCard,
.page-home .gameCard__thumb{
  animation: none !important;
  transition: none !important;
  filter: none !important;
  transform: none !important;
}