/* ===== ZIPPY STORE - Dark Theme Override (Bootstrap 5) ===== */
:root{
  --zp-bg:#0F0F0F;
  --zp-bg-soft:#121212;
  --zp-card:#1A1A1A;
  --zp-text:#F5F5F5;
  --zp-text-2:#A0A0A0;
  --zp-accent:#6366F1;
  --zp-accent-2:#8B5CF6;
  --zp-secondary:#A855F7;
  --zp-border:#2A2A2A;
}

body{
  background:var(--zp-bg);
  color:var(--zp-text);
  font-family:'Inter',sans-serif;
  -webkit-font-smoothing:antialiased;
}
a{text-decoration:none}
.text-muted-2{color:var(--zp-text-2)!important}
.section{padding:72px 0}
.section-title{font-weight:700;font-size:30px;text-align:center;margin-bottom:6px}
.section-sub{color:var(--zp-text-2);text-align:center;margin-bottom:40px}

/* Accent helpers */
.text-grad{
  background:linear-gradient(135deg,var(--zp-accent),var(--zp-secondary));
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;
}
.btn-accent{
  background:linear-gradient(135deg,var(--zp-accent),var(--zp-accent-2));
  color:#fff;border:none;font-weight:600;
}
.btn-accent:hover{filter:brightness(1.12);color:#fff;transform:translateY(-2px)}
.btn-outline-accent{border:1.5px solid var(--zp-accent);color:var(--zp-text);font-weight:600}
.btn-outline-accent:hover{background:rgba(99,102,241,.12);color:var(--zp-text)}
.btn{transition:.25s ease;border-radius:10px}

/* Navbar */
.navbar{transition:.25s ease;background:transparent!important}
.navbar.scrolled{background:rgba(15,15,15,.92)!important;backdrop-filter:blur(10px);border-bottom:1px solid var(--zp-border)}
.navbar-brand{font-weight:800;font-size:22px}
.navbar-brand span{color:var(--zp-accent-2)}
.navbar .nav-link{color:var(--zp-text-2)!important;font-weight:500;transition:.2s}
.navbar .nav-link:hover,.navbar .nav-link.active{color:var(--zp-text)!important}

/* Hero */
.hero{
  min-height:100vh;display:flex;align-items:center;padding-top:90px;
  background:radial-gradient(circle at 20% 20%,rgba(99,102,241,.18),transparent 45%),
             radial-gradient(circle at 85% 70%,rgba(168,85,247,.16),transparent 45%),
             var(--zp-bg);
}
.hero h1{font-size:clamp(34px,5vw,52px);font-weight:800;line-height:1.15}
.hero p{font-size:18px;color:var(--zp-text-2);max-width:560px}

/* Card */
.zp-card{
  background:var(--zp-card);border:1px solid var(--zp-border);
  border-radius:14px;transition:.25s ease;height:100%;
}
.zp-card:hover{transform:translateY(-6px);border-color:var(--zp-accent);box-shadow:0 14px 40px rgba(99,102,241,.16)}
.zp-card .icon{font-size:40px}

/* Promo */
.promo{background:linear-gradient(135deg,var(--zp-accent),var(--zp-secondary));border-radius:14px}
.promo .btn{background:#fff;color:var(--zp-accent);font-weight:600}

/* Forms / inputs */
.form-control{
  background:var(--zp-bg-soft);border:1px solid var(--zp-border);color:var(--zp-text);
}
.form-control:focus{background:var(--zp-bg-soft);border-color:var(--zp-accent);color:var(--zp-text);box-shadow:0 0 0 .2rem rgba(99,102,241,.2)}
.form-control::placeholder{color:#666}

/* Gallery filter pills */
.filter-btn{border-radius:999px;background:var(--zp-card);border:1px solid var(--zp-border);color:var(--zp-text-2);transition:.2s}
.filter-btn:hover{color:var(--zp-text)}
.filter-btn.active{background:var(--zp-accent);border-color:var(--zp-accent);color:#fff}
.gallery-item{border-radius:10px;overflow:hidden;cursor:pointer;border:1px solid var(--zp-border);transition:.25s}
.gallery-item:hover{transform:scale(1.02);border-color:var(--zp-accent)}
.gallery-item img{aspect-ratio:1;object-fit:cover;width:100%}

/* Footer */
.footer{background:var(--zp-bg-soft);border-top:1px solid var(--zp-border)}
.footer a{color:var(--zp-text-2);transition:.2s}
.footer a:hover{color:var(--zp-text)}
.social-ico{width:40px;height:40px;border-radius:50%;background:var(--zp-card);border:1px solid var(--zp-border);display:flex;align-items:center;justify-content:center;transition:.25s}
.social-ico:hover{background:var(--zp-accent);border-color:var(--zp-accent);transform:translateY(-3px);color:#fff}

/* Modal dark */
.modal-content{background:var(--zp-card);border:1px solid var(--zp-border)}

/* Reveal */
.reveal{opacity:0;transform:translateY(24px);transition:opacity .6s ease,transform .6s ease}
.reveal.show{opacity:1;transform:none}

.empty{text-align:center;padding:60px 20px;color:var(--zp-text-2)}
.empty .em{font-size:48px;margin-bottom:14px}
html{scroll-behavior:smooth}

/* ===== TESTIMONI ===== */
.telegram-banner{
  background:linear-gradient(135deg,rgba(99,102,241,.12),rgba(168,85,247,.12));
  border:1px solid var(--accent);border-radius:14px;padding:24px 28px;
}
.telegram-banner .tg-ico{
  width:54px;height:54px;border-radius:14px;flex-shrink:0;
  background:linear-gradient(135deg,#2AABEE,#229ED9);
  display:flex;align-items:center;justify-content:center;font-size:26px;
}

/* Grid foto portrait: 6 per baris desktop */
.testi-grid{
  display:grid;grid-template-columns:repeat(6,1fr);gap:16px;
}
.testi-photo{
  position:relative;border-radius:12px;overflow:hidden;cursor:pointer;
  border:1px solid var(--border);background:var(--card);
  aspect-ratio:9/16;transition:.25s ease;
}
.testi-photo:hover{transform:translateY(-4px);border-color:var(--accent);box-shadow:0 12px 30px rgba(99,102,241,.18)}
.testi-photo img{width:100%;height:100%;object-fit:cover;display:block}
.testi-photo .zoom-ico{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  background:rgba(15,15,15,.45);color:#fff;font-size:26px;opacity:0;transition:.2s;
}
.testi-photo:hover .zoom-ico{opacity:1}

/* Notice keaslian */
.testi-notice{
  background:var(--card);border:1px solid var(--border);border-left:4px solid var(--secondary);
  border-radius:12px;padding:20px 24px;
}
.testi-notice h4{font-size:15px;margin-bottom:8px}
.testi-notice p{color:var(--text-2);font-size:13px;margin:0;line-height:1.7}

@media(max-width:1024px){.testi-grid{grid-template-columns:repeat(4,1fr)}}
@media(max-width:640px){.testi-grid{grid-template-columns:repeat(2,1fr);gap:12px}}

/* ===== GALLERY (Masonry) ===== */
.gallery-masonry{
  column-count:4;
  column-gap:16px;
}
.gallery-masonry .g-item{
  break-inside:avoid;
  margin-bottom:16px;
  border-radius:12px;
  overflow:hidden;
  border:1px solid var(--border);
  background:var(--card);
  cursor:pointer;
  transition:.25s ease;
  position:relative;
}
.gallery-masonry .g-item:hover{
  transform:translateY(-4px);
  border-color:var(--accent);
  box-shadow:0 12px 30px rgba(99,102,241,.18);
}
.gallery-masonry .g-item img{width:100%;display:block}
.gallery-masonry .g-cap{
  padding:10px 14px;
  display:flex;align-items:center;justify-content:space-between;gap:8px;
}
.gallery-masonry .g-cap .g-nama{font-size:14px;font-weight:500}
.gallery-masonry .g-cap .g-kat{
  font-size:11px;text-transform:uppercase;letter-spacing:.5px;
  color:var(--accent-2);border:1px solid var(--border);
  padding:2px 8px;border-radius:999px;flex-shrink:0;
}
.gallery-masonry .g-item .zoom-ico{
  position:absolute;top:0;left:0;right:0;
  aspect-ratio:auto;display:flex;align-items:center;justify-content:center;
  background:rgba(15,15,15,.4);color:#fff;font-size:24px;opacity:0;transition:.2s;
  height:100%;
}
.gallery-masonry .g-item:hover .zoom-ico{opacity:1}

@media(max-width:1024px){.gallery-masonry{column-count:3}}
@media(max-width:640px){.gallery-masonry{column-count:2;column-gap:12px}}
@media(max-width:400px){.gallery-masonry{column-count:1}}

/* ===== STATISTIK ===== */
.stat-box{
  background:var(--card);border:1px solid var(--border);border-radius:14px;
  padding:28px 20px;text-align:center;transition:.25s ease;height:100%;
}
.stat-box:hover{transform:translateY(-5px);border-color:var(--accent);box-shadow:0 12px 30px rgba(99,102,241,.16)}
.stat-box .s-ico{font-size:34px;margin-bottom:10px}
.stat-box .s-num{font-size:30px;font-weight:800;line-height:1;margin-bottom:6px}
.stat-box .s-lbl{color:var(--text-2);font-size:14px}

/* ===== CARA PESAN (steps) ===== */
.step-card{
  background:var(--card);border:1px solid var(--border);border-radius:14px;
  padding:28px 24px;height:100%;position:relative;transition:.25s ease;overflow:hidden;
}
.step-card:hover{transform:translateY(-5px);border-color:var(--accent)}
.step-card .s-no{
  width:46px;height:46px;border-radius:12px;
  background:linear-gradient(135deg,var(--accent),var(--accent-2));
  display:flex;align-items:center;justify-content:center;
  font-weight:800;font-size:20px;color:#fff;margin-bottom:16px;
}
.step-card h3{font-size:17px;margin-bottom:10px}
.step-card p{color:var(--text-2);font-size:14px;margin:0}
.step-card .s-bgnum{
  position:absolute;right:-8px;top:-24px;font-size:110px;font-weight:800;
  color:rgba(255,255,255,.025);line-height:1;pointer-events:none;
}

/* ===== JOKI FORM ===== */
.joki-form .form-control,
.joki-form .form-select{
  background:var(--bg-soft);border:1px solid var(--border);color:var(--text);
}
.joki-form .form-control:focus{border-color:var(--accent);box-shadow:0 0 0 .2rem rgba(99,102,241,.2);background:var(--bg-soft);color:var(--text)}
.joki-form .form-control::placeholder{color:#666}
.joki-form label{color:var(--text-2);font-size:14px;font-weight:500;margin-bottom:6px}

.ketentuan-list{list-style:none;padding:0;margin:0}
.ketentuan-list li{
  display:flex;gap:12px;align-items:flex-start;padding:12px 0;
  border-bottom:1px solid var(--border);color:var(--text-2);font-size:14px;
}
.ketentuan-list li:last-child{border-bottom:none}
.ketentuan-list .k-ico{color:var(--accent-2);flex-shrink:0;font-size:16px;margin-top:1px}

/* Tombol link project di gallery */
.gallery-masonry .g-link{
  display:block;
  margin:0 14px 14px;
  padding:8px 12px;
  text-align:center;
  font-size:13px;
  font-weight:600;
  color:#fff;
  background:linear-gradient(135deg,var(--accent),var(--accent-2));
  border-radius:8px;
  transition:.2s;
}
.gallery-masonry .g-link:hover{filter:brightness(1.12);color:#fff}