<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>SNITZ PROJECT V2.0 — Premium Injector</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Syne:wght@400;500;600;700;800&family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;1,9..40,300&family=Space+Mono:wght@400;700&display=swap" rel="stylesheet">
<style>
/* ================================================================
SNITZ PROJECT v6 — ULTRA PREMIUM ELITE EDITION
================================================================ */
:root{
--ink:#d4f5dc;--ink2:#8ecf9a;--ink3:#4aaa62;--ink4:#2d7a44;
--bg:#060b07;--bg2:#0a100b;--bg3:#0f1a10;--white:#0c1510;
--line:rgba(52,168,83,.14);--line2:rgba(52,168,83,.28);
--acc:#34a853;--acc-t:rgba(52,168,83,.11);
--nav-bg:rgba(6,11,7,.92);
--HF:'Syne',sans-serif;--BF:'DM Sans',sans-serif;--CF:'Space Mono',monospace;
--r:16px;--r2:24px;--r3:32px;
--sh:0 4px 32px rgba(0,0,0,.45);
--sh2:0 16px 60px rgba(0,0,0,.6);
}
[data-t="dark"]{--ink:#d4f5dc;--ink2:#8ecf9a;--ink3:#4aaa62;--ink4:#2d7a44;--bg:#060b07;--bg2:#0a100b;--bg3:#0f1a10;--white:#0c1510;--line:rgba(52,168,83,.14);--line2:rgba(52,168,83,.28);--acc:#34a853;--acc-t:rgba(52,168,83,.11);--nav-bg:rgba(6,11,7,.92)}
[data-t="neon"]{--acc:#00ff88;--acc-t:rgba(0,255,136,.07);--line:rgba(0,255,136,.18);--line2:rgba(0,255,136,.38)}
[data-t="red"]{--acc:#e53935;--acc-t:rgba(229,57,53,.07);--line:rgba(229,57,53,.18);--line2:rgba(229,57,53,.38)}
[data-t="blue"]{--acc:#1565c0;--acc-t:rgba(21,101,192,.07);--line:rgba(21,101,192,.18);--line2:rgba(21,101,192,.38)}
[data-t="purple"]{--acc:#6a1b9a;--acc-t:rgba(106,27,154,.07);--line:rgba(106,27,154,.18);--line2:rgba(106,27,154,.38)}
[data-t="gold"]{--acc:#e65100;--acc-t:rgba(230,81,0,.07);--line:rgba(230,81,0,.18);--line2:rgba(230,81,0,.38)}
[data-t="pink"]{--acc:#c2185b;--acc-t:rgba(194,24,91,.07);--line:rgba(194,24,91,.18);--line2:rgba(194,24,91,.38)}
[data-t="teal"]{--acc:#00695c;--acc-t:rgba(0,105,92,.07);--line:rgba(0,105,92,.18);--line2:rgba(0,105,92,.38)}
[data-t="orange"]{--acc:#bf360c;--acc-t:rgba(191,54,12,.07);--line:rgba(191,54,12,.18);--line2:rgba(191,54,12,.38)}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;font-size:16px}
body{background:var(--bg);color:var(--ink);font-family:var(--BF);overflow-x:hidden;cursor:none;-webkit-font-smoothing:antialiased;transition:background .5s,color .5s}
a{text-decoration:none;color:inherit}
button{background:none;border:none;font-family:inherit;cursor:none}
::-webkit-scrollbar{width:3px}
::-webkit-scrollbar-track{background:var(--bg)}
::-webkit-scrollbar-thumb{background:var(--line2);border-radius:2px}
::selection{background:var(--acc-t);color:var(--acc)}
/* ── CURSOR ── */
#cur{position:fixed;width:8px;height:8px;background:var(--acc);border-radius:50%;pointer-events:none;z-index:99999;transform:translate(-50%,-50%);transition:transform .1s,background .3s,width .18s,height .18s}
#cur-r{position:fixed;width:32px;height:32px;border:1.5px solid var(--acc);border-radius:50%;pointer-events:none;z-index:99998;transform:translate(-50%,-50%);opacity:.22;transition:width .38s,height .38s,border-color .3s,opacity .3s}
body.link-hover #cur{width:18px;height:18px;opacity:.6}
body.link-hover #cur-r{width:48px;height:48px;opacity:.14}
/* ── PARTICLES ── */
#partcv{position:fixed;inset:0;pointer-events:none;z-index:0;opacity:.28;transition:opacity .5s}
/* ── LOADER ── */
#loader{position:fixed;inset:0;z-index:99990;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;transition:opacity 1.1s cubic-bezier(.16,1,.3,1),transform 1.1s cubic-bezier(.16,1,.3,1),visibility 1.1s;overflow:hidden}
#loader.out{opacity:0;visibility:hidden;transform:scale(1.04)}
.ld-logo{font-family:var(--HF);font-size:clamp(3.5rem,10vw,6rem);font-weight:800;color:var(--ink);letter-spacing:-.03em;line-height:1;display:flex;gap:.01em}
@keyframes ldChar{0%{opacity:0;transform:translateY(28px) skewY(4deg)}60%{transform:translateY(-4px) skewY(-1deg)}100%{opacity:1;transform:none}}@keyframes ldCharPulse{0%,100%{opacity:1}50%{opacity:.55}}
.ld-bar{width:220px;height:1px;background:var(--line);position:relative;overflow:hidden}
.ld-fill{height:100%;width:0;background:var(--acc);animation:lf 2.6s cubic-bezier(.4,0,.2,1) forwards}
@keyframes lf{0%{width:0}60%{width:75%}100%{width:100%}}
.ld-txt{font-family:var(--CF);font-size:.58rem;letter-spacing:.24em;color:var(--ink3);text-transform:uppercase;animation:blink .85s step-end infinite}
@keyframes blink{50%{opacity:.15}}
.ld-dots{display:flex;gap:8px;margin-top:4px}
.ld-dot{width:5px;height:5px;border-radius:50%;background:var(--acc);animation:dotBounce 1.2s ease-in-out infinite}
.ld-dot:nth-child(2){animation-delay:.2s}
.ld-dot:nth-child(3){animation-delay:.4s}
@keyframes dotBounce{0%,100%{transform:translateY(0);opacity:.3}50%{transform:translateY(-8px);opacity:1}}
/* ── NAV ── */
#nav{
position:fixed;top:16px;left:50%;transform:translateX(-50%);
z-index:3000;display:flex;align-items:center;justify-content:space-between;
height:52px;width:min(700px,calc(100vw - 24px));
background:var(--nav-bg);backdrop-filter:blur(28px) saturate(200%);
border:1px solid var(--line2);border-radius:100px;
padding:0 6px 0 20px;
box-shadow:0 2px 28px rgba(0,0,0,.09),0 0 0 1px rgba(255,255,255,.55) inset;
transition:border-color .4s,box-shadow .4s,background .5s;
}
#nav.scrolled{box-shadow:0 4px 40px rgba(0,0,0,.14),0 0 0 1px rgba(255,255,255,.5) inset}
.nav-l{display:flex;align-items:center;gap:10px;cursor:none}
.nav-mark{width:28px;height:28px}
.nav-mark svg{width:100%;height:100%}
.nav-name{font-family:var(--HF);font-size:1.05rem;font-weight:800;letter-spacing:-.01em;color:var(--ink)}
.nav-r{display:flex;align-items:center;gap:4px}
.npill{
height:40px;border-radius:100px;background:transparent;border:1px solid transparent;
display:flex;align-items:center;justify-content:center;gap:6px;
color:var(--ink3);font-family:var(--HF);font-size:.68rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;
cursor:none;transition:all .2s;padding:0 13px;white-space:nowrap;
}
.npill.icon{padding:0;width:40px}
.npill:hover{background:var(--acc-t);border-color:var(--line);color:var(--ink)}
.npill svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.8;flex-shrink:0}
.npill.accent{background:var(--acc);color:var(--bg);border-color:var(--acc)}
.npill.accent:hover{opacity:.85}
/* ── SOCIABUZZ FLOATING WIDGET ── */
/* ── SOCIABUZZ FLOATING WIDGET ── */
#sbFloat{position:fixed;bottom:28px;right:24px;z-index:1990;display:flex;flex-direction:column;align-items:flex-end;gap:10px}
#sbToggle{
height:40px;padding:0 18px;border-radius:100px;
background:var(--acc);color:#060b07;border:none;cursor:none;
display:flex;align-items:center;justify-content:center;gap:7px;
font-family:var(--HF);font-size:.7rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;
box-shadow:0 4px 20px rgba(52,168,83,.4),0 2px 8px rgba(0,0,0,.28);
transition:all .32s cubic-bezier(.16,1,.3,1);
position:relative;z-index:2;flex-shrink:0;white-space:nowrap;
}
#sbToggle:hover{transform:translateY(-2px);box-shadow:0 8px 28px rgba(52,168,83,.5)}
#sbToggle svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;flex-shrink:0;transition:transform .3s,opacity .3s}
#sbToggle .sb-ico-close{position:absolute;right:18px;transform:rotate(-45deg) scale(0);opacity:0;transition:transform .3s,opacity .3s}
#sbFloat.open #sbToggle .sb-ico-close{transform:rotate(0) scale(1);opacity:1}
#sbFloat.open #sbToggle .sb-ico-main{opacity:0;transform:scale(0)}
#sbPanel{
background:#0a100b;border:1px solid var(--line2);border-radius:20px;
width:256px;overflow:hidden;
box-shadow:0 20px 60px rgba(0,0,0,.55),0 0 0 1px rgba(52,168,83,.08);
opacity:0;transform:translateY(10px) scale(.97);pointer-events:none;
transition:opacity .3s cubic-bezier(.16,1,.3,1),transform .34s cubic-bezier(.16,1,.3,1);
transform-origin:bottom right;
}
#sbFloat.open #sbPanel{opacity:1;transform:none;pointer-events:all}
.sb-panel-head{padding:16px 18px 13px;border-bottom:1px solid var(--line);background:linear-gradient(135deg,rgba(52,168,83,.11),rgba(52,168,83,.03))}
.sb-panel-label{font-family:var(--CF);font-size:.46rem;letter-spacing:.24em;color:var(--acc);text-transform:uppercase;margin-bottom:4px}
.sb-panel-title{font-family:var(--HF);font-size:.92rem;font-weight:800;color:var(--ink);letter-spacing:-.01em}
.sb-panel-sub{font-size:.72rem;color:var(--ink3);font-weight:300;margin-top:3px;line-height:1.5}
.sb-panel-body{padding:13px}
.sb-main-btn{display:flex;align-items:center;gap:10px;width:100%;padding:12px 15px;border-radius:12px;background:var(--acc);color:#060b07;border:none;cursor:none;font-family:var(--BF);font-size:.82rem;font-weight:600;letter-spacing:.01em;text-decoration:none;transition:opacity .2s,transform .2s;margin-bottom:9px}
.sb-main-btn:hover{opacity:.88;transform:translateY(-1px)}
.sb-main-btn svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;flex-shrink:0}
.sb-divider{font-family:var(--CF);font-size:.46rem;letter-spacing:.22em;color:var(--ink4);text-transform:uppercase;margin-bottom:7px;padding-top:1px}
.sb-ch-btn{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;border-radius:11px;background:rgba(52,168,83,.07);border:1px solid var(--line);color:var(--ink2);cursor:none;text-decoration:none;transition:all .2s}
.sb-ch-btn:hover{background:rgba(52,168,83,.16);border-color:var(--acc)}
.sb-ch-btn svg{width:14px;height:14px;fill:none;stroke:var(--acc);stroke-width:1.8;flex-shrink:0}
.sb-ch-name{font-family:var(--HF);font-size:.75rem;font-weight:700;color:var(--ink)}
.sb-ch-desc{font-size:.62rem;color:var(--ink4);font-weight:300;margin-top:1px}
#sbToggle::before{content:'';position:absolute;inset:-4px;border-radius:100px;border:1.5px solid var(--acc);opacity:0;animation:sbPulse 3s ease-in-out infinite}
@keyframes sbPulse{0%,100%{transform:scale(1);opacity:.4}50%{transform:scale(1.1);opacity:0}}
/* ── HERO CHANNEL INFO LINK ── */
.h-ch-info{
display:inline-flex;align-items:center;gap:9px;
padding:14px 32px;border-radius:100px;
color:var(--ink);border:1px solid var(--line2);
font-family:var(--HF);font-size:.78rem;font-weight:700;letter-spacing:.06em;
text-transform:uppercase;text-decoration:none;cursor:none;
transition:transform .45s cubic-bezier(.16,1,.3,1),box-shadow .45s cubic-bezier(.16,1,.3,1),background .3s,color .3s,border-color .3s;
position:relative;overflow:hidden;
margin-top:0;z-index:5;pointer-events:auto;
}
.h-ch-info:hover{background:var(--acc-t);border-color:var(--acc);color:var(--acc);transform:translateY(-3px)}
.h-ch-info svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;flex-shrink:0}
/* ── SCROLL BACK TO TOP ── */
#scrollTop{
position:static;
width:40px;height:40px;border-radius:50%;
background:var(--bg2);border:1px solid var(--line2);color:var(--ink2);
display:flex;align-items:center;justify-content:center;
box-shadow:0 4px 16px rgba(0,0,0,.25);cursor:none;
opacity:0;pointer-events:none;transition:opacity .3s,transform .3s;
transform:translateY(8px);flex-shrink:0;
}
#scrollTop.on{opacity:1;pointer-events:all;transform:translateY(0)}
#scrollTop:hover{transform:translateY(-3px) scale(1.08)}
#scrollTop svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
/* ── DRAWER ── */
#dov{position:fixed;inset:0;background:rgba(10,10,10,.5);z-index:3997;opacity:0;pointer-events:none;transition:opacity .32s;backdrop-filter:blur(8px)}
#dov.on{opacity:1;pointer-events:all}
#dr{
position:fixed;top:0;right:-360px;width:344px;height:100vh;
z-index:3999;display:flex;flex-direction:column;
background:#0a100b;border-left:1px solid var(--line);
transition:right .44s cubic-bezier(.77,0,.18,1);overflow:hidden;
box-shadow:-28px 0 80px rgba(0,0,0,.14);
}
#dr.on{right:0}
.dr-banner{position:relative;height:170px;overflow:hidden;flex-shrink:0;border-bottom:1px solid var(--line)}
#drBcv{position:absolute;inset:0;width:100%;height:100%;display:block}
.dr-banner-inner{position:absolute;inset:0;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-end;padding:22px 24px;pointer-events:none}
.dr-bname{font-family:var(--HF);font-size:2.2rem;font-weight:800;color:#fff;letter-spacing:-.03em;line-height:1}
.dr-btag{font-family:var(--CF);font-size:.56rem;letter-spacing:.24em;color:rgba(255,255,255,.45);text-transform:uppercase;margin-top:5px}
.dr-hdr{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--line);flex-shrink:0}
.dr-htitle{font-family:var(--HF);font-size:.75rem;font-weight:700;letter-spacing:.1em;color:var(--ink3);text-transform:uppercase}
.dr-x{width:28px;height:28px;background:var(--bg2);border:1px solid var(--line);border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:none;color:var(--ink3);transition:all .2s}
.dr-x:hover{background:var(--acc);color:var(--bg);border-color:var(--acc)}
.dr-x svg{width:10px;height:10px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.dr-body{flex:1;overflow-y:auto;padding:10px 14px 28px}
.dr-body::-webkit-scrollbar{width:2px}
.dr-slbl{font-family:var(--CF);font-size:.52rem;letter-spacing:.26em;color:var(--ink4);padding:14px 8px 6px;text-transform:uppercase}
.dr-item{
display:flex;align-items:center;gap:12px;padding:11px 12px;
border-radius:12px;margin-bottom:2px;cursor:none;color:var(--ink2);
font-family:var(--BF);font-size:.93rem;font-weight:500;
border:1px solid transparent;transition:all .18s;position:relative;
}
.dr-item:hover,.dr-item.act{background:var(--acc-t);color:var(--acc);border-color:var(--line)}
.dr-item.act{font-weight:600}
.dr-ico{width:16px;height:16px;flex-shrink:0;opacity:.5}
.dr-ico svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.8}
.dr-item:hover .dr-ico,.dr-item.act .dr-ico{opacity:1}
.dr-div{height:1px;background:var(--line);margin:8px 0}
.dr-trow{display:flex;gap:6px;overflow-x:auto;padding:6px 0 12px;scrollbar-width:none}
.dr-trow::-webkit-scrollbar{display:none}
.dr-td{width:32px;height:32px;border-radius:8px;border:2px solid transparent;cursor:none;transition:all .2s;position:relative;flex-shrink:0}
.dr-td.act{border-color:var(--ink);box-shadow:0 0 0 3px var(--acc-t)}
.dr-td:hover{transform:scale(1.14)}
/* ── SECTION SCROLL LINES ── */
.scroll-section{position:relative}
.sl-top,.sl-bottom{
position:absolute;left:8%;right:8%;height:1px;
background:linear-gradient(90deg,transparent,var(--acc),transparent);
opacity:0;transform:scaleX(0);
transition:opacity .8s cubic-bezier(.16,1,.3,1),transform 1.2s cubic-bezier(.16,1,.3,1);
transform-origin:center;
}
.sl-top{top:0}
.sl-bottom{bottom:0}
.sl-left,.sl-right{
position:absolute;top:4%;bottom:4%;width:1px;
background:linear-gradient(180deg,transparent,var(--acc),transparent);
opacity:0;transform:scaleY(0);
transition:opacity .5s .12s,transform .9s .12s cubic-bezier(.22,1,.36,1);
transform-origin:center;
}
.sl-left{left:0}
.sl-right{right:0}
.scroll-section.active .sl-top,.scroll-section.active .sl-bottom{opacity:1;transform:scaleX(1)}
.scroll-section.active .sl-left,.scroll-section.active .sl-right{opacity:1;transform:scaleY(1)}
.scroll-section.active .sl-top{animation:lineGlow 3.5s ease-in-out infinite alternate}
.scroll-section.active .sl-bottom{animation:lineGlow 3.5s ease-in-out 1.75s infinite alternate}
@keyframes lineGlow{0%{opacity:.7;filter:none}100%{opacity:1;filter:drop-shadow(0 0 6px var(--acc))}}
/* ── REVEAL ANIMATIONS ── */
.rv{opacity:0;transform:translateY(44px);transition:opacity .9s cubic-bezier(.16,1,.3,1),transform .9s cubic-bezier(.16,1,.3,1),filter .9s cubic-bezier(.16,1,.3,1);filter:blur(4px)}
.rv.in{filter:blur(0)}
.rv.in{opacity:1;transform:none;transition:opacity .9s cubic-bezier(.16,1,.3,1),transform .9s cubic-bezier(.16,1,.3,1),filter .9s cubic-bezier(.16,1,.3,1)}
.rvl{opacity:0;transform:translateX(-40px);transition:opacity .9s cubic-bezier(.16,1,.3,1),transform .9s cubic-bezier(.16,1,.3,1),filter .9s;filter:blur(3px)}
.rvl.in{opacity:1;transform:none;filter:blur(0)}
.rvr{opacity:0;transform:translateX(40px);transition:opacity .9s cubic-bezier(.16,1,.3,1),transform .9s cubic-bezier(.16,1,.3,1),filter .9s;filter:blur(3px)}
.rvr.in{opacity:1;transform:none;filter:blur(0)}
.rvs{opacity:0;transform:scale(.92) translateY(20px);transition:opacity .9s cubic-bezier(.16,1,.3,1),transform .9s cubic-bezier(.16,1,.3,1)}
.rvs.in{opacity:1;transform:scale(1) translateY(0)}
/* ── HERO ── */
#hero{
min-height:100vh;position:relative;overflow:hidden;
display:flex;flex-direction:column;align-items:center;justify-content:center;
padding:110px 20px 90px;background:var(--bg);
}
#hcv{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.hero-c{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;text-align:center;max-width:960px}
.h-eye{
display:inline-flex;align-items:center;gap:10px;
font-family:var(--CF);font-size:.6rem;letter-spacing:.3em;color:var(--ink3);text-transform:uppercase;
margin-bottom:30px;opacity:0;animation:su .85s ease .1s forwards;
}
.h-eye-dot{width:5px;height:5px;border-radius:50%;background:var(--acc);animation:ping 2.2s ease infinite}
@keyframes ping{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.8);opacity:.35}}
.h-logo{
font-family:var(--HF);font-size:clamp(5rem,17vw,13rem);
font-weight:800;letter-spacing:-.03em;line-height:.9;color:var(--ink);
opacity:0;animation:su .95s ease .22s forwards;
}
.h-logo-3d{display:inline-block;animation:logo3d 9s ease-in-out infinite;perspective:1200px}
@keyframes logo3d{
0%,100%{transform:perspective(1200px) rotateX(0deg) rotateY(0deg) translateY(0)}
25%{transform:perspective(1200px) rotateX(2deg) rotateY(3.5deg) translateY(-8px)}
50%{transform:perspective(1200px) rotateX(0deg) rotateY(-2.5deg) translateY(-12px)}
75%{transform:perspective(1200px) rotateX(-1.5deg) rotateY(2deg) translateY(-5px)}
}
.h-sub{font-family:var(--CF);font-size:.63rem;letter-spacing:.32em;color:var(--ink4);text-transform:uppercase;margin-top:14px;margin-bottom:26px;opacity:0;animation:su .85s ease .4s forwards}
.h-tag{font-family:var(--BF);font-size:clamp(.98rem,2.4vw,1.3rem);font-weight:300;color:var(--ink3);line-height:1.9;max-width:600px;opacity:0;animation:su .85s ease .55s forwards}
.h-tag strong{color:var(--ink);font-weight:500}
.h-cta{display:flex;gap:13px;margin-top:44px;flex-wrap:wrap;justify-content:center;opacity:0;animation:su .85s ease .7s forwards}
.btn{display:inline-flex;align-items:center;gap:9px;padding:14px 32px;border-radius:100px;font-family:var(--HF);font-size:.78rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;cursor:none;transition:transform .45s cubic-bezier(.16,1,.3,1),box-shadow .45s cubic-bezier(.16,1,.3,1),background .3s,color .3s,border-color .3s,opacity .3s;position:relative;overflow:hidden}
.btn-d{background:var(--acc);color:#060b07;box-shadow:0 4px 28px rgba(0,0,0,.2);overflow:hidden}
.btn-d::after{content:'';position:absolute;top:-50%;left:-100%;width:50%;height:200%;background:linear-gradient(105deg,transparent,rgba(255,255,255,.22),transparent);transform:skewX(-18deg);animation:btnShimmer 3.5s ease-in-out infinite 1s}
@keyframes btnShimmer{0%,100%{left:-100%}45%,55%{left:150%}}
.btn-d:hover{transform:translateY(-4px) scale(1.03);box-shadow:0 14px 50px rgba(0,0,0,.35),0 0 30px rgba(52,168,83,.15)}
.btn-o{color:var(--ink);border:1px solid var(--line2)}
.btn-o:hover{background:var(--acc-t);border-color:var(--acc);color:var(--acc);transform:translateY(-3px)}
.bi{width:16px;height:16px;fill:currentColor;flex-shrink:0}
/* HERO STATS */
.h-stats{
display:flex;margin-top:70px;
border:1px solid var(--line);border-radius:22px;overflow:hidden;
background:#0a100b;opacity:0;animation:su 1s ease .9s forwards;
box-shadow:var(--sh);
}
.hst{padding:24px 40px;text-align:center;flex:1;position:relative;transition:background .28s}
.hst:nth-child(1){animation:floatStat1 4s ease-in-out infinite}
.hst:nth-child(2){animation:floatStat2 4.5s ease-in-out infinite .6s}
.hst:nth-child(3){animation:floatStat3 3.8s ease-in-out infinite 1.1s}
.hst:nth-child(4){animation:floatStat4 4.2s ease-in-out infinite 1.7s}
@keyframes floatStat1{0%,100%{transform:translateY(0px)}50%{transform:translateY(-6px)}}
@keyframes floatStat2{0%,100%{transform:translateY(0px)}50%{transform:translateY(-8px)}}
@keyframes floatStat3{0%,100%{transform:translateY(0px)}50%{transform:translateY(-5px)}}
@keyframes floatStat4{0%,100%{transform:translateY(0px)}50%{transform:translateY(-7px)}}
.hst:hover{background:var(--bg2)}
.hst::after{content:'';position:absolute;right:0;top:20%;bottom:20%;width:1px;background:var(--line)}
.hst:last-child::after{display:none}
.hst-n{font-family:var(--HF);font-size:2.4rem;font-weight:800;color:var(--ink);letter-spacing:-.04em;line-height:1;transition:all .3s}
.hst-l{font-family:var(--CF);font-size:.52rem;letter-spacing:.22em;color:var(--ink4);margin-top:7px;text-transform:uppercase}
.hst-n .acc{color:var(--acc)}
/* SCROLL INDICATOR */
.h-scroll{position:absolute;bottom:30px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:9px;opacity:0;animation:fadeIn 1.1s ease 1.6s forwards}
.sc-line{width:1px;height:48px;background:var(--line);position:relative;overflow:hidden}
.sc-line::after{content:'';position:absolute;top:-100%;width:100%;height:100%;background:var(--acc);animation:scl 2s ease-in-out infinite}
@keyframes scl{to{top:220%}}
.sc-lbl{font-family:var(--CF);font-size:.48rem;letter-spacing:.3em;color:var(--ink4);text-transform:uppercase}
/* HERO MARQUEE BAND */
.hero-band{
position:absolute;bottom:0;left:0;right:0;height:48px;
background:#0a100b;overflow:hidden;display:flex;align-items:center;
border-top:1px solid var(--line2);z-index:3;
}
.band-track{display:flex;gap:0;animation:bandScroll 22s linear infinite;white-space:nowrap;flex-shrink:0}
.band-track2{animation-delay:-11s}
.band-item{font-family:var(--CF);font-size:.58rem;letter-spacing:.22em;color:rgba(255,255,255,.35);text-transform:uppercase;padding:0 32px;display:flex;align-items:center;gap:12px;flex-shrink:0}
.band-dot{width:3px;height:3px;border-radius:50%;background:var(--acc);flex-shrink:0}
@keyframes bandScroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@keyframes su{from{opacity:0;transform:translateY(40px) skewY(1.5deg)}to{opacity:1;transform:none}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
/* ── SECTION BASE ── */
.sec{padding:120px 20px;position:relative;z-index:1}
.sec-w{background:#0d1f10}
.sec-in{max-width:1120px;margin:0 auto}
.sec-ey{font-family:var(--CF);font-size:.56rem;letter-spacing:.32em;color:var(--acc);text-transform:uppercase;margin-bottom:10px;display:flex;align-items:center;gap:10px}
.sec-ey::before{content:'';width:24px;height:1px;background:var(--acc);flex-shrink:0}
.sec-h{font-family:var(--HF);font-size:clamp(1.9rem,5vw,3.5rem);font-weight:800;letter-spacing:-.03em;line-height:1.05;margin-bottom:20px;color:var(--ink)}
.sec-h em{font-style:normal;color:var(--acc);display:inline-block;animation:accentBob 4s ease-in-out infinite;position:relative;overflow:hidden}
.sec-h em::after{content:'';position:absolute;top:0;left:-100%;width:45%;height:100%;background:linear-gradient(105deg,transparent 20%,rgba(52,168,83,.35) 50%,transparent 80%);animation:emShimmer 4s ease-in-out infinite 1.5s}
@keyframes emShimmer{0%,100%{left:-80%}40%,60%{left:130%}}
.sec-p{color:var(--ink3);font-size:1.05rem;max-width:600px;line-height:1.95;font-weight:300}
.sec-p strong{color:var(--ink);font-weight:500}
/* ── FEATURE CARDS ── */
.feat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;margin-top:56px}
.fc{
background:var(--bg);border:1px solid var(--line);border-radius:var(--r);
padding:30px;transition:all .35s;position:relative;overflow:hidden;cursor:default;
}
.fc::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:var(--acc);transform:scaleX(0);transform-origin:left;transition:transform .38s cubic-bezier(.22,1,.36,1)}
.fc::after{content:'';position:absolute;inset:0;background:radial-gradient(circle at 50% 0%,var(--acc-t),transparent 70%);opacity:0;transition:opacity .4s}
.fc:hover{background:#0a100b;border-color:var(--line2);box-shadow:0 20px 60px rgba(0,0,0,.5),0 0 28px rgba(52,168,83,.05);transform:translateY(-7px)}
.fc:hover::before{transform:scaleX(1)}
.fc:hover::after{opacity:1}
.fc-num{font-family:var(--CF);font-size:.56rem;letter-spacing:.2em;color:var(--ink4);margin-bottom:20px;position:relative;z-index:1}
.fc-h{font-family:var(--HF);font-size:1.08rem;font-weight:700;letter-spacing:-.01em;color:var(--ink);margin-bottom:11px;position:relative;z-index:1}
.fc-p{font-size:.87rem;color:var(--ink3);line-height:1.85;font-weight:300;position:relative;z-index:1}
.fc-tag{display:inline-block;font-family:var(--CF);font-size:.5rem;letter-spacing:.14em;color:var(--acc);border:1px solid var(--line2);border-radius:4px;padding:3px 9px;margin-top:16px;text-transform:uppercase;position:relative;z-index:1}
/* ── PRODUCTS ── */
.prod-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:20px;margin-top:56px}
.pc{background:#0a100b;border:1px solid var(--line);border-radius:var(--r2);overflow:hidden;transition:transform .55s cubic-bezier(.16,1,.3,1),box-shadow .55s cubic-bezier(.16,1,.3,1),border-color .4s;position:relative;will-change:transform}
.pc:hover{border-color:var(--acc);box-shadow:0 24px 80px rgba(0,0,0,.55),0 0 0 1px var(--acc),0 0 40px rgba(52,168,83,.08);transform:translateY(-10px)}
.pc.featured{border-color:var(--acc);border-width:1.5px}
.pc-feat-badge{position:absolute;top:16px;right:16px;z-index:3;font-family:var(--CF);font-size:.5rem;letter-spacing:.14em;color:#fff;background:var(--acc);padding:4px 11px;border-radius:100px;text-transform:uppercase}
.pc-head{height:132px;position:relative;overflow:hidden;background:#0d1f10}
.pc-hl{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:flex-end;padding:18px 22px;z-index:2;pointer-events:none}
.pc-name{font-family:var(--HF);font-size:1.4rem;font-weight:800;color:#fff;letter-spacing:-.01em;line-height:1}
.pc-tier{font-family:var(--CF);font-size:.5rem;letter-spacing:.24em;color:rgba(255,255,255,.45);margin-top:4px;text-transform:uppercase}
.pc-body{padding:24px}
.pc-pr{display:flex;align-items:center;gap:11px;margin-bottom:18px;flex-wrap:wrap}
.pc-orig{font-family:var(--CF);font-size:.78rem;color:var(--ink4);text-decoration:line-through}
.pc-disc{font-family:var(--HF);font-size:1.65rem;font-weight:800;color:var(--ink);letter-spacing:-.02em}
.pc-save{font-family:var(--CF);font-size:.52rem;letter-spacing:.1em;color:#fff;background:var(--acc);padding:3px 9px;border-radius:4px}
.pc-feats{list-style:none;display:flex;flex-direction:column;gap:9px;margin-bottom:22px;padding-top:16px;border-top:1px solid var(--line)}
.pc-feats li{display:flex;align-items:flex-start;gap:10px;font-size:.87rem;color:var(--ink2);font-weight:300;line-height:1.55}
.pc-feats li::before{content:'';width:4px;height:4px;border-radius:50%;background:var(--acc);flex-shrink:0;margin-top:7px}
.pc-btns{display:flex;gap:10px}
.pb{flex:1;padding:12px;border-radius:12px;font-family:var(--HF);font-size:.76rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;cursor:none;transition:all .25s}
.pb-buy{background:var(--acc);color:#060b07}
.pb-buy:hover{transform:scale(1.02);box-shadow:0 7px 24px rgba(0,0,0,.22)}
.pb-info{color:var(--ink);border:1px solid var(--line)}
.pb-info:hover{background:var(--bg);border-color:var(--line2)}
/* ── VIP TABS ── */
.vip-tabs{
display:flex;gap:4px;margin-top:44px;
background:rgba(10,16,11,.9);border:1px solid var(--line2);border-radius:100px;
padding:5px;width:fit-content;position:relative;z-index:2;
box-shadow:0 4px 24px rgba(0,0,0,.28),inset 0 1px 0 rgba(255,255,255,.06);
margin-left:auto;margin-right:auto;
}
.vip-tab{
height:42px;border-radius:100px;background:transparent;border:none;
display:flex;align-items:center;justify-content:center;gap:7px;
color:var(--ink4);font-family:var(--HF);font-size:.67rem;font-weight:700;
letter-spacing:.06em;text-transform:uppercase;cursor:none;
transition:color .3s ease,background .3s ease,box-shadow .3s ease,transform .35s cubic-bezier(.16,1,.3,1);
padding:0 18px;white-space:nowrap;position:relative;
}
.vip-tab:hover{color:var(--ink2);transform:translateY(-1px)}
.vip-tab.active{
background:var(--acc);color:#060b07;
box-shadow:0 2px 16px rgba(52,168,83,.35),0 1px 0 rgba(255,255,255,.15) inset;
transform:scale(1.05);
}
.vip-tab svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:1.9;flex-shrink:0;transition:stroke .3s}
/* ── VIP PANEL WRAPPER — 3D smooth slide ── */
.vip-tab-panels{
position:relative;
overflow:hidden;
width:100%;
transition:height .52s cubic-bezier(.77,0,.18,1);
}
.vip-tab-panels-inner{
display:flex;
width:100%;
align-items:flex-start;
transition:transform .6s cubic-bezier(.77,0,.18,1);
will-change:transform;
transform-style:preserve-3d;
}
.vip-panel{
min-width:100%;
width:100%;
flex-shrink:0;
box-sizing:border-box;
opacity:1;
transition:opacity .45s ease, transform .6s cubic-bezier(.77,0,.18,1);
transform-origin:center top;
backface-visibility:hidden;
}
.vip-panel.v-hidden{
opacity:0;
pointer-events:none;
transform:scale(0.97) translateY(12px);
}
.vip-panel.v-active{
opacity:1;
pointer-events:all;
transform:scale(1) translateY(0);
}
/* ── 3D TAB TRANSITION EFFECT ── */
@keyframes tabSlideIn3d{
0%{opacity:0;transform:perspective(900px) rotateY(-8deg) translateX(30px) scale(.97)}
100%{opacity:1;transform:perspective(900px) rotateY(0deg) translateX(0) scale(1)}
}
@keyframes tabSlideInRight3d{
0%{opacity:0;transform:perspective(900px) rotateY(8deg) translateX(-30px) scale(.97)}
100%{opacity:1;transform:perspective(900px) rotateY(0deg) translateX(0) scale(1)}
}
.vip-panel.anim-in-left{animation:tabSlideIn3d .55s cubic-bezier(.16,1,.3,1) both}
.vip-panel.anim-in-right{animation:tabSlideInRight3d .55s cubic-bezier(.16,1,.3,1) both}
/* ── SET PC CARDS — PREMIUM REDESIGN ── */
.setpc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px;margin-top:40px}
.setpc-card{
background:linear-gradient(145deg,#0a140b 0%,#0d1f10 60%,#0a100b 100%);
border:1px solid var(--line);border-radius:var(--r2);overflow:hidden;
transition:transform .55s cubic-bezier(.16,1,.3,1),box-shadow .55s,border-color .4s;
position:relative;cursor:default;
}
.setpc-card::before{
content:'';position:absolute;inset:0;
background:radial-gradient(ellipse at 70% 0%,rgba(52,168,83,.09),transparent 55%);
pointer-events:none;z-index:0;
}
.setpc-card:hover{
border-color:var(--acc);
box-shadow:0 24px 80px rgba(0,0,0,.55),0 0 0 1px var(--acc),0 0 60px rgba(52,168,83,.1);
transform:translateY(-10px) perspective(600px) rotateX(1deg);
}
.setpc-head{
height:120px;
background:linear-gradient(135deg,#0d1f10 0%,#0a140b 100%);
position:relative;overflow:hidden;
display:flex;flex-direction:column;justify-content:flex-end;padding:20px 24px;
z-index:1;
}
.setpc-head::before{
content:'';position:absolute;inset:0;
background:radial-gradient(ellipse at 30% 50%,rgba(52,168,83,.14),transparent 60%);
pointer-events:none;
}
.setpc-head::after{
content:'';position:absolute;top:-50%;left:-100%;width:50%;height:200%;
background:linear-gradient(105deg,transparent,rgba(255,255,255,.07),transparent);
transform:skewX(-18deg);
animation:setpcShine 4s ease-in-out infinite;
}
@keyframes setpcShine{0%,100%{left:-100%}45%,55%{left:160%}}
.setpc-head-line{
position:absolute;top:0;left:0;right:0;height:2px;
background:linear-gradient(90deg,transparent,var(--acc),transparent);
animation:setpcLinePulse 3s ease-in-out infinite;
}
@keyframes setpcLinePulse{
0%,100%{opacity:.7;filter:none}
50%{opacity:1;filter:drop-shadow(0 0 4px var(--acc))}
}
.setpc-badge{
font-family:var(--CF);font-size:.46rem;letter-spacing:.22em;
color:var(--acc);text-transform:uppercase;margin-bottom:5px;
display:flex;align-items:center;gap:6px;
}
.setpc-badge::before{
content:'';width:16px;height:1px;background:var(--acc);opacity:.6;
}
.setpc-name{font-family:var(--HF);font-size:1.2rem;font-weight:800;color:#fff;letter-spacing:-.02em;line-height:1.1}
.setpc-sub{
font-family:var(--CF);font-size:.5rem;letter-spacing:.2em;
color:rgba(255,255,255,.38);margin-top:4px;text-transform:uppercase;
}
.setpc-body{padding:24px;position:relative;z-index:1}
.setpc-price{
font-family:var(--HF);font-size:1.6rem;font-weight:800;
color:var(--ink);letter-spacing:-.03em;margin-bottom:18px;
display:flex;align-items:baseline;gap:8px;
}
.setpc-price span{
font-size:.72rem;color:var(--ink4);font-weight:400;
letter-spacing:0;font-family:var(--BF);
}
.setpc-feats{
list-style:none;display:flex;flex-direction:column;gap:9px;
margin-bottom:22px;padding-top:16px;border-top:1px solid var(--line);
}
.setpc-feats li{
display:flex;align-items:flex-start;gap:10px;
font-size:.86rem;color:var(--ink2);font-weight:300;line-height:1.6;
}
.setpc-feats li::before{
content:'';width:5px;height:5px;border-radius:50%;
background:var(--acc);flex-shrink:0;margin-top:7px;
box-shadow:0 0 6px var(--acc);
}
.setpc-contact{
background:rgba(52,168,83,.05);border:1px solid var(--line);
border-radius:14px;padding:14px 16px;
display:flex;align-items:center;justify-content:space-between;
gap:12px;margin-bottom:14px;
transition:border-color .3s,background .3s;
}
.setpc-card:hover .setpc-contact{border-color:var(--line2);background:rgba(52,168,83,.08)}
.setpc-contact-info{}
.setpc-contact-lbl{
font-family:var(--CF);font-size:.5rem;letter-spacing:.2em;
color:var(--ink4);text-transform:uppercase;margin-bottom:3px;
}
.setpc-contact-name{font-family:var(--HF);font-size:.95rem;font-weight:700;color:var(--ink)}
.setpc-contact-arrow{
width:32px;height:32px;background:var(--acc);border-radius:50%;
display:flex;align-items:center;justify-content:center;flex-shrink:0;
transition:transform .3s cubic-bezier(.16,1,.3,1),box-shadow .3s;
}
.setpc-card:hover .setpc-contact-arrow{transform:translateX(3px) scale(1.1);box-shadow:0 4px 16px rgba(52,168,83,.35)}
.setpc-contact-arrow svg{width:12px;height:12px;fill:none;stroke:#060b07;stroke-width:2.2;stroke-linecap:round}
.setpc-btn{
display:flex;align-items:center;justify-content:center;gap:9px;
width:100%;padding:13px 20px;border-radius:12px;
background:var(--acc);color:#060b07;border:none;
font-family:var(--HF);font-size:.76rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;
cursor:none;transition:all .28s;
}
.setpc-btn:hover{opacity:.85;transform:translateY(-2px);box-shadow:0 8px 28px rgba(52,168,83,.25)}
.setpc-btn svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
/* SET PC Header Banner */
.setpc-header-banner{
margin-top:32px;padding:28px 30px;
background:linear-gradient(135deg,#0a140b 0%,#0d1f10 100%);
border:1px solid var(--line2);border-radius:var(--r2);
margin-bottom:8px;position:relative;overflow:hidden;
}
.setpc-header-banner::before{
content:'';position:absolute;top:0;left:0;right:0;height:2px;
background:linear-gradient(90deg,transparent,var(--acc),transparent);
}
.setpc-header-banner::after{
content:'';position:absolute;inset:0;
background:radial-gradient(ellipse at 80% 50%,rgba(52,168,83,.07),transparent 60%);
pointer-events:none;
}
.setpc-header-eyebrow{
font-family:var(--CF);font-size:.54rem;letter-spacing:.28em;
color:var(--acc);text-transform:uppercase;margin-bottom:10px;
display:flex;align-items:center;gap:10px;
}
.setpc-header-eyebrow::before{content:'';width:20px;height:1px;background:var(--acc)}
.setpc-header-title{
font-family:var(--HF);font-size:clamp(1.3rem,3vw,1.8rem);
font-weight:800;color:var(--ink);letter-spacing:-.03em;
margin-bottom:10px;
}
.setpc-header-title em{color:var(--acc);font-style:normal}
.setpc-header-desc{
color:var(--ink3);font-size:.9rem;line-height:1.9;
font-weight:300;max-width:640px;
}
.setpc-header-desc strong{color:var(--ink);font-weight:500}
.setpc-contact-info{display:flex;flex-direction:column;gap:2px}
.setpc-contact-name{font-family:var(--HF);font-size:.78rem;font-weight:700;color:var(--ink)}
.setpc-contact-wa{font-family:var(--CF);font-size:.58rem;color:var(--ink4);letter-spacing:.04em}
.setpc-wa-btn{display:flex;align-items:center;gap:7px;background:#25d366;color:#fff;border:none;border-radius:10px;padding:9px 16px;font-family:var(--HF);font-size:.7rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;cursor:none;transition:all .22s;flex-shrink:0;text-decoration:none}
.setpc-wa-btn:hover{background:#128c7e;transform:scale(1.04);color:#fff}
.setpc-wa-btn svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:1.8;flex-shrink:0}
.setpc-site{font-family:var(--CF);font-size:.52rem;letter-spacing:.14em;color:var(--ink4);text-align:center;text-transform:uppercase;padding-top:4px}
/* PC prod grid — same as android but slightly different badge */
.pc-tier-badge{position:absolute;top:16px;right:16px;z-index:3;font-family:var(--CF);font-size:.48rem;letter-spacing:.12em;color:#fff;background:rgba(52,168,83,.18);border:1px solid var(--acc);padding:4px 10px;border-radius:100px;text-transform:uppercase}
/* ── DOWNLOAD ── */
.dl-wrap{max-width:680px;margin:56px auto 0}
.dl-card{background:#0d1f10;border:1px solid var(--line2);border-radius:var(--r2);padding:52px;text-align:center;position:relative;overflow:hidden}
#dlcv{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.dl-in{position:relative;z-index:2}
.dl-badge{font-family:var(--CF);font-size:.58rem;letter-spacing:.24em;color:rgba(255,255,255,.38);margin-bottom:16px;display:flex;align-items:center;justify-content:center;gap:8px}
.dl-dot{width:5px;height:5px;border-radius:50%;background:#00ff88;animation:ping 2s ease infinite}
.dl-title{font-family:var(--HF);font-size:3.2rem;font-weight:800;color:#fff;letter-spacing:-.04em;margin-bottom:14px}
.dl-desc{color:rgba(255,255,255,.52);font-size:1rem;line-height:1.9;margin-bottom:10px;font-weight:300;max-width:520px;margin-left:auto;margin-right:auto}
.dl-desc strong{color:rgba(255,255,255,.82);font-weight:500}
.dl-note{font-family:var(--CF);font-size:.56rem;letter-spacing:.18em;color:rgba(255,255,255,.27);margin-bottom:30px}
.btn-w{background:#fff;color:var(--ink);padding:14px 34px;border-radius:100px;font-family:var(--HF);font-size:.8rem;font-weight:800;letter-spacing:.06em;display:inline-flex;align-items:center;gap:9px;cursor:none;transition:all .28s}
.btn-w:hover{background:rgba(255,255,255,.88);transform:translateY(-2px);box-shadow:0 10px 32px rgba(0,0,0,.32)}
.btn-w .bi{fill:var(--ink)}
/* ── FAQ ── */
.faq-list{margin-top:48px;display:flex;flex-direction:column;gap:9px}
.fq{background:#0a100b;border:1px solid var(--line);border-radius:14px;overflow:hidden;transition:border-color .3s}
.fq.on{border-color:var(--acc)}
.fq-q{padding:22px 24px;display:flex;justify-content:space-between;align-items:center;cursor:none;gap:14px}
.fq-q:hover{background:var(--bg)}
.fq-ql{font-family:var(--BF);font-size:1rem;font-weight:500;color:var(--ink)}
.fq-ar{width:24px;height:24px;flex-shrink:0;background:var(--bg2);border-radius:50%;display:flex;align-items:center;justify-content:center;transition:transform .38s,background .3s;border:1px solid var(--line)}
.fq-ar svg{width:10px;height:10px;fill:none;stroke:var(--ink2);stroke-width:2;stroke-linecap:round;transition:stroke .3s}
.fq.on .fq-ar{transform:rotate(180deg);background:var(--acc);border-color:var(--acc)}
.fq.on .fq-ar svg{stroke:var(--bg)}
.fq-a{max-height:0;overflow:hidden;transition:max-height .48s cubic-bezier(.22,1,.36,1)}
.fq.on .fq-a{max-height:500px}
.fq-ai{padding:0 24px 22px;color:var(--ink3);line-height:1.9;font-size:.92rem;font-weight:300;border-top:1px solid var(--line);padding-top:16px}
const IMG_MAP={
'paraekrraug-e.jpeg':'assets/image/paraekrraug-e.jpeg',
'kmeannddrd-e.jpeg':'assets/image/kmeannddrd-e.jpeg',
'eeetdpkza2z-e.jpeg':'assets/image/eeetdpkza2z-e.jpeg',
'sphan_px-e.jpeg':'assets/image/sphan_px-e.jpeg',
'vemz444-e.jpeg':'assets/image/vemz444-e.jpeg',
'roo-e.jpeg':'assets/image/roo-e.jpeg',
};
/* ── CONTRIBUTORS ── */
.ct-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;margin-top:56px}
.contrib-layout{display:grid;grid-template-columns:1fr 300px;gap:60px;align-items:center}
@media(max-width:900px){.contrib-layout{grid-template-columns:1fr;gap:36px}}
.contrib-orb-wrap{position:relative;display:flex;align-items:center;justify-content:center;aspect-ratio:1;max-width:300px;margin:0 auto;opacity:.85}
.contrib-orb-cv{width:100%;height:100%;display:block}
.ctc{background:#0a100b;border:1px solid var(--line);border-radius:var(--r2);padding:32px 26px;transition:transform .5s cubic-bezier(.16,1,.3,1),box-shadow .5s cubic-bezier(.16,1,.3,1),border-color .35s;position:relative;overflow:hidden}
.ctc::after{content:'';position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--acc);transform:scaleX(0);transition:transform .38s}
.ctc:hover{border-color:var(--line2);box-shadow:0 20px 60px rgba(0,0,0,.5);transform:translateY(-7px)}
.ctc:hover::after{transform:scaleX(1)}
.ctc-av{width:90px;height:90px;border-radius:50%;margin:0 auto 20px;position:relative}
.ctc-av canvas{width:90px;height:90px;border-radius:50%;display:block}
.ctc-n{font-family:var(--HF);font-size:1.12rem;font-weight:800;letter-spacing:-.01em;color:var(--ink);text-align:center;margin-bottom:4px}
.ctc-r{font-family:var(--CF);font-size:.56rem;letter-spacing:.18em;color:var(--ink4);text-transform:uppercase;text-align:center;margin-bottom:10px}
.ctc-desc{font-size:.84rem;color:var(--ink3);text-align:center;line-height:1.75;font-weight:300;margin-bottom:20px}
.ctc-soc{display:flex;justify-content:center;gap:8px}
.ctc-sb{width:34px;height:34px;border-radius:50%;background:var(--bg2);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;cursor:none;transition:all .22s}
.ctc-sb-link{width:34px;height:34px;border-radius:50%;background:var(--bg2);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;cursor:none;transition:all .22s;text-decoration:none}
.ctc-sb svg,.ctc-sb-link svg{width:13px;height:13px;fill:none;stroke:var(--ink3);stroke-width:1.8;transition:stroke .22s}
.ctc-sb:hover,.ctc-sb-link:hover{background:var(--acc);border-color:var(--acc)}
.ctc-sb:hover svg,.ctc-sb-link:hover svg{stroke:#fff}
/* ── TESTIMONIALS ── */
.testi-track{display:flex;gap:18px;margin-top:56px;overflow:hidden;position:relative}
.testi-track::after{content:'';position:absolute;right:0;top:0;bottom:0;width:80px;background:linear-gradient(90deg,transparent,var(--bg));pointer-events:none;z-index:2}
.testi-inner{display:flex;gap:18px;animation:testiScroll 32s linear infinite}
.testi-inner:hover{animation-play-state:paused}
.tc{
background:#0a100b;border:1px solid var(--line);border-radius:var(--r2);
padding:28px;min-width:320px;max-width:320px;flex-shrink:0;
transition:all .32s;cursor:default;position:relative;overflow:hidden;
}
.tc:hover{border-color:var(--acc);transform:translateY(-7px);box-shadow:0 20px 60px rgba(0,0,0,.5),0 0 28px rgba(52,168,83,.06)}
.tc::before{content:'';position:absolute;top:0;left:0;width:3px;height:0;background:var(--acc);transition:height .5s cubic-bezier(.22,1,.36,1)}
.tc:hover::before{height:100%}
.tc-stars{display:flex;gap:3px;margin-bottom:14px}
.tc-star{width:12px;height:12px;fill:var(--acc);stroke:none}
.tc-text{font-size:.9rem;color:var(--ink2);line-height:1.85;font-weight:300;margin-bottom:20px;font-style:italic}
.tc-author{display:flex;align-items:center;gap:12px}
.tc-av{width:38px;height:38px;border-radius:50%;background:var(--bg2);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-family:var(--HF);font-size:.85rem;font-weight:800;color:var(--ink);flex-shrink:0}
.tc-an{font-family:var(--BF);font-size:.88rem;font-weight:500;color:var(--ink)}
.tc-ar{font-family:var(--CF);font-size:.52rem;letter-spacing:.14em;color:var(--ink4);text-transform:uppercase;margin-top:2px}
@keyframes testiScroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}
/* ── SOCMED ── */
.sm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(222px,1fr));gap:14px;margin-top:50px}
.smc{display:flex;align-items:center;gap:16px;padding:20px;background:#0a100b;border:1px solid var(--line);border-radius:16px;transition:all .3s;cursor:pointer;position:relative;overflow:hidden}
.smc::after{content:'';position:absolute;inset:0;background:var(--acc-t);opacity:0;transition:opacity .3s}
.smc:hover{border-color:var(--acc);transform:translateY(-4px);box-shadow:var(--sh2)}
.smc:hover::after{opacity:1}
.smc-ic{width:46px;height:46px;border-radius:13px;background:var(--bg2);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .25s;position:relative;z-index:1}
.smc-ic svg{width:19px;height:19px;fill:none;stroke:var(--ink2);stroke-width:1.7;transition:stroke .25s}
.smc:hover .smc-ic{background:var(--acc)}
.smc:hover .smc-ic svg{stroke:#fff}
.smc-n{font-family:var(--BF);font-size:.92rem;font-weight:500;color:var(--ink);position:relative;z-index:1}
.smc-h{font-size:.78rem;color:var(--ink4);font-weight:300;margin-top:2px;position:relative;z-index:1}
/* ── CONTACT — SELLER CARDS ── */
.sellers-wrap{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:16px;margin-top:54px}
.seller-card{
background:#0a100b;border:1px solid var(--line);border-radius:var(--r2);
padding:28px;transition:all .35s;position:relative;overflow:hidden;
}
.seller-card::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,var(--acc),transparent);transform:scaleX(0);transform-origin:center;transition:transform .42s cubic-bezier(.22,1,.36,1)}
.seller-card:hover{border-color:var(--acc);transform:translateY(-5px);box-shadow:var(--sh2)}
.seller-card:hover::before{transform:scaleX(1)}
.sc-top{display:flex;align-items:flex-start;gap:14px;margin-bottom:20px}
.sc-av{width:52px;height:52px;border-radius:14px;background:var(--acc);flex-shrink:0;display:flex;align-items:center;justify-content:center;overflow:hidden}
.sc-av canvas{width:52px;height:52px;display:block}
.sc-meta{}
.sc-badge{display:inline-block;font-family:var(--CF);font-size:.48rem;letter-spacing:.16em;color:var(--bg);background:var(--acc);padding:3px 9px;border-radius:3px;margin-bottom:5px;text-transform:uppercase}
.sc-name{font-family:var(--HF);font-size:1.18rem;font-weight:800;color:var(--ink);letter-spacing:-.01em;line-height:1.1}
.sc-role{font-family:var(--CF);font-size:.52rem;letter-spacing:.15em;color:var(--ink4);text-transform:uppercase;margin-top:3px}
.sc-contacts{display:flex;flex-direction:column;gap:10px}
.sc-row{display:flex;align-items:center;gap:12px;font-size:.88rem;color:var(--ink2);font-weight:300;cursor:none;transition:color .2s}
.sc-row:hover{color:var(--acc)}
.sc-ico{width:34px;height:34px;background:var(--bg2);border:1px solid var(--line);border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .22s}
.sc-ico svg{width:13px;height:13px;fill:none;stroke:var(--ink);stroke-width:1.7;transition:stroke .22s}
.sc-row:hover .sc-ico{background:var(--acc);border-color:var(--acc)}
.sc-row:hover .sc-ico svg{stroke:#fff}
.sc-lbl{font-size:.78rem;font-weight:500;color:var(--ink);line-height:1.2}
.sc-val{font-size:.74rem;color:var(--ink4);font-weight:300}
/* ── CONTACT FORM ── */
.cn-form{background:#0a100b;border:1px solid var(--line);border-radius:var(--r2);padding:34px;margin-top:18px;transition:border-color .3s}
.cn-form:hover{border-color:var(--line2)}
.cn-form-title{font-family:var(--CF);font-size:.56rem;font-weight:700;letter-spacing:.22em;color:var(--ink4);text-transform:uppercase;margin-bottom:22px;padding-bottom:14px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px}
.cn-form-title::before{content:'';width:18px;height:1px;background:var(--acc)}
.cf-group{margin-bottom:18px}
.cf-label{font-family:var(--HF);font-size:.78rem;font-weight:600;color:var(--ink2);margin-bottom:8px;display:block;letter-spacing:.01em}
.cf-input,.cf-select,.cf-textarea{width:100%;background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:13px 16px;font-family:var(--BF);font-size:.9rem;color:var(--ink);transition:border-color .25s,box-shadow .25s;outline:none;-webkit-appearance:none;appearance:none}
.cf-input:focus,.cf-select:focus,.cf-textarea:focus{border-color:var(--acc);box-shadow:0 0 0 3px var(--acc-t)}
.cf-select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 10'%3E%3Cpath d='M1 3l4 4 4-4' stroke='%23888' stroke-width='1.5' stroke-linecap='round' fill='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;background-size:10px;padding-right:38px}
.cf-textarea{resize:vertical;min-height:120px;line-height:1.75}
.cf-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:600px){.cf-row{grid-template-columns:1fr}}
.cf-btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;padding:14px 30px;border-radius:100px;background:var(--acc);color:#060b07;font-family:var(--HF);font-size:.8rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;cursor:none;transition:all .28s;border:none;margin-top:4px}
.cf-btn svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.cf-btn:hover{transform:translateY(-2px) scale(1.03);box-shadow:0 9px 32px rgba(0,0,0,.22)}
.cf-success{display:none;padding:14px 18px;background:rgba(0,200,100,.07);border:1px solid rgba(0,200,100,.22);border-radius:12px;margin-top:14px;font-size:.87rem;color:var(--ink2);text-align:center}
.cf-success.on{display:block}
/* ── SUPPORT CENTER ── */
.support-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;margin-top:54px}
.sup-card{background:#0a100b;border:1px solid var(--line);border-radius:var(--r2);padding:32px;transition:all .35s;position:relative;overflow:hidden}
.sup-card::after{content:'';position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--acc);transform:scaleX(0);transition:transform .42s cubic-bezier(.22,1,.36,1)}
.sup-card:hover{border-color:var(--acc);transform:translateY(-5px);box-shadow:var(--sh2)}
.sup-card:hover::after{transform:scaleX(1)}
.sup-ico{width:48px;height:48px;background:var(--acc-t);border:1px solid var(--line);border-radius:13px;display:flex;align-items:center;justify-content:center;margin-bottom:18px;transition:background .3s}
.sup-ico svg{width:21px;height:21px;fill:none;stroke:var(--acc);stroke-width:1.6;transition:stroke .3s}
.sup-card:hover .sup-ico{background:var(--acc)}
.sup-card:hover .sup-ico svg{stroke:#fff}
.sup-title{font-family:var(--HF);font-size:1.08rem;font-weight:800;color:var(--ink);margin-bottom:10px;letter-spacing:-.01em}
.sup-desc{font-size:.87rem;color:var(--ink3);line-height:1.85;font-weight:300;margin-bottom:20px}
.sup-btn{display:inline-flex;align-items:center;gap:8px;padding:9px 20px;border-radius:100px;background:var(--acc);color:var(--bg);font-family:var(--HF);font-size:.68rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;cursor:none;transition:all .25s;border:none}
.sup-btn:hover{opacity:.8;transform:translateY(-2px)}
.sup-btn svg{width:11px;height:11px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
/* ── NEWSLETTER ── */
.nl-wrap{background:#0a100b;border:1px solid var(--line);border-radius:var(--r2);padding:48px 40px;margin-top:56px;position:relative;overflow:hidden;display:flex;flex-direction:column;align-items:center;text-align:center;gap:24px;flex-wrap:wrap}
.nl-wrap::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,var(--acc),transparent)}
.nl-text{}
.nl-h{font-family:var(--HF);font-size:1.4rem;font-weight:800;letter-spacing:-.02em;color:var(--ink);margin-bottom:6px}
.nl-p{font-size:.9rem;color:var(--ink3);font-weight:300;max-width:440px;margin:0 auto}
.nl-form{display:flex;gap:10px;width:100%;max-width:500px;justify-content:center}
.nl-input{flex:1;min-width:0;background:var(--bg);border:1px solid var(--line);border-radius:100px;padding:13px 20px;font-family:var(--BF);font-size:.9rem;color:var(--ink);outline:none;transition:border-color .25s,box-shadow .25s}
.nl-input:focus{border-color:var(--acc);box-shadow:0 0 0 3px var(--acc-t)}
.nl-btn{background:var(--acc);color:#060b07;border:none;border-radius:100px;padding:13px 24px;font-family:var(--HF);font-size:.76rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;cursor:none;transition:all .25s;display:flex;align-items:center;gap:8px;white-space:nowrap}
.nl-btn svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.nl-btn:hover{opacity:.85;transform:translateY(-1px)}
/* ── HOW IT WORKS ── */
.how-steps{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:0;margin-top:56px;position:relative}
.how-steps::before{content:'';position:absolute;top:36px;left:10%;right:10%;height:1px;background:linear-gradient(90deg,transparent,var(--line2),var(--line2),transparent);z-index:0}
@media(max-width:700px){.how-steps::before{display:none}}
.how-step{text-align:center;padding:0 20px 40px;position:relative;z-index:1}
.how-num{
width:72px;height:72px;border-radius:50%;background:#0a100b;border:1px solid var(--line);
display:flex;align-items:center;justify-content:center;margin:0 auto 20px;
font-family:var(--CF);font-size:1.1rem;font-weight:700;color:var(--ink);
transition:all .35s;box-shadow:var(--sh);
}
.how-step:hover .how-num{background:var(--acc);color:#060b07;border-color:var(--ink);transform:scale(1.1)}
.how-h{font-family:var(--HF);font-size:1rem;font-weight:700;color:var(--ink);margin-bottom:10px}
.how-p{font-size:.85rem;color:var(--ink3);line-height:1.8;font-weight:300;max-width:200px;margin:0 auto}
/* ── TECH SPECS TABLE ── */
.specs-wrap{margin-top:54px;background:#0a100b;border:1px solid var(--line);border-radius:var(--r2);overflow:hidden}
.specs-row{display:grid;grid-template-columns:1fr 1fr 1fr;border-bottom:1px solid var(--line);transition:background .2s}
.specs-row:hover{background:var(--bg)}
.specs-row:last-child{border-bottom:none}
.specs-head{background:var(--acc) !important;color:#060b07}
.specs-cell{padding:18px 22px;font-size:.88rem;color:var(--ink2);font-weight:300;display:flex;align-items:center;gap:8px}
.specs-head .specs-cell{font-family:var(--CF);font-size:.62rem;letter-spacing:.16em;color:rgba(255,255,255,.95);font-weight:700;text-transform:uppercase}
.specs-ok{width:16px;height:16px;flex-shrink:0}
.specs-ok svg{width:100%;height:100%;fill:none;stroke:var(--acc);stroke-width:2;stroke-linecap:round}
/* ── FOOTER FULL ── */
footer{background:#060b07;border-top:1px solid var(--line2);position:relative;overflow:hidden;z-index:1}
#ftCv{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;opacity:.12}
.ft-top{padding:64px 20px 48px;max-width:1120px;margin:0 auto;display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:40px;position:relative;z-index:1}
@media(max-width:800px){.ft-top{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.ft-top{grid-template-columns:1fr}}
.ft-brand{}
.ft-logo{font-family:var(--HF);font-size:1.8rem;font-weight:800;color:#fff;letter-spacing:-.02em;margin-bottom:12px}
.ft-logo span{color:var(--acc)}
.ft-tagline{font-size:.88rem;color:rgba(255,255,255,.42);line-height:1.8;font-weight:300;max-width:280px;margin-bottom:22px}
.ft-socials{display:flex;gap:9px}
.ft-soc{width:36px;height:36px;border-radius:10px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.1);display:flex;align-items:center;justify-content:center;cursor:none;transition:all .22s}
.ft-soc svg{width:14px;height:14px;fill:none;stroke:rgba(255,255,255,.5);stroke-width:1.7;transition:stroke .22s}
.ft-soc:hover{background:var(--acc);border-color:var(--acc)}
.ft-soc:hover svg{stroke:#fff}
.ft-col-title{font-family:var(--HF);font-size:.85rem;font-weight:700;color:#fff;margin-bottom:16px;letter-spacing:-.01em;padding-bottom:10px;border-bottom:1px solid rgba(255,255,255,.1)}
.ft-links-list{display:flex;flex-direction:column;gap:9px}
.ft-link-item{font-family:var(--BF);font-size:.86rem;color:rgba(255,255,255,.38);font-weight:300;cursor:none;transition:color .2s;background:none;border:none;text-align:left;padding:0}
.ft-link-item:hover{color:rgba(255,255,255,.75)}
.ft-bottom{border-top:1px solid rgba(255,255,255,.08);padding:22px 20px;max-width:1120px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;position:relative;z-index:1}
.ft-copy{font-family:var(--CF);font-size:.54rem;letter-spacing:.15em;color:rgba(255,255,255,.28);text-transform:uppercase}
.ft-bottom-links{display:flex;gap:16px;flex-wrap:wrap}
.ft-bl{font-family:var(--CF);font-size:.52rem;letter-spacing:.12em;color:rgba(255,255,255,.28);text-transform:uppercase;cursor:none;transition:color .2s;background:none;border:none;padding:0}
.ft-bl:hover{color:rgba(255,255,255,.6)}
/* ── THEME PICKER ── */
#tpov{position:fixed;inset:0;z-index:6000;background:rgba(10,10,10,.65);display:flex;align-items:flex-end;justify-content:center;opacity:0;pointer-events:none;transition:opacity .32s;backdrop-filter:blur(14px)}
#tpov.on{opacity:1;pointer-events:all}
.tp-panel{width:min(540px,100vw);background:#0a100b;border:1px solid var(--line);border-radius:28px 28px 0 0;padding:0 0 env(safe-area-inset-bottom);transform:translateY(100%);transition:transform .46s cubic-bezier(.22,1,.36,1);max-height:88vh;display:flex;flex-direction:column}
#tpov.on .tp-panel{transform:translateY(0)}
.tp-handle{width:44px;height:4px;background:var(--line2);border-radius:2px;margin:14px auto 0}
.tp-hdr{padding:18px 24px 14px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;flex-shrink:0}
.tp-ttl{font-family:var(--HF);font-size:1.05rem;font-weight:800;color:var(--ink);letter-spacing:-.01em}
.tp-close{width:30px;height:30px;background:var(--bg2);border:1px solid var(--line);border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:none;transition:all .2s}
.tp-close:hover{background:var(--acc);color:var(--bg);border-color:var(--acc)}
.tp-close svg{width:10px;height:10px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.tp-scroll{flex:1;overflow-y:auto;padding:18px 24px 28px;scrollbar-width:none}
.tp-scroll::-webkit-scrollbar{display:none}
.tp-lbl{font-family:var(--CF);font-size:.52rem;letter-spacing:.24em;color:var(--ink4);text-transform:uppercase;margin-bottom:10px;margin-top:18px}
.tp-lbl:first-child{margin-top:0}
.tp-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:9px;margin-bottom:4px}
.tp-sw{aspect-ratio:1;border-radius:11px;border:2.5px solid transparent;cursor:none;transition:all .2s;position:relative;overflow:hidden}
.tp-sw.act{border-color:var(--ink);box-shadow:0 0 0 3px var(--acc-t)}
.tp-sw:hover{transform:scale(1.16);z-index:2}
.tp-sn{position:absolute;bottom:2px;left:0;right:0;text-align:center;font-family:var(--CF);font-size:.38rem;letter-spacing:.04em;color:rgba(255,255,255,.75);text-shadow:0 1px 3px rgba(0,0,0,.6);text-transform:uppercase}
/* ── HELP CENTER MODAL ── */
#helpov{position:fixed;inset:0;z-index:6000;background:rgba(10,10,10,.72);display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .3s;backdrop-filter:blur(16px);padding:20px}
#helpov.on{opacity:1;pointer-events:all}
.help-panel{background:#0a100b;border:1px solid var(--line);border-radius:var(--r2);max-width:580px;width:100%;max-height:86vh;overflow-y:auto;transform:scale(.9) translateY(20px);transition:transform .4s cubic-bezier(.22,1,.36,1);box-shadow:0 48px 120px rgba(0,0,0,.28)}
#helpov.on .help-panel{transform:scale(1) translateY(0)}
.help-panel::-webkit-scrollbar{width:2px}
.help-panel::-webkit-scrollbar-thumb{background:var(--line2)}
.help-head{padding:28px 28px 22px;border-bottom:1px solid var(--line);display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.help-htitle{font-family:var(--HF);font-size:1.55rem;font-weight:800;color:var(--ink);letter-spacing:-.02em}
.help-htag{font-family:var(--CF);font-size:.54rem;letter-spacing:.18em;color:var(--ink4);text-transform:uppercase;margin-top:5px}
.help-x{width:32px;height:32px;flex-shrink:0;background:var(--bg2);border:1px solid var(--line);border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:none;transition:all .2s}
.help-x:hover{background:var(--acc);color:var(--bg);border-color:var(--acc)}
.help-x svg{width:10px;height:10px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.help-body{padding:24px 28px}
.help-sec{margin-bottom:26px}
.help-sec-t{font-family:var(--HF);font-size:.95rem;font-weight:700;color:var(--ink);margin-bottom:14px;padding-bottom:9px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:9px}
.help-sec-t::before{content:'';width:16px;height:1px;background:var(--acc);flex-shrink:0}
.help-item{display:flex;align-items:flex-start;gap:13px;padding:12px 0;border-bottom:1px solid var(--line)}
.help-item:last-child{border-bottom:none}
.help-item-ico{width:32px;height:32px;border-radius:9px;background:var(--acc-t);display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px}
.help-item-ico svg{width:13px;height:13px;fill:none;stroke:var(--acc);stroke-width:1.8}
.help-item-t{font-size:.9rem;font-weight:500;color:var(--ink);margin-bottom:5px}
.help-item-d{font-size:.82rem;color:var(--ink3);font-weight:300;line-height:1.8}
.help-foot{padding:16px 28px 28px;border-top:1px solid var(--line)}
.help-foot-lbl{font-family:var(--CF);font-size:.52rem;letter-spacing:.22em;color:var(--ink4);text-transform:uppercase;margin-bottom:12px}
.help-foot-links{display:flex;flex-wrap:wrap;gap:8px}
.hfl{font-family:var(--CF);font-size:.54rem;letter-spacing:.1em;color:var(--ink3);border:1px solid var(--line);border-radius:100px;padding:6px 16px;text-transform:uppercase;cursor:none;transition:all .22s;background:var(--bg)}
.hfl:hover{background:var(--acc);color:#060b07;border-color:var(--ink)}
/* ── PAYMENT DIALOG ── */
#payov{position:fixed;inset:0;z-index:5500;background:rgba(3,7,3,.88);display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .3s;backdrop-filter:blur(24px);padding:16px}
#payov.on{opacity:1;pointer-events:all}
.pay-panel{background:#080e09;border:1px solid rgba(52,168,83,.18);border-radius:20px;max-width:420px;width:100%;position:relative;transform:translateY(20px) scale(.97);transition:transform .38s cubic-bezier(.22,1,.36,1);max-height:94vh;overflow-y:auto;box-shadow:0 32px 80px rgba(0,0,0,.55),0 0 0 1px rgba(52,168,83,.06) inset}
#payov.on .pay-panel{transform:translateY(0) scale(1)}
.pay-panel::-webkit-scrollbar{width:0}
.pay-head{padding:22px 22px 16px;border-bottom:1px solid rgba(52,168,83,.1);display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.pay-htitle{font-family:var(--HF);font-size:1rem;font-weight:700;color:var(--ink);letter-spacing:-.01em}
.pay-htag{font-size:.7rem;color:var(--ink4);margin-top:3px;font-weight:400;font-family:var(--BF)}
.pay-x{width:28px;height:28px;flex-shrink:0;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08);border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:none;transition:all .18s;color:var(--ink3)}
.pay-x:hover{background:rgba(255,255,255,.1);color:var(--ink)}
.pay-x svg{width:9px;height:9px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.pay-prod-bar{padding:14px 22px;border-bottom:1px solid rgba(52,168,83,.08);display:flex;align-items:center;gap:12px}
.pay-prod-tier{font-family:var(--CF);font-size:.56rem;letter-spacing:.16em;color:var(--acc);text-transform:uppercase;font-weight:700}
.pay-prod-pname{font-family:var(--HF);font-size:.9rem;font-weight:700;color:var(--ink);margin-top:2px}
.pay-prod-price-tag{margin-left:auto;font-family:var(--HF);font-size:.95rem;font-weight:800;color:var(--acc);letter-spacing:-.01em;white-space:nowrap}
.pay-methods-wrap{padding:16px 22px 20px}
.pay-method-heading{font-size:.6rem;letter-spacing:.22em;text-transform:uppercase;color:var(--ink4);margin-bottom:12px;font-family:var(--CF)}
.pay-grid{display:flex;flex-direction:column;gap:8px}
.pmt-btn{display:flex;align-items:center;gap:14px;padding:13px 16px;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.07);border-radius:12px;cursor:none;transition:background .18s,border-color .18s,transform .18s;text-align:left;width:100%}
.pmt-btn:hover{background:rgba(52,168,83,.07);border-color:rgba(52,168,83,.22);transform:translateX(2px)}
/* International payment horizontal grid */
.pmt-intl-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.pmt-intl-btn{display:flex;flex-direction:column;align-items:center;gap:7px;padding:12px 8px 10px;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.07);border-radius:12px;cursor:none;transition:background .18s,border-color .18s,transform .15s;text-align:center;width:100%}
.pmt-intl-btn:hover{background:rgba(52,168,83,.07);border-color:rgba(52,168,83,.22);transform:translateY(-2px)}
.pmt-intl-ico{width:42px;height:42px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.pmt-intl-name{font-family:var(--HF);font-size:.7rem;font-weight:700;color:var(--ink2);letter-spacing:.03em;white-space:nowrap}
.pmt-ico{width:38px;height:38px;border-radius:9px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.pmt-info{flex:1}
.pmt-name{font-family:var(--HF);font-size:.85rem;font-weight:700;color:var(--ink)}
.pmt-desc{font-size:.72rem;color:var(--ink4);margin-top:2px;font-weight:300;font-family:var(--BF)}
.pmt-arrow{width:16px;height:16px;opacity:.25;flex-shrink:0;transition:opacity .18s,transform .18s}
.pmt-btn:hover .pmt-arrow{opacity:.7;transform:translateX(2px)}
.pmt-arrow svg{width:100%;height:100%;fill:none;stroke:var(--acc);stroke-width:2;stroke-linecap:round}
.pay-qris-view{display:none;flex-direction:column;align-items:center;padding:0 22px 22px;gap:14px}
.pay-qris-view.on{display:flex}
.pqr-title{font-family:var(--HF);font-size:.88rem;font-weight:700;color:var(--ink);text-align:center;margin-top:4px}
.pqr-frame{position:relative;background:#fff;border-radius:14px;padding:14px;width:100%;max-width:260px;display:flex;flex-direction:column;align-items:center;gap:10px;box-shadow:0 4px 28px rgba(0,0,0,.3)}
.pqr-label{font-size:.52rem;letter-spacing:.2em;text-transform:uppercase;color:#555;font-family:var(--CF);font-weight:700}
.pqr-img{width:100%;max-width:232px;height:auto;display:block;border-radius:6px}
.pqr-scan-ring{position:absolute;inset:8px;border-radius:10px;border:2px solid rgba(52,168,83,.45);pointer-events:none;animation:qrPulse 2.6s ease-in-out infinite}
@keyframes qrPulse{0%,100%{opacity:.35;transform:scale(1)}50%{opacity:.85;transform:scale(1.008)}}
.pqr-amount{font-family:var(--HF);font-size:1rem;font-weight:800;color:#111;text-align:center;letter-spacing:-.01em}
.pqr-note{font-size:.52rem;color:#888;letter-spacing:.1em;text-transform:uppercase;text-align:center;font-family:var(--CF)}
.pqr-actions{display:flex;flex-direction:column;gap:8px;width:100%;max-width:260px}
.pqr-dl-btn{width:100%;padding:12px;border-radius:10px;background:var(--acc);color:#060b07;font-family:var(--HF);font-size:.78rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;cursor:none;transition:opacity .18s,transform .18s;border:none;display:flex;align-items:center;justify-content:center;gap:8px}
.pqr-dl-btn:hover{opacity:.88;transform:scale(1.02)}
.pqr-wa-btn{width:100%;padding:11px;border-radius:10px;background:transparent;color:var(--ink3);border:1px solid rgba(255,255,255,.1);font-family:var(--HF);font-size:.75rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;cursor:none;transition:all .18s;display:flex;align-items:center;justify-content:center;gap:8px}
.pqr-wa-btn:hover{background:rgba(37,211,102,.1);border-color:rgba(37,211,102,.3);color:#25d366}
.pqr-back{background:none;border:none;font-size:.65rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink4);cursor:none;padding:4px;font-family:var(--CF);transition:color .18s;display:flex;align-items:center;gap:6px}
.pqr-back:hover{color:var(--ink)}
.pay-bottom-note{border-top:1px solid rgba(52,168,83,.08);padding:12px 22px 16px;text-align:center;font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink4);font-family:var(--CF);line-height:1.9}
/* ── LEGAL MODAL ── */
#legalov{position:fixed;inset:0;z-index:6100;background:rgba(10,10,10,.72);display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .3s;backdrop-filter:blur(16px);padding:20px}
#legalov.on{opacity:1;pointer-events:all}
#legalov{position:fixed;inset:0;z-index:6100;background:rgba(10,10,10,.72);display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .3s;backdrop-filter:blur(16px);padding:20px}
#legalov.on{opacity:1;pointer-events:all}
.legal-panel{background:#0a100b;border:1px solid var(--line);border-radius:var(--r2);max-width:540px;width:100%;max-height:86vh;overflow-y:auto;transform:scale(.9) translateY(20px);transition:transform .4s cubic-bezier(.22,1,.36,1);box-shadow:0 48px 120px rgba(0,0,0,.28)}
#legalov.on .legal-panel{transform:scale(1) translateY(0)}
.legal-panel::-webkit-scrollbar{width:2px}
.legal-panel::-webkit-scrollbar-thumb{background:var(--line2)}
.ltabs{display:flex;gap:6px;padding:20px 24px 0;flex-wrap:wrap;border-bottom:1px solid var(--line);padding-bottom:0}
.ltab{font-family:var(--CF);font-size:.58rem;letter-spacing:.1em;padding:8px 16px;border-radius:100px 100px 0 0;border:1px solid transparent;background:transparent;color:var(--ink3);cursor:none;transition:all .22s;text-transform:uppercase;border-bottom:none;margin-bottom:-1px}
.ltab.act{background:#0a100b;color:var(--ink);border-color:var(--line);border-bottom-color:#0a100b}
.legal-head{padding:22px 26px 18px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:14px}
.legal-title{font-family:var(--HF);font-size:1.35rem;font-weight:800;color:var(--ink);letter-spacing:-.02em}
.legal-x{width:30px;height:30px;background:var(--bg2);border:1px solid var(--line);border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:none;transition:all .2s;flex-shrink:0}
.legal-x:hover{background:var(--acc);border-color:var(--acc)}
.legal-x svg{width:10px;height:10px;fill:none;stroke:var(--ink);stroke-width:2;stroke-linecap:round}
.legal-x:hover svg{stroke:var(--bg)}
.legal-body{padding:24px 26px 30px}
.legal-section{margin-bottom:22px;padding-bottom:22px;border-bottom:1px solid var(--line)}
.legal-section:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}
.legal-section-t{font-family:var(--HF);font-size:.92rem;font-weight:700;color:var(--ink);margin-bottom:9px;display:flex;align-items:center;gap:8px}
.legal-section-t::before{content:'';width:3px;height:14px;background:var(--acc);border-radius:2px;flex-shrink:0}
.legal-section-p{font-size:.85rem;color:var(--ink3);line-height:1.9;font-weight:300}
/* ── MODAL (PRODUCT) ── */
#mdov{position:fixed;inset:0;z-index:5000;background:rgba(10,10,10,.72);display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .3s;backdrop-filter:blur(16px);padding:20px}
#mdov.on{opacity:1;pointer-events:all}
.md{background:#0a100b;border:1px solid var(--line);border-radius:var(--r2);max-width:520px;width:100%;position:relative;transform:scale(.88) translateY(18px);transition:transform .4s cubic-bezier(.22,1,.36,1);max-height:90vh;overflow-y:auto;box-shadow:0 48px 120px rgba(0,0,0,.28)}
#mdov.on .md{transform:scale(1) translateY(0)}
.md::-webkit-scrollbar{width:2px}
.md::-webkit-scrollbar-thumb{background:var(--line2)}
.md-head{height:92px;position:relative;background:#0d1f10;border-radius:var(--r2) var(--r2) 0 0;overflow:hidden;display:flex;align-items:center;justify-content:center}
#mdcv{position:absolute;inset:0;width:100%;height:100%;display:block}
.md-title{font-family:var(--HF);font-size:1.45rem;font-weight:800;color:#fff;letter-spacing:-.01em;z-index:2}
.md-close{position:absolute;top:13px;right:13px;z-index:3;width:28px;height:28px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.2);border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:none;transition:all .2s}
.md-close:hover{background:rgba(255,255,255,.22)}
.md-close svg{width:10px;height:10px;fill:none;stroke:#fff;stroke-width:2;stroke-linecap:round}
.md-body{padding:28px}
.md-price{font-family:var(--HF);font-size:1.2rem;font-weight:800;letter-spacing:-.01em;color:var(--ink);margin-bottom:18px}
.md-feats{list-style:none;display:flex;flex-direction:column;gap:11px;margin-bottom:24px}
.md-feats li{font-size:.9rem;color:var(--ink2);display:flex;align-items:flex-start;gap:11px;line-height:1.65;font-weight:300}
.md-feats li::before{content:'';width:4px;height:4px;border-radius:50%;background:var(--acc);flex-shrink:0;margin-top:8px}
.md-buy{width:100%;padding:14px;border-radius:14px;background:var(--acc);color:#060b07;font-family:var(--HF);font-size:.85rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;cursor:none;transition:all .25s}
.md-buy:hover{transform:scale(1.02);box-shadow:0 9px 30px rgba(0,0,0,.24)}
/* ── MEDIA QUERIES ── */
@media(max-width:760px){
.h-stats{flex-wrap:wrap}
.hst::after{display:none}
.hst{padding:17px 22px;min-width:50%}
.h-cta{flex-direction:column;align-items:stretch}
.btn{justify-content:center}
.nl-wrap{flex-direction:column}
.ft-bottom{flex-direction:column;text-align:center}
}
/* ══════════════════════════════════════
PREMIUM 3D & ELITE ANIMATIONS
══════════════════════════════════════ */
/* Floating 3D cards on scroll */
.fc,.pc,.ctc,.sup-card,.seller-card,.trust-card{
transform-style:preserve-3d;
will-change:transform;
}
/* Compositing hints for fixed overlays */
#cur,#cur-r,#nav,#scrollTop,#scrollBar{will-change:transform;}
/* Shimmer sweep on feature cards */
.fc::before{
content:'';position:absolute;top:0;left:-100%;width:60%;height:100%;
background:linear-gradient(105deg,transparent 40%,rgba(255,255,255,.08) 50%,transparent 60%);
transition:left .65s ease;pointer-events:none;
}
.fc:hover::before{left:150%}
/* Magnetic glow pulse on product cards */
.pc::after{
content:'';position:absolute;inset:-1px;border-radius:inherit;
background:linear-gradient(135deg,var(--acc),transparent,var(--acc));
opacity:0;transition:opacity .4s;pointer-events:none;z-index:-1;
}
.pc.featured::after{opacity:.18;animation:borderPulse 3s ease-in-out infinite}
@keyframes borderPulse{0%,100%{opacity:.18}50%{opacity:.36}}
/* Text reveal word-by-word effect */
.sec-h{overflow:hidden}
.sec-h.in .word-reveal{animation:wordUp .6s cubic-bezier(.16,1,.3,1) both}
@keyframes wordUp{from{transform:translateY(110%) rotateX(-15deg);opacity:0}to{transform:none;opacity:1}}
/* Floating animation for hero logo */
@keyframes floatY{
0%,100%{transform:perspective(1200px) rotateX(0deg) rotateY(0deg) translateY(0)}
25%{transform:perspective(1200px) rotateX(2.5deg) rotateY(4deg) translateY(-10px)}
50%{transform:perspective(1200px) rotateX(.5deg) rotateY(-3deg) translateY(-16px)}
75%{transform:perspective(1200px) rotateX(-2deg) rotateY(2.5deg) translateY(-7px)}
}
/* floatY replaces logo3d - handled below with glitch combo */
.btn,.btn-w,.pb-buy,.cf-btn,.sup-btn,.nl-btn{
transform-style:preserve-3d;
box-shadow:0 6px 0 rgba(0,0,0,.18),0 4px 24px rgba(0,0,0,.15);
transition:all .15s cubic-bezier(.34,1.56,.64,1);
}
.btn:active,.btn-w:active,.pb-buy:active,.cf-btn:active{
transform:translateY(4px) scale(.97)!important;
box-shadow:0 2px 0 rgba(0,0,0,.2),0 1px 8px rgba(0,0,0,.1);
}
/* Glowing border on hover for seller cards */
.seller-card:hover{
box-shadow:0 0 0 1px var(--acc),0 20px 60px rgba(0,0,0,.15),inset 0 0 30px var(--acc-t);
}
/* Ripple click effect */
@keyframes ripple{
to{transform:scale(4);opacity:0}
}
.ripple-el{position:relative;overflow:hidden}
.ripple-el::after{
content:'';position:absolute;border-radius:50%;
background:rgba(255,255,255,.25);
width:20px;height:20px;
transform:scale(0);animation:ripple .5s ease-out forwards;
pointer-events:none;
}
/* Stagger reveal for grids */
.feat-grid .fc:nth-child(1){transition-delay:.05s}
.feat-grid .fc:nth-child(2){transition-delay:.1s}
.feat-grid .fc:nth-child(3){transition-delay:.15s}
.feat-grid .fc:nth-child(4){transition-delay:.2s}
.feat-grid .fc:nth-child(5){transition-delay:.25s}
.feat-grid .fc:nth-child(6){transition-delay:.3s}
.feat-grid .fc:nth-child(7){transition-delay:.35s}
.feat-grid .fc:nth-child(8){transition-delay:.4s}
/* Smooth scrollbar */
html{scroll-behavior:smooth}
::-webkit-scrollbar{width:4px}
::-webkit-scrollbar-track{background:var(--bg)}
::-webkit-scrollbar-thumb{background:var(--acc);border-radius:4px;opacity:.6}
/* Number counter pulse */
.hst-n{transition:color .3s}
.hst:hover .hst-n{color:var(--acc);text-shadow:0 0 20px var(--acc-t)}
/* Elastic scale on card hover */
.ctc:hover,.comm-plat:hover{
transform:translateY(-6px) scale(1.02);
box-shadow:0 24px 60px rgba(0,0,0,.14);
}
/* Glitch animation for h-logo - text-shadow only, no animation override */
@keyframes glitch3d{
0%,88%,100%{text-shadow:none;clip-path:none}
89%{text-shadow:-2px 0 var(--acc),2px 0 rgba(255,0,0,.4);clip-path:inset(0 0 0 0)}
91%{text-shadow:2px 0 var(--acc),-2px 0 rgba(0,255,255,.4);clip-path:inset(0 0 0 0)}
93%{text-shadow:none;clip-path:none}
95%{text-shadow:-1px 0 var(--acc);clip-path:inset(0 0 0 0)}
97%{text-shadow:none;clip-path:none}
}
.h-logo-3d{animation:floatY 10s ease-in-out infinite,glitch3d 8s ease-in-out 3s infinite!important;isolation:isolate;will-change:transform,text-shadow}
@keyframes accentBob{
0%,100%{transform:translateY(0) rotate(0deg)}
50%{transform:translateY(-3px) rotate(-0.5deg)}
}
/* Product card featured shine */
.pc.featured .pc-head::after{
content:'';position:absolute;top:0;left:-100%;width:50%;height:100%;
background:linear-gradient(105deg,transparent 40%,rgba(255,255,255,.12) 50%,transparent 60%);
animation:featShine 3.5s ease-in-out infinite 1.5s;
}
@keyframes featShine{0%,100%{left:-100%}50%{left:150%}}
/* Nav pill active glow */
.npill.accent{
box-shadow:0 0 0 0 var(--acc);
animation:navGlow 2.5s ease-in-out infinite;
}
@keyframes navGlow{
0%,100%{box-shadow:0 0 0 0 var(--acc-t)}
50%{box-shadow:0 0 12px 2px var(--acc-t)}
}
/* Tilt gyro on mobile for cards (touch) */
@media(hover:none){
.fc:active,.pc:active,.ctc:active{
transform:scale(.97);
transition:transform .1s;
}
}
.h-logo-accent{
color:var(--acc);
position:relative;
display:inline-block;
}
/* SVG orbit overlay — diposisikan absolute oleh JS */
#t-orbit-svg{
position:absolute;
top:0;left:0;
pointer-events:none;
overflow:visible;
z-index:10;
}
#t-orbit-svg .t-stroke-glow{
fill:none;
stroke:var(--acc);
stroke-width:3;
stroke-linecap:round;
stroke-linejoin:round;
filter:drop-shadow(0 0 6px var(--acc)) drop-shadow(0 0 14px rgba(52,168,83,.7));
opacity:0;
transition:opacity .5s;
}
#t-orbit-svg.ready .t-stroke-glow{
opacity:1;
}
/* ── PERFORMANCE: GPU layer hints (safe, no layout impact) ── */
#cur,#cur-r,#nav,#scrollTop,#scrollBar{will-change:transform}
.pc,.fc,.ctc{will-change:transform}
canvas{image-rendering:auto}
</style>
<style>
@keyframes logoBadgeGlow {
0%,100%{filter:drop-shadow(0 0 4px var(--acc)) drop-shadow(0 0 10px var(--acc)) drop-shadow(0 0 16px var(--acc))}
50%{filter:drop-shadow(0 0 8px var(--acc)) drop-shadow(0 0 18px var(--acc)) drop-shadow(0 0 28px var(--acc)) drop-shadow(0 0 4px #fff)}
}
/* ── FINGERPRINT SVG ANIMATION ── */
.fp-r{
stroke-opacity:0.12;
transition:stroke-opacity .3s, filter .3s;
}
/* Glow trail: lit state */
.fp-r.fp-lit{
stroke-opacity:0.85;
filter:url(#fpGlow);
}
/* Press state: all ridges bright + strong glow */
#fpSvg.fp-pressed .fp-r{
stroke-opacity:0.9;
filter:url(#fpGlowStrong);
animation:fpPressedPulse .55s ease-in-out infinite;
}
@keyframes fpPressedPulse{
0%,100%{stroke-opacity:0.75}
50%{stroke-opacity:1}
}
/* Ripple ring on press */
.fp-ripple-ring{
fill:none;
stroke:var(--acc);
stroke-width:2;
animation:fpRipple .7s ease-out forwards;
}
@keyframes fpRipple{
0%{r:8;stroke-opacity:.8}
100%{r:90;stroke-opacity:0}
}
</style>
<!-- ██ SNITZ SHIELD v4 — ANTI-BOT / ANTI-CURL / ANTI-SCRAPER ██ -->
<script>
/* ═══════════════════════════════════════════════════════════════
SNITZ SHIELD v4 | Multi-Layer Bot Protection
Layers:
L1 — JS execution gate (curl/wget fail here immediately)
L2 — User-Agent hard check (bot UA → blocked)
L3 — Session token + timing (headless/replay → blocked)
L4 — Canvas fingerprint (headless browser detect)
L5 — Mouse/touch entropy (pure JS scrapers → blocked)
L6 — Cookie session check (no-cookie clients → blocked)
L7 — Honeypot fetch trap (scanner auto-following links)
L8 — Content gate (real content injected ONLY after pass)
L9 — Keyboard / RC / copy / print / iframe / visibility guard
═══════════════════════════════════════════════════════════════ */
(function(W,D){
'use strict';
/* ── Util ── */
var _blocked=false;
function _kill(reason){
if(_blocked)return;
_blocked=true;
/* wipe all body content, replace with decoy-only blank */
D.documentElement.innerHTML='<!DOCTYPE html><html><head><title>403 Forbidden</title></head>'
+'<body style="background:#000;color:#333;font-family:monospace;display:flex;align-items:center;justify-content:center;height:100vh;margin:0">'
+'<div style="text-align:center"><div style="font-size:4rem;font-weight:900">403</div>'
+'<div style="font-size:.9rem;margin-top:8px;color:#555">Forbidden — Automated access not permitted.</div></div></body></html>';
/* poison any further JS execution */
try{W.stop&&W.stop();}catch(e){}
}
/* ════════════════════════════════════════════════
L1 — JS EXECUTION GATE
curl/wget/httrick: HTML tersedia tapi JS tidak jalan
→ noscript tag di bawah sudah handle ini
════════════════════════════════════════════════ */
var _jsGatePassed = true; /* kalau sampai sini, JS jalan = manusia/browser */
/* ════════════════════════════════════════════════
L2 — USER-AGENT HARD BLOCK
Deteksi UA string scraper / bot / tool umum
════════════════════════════════════════════════ */
(function(){
var ua=(W.navigator&&W.navigator.userAgent)||'';
var uaL=ua.toLowerCase();
var badUA=[
'curl','wget','python-requests','python-urllib','httpie','httrick',
'go-http-client','java/','okhttp','libwww-perl','lwp-request',
'mj12bot','ahrefsbot','semrushbot','dotbot','petalbot','yandexbot',
'baiduspider','ia_archiver','archive.org_bot','scrapy','mechanize',
'phantomjs','headlesschrome','headless','selenium','webdriver',
'puppeteer','playwright','cypress','nightmarejs','zombie.js',
'jsdom','node-fetch','axios/','got/','superagent','request/',
'apachebench','ab/','wrk/','siege/','locust','k6/','jmeter',
'nikto','sqlmap','dirbuster','nmap','masscan','zgrab',
'facebookexternalhit','twitterbot','linkedinbot', /* allow these via whitelist below */
];
/* Whitelist real social bots yang boleh (preview unfurl) */
var whiteUA=['facebookexternalhit','twitterbot','linkedinbot','slackbot','telegrambot','discordbot','whatsapp'];
var isWhite=whiteUA.some(function(w){return uaL.indexOf(w)>-1;});
if(!isWhite){
var isBad=badUA.some(function(b){return uaL.indexOf(b)>-1;});
/* Juga block kalau UA kosong atau terlalu pendek (bot lazy) */
if(isBad||ua.length<20){_kill('bad-ua');return;}
/* Cek apakah ada properti browser nyata */
if(typeof W.navigator.plugins==='undefined'||
typeof W.navigator.languages==='undefined'||
W.navigator.languages.length===0){
_kill('headless-nav');return;
}
}
})();
/* ════════════════════════════════════════════════
L3 — SESSION TOKEN + TIMING CHECK
Headless replay/scanner biasanya sangat cepat
dan tidak punya sessionStorage dari visit sebelumnya
════════════════════════════════════════════════ */
(function(){
if(_blocked)return;
var now=Date.now();
var ss=W.sessionStorage;
try{
var tok=ss.getItem('_sz_tok');
var ts=parseInt(ss.getItem('_sz_ts')||'0',10);
/* Generate token baru tiap session */
if(!tok){
var t=(Math.random().toString(36).slice(2)+now.toString(36)).toUpperCase();
ss.setItem('_sz_tok',t);
ss.setItem('_sz_ts',now.toString());
ss.setItem('_sz_v','0');
} else {
/* Increment visit count */
var v=parseInt(ss.getItem('_sz_v')||'0',10)+1;
ss.setItem('_sz_v',v.toString());
}
}catch(e){
/* sessionStorage tidak tersedia → kemungkinan headless/no-cookie */
_kill('no-session');
}
})();
/* ════════════════════════════════════════════════
L4 — CANVAS FINGERPRINT / HEADLESS DETECT
Headless Chrome, PhantomJS, dll biasanya
menghasilkan canvas hash kosong / berbeda
════════════════════════════════════════════════ */
(function(){
if(_blocked)return;
try{
var cv=D.createElement('canvas');
var ctx=cv.getContext('2d');
if(!ctx){_kill('no-canvas');return;}
ctx.textBaseline='top';
ctx.font='14px Arial';
ctx.fillStyle='rgba(102,204,0,0.7)';
ctx.fillText('SNITZ\u00ae\u2603',4,4);
var data=cv.toDataURL();
/* Data URL kosong / sangat pendek = headless */
if(!data||data.length<100||data==='data:,'){
_kill('blank-canvas');return;
}
/* Simpan fingerprint ke session */
try{W.sessionStorage.setItem('_sz_fp',data.slice(-32));}catch(e){}
}catch(e){_kill('canvas-err');}
})();
/* ════════════════════════════════════════════════
L5 — HUMAN ENTROPY GATE
Bot / headless tidak menggerakkan mouse / touch.
Konten asli baru di-render setelah ada input manusia.
(dipanggil dari L8 content gate)
════════════════════════════════════════════════ */
var _humanPassed=false;
var _humanTimer=null;
function _onHuman(){
if(_humanPassed||_blocked)return;
_humanPassed=true;
clearTimeout(_humanTimer);
W.removeEventListener('mousemove',_onHuman,{passive:true});
W.removeEventListener('touchstart',_onHuman,{passive:true});
W.removeEventListener('scroll',_onHuman,{passive:true});
W.removeEventListener('keydown',_onHuman,{passive:true});
/* Unlock content gate */
_unlockContent();
}
W.addEventListener('mousemove',_onHuman,{passive:true});
W.addEventListener('touchstart',_onHuman,{passive:true});
W.addEventListener('scroll',_onHuman,{passive:true});
W.addEventListener('keydown',_onHuman,{passive:true});
/* Fallback: kalau dalam 4 detik tidak ada event, juga unlock
(mencegah block user yang langsung scroll keyboard) */
_humanTimer=setTimeout(function(){
if(!_humanPassed&&!_blocked)_onHuman();
},4000);
/* ════════════════════════════════════════════════
L6 — COOKIE SESSION CHECK
Tool seperti curl defaultnya tidak kirim cookie.
Set cookie kecil dan verifikasi saat load.
════════════════════════════════════════════════ */
(function(){
if(_blocked)return;
try{
/* Set cookie session */
var ck='_sz_ck';
var hasCk=D.cookie.indexOf(ck+'=')>-1;
if(!hasCk){
/* First visit — set cookie, lanjutkan normal */
var exp=new Date(Date.now()+2*60*60*1000).toUTCString();
D.cookie=ck+'=1;path=/;expires='+exp+';SameSite=Strict';
}
/* Cookie tidak bisa diset = environment restricted (some bots) */
/* Tidak kill di sini — hanya sebagai sinyal tambahan */
}catch(e){}
})();
/* ════════════════════════════════════════════════
L7 — HONEYPOT FETCH TRAP
Inject link tersembunyi. Scanner yang auto-follow
links akan request URL honeypot.
(Client-side: catat di sessionStorage sebagai sinyal)
════════════════════════════════════════════════ */
(function(){
if(_blocked)return;
D.addEventListener('DOMContentLoaded',function(){
var hp=D.createElement('a');
hp.href='#snitz-internal-verify-8x7k2';
hp.style.cssText='position:absolute;width:1px;height:1px;opacity:0;pointer-events:none;'
+'left:-9999px;top:-9999px;overflow:hidden;visibility:hidden';
hp.setAttribute('aria-hidden','true');
hp.setAttribute('tabindex','-1');
/* Kalau link ini di-click (bot behavior), tandai */
hp.addEventListener('click',function(e){
e.preventDefault();
try{W.sessionStorage.setItem('_sz_hp','1');}catch(x){}
});
if(D.body)D.body.appendChild(hp);
});
})();
/* ════════════════════════════════════════════════
L8 — CONTENT GATE
Konten utama (body) disembunyikan sampai semua check pass.
curl/wget hanya dapat HTML kosong dengan overlay.
════════════════════════════════════════════════ */
D.addEventListener('DOMContentLoaded',function(){
if(_blocked)return;
var body=D.body;
if(!body)return;
/* Sembunyikan semua konten asli */
body.style.cssText='visibility:hidden;opacity:0;transition:opacity .35s ease';
/* Tampilkan loading overlay */
var ov=D.createElement('div');
ov.id='_sz_gate';
ov.style.cssText='position:fixed;inset:0;z-index:2147483647;background:#060b07;'
+'display:flex;flex-direction:column;align-items:center;justify-content:center;'
+'font-family:monospace;color:#34a853;font-size:.7rem;letter-spacing:.2em;gap:14px;'
+'pointer-events:none';
ov.innerHTML='<div style="font-size:1.8rem;font-weight:900;letter-spacing:-.02em">SNITZ</div>'
+'<div id="_sz_gtxt" style="opacity:.6;text-transform:uppercase">Verifying...</div>'
+'<div style="width:120px;height:1px;background:rgba(52,168,83,.2);position:relative;overflow:hidden">'
+'<div id="_sz_gbar" style="position:absolute;left:-100%;top:0;height:100%;width:100%;'
+'background:#34a853;animation:_szBar 1.8s ease-in-out infinite"></div></div>';
var st=D.createElement('style');
st.textContent='@keyframes _szBar{0%{left:-100%}100%{left:100%}}';
D.head.appendChild(st);
body.appendChild(ov);
});
function _unlockContent(){
if(_blocked)return;
var body=D.body;
var ov=D.getElementById('_sz_gate');
if(ov){
ov.style.transition='opacity .4s ease';
ov.style.opacity='0';
setTimeout(function(){ov&&ov.parentNode&&ov.parentNode.removeChild(ov);},420);
}
if(body){
body.style.visibility='';
body.style.opacity='1';
}
}
/* ════════════════════════════════════════════════
L9 — KEYBOARD / RC / COPY / PRINT / IFRAME / VISIBILITY
════════════════════════════════════════════════ */
/* Keyboard block devtools */
D.addEventListener('keydown',function(e){
var k=e.keyCode||0,key=(e.key||'').toLowerCase();
if(k===123){e.preventDefault();e.stopPropagation();return false;}
if((e.ctrlKey||e.metaKey)&&!e.shiftKey&&(key==='u'||key==='s'||key==='p')){
e.preventDefault();e.stopPropagation();return false;
}
if((e.ctrlKey||e.metaKey)&&e.shiftKey&&(key==='i'||key==='j'||key==='c'||key==='k')){
e.preventDefault();e.stopPropagation();return false;
}
if((e.ctrlKey||e.metaKey)&&key==='d'){e.preventDefault();return false;}
},true);
/* Right-click */
D.addEventListener('contextmenu',function(e){e.preventDefault();e.stopPropagation();return false;},true);
/* Select / drag */
D.addEventListener('selectstart',function(e){
var t=e.target&&e.target.tagName;
if(t==='INPUT'||t==='TEXTAREA')return;
e.preventDefault();
},true);
D.addEventListener('dragstart',function(e){
if((e.target&&e.target.tagName)==='IMG')e.preventDefault();
},true);
/* Copy/cut trap */
D.addEventListener('copy',function(e){
try{e.clipboardData.setData('text/plain','\u200b\u200b\u200b');e.clipboardData.setData('text/html','');e.preventDefault();}catch(er){}
},true);
D.addEventListener('cut',function(e){e.preventDefault();},true);
/* Anti-iframe */
if(W.top!==W.self){
try{W.top.location.replace(W.location.href);}
catch(e){D.body&&(D.body.style.display='none');}
}
/* Print */
W.addEventListener('beforeprint',function(){if(D.body)D.body.style.visibility='hidden';});
W.addEventListener('afterprint',function(){if(D.body)D.body.style.visibility='';});
/* Visibility guard */
var _ov2=null;
function _mkOv2(){
if(_ov2||!D.body)return;
_ov2=D.createElement('div');
_ov2.style.cssText='position:fixed;inset:0;z-index:2147483646;background:#060b07;display:none;pointer-events:none';
D.body.appendChild(_ov2);
}
D.addEventListener('DOMContentLoaded',_mkOv2);
D.addEventListener('visibilitychange',function(){
_mkOv2();
if(_ov2)_ov2.style.display=D.hidden?'block':'none';
});
/* ═══════════════════════════════════
ANTI-AUTOMATION: Override fetch/XHR
untuk detect headless scripting
═══════════════════════════════════ */
(function(){
/* Check WebDriver flag (Selenium/CDP) */
if(W.navigator&&(W.navigator.webdriver===true)){
_kill('webdriver');return;
}
/* Check automation-related properties */
var autoProps=['__webdriver_evaluate','__selenium_evaluate','__webdriver_script_fn',
'__driver_evaluate','__webdriver_unwrapped','__selenium_unwrapped',
'__fxdriver_evaluate','__driver_unwrapped','_phantom','callPhantom',
'__nightmare','domAutomation','domAutomationController',
'_selenium','calledSelenium','_Selenium_IDE_Recorder'];
for(var i=0;i<autoProps.length;i++){
if(W[autoProps[i]]!==undefined){_kill('automation-prop');return;}
}
})();
})(window,document);
</script>
<noscript>
<!-- L1 gate: no JS = bot/curl/wget → blank + 403 message -->
<style>
html,body{background:#000!important;color:#333!important}
body>*:not(#_noscript_block){display:none!important;visibility:hidden!important}
</style>
<div id="_noscript_block" style="position:fixed;inset:0;background:#000;color:#333;font-family:monospace;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:12px">
<div style="font-size:4rem;font-weight:900;color:#222">403</div>
<div style="font-size:.85rem">Forbidden — JavaScript required.</div>
</div>
<meta http-equiv="refresh" content="0;url=about:blank">
</noscript>
<style>
/* ── CSS PROTECTION LAYER v3 ── */
/* Disable text select pada konten */
body,p,h1,h2,h3,h4,h5,h6,span,li,blockquote,
.sec-h,.sec-p,.sec-ey,.fc-h,.fc-p,.fc-num,.fc-tag,
.pc-name,.pc-tier,.pc-disc,.pc-orig,.pc-save,
.hst-n,.hst-l,.tc-text,.tc-an,.tc-ar,.band-item,
.dl-title,.dl-desc,.dl-note,.ft-copy,.ft-tagline,
.rm-h,.rm-p,.upd-t,.upd-p,.ctc-n,.ctc-desc,.ctc-r,
.pmt-name,.pmt-desc,.pmt-intl-name,.pay-htitle,.pay-htag,
.sec-feat-t,.sec-feat-p,.help-item-t,.help-item-d,
.h-logo,.h-sub,.h-tag,.h-eye,.nav-name,.ld-txt,
.fq-ql,.fq-ai,.md-price,.legal-section-p,.legal-section-t,
.comm-h,.comm-p,.comm-plat-n,.comm-plat-d,
.trust-t,.trust-p,.ctaf-h,.ctaf-p,.cmp-n,.cmp-pr{
-webkit-user-select:none;
-moz-user-select:none;
user-select:none;
-webkit-touch-callout:none;
}
/* Disable drag img — TANPA pointer-events:none */
img{-webkit-user-drag:none;user-drag:none;}
/* Restore input/textarea */
input,textarea,select{
-webkit-user-select:text!important;
-moz-user-select:text!important;
user-select:text!important;
}
@media print{html,body,*{display:none!important}}
</style>
<!-- ██ END SNITZ SHIELD v3 ██ -->
<body>
<div id="loader">
<canvas id="ldcv" style="position:absolute;inset:0;width:100%;height:100%;pointer-events:none;"></canvas>
<div style="position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;gap:28px">
<div class="ld-logo" id="ldLogo"><span style="animation:ldChar .7s cubic-bezier(.16,1,.3,1) .05s both,ldCharPulse 2s ease-in-out 1s infinite">S</span><span style="animation:ldChar .7s cubic-bezier(.16,1,.3,1) .14s both,ldCharPulse 2s ease-in-out 1.15s infinite">N</span><span style="animation:ldChar .7s cubic-bezier(.16,1,.3,1) .23s both,ldCharPulse 2s ease-in-out 1.3s infinite">I</span><span style="color:var(--acc);animation:ldChar .7s cubic-bezier(.16,1,.3,1) .32s both,ldCharPulse 2s ease-in-out 1.45s infinite">T</span><span style="animation:ldChar .7s cubic-bezier(.16,1,.3,1) .41s both,ldCharPulse 2s ease-in-out 1.6s infinite">Z</span></div>
<div class="ld-bar"><div class="ld-fill"></div></div>
<div class="ld-txt" id="ldTxt">Initializing...</div>
<div class="ld-dots"><div class="ld-dot"></div><div class="ld-dot"></div><div class="ld-dot"></div></div>
</div>
</div>
<div id="cur"></div>
<div id="cur-r"></div>
<canvas id="partcv"></canvas>
<!-- ══════ SOCIABUZZ FLOATING WIDGET ══════ -->
<div id="sbFloat">
<div id="sbPanel">
<div class="sb-panel-head">
<div class="sb-panel-label">Dukung Kami</div>
<div class="sb-panel-title">SNITZ PROJECT</div>
<div class="sb-panel-sub">Bantu kami terus hadirkan update dan fitur terbaik</div>
</div>
<div class="sb-panel-body">
<a href="https://sociabuzz.com/shanxiter/tribe" target="_blank" rel="noopener" class="sb-main-btn">
<svg viewBox="0 0 16 16"><path d="M8 1l1.9 5.4H15l-4.5 3.3 1.7 5.3L8 12l-4.2 3 1.7-5.3L1 6.4h5.1z" stroke-linejoin="round"/></svg>
Support SociaBuzz
</a>
<div class="sb-divider">Saluran Testimoni</div>
<a href="https://whatsapp.com/channel/0029VbCUvex1dAw6CVvPzU3O" target="_blank" rel="noopener" class="sb-ch-btn">
<svg viewBox="0 0 16 16"><path d="M8 1a7 7 0 103 13.3L14 15l-.7-2.9A7 7 0 008 1z" stroke-linecap="round" stroke-linejoin="round"/></svg>
<div>
<div class="sb-ch-name">Saluran Testi</div>
<div class="sb-ch-desc">Testimoni nyata pengguna aktif SNITZ</div>
</div>
<svg style="margin-left:auto;flex-shrink:0" viewBox="0 0 16 16" width="10" height="10"><path d="M5 3l5 5-5 5" stroke-linecap="round" stroke-linejoin="round"/></svg>
</a>
</div>
</div>
<button id="scrollTop" onclick="window.scrollTo({top:0,behavior:'smooth'})">
<svg viewBox="0 0 14 14"><path d="M7 11.5V2.5M3.5 6L7 2.5 10.5 6" stroke-linecap="round" stroke-linejoin="round"/></svg>
</button>
<button id="sbToggle" onclick="toggleSb()" aria-label="Support">
<svg class="sb-ico-main" viewBox="0 0 16 16"><path d="M8 1l1.9 5.4H15l-4.5 3.3 1.7 5.3L8 12l-4.2 3 1.7-5.3L1 6.4h5.1z" stroke-linejoin="round"/></svg>
<span>SUPPORT</span>
<svg class="sb-ico-close" viewBox="0 0 10 10"><path d="M1 1l8 8M9 1L1 9" stroke-linecap="round"/></svg>
</button>
</div>
<!-- ══════ PAYMENT DIALOG ══════ -->
<div id="payov" onclick="if(event.target===this)closePay()">
<div class="pay-panel">
<div class="pay-head">
<div>
<div class="pay-htitle">Pilih Pembayaran</div>
<div class="pay-htag" id="payProdTag">SNITZ PROJECT VIP</div>
</div>
<button class="pay-x" onclick="closePay()"><svg viewBox="0 0 10 10"><path d="M1 1l8 8M9 1L1 9"/></svg></button>
</div>
<div class="pay-prod-bar">
<div>
<div class="pay-prod-tier" id="payProdTier">TIER S</div>
<div class="pay-prod-pname" id="payProdPname">PIRATE</div>
</div>
<div class="pay-prod-price-tag" id="payProdPriceTag">Rp 450.000</div>
</div>
<div class="pay-methods-wrap" id="payMethodsWrap">
<div class="pay-method-heading">Metode Pembayaran</div>
<div class="pay-grid">
<button class="pmt-btn" onclick="showPayQris()">
<div class="pmt-ico" style="background:#0e1f10">
<svg viewBox="0 0 32 32" fill="none" width="22" height="22">
<rect x="3" y="3" width="11" height="11" rx="2" stroke="#34a853" stroke-width="1.6"/>
<rect x="6" y="6" width="5" height="5" fill="#34a853" opacity=".7"/>
<rect x="18" y="3" width="11" height="11" rx="2" stroke="#34a853" stroke-width="1.6"/>
<rect x="21" y="6" width="5" height="5" fill="#34a853" opacity=".7"/>
<rect x="3" y="18" width="11" height="11" rx="2" stroke="#34a853" stroke-width="1.6"/>
<rect x="6" y="21" width="5" height="5" fill="#34a853" opacity=".7"/>
<path d="M18 18h4v4h-4zM22 22h4v4h-4zM22 18h4M18 22v4" stroke="#34a853" stroke-width="1.5" stroke-linecap="round"/>
</svg>
</div>
<div class="pmt-info">
<div class="pmt-name">QRIS AllPay</div>
<div class="pmt-desc">Semua e-wallet & mobile banking</div>
</div>
<div class="pmt-arrow"><svg viewBox="0 0 14 14"><path d="M3 7h8M8 4l3 3-3 3" stroke-linecap="round" stroke-linejoin="round"/></svg></div>
</button>
<button class="pmt-btn" onclick="payViaWA('GoPay')">
<div class="pmt-ico" style="background:#001a33">
<svg viewBox="0 0 32 32" fill="none" width="22" height="22">
<circle cx="16" cy="16" r="10" stroke="#00ADE4" stroke-width="1.4"/>
<path d="M16 10a6 6 0 0 1 5.2 9H16v-3.5h3.3A3.5 3.5 0 1 0 16 18.5h2.5a6 6 0 1 1-2.5-12z" fill="#00ADE4" fill-opacity=".85"/>
</svg>
</div>
<div class="pmt-info">
<div class="pmt-name">GoPay</div>
<div class="pmt-desc">Hubungi seller via WhatsApp</div>
</div>
<div class="pmt-arrow"><svg viewBox="0 0 14 14"><path d="M3 7h8M8 4l3 3-3 3" stroke-linecap="round" stroke-linejoin="round"/></svg></div>
</button>
<button class="pmt-btn" onclick="payViaWA('OVO')">
<div class="pmt-ico" style="background:#1a003a">
<svg viewBox="0 0 32 32" fill="none" width="22" height="22">
<rect x="4" y="11" width="24" height="10" rx="5" stroke="#7B68EE" stroke-width="1.5"/>
<text x="16" y="19.5" text-anchor="middle" font-family="Arial Black" font-size="8" font-weight="900" fill="#9D94F0">OVO</text>
</svg>
</div>
<div class="pmt-info">
<div class="pmt-name">OVO</div>
<div class="pmt-desc">Hubungi seller via WhatsApp</div>
</div>
<div class="pmt-arrow"><svg viewBox="0 0 14 14"><path d="M3 7h8M8 4l3 3-3 3" stroke-linecap="round" stroke-linejoin="round"/></svg></div>
</button>
<button class="pmt-btn" onclick="payViaWA('DANA')">
<div class="pmt-ico" style="background:#001f3a">
<svg viewBox="0 0 32 32" fill="none" width="22" height="22">
<rect x="3" y="10" width="26" height="12" rx="4" stroke="#1081CC" stroke-width="1.5"/>
<text x="16" y="19.5" text-anchor="middle" font-family="Arial" font-size="8" font-weight="800" fill="#1081CC">DANA</text>
</svg>
</div>
<div class="pmt-info">
<div class="pmt-name">DANA</div>
<div class="pmt-desc">Hubungi seller via WhatsApp</div>
</div>
<div class="pmt-arrow"><svg viewBox="0 0 14 14"><path d="M3 7h8M8 4l3 3-3 3" stroke-linecap="round" stroke-linejoin="round"/></svg></div>
</button>
<div class="pay-method-heading" style="margin-top:10px;padding-top:10px;border-top:1px solid var(--line)">Pembayaran Internasional</div>
<div class="pmt-intl-grid">
<button class="pmt-intl-btn" onclick="payViaWA('PayPal')">
<div class="pmt-intl-ico" style="background:#001c64">
<svg viewBox="0 0 32 32" fill="none" width="20" height="20">
<path d="M22 8.5c0 4.5-3 7-7.5 7H12l-1.5 8H7L10 6h7c2.8 0 5 1.1 5 2.5z" fill="#009cde" fill-opacity=".8"/>
<path d="M25 11c0 4-2.8 6.5-7 6.5h-2.5l-1.5 7H11l3-16h6c2.6 0 5 1.1 5 2.5z" fill="#003087" fill-opacity=".7"/>
</svg>
</div>
<span class="pmt-intl-name">PayPal</span>
</button>
<button class="pmt-intl-btn" onclick="payViaWA('Wise')">
<div class="pmt-intl-ico" style="background:#0b2318">
<svg viewBox="0 0 32 32" fill="none" width="20" height="20">
<circle cx="16" cy="16" r="11" fill="#48c97e" fill-opacity=".15" stroke="#48c97e" stroke-width="1.3"/>
<text x="16" y="20" text-anchor="middle" font-family="Arial Black" font-size="7.5" font-weight="900" fill="#48c97e">WISE</text>
</svg>
</div>
<span class="pmt-intl-name">Wise</span>
</button>
<button class="pmt-intl-btn" onclick="payViaWA('Crypto (USDT/BTC)')">
<div class="pmt-intl-ico" style="background:#1a0f00">
<svg viewBox="0 0 32 32" fill="none" width="20" height="20">
<circle cx="16" cy="16" r="10" stroke="#f7931a" stroke-width="1.4" fill="#f7931a" fill-opacity=".1"/>
<path d="M12 11h6c1.7 0 3 .8 3 2.2 0 .9-.5 1.6-1.3 2 1 .3 1.8 1.1 1.8 2.3 0 1.7-1.4 2.5-3.2 2.5H12V11z" fill="#f7931a" fill-opacity=".75"/>
<path d="M14.5 14.8h3M14.5 17.5h3.2" stroke="#fff" stroke-width="1.1" stroke-linecap="round" opacity=".7"/>
</svg>
</div>
<span class="pmt-intl-name">Crypto</span>
</button>
</div>
</div>
</div>
<div class="pay-qris-view" id="payQrisView">
<div class="pqr-title">Scan QRIS untuk Bayar</div>
<div class="pqr-frame">
<div class="pqr-scan-ring"></div>
<div class="pqr-label">QRIS · ALLPAY</div>
<img class="pqr-img" id="pqrImg" src="" alt="QRIS"/>
<div class="pqr-amount" id="pqrAmount">Rp 450.000</div>
<div class="pqr-note">Scan dengan semua e-wallet & m-banking</div>
</div>
<div class="pqr-actions">
<button class="pqr-dl-btn" onclick="downloadAndConfirm()">
<svg width="14" height="14" viewBox="0 0 14 14" fill="none"><path d="M7 2v7M4 7l3 3.5L10 7M1.5 12h11" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg>
Download QR Code
</button>
<button class="pqr-wa-btn" id="pqrWaBtn" onclick="confirmViaWA()" style="display:none">
<svg width="14" height="14" viewBox="0 0 14 14" fill="none"><path d="M7 1a6 6 0 1 0 2.7 11.4L12.5 13l-.65-2.6A6 6 0 0 0 7 1z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
Konfirmasi via WhatsApp
</button>
<button class="pqr-back" onclick="backToMethods()">
<svg width="10" height="10" viewBox="0 0 10 10" fill="none"><path d="M7 5H3M5 3l-2 2 2 2" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>
Metode lain
</button>
</div>
</div>
<div class="pay-bottom-note">
Kirim bukti bayar ke seller · Key dikirim ≤5 menit
</div>
</div>
</div>
<!-- ══════ THEME PICKER MODAL ══════ -->
<div id="tpov" onclick="if(event.target===this)closeThemePicker()">
<div class="tp-panel">
<div class="tp-handle"></div>
<div class="tp-hdr">
<span class="tp-ttl">Pilih Tema Warna</span>
<button class="tp-close" onclick="closeThemePicker()"><svg viewBox="0 0 10 10"><path d="M1 1l8 8M9 1L1 9"/></svg></button>
</div>
<div class="tp-scroll" id="tpScroll"></div>
</div>
</div>
<!-- ══════ HELP CENTER MODAL ══════ -->
<div id="helpov" onclick="if(event.target===this)closeHelp()">
<div class="help-panel">
<div class="help-head">
<div>
<div class="help-htitle">Pusat Bantuan</div>
<div class="help-htag">Support Center — SNITZ PROJECT</div>
</div>
<button class="help-x" onclick="closeHelp()"><svg viewBox="0 0 10 10"><path d="M1 1l8 8M9 1L1 9"/></svg></button>
</div>
<div class="help-body">
<div class="help-sec">
<div class="help-sec-t">Panduan Memulai</div>
<div class="help-item">
<div class="help-item-ico"><svg viewBox="0 0 14 14"><path d="M8 2v9M4.5 7.5L8 11.5l3.5-4M2 13.5h12" stroke-linecap="round"/></svg></div>
<div>
<div class="help-item-t">Cara Download dan Install</div>
<div class="help-item-d">Download APK langsung dari halaman download resmi. Activekan opsi "Sumber Tidak Dikenal" atau "Install Unknown Apps" di Pengaturan Android kamu. Buka file APK yang sudah didownload, lalu ketuk Install. Proses instalasi selesai dalam 30 detik dan tidak membutuhkan akses root sama sekali. SNITZ PROJECT kompatibel dengan Android 8.0 hingga Android 14 di semua brand.</div>
</div>
</div>
<div class="help-item">
<div class="help-item-ico"><svg viewBox="0 0 14 14"><path d="M7 1a6 6 0 100 12A6 6 0 007 1zM7 5.5v3.5" stroke-linecap="round"/><circle cx="7" cy="4.5" r=".5" fill="currentColor"/></svg></div>
<div>
<div class="help-item-t">Berapa Lama Proses Aktivasi Key VIP?</div>
<div class="help-item-d">Setelah kamu mengirimkan bukti pembayaran ke seller resmi, sistem kami akan memverifikasi transaksi secara otomatis. Key VIP unik akan dikirimkan langsung ke WhatsApp atau Discord kamu dalam waktu 5 menit atau kurang. Jika lebih dari 10 menit belum ada respon, hubungi seller dengan menyertakan bukti transfer kembali.</div>
</div>
</div>
<div class="help-item">
<div class="help-item-ico"><svg viewBox="0 0 14 14"><path d="M2 7h10M7 2v10" stroke-linecap="round"/></svg></div>
<div>
<div class="help-item-t">Aktivasi Key di Aplikasi</div>
<div class="help-item-d">Buka aplikasi SNITZ PROJECT, pilih menu "Aktivasi" atau "Enter Key", lalu masukkan key persis seperti yang kamu terima — termasuk tanda hubung. Key bersifat case-sensitive. Setelah berhasil, akun kamu langsung terhubung ke server VIP dan semua fitur premium terbuka secara instan.</div>
</div>
</div>
</div>
<div class="help-sec">
<div class="help-sec-t">About App Features V2.0</div>
<div class="help-item">
<div class="help-item-ico"><svg viewBox="0 0 14 14"><path d="M12 7A5 5 0 012 7M2 4v3h3M12 10v-3h-3" stroke-linecap="round" stroke-linejoin="round"/></svg></div>
<div>
<div class="help-item-t">Cara Mengaktifkan Sensi Optimizer & AimTrick</div>
<div class="help-item-d">Setelah aktivasi key VIP, buka app SNITZ V2.0, pilih tier-mu, lalu aktifkan fitur Sensi Optimizer dan AimTrick Inject dari menu utama. Pilih persentase sesuai tier yang kamu miliki. Fitur langsung aktif tanpa perlu restart device.</div>
</div>
</div>
<div class="help-item">
<div class="help-item-ico"><svg viewBox="0 0 14 14"><path d="M2 2l10 10M12 2L2 12" stroke-linecap="round"/></svg></div>
<div>
<div class="help-item-t">Fitur DPI via Notifikasi Tidak Muncul</div>
<div class="help-item-d">Pastikan izin "Tampilkan di atas aplikasi lain" dan "Akses Notifikasi" sudah diberikan ke SNITZ V2.0. Masuk ke Pengaturan > Aplikasi > SNITZ > Izin dan aktifkan semua izin yang diperlukan. Tersedia untuk tier VAGUE ke atas.</div>
</div>
</div>
</div>
<div class="help-sec">
<div class="help-sec-t">Troubleshooting Umum</div>
<div class="help-item">
<div class="help-item-ico"><svg viewBox="0 0 14 14"><path d="M7 1a6 6 0 100 12A6 6 0 007 1zM7 5c0-1.1.9-2 2-1.7M7 8v.5" stroke-linecap="round"/></svg></div>
<div>
<div class="help-item-t">Aplikasi Crash atau Force Close</div>
<div class="help-item-d">Coba clear cache aplikasi melalui Pengaturan > Aplikasi > SNITZ > Hapus Cache. Jika masih crash, uninstall dan install ulang versi terbaru. Pastikan RAM tersedia minimal 1GB. Untuk device dengan Android 13 ke atas, berikan izin "Tampilkan di atas aplikasi lain" secara manual.</div>
</div>
</div>
<div class="help-item">
<div class="help-item-ico"><svg viewBox="0 0 14 14"><path d="M2 7h10M7 1a6 6 0 100 12" stroke-linecap="round"/></svg></div>
<div>
<div class="help-item-t">Key Tidak Dikenali atau Expired</div>
<div class="help-item-d">Key VIP berlaku sesuai dengan paket yang dibeli. Jika muncul pesan "key tidak valid", pastikan tidak ada spasi tersembunyi saat mengetik. Copy-paste langsung dari pesan seller. Jika key sudah expired, hubungi seller untuk perpanjangan dengan harga spesial untuk pelanggan lama.</div>
</div>
</div>
</div>
<div class="help-sec">
<div class="help-sec-t">Hubungi Tim Support</div>
<div class="help-item">
<div class="help-item-ico"><svg viewBox="0 0 14 14"><path d="M7 1a6 6 0 102.7 11.4L12.5 13l-.65-2.6A6 6 0 107 1z" stroke-linecap="round" stroke-linejoin="round"/></svg></div>
<div>
<div class="help-item-t">WhatsApp — Respon Paling Cepat</div>
<div class="help-item-d">Hubungi seller resmi kami via WhatsApp di nomor yang tertera di section Kontak & Seller. Deskripsikan masalahmu secara detail dan sertakan screenshot jika ada. Tim support aktif 24 jam dengan rata-rata waktu respon hanya 8 menit.</div>
</div>
</div>
<div class="help-item">
<div class="help-item-ico"><svg viewBox="0 0 14 14"><path d="M12 2.5c1 2 1.5 3.5 1.5 4.5S13 9.5 12 11c-.8.8-2.3 1.1-4 1.1s-3.2-.3-4-1.1C2.5 9.5 2 8.5 2 6.5S2.5 3.5 3.5 2.5C4.7 2 5.7 2 7.5 2s2.8 0 4.5.5z" fill="none"/></svg></div>
<div>
<div class="help-item-t">WhatsApp Seller Resmi</div>
<div class="help-item-d">Untuk pertanyaan seputar order baru, pembayaran, garansi, dan perpanjangan key, kamu bisa langsung WhatsApp seller resmi kami. Pastikan kamu menghubungi nomor/akun yang tertera di website ini saja — waspada terhadap penipu yang mengaku sebagai seller SNITZ di luar channel resmi.</div>
</div>
</div>
</div>
</div>
<div class="help-foot">
<div class="help-foot-lbl">Dokumen Legal</div>
<div class="help-foot-links">
<button class="hfl" onclick="openLegal('refund')">Pengembalian Dana</button>
<button class="hfl" onclick="openLegal('tos')">Terms of Service</button>
<button class="hfl" onclick="openLegal('privacy')">Privacy Policy</button>
<button class="hfl" onclick="openLegal('safety')">Safety Guidelines</button>
</div>
</div>
</div>
</div>
<!-- ══════ LEGAL MODAL ══════ -->
<div id="legalov" onclick="if(event.target===this)closeLegal()">
<div class="legal-panel">
<div class="ltabs">
<button class="ltab act" onclick="switchLegalTab('refund')" id="ltab-refund">Refund</button>
<button class="ltab" onclick="switchLegalTab('tos')" id="ltab-tos">ToS</button>
<button class="ltab" onclick="switchLegalTab('privacy')" id="ltab-privacy">Privacy</button>
<button class="ltab" onclick="switchLegalTab('safety')" id="ltab-safety">Safety</button>
</div>
<div class="legal-head">
<div class="legal-title" id="legalTitle">Pengembalian Dana</div>
<button class="legal-x" onclick="closeLegal()"><svg viewBox="0 0 10 10"><path d="M1 1l8 8M9 1L1 9"/></svg></button>
</div>
<div class="legal-body" id="legalBody"></div>
</div>
</div>
<!-- ══════ PRODUCT MODAL ══════ -->
<div id="mdov" onclick="cMd(event)">
<div class="md">
<div class="md-head"><canvas id="mdcv"></canvas><button class="md-close" onclick="cMd()"><svg viewBox="0 0 10 10"><path d="M1 1l8 8M9 1L1 9"/></svg></button><div class="md-title" id="mdT"></div></div>
<div class="md-body"><div class="md-price" id="mdP"></div><ul class="md-feats" id="mdF"></ul><button class="md-buy" id="mdBuyBtn" onclick="openPayFromModal()" data-i="buyBtn">Beli Sekarang</button></div>
</div>
</div>
<!-- ══════ OVERLAY ══════ -->
<div id="dov" onclick="closeDr()"></div>
<div id="dr">
<div class="dr-banner">
<canvas id="drBcv"></canvas>
<div class="dr-banner-inner">
<div class="dr-bname">SNITZ</div>
<div class="dr-btag" data-i="drTag">Injector Project</div>
</div>
</div>
<div class="dr-hdr">
<span class="dr-htitle" data-i="drH">Menu</span>
<button class="dr-x" onclick="closeDr()"><svg viewBox="0 0 10 10"><path d="M1 1l8 8M9 1L1 9"/></svg></button>
</div>
<div class="dr-body">
<div class="dr-slbl" data-i="drNav">Navigation</div>
<a class="dr-item act" href="#hero" onclick="closeDr()"><span class="dr-ico"><svg viewBox="0 0 16 16"><path d="M2 8.5L8 3l6 5.5V14H11v-4H5v4H2z" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span>Home</span></a>
<a class="dr-item" href="#why" onclick="closeDr()"><span class="dr-ico"><svg viewBox="0 0 16 16"><path d="M8 2l1.8 5H16l-4.4 3.2 1.7 5.1L8 12 4.7 15.3l1.7-5.1L2 7h5.2z" stroke-linejoin="round"/></svg></span><span data-i="wEy">Advantages</span></a>
<a class="dr-item" href="#how" onclick="closeDr()"><span class="dr-ico"><svg viewBox="0 0 16 16"><path d="M3 4h10M3 8h10M3 12h6" stroke-linecap="round"/></svg></span><span>How It Works</span></a>
<a class="dr-item" href="#vip" onclick="closeDr()"><span class="dr-ico"><svg viewBox="0 0 16 16"><path d="M2 12l3-8 3 4 3-3.5 3 7.5H2z" stroke-linejoin="round"/></svg></span><span>Aplikasi VIP</span></a>
<a class="dr-item" href="#dl" onclick="closeDr()"><span class="dr-ico"><svg viewBox="0 0 16 16"><path d="M8 2v9M4.5 7.5L8 11.5l3.5-4M2 13.5h12" stroke-linecap="round"/></svg></span><span>Download Free</span></a>
<a class="dr-item" href="#specs" onclick="closeDr()"><span class="dr-ico"><svg viewBox="0 0 16 16"><rect x="2" y="2" width="12" height="12" rx="2"/><path d="M5 8h6M8 5v6" stroke-linecap="round"/></svg></span><span data-i="specEy">Specs</span></a>
<a class="dr-item" href="#testi" onclick="closeDr()"><span class="dr-ico"><svg viewBox="0 0 16 16"><path d="M2 6h4l1 4h2l1-4h4" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span data-i="testiEy">Reviews</span></a>
<a class="dr-item" href="#faq" onclick="closeDr()"><span class="dr-ico"><svg viewBox="0 0 16 16"><circle cx="8" cy="8" r="6"/><path d="M8 11.5V11M8 9c0-1.8 2.2-1.8 2.2-3.4a2.2 2.2 0 00-4.4 0" stroke-linecap="round"/></svg></span><span>FAQ</span></a>
<a class="dr-item" href="#contrib" onclick="closeDr()"><span class="dr-ico"><svg viewBox="0 0 16 16"><circle cx="6" cy="5" r="2.5"/><circle cx="12" cy="6" r="2"/><path d="M1 14c0-2.8 2.2-4.5 5-4.5s5 1.7 5 4.5M12 8c1.8 0 3 1.2 3 3" stroke-linecap="round"/></svg></span><span>Contributor</span></a>
<a class="dr-item" href="#socmed" onclick="closeDr()"><span class="dr-ico"><svg viewBox="0 0 16 16"><circle cx="12.5" cy="3" r="1.8"/><circle cx="3.5" cy="8" r="1.8"/><circle cx="12.5" cy="13" r="1.8"/><path d="M5.2 7.2l5.7-3M5.2 8.8l5.7 3" stroke-linecap="round"/></svg></span><span data-i="socEy">Social Media</span></a>
<a class="dr-item" href="#contact" onclick="closeDr()"><span class="dr-ico"><svg viewBox="0 0 16 16"><rect x="1.5" y="3.5" width="13" height="9" rx="1.5"/><path d="M1.5 6l6.5 4.5L14.5 6" stroke-linecap="round"/></svg></span><span data-i="ctEy">Contact & Seller</span></a>
<a class="dr-item" href="#support" onclick="closeDr()"><span class="dr-ico"><svg viewBox="0 0 16 16"><circle cx="8" cy="8" r="6"/><path d="M8 11V10M8 7c0-1.5 2-1.5 2-3a2 2 0 00-4 0" stroke-linecap="round"/></svg></span><span>Support</span></a>
<div class="dr-div"></div>
<div class="dr-slbl" data-i="drTheme">Tema Warna (50+)</div>
<div class="dr-trow" id="themeRow"></div>
<div class="dr-div"></div>
<div class="dr-slbl">Bahasa</div>
<button class="dr-item" onclick="togLang();closeDr()"><span class="dr-ico"><svg viewBox="0 0 16 16"><circle cx="8" cy="8" r="6"/><path d="M8 2c-2.5 2-4 3.7-4 6s1.5 4 4 6M8 2c2.5 2 4 3.7 4 6s-1.5 4-4 6M2 8h12" stroke-linecap="round"/></svg></span><span id="langT">Indonesia / English</span></button>
</div>
</div>
<!-- ══════ NAV ══════ -->
<nav id="nav">
<div class="nav-l">
<div class="nav-mark">
<svg viewBox="0 0 28 28" fill="none">
<path d="M14 2L26 14L14 26L2 14Z" stroke="var(--ink)" stroke-width="1.4"/>
<circle cx="14" cy="14" r="3.5" fill="var(--acc)"/>
<circle cx="14" cy="14" r="6.5" stroke="var(--acc)" stroke-width=".8" opacity=".4"/>
</svg>
</div>
<span class="nav-name">SNITZ</span>
</div>
<div class="nav-r">
<button class="npill" onclick="openThemePicker()">
<svg viewBox="0 0 14 14"><circle cx="7" cy="7" r="2.2"/><path d="M7 1v1.4M7 11.6V13M1 7h1.4M11.6 7H13M3 3l1 1M10 10l1 1M10 3l-1 1M4 10l-1 1" stroke-linecap="round"/></svg>
<span data-i="tBtn">Tema</span>
</button>
<button class="npill" onclick="togLang()">
<svg viewBox="0 0 14 14"><circle cx="7" cy="7" r="5.5"/><path d="M7 1.5C5.3 3 4.5 4.8 4.5 7s.8 4 2.5 5.5M7 1.5c1.7 1.5 2.5 3.3 2.5 5.5s-.8 4-2.5 5.5M1.5 7h11" stroke-linecap="round"/></svg>
<span id="ll">ID</span>
</button>
<a class="npill icon" href="#contact">
<svg viewBox="0 0 14 14"><path d="M7 1a6 6 0 012.7 11.4L12.5 13l-.65-2.6A6 6 0 107 1z" stroke-linecap="round" stroke-linejoin="round"/></svg>
</a>
<button class="npill accent" onclick="openDr()">
MENU
</button>
</div>
</nav>
<!-- ══════ HERO ══════ -->
<section id="hero">
<canvas id="hcv"></canvas>
<div class="hero-c">
<div class="h-eye"><span class="h-eye-dot"></span><span data-i="hEye">Injector App Best 2025</span><span class="h-eye-dot" style="animation-delay:.5s"></span></div>
<div class="h-logo-3d"><div class="h-logo">SNI<span class="h-logo-accent" id="heroT">T<svg id="t-orbit-svg" viewBox="0 0 100 100" width="0" height="0" xmlns="http://www.w3.org/2000/svg"><path id="t-orbit-path" class="t-stroke-glow" d=""/></svg></span>Z</div></div>
<div class="h-sub" data-i="hSub">— Premium Injector V2.0 —</div>
<p class="h-tag" data-i="hTag"><strong>SNITZ PROJECT V2.0</strong> — Injector premium generasi terbaru. Sensi Optimizer, AimTrick Inject, Cache Cleaning, DPI via Notifikasi. Support Android, Emulator & Mobilador.</p>
<div class="h-cta">
<a href="#vip" class="btn btn-d">
<svg class="bi" viewBox="0 0 16 16"><path d="M2 12l3-8 3 4 3-3.5 3 7.5H2z" stroke="currentColor" fill="none" stroke-linejoin="round"/></svg>
<span data-i="hCta1">Lihat VIP</span>
</a>
<a href="#dl" class="btn btn-o">
<svg class="bi" viewBox="0 0 16 16"><path d="M8 2v9M4.5 7.5L8 11.5l3.5-4M2 13.5h12" stroke="currentColor" fill="none" stroke-linecap="round"/></svg>
<span data-i="hCta2">Download Free</span>
</a>
</div>
<div class="h-cta" style="margin-top:13px;animation-delay:.82s">
<a href="https://whatsapp.com/channel/0029VanvMw15q08i4s7Vqt0v" target="_blank" rel="noopener" class="h-ch-info">
<svg class="bi" viewBox="0 0 16 16"><path d="M8 1a7 7 0 103 13.3L14 15l-.7-2.9A7 7 0 008 1z" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg>
Saluran Info SNITZ V2
</a>
</div>
<div class="h-stats">
<div class="hst"><div class="hst-n" data-cnt="16000">0</div><div class="hst-l">Total Users</div></div>
<div class="hst"><div class="hst-n" data-cnt="5">0</div><div class="hst-l">VIP Tiers</div></div>
<div class="hst"><div class="hst-n" data-cnt="99">0</div><div class="hst-l">% Accuracy</div></div>
<div class="hst"><div class="hst-n" data-cnt="24">0</div><div class="hst-l">24H Support</div></div>
</div>
</div>
<div class="h-scroll"><div class="sc-line"></div><div class="sc-lbl">Scroll</div></div>
<div class="hero-band">
<div class="band-track" id="band1"></div>
<div class="band-track band-track2" id="band2"></div>
</div>
</section>
<!-- ══════ WHY ══════ -->
<section class="sec scroll-section" id="why">
<div class="sl-top"></div><div class="sl-bottom"></div><div class="sl-left"></div><div class="sl-right"></div>
<div class="sec-in">
<div class="sec-ey rv" data-i="wEy">Keunggulan</div>
<div class="sec-h rv" style="transition-delay:.07s"><span data-i="wH">Mengapa Memilih </span><em>SNITZ?</em></div>
<p class="sec-p rv" style="transition-delay:.14s" data-i="wP">Tidak semua injector diciptakan sama. Kami membangun dari nol, mengoptimalkan setiap baris kode, menguji di ratusan device, dan tidak pernah rilis sebelum benar-benar siap. Hasilnya adalah tool yang <strong>tidak pernah gagal di momen terpenting</strong>.</p>
<div class="feat-grid" id="featGrid"></div>
</div>
</section>
<!-- ══════ HOW IT WORKS ══════ -->
<section class="sec sec-w scroll-section" id="how">
<div class="sl-top"></div><div class="sl-bottom"></div><div class="sl-left"></div><div class="sl-right"></div>
<div class="sec-in">
<div class="sec-ey rv" data-i="howEy">How It Works</div>
<div class="sec-h rv" style="transition-delay:.07s"><span data-i="howH">Easy In </span><em data-i="howHem">4 Steps</em></div>
<p class="sec-p rv" style="transition-delay:.14s" data-i="howP">From download to ready-to-play in just minutes. No tech skills needed, no root required.</p>
<div class="how-steps" id="howSteps"></div>
</div>
</section>
<!-- ══════ VIP ══════ -->
<section class="sec scroll-section" id="vip">
<div class="sl-top"></div><div class="sl-bottom"></div><div class="sl-left"></div><div class="sl-right"></div>
<div class="sec-in">
<div class="sec-ey rv" data-i="vEy">Premium</div>
<div class="sec-h rv" style="transition-delay:.07s"><span data-i="vH">Aplikasi </span><em>VIP</em></div>
<p class="sec-p rv" style="transition-delay:.14s" data-i="vP">Lima tier dirancang untuk setiap level kebutuhan. Mulai dari Rp 75.000 hingga Rp 450.000 — <strong>semua paket mendapat fitur Sensi Optimizer, AimTrick Inject, dan Cache Cleaning</strong>. Tidak ada paket yang mengecewakan.</p>
<!-- ── TAB SWITCHER ── -->
<div style="display:flex;justify-content:center;width:100%">
<div class="vip-tabs rv" style="transition-delay:.18s" id="vipTabs">
<button class="vip-tab active" id="tab-android" onclick="switchVipTab('android',0)">
<svg viewBox="0 0 16 16"><path d="M4 6h8v7a1 1 0 01-1 1H5a1 1 0 01-1-1V6zM6 6V4a2 2 0 014 0v2M2 9h2M12 9h2"/><circle cx="6" cy="2.5" r=".6" fill="currentColor"/><circle cx="10" cy="2.5" r=".6" fill="currentColor"/></svg>
SNITZ ANDRO
</button>
<button class="vip-tab" id="tab-pc" onclick="switchVipTab('pc',1)">
<svg viewBox="0 0 16 16"><rect x="1" y="2" width="14" height="10" rx="1.5"/><path d="M5 15h6M8 12v3"/></svg>
SNITZ PC
</button>
<button class="vip-tab" id="tab-setpc" onclick="switchVipTab('setpc',2)">
<svg viewBox="0 0 16 16"><path d="M3 4h10M3 8h7M3 12h5"/><circle cx="13" cy="11" r="2.5"/><path d="M13 9v1.3M13 12.7V14M11.3 11H10M16 11h-1.3M11.9 9.9l-.9-.9M15.1 13.1l-.9-.9M14.1 9.9l.9-.9M10.9 13.1l.9-.9"/></svg>
SET PC
</button>
</div>
</div>
<!-- ── TAB PANELS ── -->
<div class="vip-tab-panels" id="vipPanels">
<div class="vip-tab-panels-inner" id="vipInner">
<!-- ANDROID PANEL -->
<div class="vip-panel" id="panel-android">
<div class="prod-grid" id="prodGrid"></div>
</div>
<!-- PC PANEL -->
<div class="vip-panel" id="panel-pc">
<div class="prod-grid" id="prodGridPC"></div>
</div>
<!-- SET PC PANEL -->
<div class="vip-panel" id="panel-setpc">
<div class="setpc-header-banner rv">
<div class="setpc-header-eyebrow">Layanan Optimasi PC</div>
<div class="setpc-header-title">SET PC by <em>SHANX</em></div>
<p class="setpc-header-desc">Layanan optimasi PC eksklusif dari SHANX. Sensitivity tuning presisi, system optimization, dan registry tweaking profesional. Hubungi <strong>Ocho</strong> untuk order langsung — respon cepat, hasil nyata.</p>
</div>
<div class="setpc-grid" id="setpcGrid"></div>
</div>
</div>
</div>
</div>
</section>
<!-- ══════ DOWNLOAD ══════ -->
<section class="sec sec-w scroll-section" id="dl">
<div class="sl-top"></div><div class="sl-bottom"></div><div class="sl-left"></div><div class="sl-right"></div>
<div class="sec-in">
<div class="sec-ey rv" data-i="dEy">Free</div>
<div class="sec-h rv" style="transition-delay:.07s"><span data-i="dH">Download </span><em>Free</em></div>
<p class="sec-p rv" style="transition-delay:.14s" data-i="dP">Coba SNITZ tanpa bayar sepeser pun. Versi gratis sudah cukup kuat untuk sebagian besar gamer kasual — dan kalau kamu ingin lebih, upgrade ke VIP kapan saja hanya dalam hitungan menit.</p>
<div class="dl-wrap rv" style="transition-delay:.2s">
<div class="dl-card">
<canvas id="dlcv"></canvas>
<div class="dl-in">
<div class="dl-badge"><span class="dl-dot"></span><span>v4.2.0 Stable Release</span></div>
<div class="dl-title">SNITZ V2.0 FREE</div>
<p class="dl-desc">Support <strong>Android 8.0–14</strong>, <strong>Emulator</strong> & <strong>Mobilador</strong>. Ukuran hanya <strong>4.2MB</strong>, tidak butuh root. Fitur dasar: Cache Cleaning, Sensi Optimizer basic, Up Performance. Unlimited device di versi free.</p>
<div class="dl-note">UPDATE MINGGUAN · DISCORD SUPPORT · BASIC ANTI-BAN</div>
<a href="https://sfl.gl/piBmvv" target="_blank" rel="noopener noreferrer" class="btn-w" style="display:inline-flex;align-items:center;gap:10px;padding:16px 36px;border-radius:100px;background:var(--acc);color:#060b07;font-family:var(--HF);font-size:.82rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase;box-shadow:0 6px 32px rgba(52,168,83,.35);border:none;margin-top:8px">
<svg class="bi" viewBox="0 0 16 16"><path d="M8 2v9M4.5 7.5L8 11.5l3.5-4M2 13.5h12" stroke="currentColor" fill="none" stroke-linecap="round" stroke-width="2"/></svg>
Download Sekarang
</a>
</div>
</div>
</div>
</div>
</section>
<!-- ══════ TECH SPECS ══════ -->
<section class="sec scroll-section" id="specs">
<div class="sl-top"></div><div class="sl-bottom"></div><div class="sl-left"></div><div class="sl-right"></div>
<div class="sec-in">
<div class="sec-ey rv" data-i="specEy">Specifications</div>
<div class="sec-h rv" style="transition-delay:.07s"><span data-i="specH">Technical </span><em data-i="specHem">Comparison</em></div>
<p class="sec-p rv" style="transition-delay:.14s" data-i="specP">Full transparency on what you get at every tier. No hidden fees, no hidden limits.</p>
<div class="specs-wrap rv" style="transition-delay:.2s" id="specsTable"></div>
</div>
</section>
<!-- ══════ TESTIMONIALS ══════ -->
<section class="sec sec-w scroll-section" id="testi">
<div class="sl-top"></div><div class="sl-bottom"></div><div class="sl-left"></div><div class="sl-right"></div>
<div class="sec-in">
<div class="sec-ey rv" data-i="testiEy">Reviews</div>
<div class="sec-h rv" style="transition-delay:.07s"><span data-i="testiH">What They Say </span><em data-i="testiHem">About SNITZ</em></div>
<p class="sec-p rv" style="transition-delay:.14s" data-i="testiP">Over 5,000 active users. Honest opinions, unfiltered.</p>
<div class="testi-track rv" style="transition-delay:.2s" id="testiWrap">
<div class="testi-inner" id="testiInner"></div>
</div>
</div>
</section>
<!-- ══════ FAQ ══════ -->
<section class="sec scroll-section" id="faq">
<div class="sl-top"></div><div class="sl-bottom"></div><div class="sl-left"></div><div class="sl-right"></div>
<div class="sec-in">
<div class="sec-ey rv">FAQ</div>
<div class="sec-h rv" style="transition-delay:.07s"><span data-i="faqH">Pertanyaan </span><em data-i="faqHem">Sering Ditanya</em></div>
<div class="faq-list" id="faqList"></div>
</div>
</section>
<!-- ══════ CONTRIBUTORS ══════ -->
<section class="sec sec-w scroll-section" id="contrib">
<div class="sl-top"></div><div class="sl-bottom"></div><div class="sl-left"></div><div class="sl-right"></div>
<div class="sec-in">
<div class="contrib-layout">
<div>
<div class="sec-ey rv" data-i="contEy">Team</div>
<div class="sec-h rv" style="transition-delay:.07s"><em data-i="contH">Contributors</em><span data-i="contHem"> & Founders</span></div>
<p class="sec-p rv" style="transition-delay:.14s" data-i="contP">Small team, big results. Developers who code till dawn, sellers who never leave a question unanswered.</p>
<div class="ct-grid" id="ctGrid"></div>
</div>
<div class="contrib-orb-wrap rv" style="transition-delay:.18s">
<canvas class="contrib-orb-cv" id="contribOrbCv"></canvas>
</div>
</div>
</div>
</section>
<!-- ══════ SOCMED ══════ -->
<section class="sec scroll-section" id="socmed">
<div class="sl-top"></div><div class="sl-bottom"></div><div class="sl-left"></div><div class="sl-right"></div>
<div class="sec-in">
<div class="sec-ey rv" data-i="socEy">Social Media</div>
<div class="sec-h rv" style="transition-delay:.07s"><span data-i="socH">Follow </span><em data-i="socHem">SNITZ</em></div>
<p class="sec-p rv" style="transition-delay:.14s" data-i="socP">Don't miss the latest updates, exclusive promos, and gaming content. Join thousands of active gamers.</p>
<div class="sm-grid" id="smGrid"></div>
</div>
</section>
<!-- ══════ CONTACT & SELLER ══════ -->
<section class="sec sec-w scroll-section" id="contact">
<div class="sl-top"></div><div class="sl-bottom"></div><div class="sl-left"></div><div class="sl-right"></div>
<div class="sec-in">
<div class="sec-ey rv" data-i="ctEy">Contact</div>
<div class="sec-h rv" style="transition-delay:.07s"><span data-i="ctH">Contact </span><em data-i="ctHem">& Seller</em></div>
<p class="sec-p rv" style="transition-delay:.14s" data-i="ctP">Contact our official sellers or send a message. Active <strong>24 hours a day, 7 days a week</strong>.</p>
<div class="sellers-wrap" id="sellersGrid"></div>
<div class="cn-form rv" style="transition-delay:.32s">
<div class="cn-form-title">Send Message Langsung</div>
<div class="cf-row">
<div class="cf-group">
<label class="cf-label" for="cf-name">Your Name</label>
<input class="cf-input" id="cf-name" type="text" placeholder="Nama kamu...">
</div>
<div class="cf-group">
<label class="cf-label" for="cf-email">Email Address</label>
<input class="cf-input" id="cf-email" type="email" placeholder="email@kamu.com">
</div>
</div>
<div class="cf-group">
<label class="cf-label" for="cf-subject">Subject</label>
<select class="cf-select" id="cf-subject">
<option value="">Select a subject</option>
<option>Pertanyaan tentang VIP</option>
<option>Masalah Aktivasi Key</option>
<option>Laporan Bug / Error</option>
<option>Pengembalian Dana</option>
<option>Kerjasama / Partnership</option>
<option>Lainnya / Other</option>
</select>
</div>
<div class="cf-group">
<label class="cf-label" for="cf-msg">Your Message</label>
<textarea class="cf-textarea" id="cf-msg" placeholder="Tulis pesanmu secara detail di sini..." data-placeholder-id="Tulis pesanmu secara detail di sini..." data-placeholder-en="Write your message in detail here..."></textarea>
</div>
<button class="cf-btn" onclick="submitContactForm()">
<svg viewBox="0 0 14 14"><path d="M13 1L1 5.5l4.5 2L9 4l-2.5 3.5L9 10.5 13 1z" stroke-linejoin="round" fill="none"/></svg>
Send Message
</button>
<div class="cf-success" id="cfSuccess" data-i="cfSuccess">Pesan berhasil terkirim. Kami akan merespon dalam 24 jam kerja.</div>
</div>
<div class="rv" style="transition-delay:.4s;margin-top:18px;background:var(--bg);border:1px solid var(--line);border-radius:var(--r2);padding:30px">
<div style="font-family:var(--CF);font-size:.56rem;letter-spacing:.2em;color:var(--ink4);text-transform:uppercase;margin-bottom:18px;padding-bottom:12px;border-bottom:1px solid var(--line)" data-i="orderLbl">Cara Order</div>
<div id="orderSteps"></div>
</div>
</div>
</section>
<!-- ══════ SUPPORT CENTER ══════ -->
<section class="sec scroll-section" id="support">
<div class="sl-top"></div><div class="sl-bottom"></div><div class="sl-left"></div><div class="sl-right"></div>
<div class="sec-in">
<div class="sec-ey rv" data-i="supEy">Support</div>
<div class="sec-h rv" style="transition-delay:.07s"><span data-i="supH">Help </span><em data-i="supHem">Center</em></div>
<p class="sec-p rv" style="transition-delay:.14s" data-i="supP">Find quick answers or contact our team. Real solutions, not template replies.</p>
<div class="support-grid rv" style="transition-delay:.2s" id="supportGrid"></div>
</div>
</section>
<!-- ══════ NEWSLETTER ══════ -->
<section class="sec sec-w scroll-section" id="newsletter">
<div class="sl-top"></div><div class="sl-bottom"></div><div class="sl-left"></div><div class="sl-right"></div>
<div class="sec-in">
<div class="sec-ey rv">Newsletter</div>
<div class="sec-h rv" style="transition-delay:.07s"><span data-i="nlH">Subscribe for </span><em data-i="nlHem">Updates</em></div>
<p class="sec-p rv" style="transition-delay:.14s">Dapatkan notifikasi fitur terbaru, promo eksklusif subscriber, dan informasi update langsung ke inbox kamu. Free, bisa unsubscribe kapan saja.</p>
<div class="nl-wrap rv" style="transition-delay:.2s">
<div class="nl-text">
<div class="nl-h">Subscribe Free</div>
<div class="nl-p">Subscribe to get updates on new products and special offers. Tidak ada spam, hanya update penting.</div>
</div>
<div class="nl-form">
<input class="nl-input" id="nlEmail" type="email" placeholder="Your email">
<button class="nl-btn" onclick="subscribeNewsletter()">
<svg viewBox="0 0 14 14"><path d="M13 1L1 5.5l4.5 2L9 4l-2.5 3.5L9 10.5 13 1z" stroke-linejoin="round" fill="none"/></svg>
Subscribe
</button>
</div>
</div>
</div>
</section>
<!-- ══════ FOOTER ══════ -->
<footer>
<canvas id="ftCv"></canvas>
<div class="ft-top">
<div class="ft-brand">
<div class="ft-logo">SNITZ<span>.</span></div>
<div class="ft-tagline">Premium Free Fire injector tools designed for performance and safety. Elevate your gaming experience with our advanced solutions.</div>
<div class="ft-socials" id="ftSocials"></div>
</div>
<div>
<div class="ft-col-title">Quick Links</div>
<div class="ft-links-list">
<a class="ft-link-item" href="#hero">Home</a>
<a class="ft-link-item" href="#why">Keunggulan</a>
<a class="ft-link-item" href="#vip">Aplikasi VIP</a>
<a class="ft-link-item" href="#dl">Download</a>
<a class="ft-link-item" href="#specs">Specifications</a>
<a class="ft-link-item" href="#testi">Reviews</a>
</div>
</div>
<div>
<div class="ft-col-title">Products</div>
<div class="ft-links-list" id="ftProds"></div>
</div>
<div>
<div class="ft-col-title">Support</div>
<div class="ft-links-list">
<button class="ft-link-item" onclick="openHelp()">Pusat Bantuan</button>
<a class="ft-link-item" href="#faq">FAQ</a>
<a class="ft-link-item" href="#contact">Kontak Seller</a>
<button class="ft-link-item" onclick="openLegal('refund')">Pengembalian Dana</button>
<button class="ft-link-item" onclick="openLegal('tos')">Terms of Service</button>
<button class="ft-link-item" onclick="openLegal('privacy')">Privacy Policy</button>
<button class="ft-link-item" onclick="openLegal('safety')">Safety Guidelines</button>
</div>
</div>
</div>
<div class="ft-bottom">
<div class="ft-copy">© 2025 Snitz Project · All Rights Reserved · Seller Kent dezet ugra vemz444</div>
<div class="ft-bottom-links">
<button class="ft-bl" onclick="openLegal('privacy')">Privacy</button>
<button class="ft-bl" onclick="openLegal('tos')">Terms</button>
<button class="ft-bl" onclick="openLegal('refund')">Refund</button>
<button class="ft-bl" onclick="openLegal('safety')">Safety</button>
<button class="ft-bl" onclick="openHelp()">Help</button>
</div>
</div>
</footer>
<style>
/* ── COMMUNITY SECTION ── */
#community{padding:130px 20px;background:#0a100b;color:#fff;position:relative;overflow:hidden}
#commCv{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;opacity:.07}
.comm-in{max-width:1120px;margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:start;position:relative;z-index:1}
@media(max-width:760px){.comm-in{grid-template-columns:1fr;gap:40px}}
.comm-ey{font-family:var(--CF);font-size:.56rem;letter-spacing:.32em;color:rgba(255,255,255,.35);text-transform:uppercase;margin-bottom:12px;display:flex;align-items:center;gap:10px}
.comm-ey::before{content:'';width:24px;height:1px;background:var(--acc);flex-shrink:0}
.comm-h{font-family:var(--HF);font-size:clamp(1.9rem,4.5vw,3rem);font-weight:800;letter-spacing:-.04em;line-height:1.05;color:#fff;margin-bottom:20px}
.comm-h em{color:var(--acc);font-style:normal}
.comm-p{color:rgba(255,255,255,.5);font-size:.98rem;line-height:2;font-weight:300;margin-bottom:28px}
.comm-p strong{color:rgba(255,255,255,.8);font-weight:500}
.comm-platforms{display:flex;flex-direction:column;gap:13px}
.comm-plat{display:flex;align-items:center;gap:16px;padding:18px 20px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);border-radius:14px;transition:all .3s;cursor:none}
.comm-plat:hover{background:rgba(255,255,255,.09);border-color:rgba(255,255,255,.22);transform:translateX(5px)}
.comm-plat-ic{width:42px;height:42px;background:rgba(255,255,255,.08);border-radius:11px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.comm-plat-ic svg{width:18px;height:18px;fill:none;stroke:rgba(255,255,255,.7);stroke-width:1.7}
.comm-plat-n{font-family:var(--HF);font-size:.92rem;font-weight:700;color:#fff}
.comm-plat-d{font-size:.78rem;color:rgba(255,255,255,.38);font-weight:300;margin-top:2px}
.comm-plat-cnt{margin-left:auto;font-family:var(--CF);font-size:.68rem;letter-spacing:.1em;color:var(--acc);font-weight:700}
/* Updates Log */
.upd-list{display:flex;flex-direction:column;gap:13px}
.upd-item{padding:18px 20px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);border-radius:14px;transition:all .3s}
.upd-item:hover{border-color:rgba(255,255,255,.22);background:rgba(255,255,255,.08)}
.upd-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px}
.upd-ver{font-family:var(--CF);font-size:.6rem;letter-spacing:.14em;color:var(--acc);text-transform:uppercase}
.upd-date{font-family:var(--CF);font-size:.54rem;letter-spacing:.1em;color:rgba(255,255,255,.3);text-transform:uppercase}
.upd-t{font-family:var(--HF);font-size:.9rem;font-weight:700;color:#fff;margin-bottom:6px}
.upd-p{font-size:.8rem;color:rgba(255,255,255,.42);font-weight:300;line-height:1.75}
.upd-tags{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap}
.upd-tag{font-family:var(--CF);font-size:.5rem;letter-spacing:.1em;padding:2px 9px;border-radius:3px;text-transform:uppercase}
.upd-tag.fix{background:rgba(0,200,100,.12);color:#00c864;border:1px solid rgba(0,200,100,.25)}
.upd-tag.new{background:rgba(255,200,0,.1);color:#ffc800;border:1px solid rgba(255,200,0,.2)}
.upd-tag.sec{background:rgba(100,200,255,.1);color:#64c8ff;border:1px solid rgba(100,200,255,.2)}
/* ── TRUST BADGES ── */
#trust{padding:90px 20px;background:var(--bg2);position:relative;overflow:hidden}
.trust-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px;margin-top:50px}
.trust-card{background:#0a100b;border:1px solid var(--line);border-radius:16px;padding:26px;text-align:center;transition:all .32s;position:relative;overflow:hidden}
.trust-card::before{content:'';position:absolute;width:140px;height:140px;border-radius:50%;background:radial-gradient(circle,var(--acc-t) 0%,transparent 70%);transform:translate(-50%,-50%);pointer-events:none;opacity:0;transition:opacity .3s;z-index:0}
.trust-card:hover::before{opacity:1}
/* trust-card spotlight handled in main CSS */
.trust-card:hover{transform:translateY(-5px);border-color:var(--line2);box-shadow:0 16px 50px rgba(0,0,0,.09)}
/* trust-card:hover handled in main CSS */
.trust-cv{display:block;width:60px;height:60px;margin:0 auto 14px}
.trust-t{font-family:var(--HF);font-size:.88rem;font-weight:700;color:var(--ink);margin-bottom:5px}
.trust-p{font-size:.78rem;color:var(--ink4);font-weight:300;line-height:1.7}
/* ── CTA FINAL ── */
#cta-final{padding:140px 20px;background:var(--bg);position:relative;overflow:hidden;text-align:center}
#ctafCv{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.ctaf-in{position:relative;z-index:2;max-width:700px;margin:0 auto}
.ctaf-pre{font-family:var(--CF);font-size:.58rem;letter-spacing:.3em;color:var(--ink4);text-transform:uppercase;margin-bottom:16px;display:flex;align-items:center;justify-content:center;gap:10px}
.ctaf-pre::before,.ctaf-pre::after{content:'';width:32px;height:1px;background:var(--line2);flex-shrink:0}
.ctaf-h{font-family:var(--HF);font-size:clamp(2.5rem,7vw,5rem);font-weight:800;letter-spacing:-.04em;line-height:.95;color:var(--ink);margin-bottom:24px}
.ctaf-h em{color:var(--acc);font-style:normal}
.ctaf-p{color:var(--ink3);font-size:1.1rem;line-height:1.9;font-weight:300;margin-bottom:42px;max-width:520px;margin-left:auto;margin-right:auto}
.ctaf-btns{display:flex;gap:16px;justify-content:center;flex-wrap:wrap}
</style>
<!-- COMMUNITY SECTION -->
<section id="community" class="scroll-section">
<div class="sl-top"></div><div class="sl-bottom"></div>
<canvas id="commCv"></canvas>
<div class="comm-in">
<div>
<div class="comm-ey rv" data-i="commEy">Community</div>
<div class="comm-h rv" style="transition-delay:.07s"><span data-i="commH">Join Our </span><em data-i="commHem">Community</em></div>
<p class="comm-p rv" style="transition-delay:.14s" data-i="commP">Over 5,000 active gamers across our official platforms. The bigger the community, the faster we grow.</p>
<div class="comm-platforms rv" style="transition-delay:.2s">
<a class="comm-plat" href="https://discord.gg/nDyKJy4QE" target="_blank" rel="noopener" style="text-decoration:none">
<div class="comm-plat-ic"><svg viewBox="0 0 16 16"><path d="M7 1a6 6 0 102.7 11.4L12.5 13l-.65-2.6A6 6 0 107 1z" stroke-linecap="round" stroke-linejoin="round"/></svg></div>
<div><div class="comm-plat-n">Discord</div><div class="comm-plat-d">Official server with support, updates, and community channels</div></div>
<div class="comm-plat-cnt">1.5K+ Members</div>
</a>
<a class="comm-plat" href="https://www.instagram.com/shanx.rar?igsh=MWt1anVkcXZ0a3piOA%3D%3D&utm_source=qr" target="_blank" rel="noopener" style="text-decoration:none">
<div class="comm-plat-ic"><svg viewBox="0 0 16 16"><path d="M4 1h8a3 3 0 013 3v8a3 3 0 01-3 3H4a3 3 0 01-3-3V4a3 3 0 013-3zm4 3a3 3 0 100 6 3 3 0 000-6zm3.8.2a.7.7 0 100 1.4.7.7 0 000-1.4z"/></svg></div>
<div><div class="comm-plat-n">Instagram</div><div class="comm-plat-d">Visual updates, new feature showcases, and exclusive content</div></div>
<div class="comm-plat-cnt">3.5K+ Followers</div>
</a>
<a class="comm-plat" href="https://www.tiktok.com/@shan.xpp?_r=1&_t=ZS-94nOQnDyClm" target="_blank" rel="noopener" style="text-decoration:none">
<div class="comm-plat-ic"><svg viewBox="0 0 16 16"><path d="M12 3c1 1.5 1.5 3 1.5 4.5S13 10.5 12 12c-1 .8-2.5 1-4 1s-3-.2-4-1C2.5 10.5 2 9.5 2 7.5S2.5 4 3.5 3C4.7 2.5 5.7 2.5 7.5 2.5s2.8 0 4.5.5z"/></svg></div>
<div><div class="comm-plat-n">TikTok</div><div class="comm-plat-d">Gameplay showcases, tutorials, and latest updates</div></div>
<div class="comm-plat-cnt">19K+ Followers</div>
</a>
<a class="comm-plat" href="https://whatsapp.com/channel/0029VanvMw15q08i4s7Vqt0v" target="_blank" rel="noopener" style="text-decoration:none">
<div class="comm-plat-ic"><svg viewBox="0 0 16 16"><path d="M8 1a7 7 0 103 13.3L14 15l-.7-2.9A7 7 0 008 1z"/></svg></div>
<div><div class="comm-plat-n">Saluran SNITZ V2</div><div class="comm-plat-d">Saluran resmi update, info fitur terbaru dan pengumuman penting</div></div>
<div class="comm-plat-cnt">8.5K+ Members</div>
</a>
<a class="comm-plat" href="https://whatsapp.com/channel/0029VbCUvex1dAw6CVvPzU3O" target="_blank" rel="noopener" style="text-decoration:none">
<div class="comm-plat-ic"><svg viewBox="0 0 16 16"><path d="M8 1a7 7 0 103 13.3L14 15l-.7-2.9A7 7 0 008 1z"/></svg></div>
<div><div class="comm-plat-n">Saluran Testi</div><div class="comm-plat-d">Kumpulan testimoni nyata dari pengguna aktif SNITZ PROJECT</div></div>
<div class="comm-plat-cnt">Bukti Nyata</div>
</a>
</div>
</div>
<div>
<div class="comm-ey rv" style="transition-delay:.1s">Update Log</div>
<div class="upd-list rv" style="transition-delay:.17s" id="updList"></div>
</div>
</div>
</section>
<!-- TRUST BADGES -->
<section id="trust" class="sec scroll-section">
<div class="sl-top"></div><div class="sl-bottom"></div><div class="sl-left"></div><div class="sl-right"></div>
<div class="sec-in">
<div class="sec-ey rv">Kepercayaan</div>
<div class="sec-h rv" style="transition-delay:.07s">Mengapa Kami <em>Terpercaya</em></div>
<p class="sec-p rv" style="transition-delay:.14s">Kepercayaan 12.000+ pengguna bukan kebetulan. Ada alasan konkret di balik setiap klaim yang kami buat — dan kami siap membuktikannya.</p>
<div class="trust-grid" id="trustGrid"></div>
</div>
</section>
<!-- FINAL CTA -->
<section id="cta-final" class="scroll-section">
<div class="sl-top"></div><div class="sl-bottom"></div>
<canvas id="ctafCv"></canvas>
<div class="ctaf-in">
<div class="ctaf-pre rv">Mulai Sekarang</div>
<div class="ctaf-h rv" style="transition-delay:.08s">Siap Elevate<br><em>Gaming</em> Kamu?</div>
<p class="ctaf-p rv" style="transition-delay:.16s">Download gratis dan rasakan sendiri perbedaannya. Atau langsung upgrade ke VIP dan nikmati pengalaman gaming premium yang tidak akan kamu temukan di tempat lain.</p>
<div class="ctaf-btns rv" style="transition-delay:.24s">
<a href="#dl" class="btn btn-d">
<svg class="bi" viewBox="0 0 16 16"><path d="M8 2v9M4.5 7.5L8 11.5l3.5-4M2 13.5h12" stroke="currentColor" fill="none" stroke-linecap="round"/></svg>
Download Free
</a>
<a href="#vip" class="btn btn-o">
<svg class="bi" viewBox="0 0 16 16"><path d="M2 12l3-8 3 4 3-3.5 3 7.5H2z" stroke="currentColor" fill="none" stroke-linejoin="round"/></svg>
Lihat VIP
</a>
<a href="#contact" class="btn btn-o">
<svg class="bi" viewBox="0 0 16 16"><path d="M7 1a6 6 0 102.7 11.4L12.5 13l-.65-2.6A6 6 0 107 1z" stroke="currentColor" fill="none" stroke-linecap="round"/></svg>
Hubungi Seller
</a>
</div>
</div>
</section>
<style>
/* ── ROADMAP ── */
#roadmap{padding:130px 20px;background:#0a100b;position:relative;overflow:hidden}
.rm-timeline{margin-top:58px;position:relative;padding-left:30px}
.rm-timeline::before{content:'';position:absolute;left:5px;top:0;bottom:0;width:1px;background:linear-gradient(180deg,transparent,var(--acc),var(--acc),transparent)}
.rm-item{position:relative;padding:0 0 44px 30px}
.rm-item::before{content:'';position:absolute;left:-25px;top:5px;width:11px;height:11px;border-radius:50%;background:var(--bg);border:2px solid var(--line2);transition:all .35s}
.rm-item.done::before{background:var(--acc);border-color:var(--acc);box-shadow:0 0 0 4px var(--acc-t)}
.rm-item.active::before{background:var(--acc);border-color:var(--acc);animation:pulseDot 2s ease infinite}
@keyframes pulseDot{0%,100%{box-shadow:0 0 0 0 var(--acc-t)}50%{box-shadow:0 0 0 10px transparent}}
.rm-tag{display:inline-flex;align-items:center;gap:6px;font-family:var(--CF);font-size:.52rem;letter-spacing:.16em;padding:3px 12px;border-radius:4px;text-transform:uppercase;margin-bottom:9px}
.rm-tag.done{background:var(--acc-t);color:var(--acc);border:1px solid var(--line2)}
.rm-tag.active{background:var(--acc);color:#060b07}
.rm-tag.upcoming{background:var(--bg2);color:var(--ink4);border:1px solid var(--line)}
.rm-h{font-family:var(--HF);font-size:1.05rem;font-weight:700;color:var(--ink);margin-bottom:7px}
.rm-p{font-size:.86rem;color:var(--ink3);line-height:1.85;font-weight:300;max-width:600px}
/* ── PARTNER / TRUSTED BY ── */
#partners{padding:80px 20px;background:var(--bg2);overflow:hidden;position:relative}
.prt-track-wrap{position:relative;margin-top:48px;overflow:hidden}
.prt-track-wrap::before,.prt-track-wrap::after{content:'';position:absolute;top:0;bottom:0;width:100px;z-index:2;pointer-events:none}
.prt-track-wrap::before{left:0;background:linear-gradient(90deg,var(--bg2),transparent)}
.prt-track-wrap::after{right:0;background:linear-gradient(270deg,var(--bg2),transparent)}
.prt-track{display:flex;gap:32px;animation:prtScroll 28s linear infinite;width:max-content}
.prt-track2{animation-delay:-14s}
.prt-item{display:flex;align-items:center;gap:12px;padding:18px 28px;background:#0a100b;border:1px solid var(--line);border-radius:14px;font-family:var(--HF);font-size:.82rem;font-weight:700;color:var(--ink3);white-space:nowrap;flex-shrink:0;transition:all .25s}
.prt-item:hover{border-color:var(--acc);color:var(--acc)}
.prt-dot{width:8px;height:8px;border-radius:50%;background:var(--acc);flex-shrink:0}
@keyframes prtScroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}
/* ── PRICING COMPARISON ── */
#pricecmp{padding:120px 20px;background:#0a100b;position:relative;overflow:hidden}
.cmp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-top:54px}
.cmp-col{border:1px solid var(--line);border-radius:18px;overflow:hidden;transition:all .35s}
.cmp-col.best{border-color:var(--acc);border-width:1.5px;box-shadow:0 8px 40px rgba(0,0,0,.1)}
.cmp-col:hover{transform:translateY(-5px);box-shadow:0 16px 50px rgba(0,0,0,.12)}
.cmp-head{padding:22px 16px;text-align:center;background:var(--bg);border-bottom:1px solid var(--line)}
.cmp-col.best .cmp-head{background:var(--acc)}
.cmp-n{font-family:var(--HF);font-size:1rem;font-weight:800;color:var(--ink);letter-spacing:-.01em}
.cmp-col.best .cmp-n{color:#fff}
.cmp-pr{font-family:var(--HF);font-size:1.5rem;font-weight:800;letter-spacing:-.03em;color:var(--acc);margin-top:5px}
.cmp-col.best .cmp-pr{color:rgba(255,255,255,.8)}
.cmp-rows{padding:10px 0}
.cmp-row{padding:10px 16px;font-size:.82rem;color:var(--ink3);font-weight:300;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:7px}
.cmp-row:last-child{border-bottom:none}
.cmp-ok{width:13px;height:13px;flex-shrink:0}
.cmp-ok svg{width:100%;height:100%;fill:none;stroke:var(--acc);stroke-width:2;stroke-linecap:round}
.cmp-x{width:13px;height:13px;flex-shrink:0}
.cmp-x svg{width:100%;height:100%;fill:none;stroke:var(--ink4);stroke-width:2;stroke-linecap:round}
/* ── SECURITY SECTION ── */
#security{padding:130px 20px;background:var(--bg);position:relative;overflow:hidden}
.sec-shield{display:grid;grid-template-columns:1fr 1fr;gap:70px;align-items:center;max-width:1120px;margin:0 auto}
@media(max-width:760px){.sec-shield{grid-template-columns:1fr;gap:40px}}
.sec-shield-cv{aspect-ratio:1;max-width:380px;margin:0 auto;position:relative}
.sec-shield-canvas{width:100%;height:100%;display:block}
.sec-feat-list{display:flex;flex-direction:column;gap:18px}
.sec-feat{display:flex;align-items:flex-start;gap:16px;padding:18px;background:#0a100b;border:1px solid var(--line);border-radius:14px;transition:all .3s}
.sec-feat:hover{border-color:var(--acc);box-shadow:0 8px 32px rgba(0,0,0,.07)}
.sec-feat-ic{width:40px;height:40px;background:var(--acc-t);border-radius:11px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.sec-feat-ic svg{width:18px;height:18px;fill:none;stroke:var(--acc);stroke-width:1.7}
.sec-feat-t{font-family:var(--HF);font-size:.92rem;font-weight:700;color:var(--ink);margin-bottom:5px}
.sec-feat-p{font-size:.82rem;color:var(--ink3);font-weight:300;line-height:1.75}
</style>
<!-- PARTNERS MARQUEE -->
<div id="partners" class="scroll-section">
<div class="sl-top"></div><div class="sl-bottom"></div>
<div style="max-width:1120px;margin:0 auto">
<div class="sec-ey rv" style="justify-content:center;text-align:center">Trusted by the Community</div>
<div class="sec-h rv" style="text-align:center;transition-delay:.07s;font-size:clamp(1.5rem,4vw,2.5rem)">Join <em>Thousands of Gamers</em></div>
</div>
<div class="prt-track-wrap rv" style="transition-delay:.2s">
<div class="prt-track" id="prtTrack1"></div>
<div class="prt-track prt-track2" id="prtTrack2"></div>
</div>
</div>
<!-- ROADMAP -->
<section id="roadmap" class="sec sec-w scroll-section">
<div class="sl-top"></div><div class="sl-bottom"></div><div class="sl-left"></div><div class="sl-right"></div>
<div class="sec-in">
<div class="sec-ey rv">Roadmap</div>
<div class="sec-h rv" style="transition-delay:.07s"><span>Rencana </span><em>Pengembangan</em></div>
<p class="sec-p rv" style="transition-delay:.14s">Transparansi penuh tentang apa yang sudah kami capai dan apa yang sedang kami bangun. Roadmap ini diperbarui setiap kuartal sesuai progress aktual tim.</p>
<div class="rm-timeline rv" style="transition-delay:.22s" id="rmList"></div>
</div>
</section>
<!-- SECURITY -->
<section id="security" class="scroll-section">
<div class="sl-top"></div><div class="sl-bottom"></div><div class="sl-left"></div><div class="sl-right"></div>
<div class="sec-shield">
<div>
<div class="sec-ey rv">Security</div>
<div class="sec-h rv" style="transition-delay:.07s">Sistem <em>Anti-Deteksi</em><br>Berlapis</div>
<p class="sec-p rv" style="transition-delay:.14s;margin-bottom:28px">Keamanan adalah prioritas utama — bukan fitur tambahan. Setiap layer perlindungan dirancang khusus dan diuji sebelum deploy.</p>
<div class="sec-feat-list rv" style="transition-delay:.2s" id="secFeats"></div>
</div>
<div class="sec-shield-cv rv" style="transition-delay:.28s;position:relative">
<!-- Fingerprint SVG with animated glow -->
<svg id="fpSvg" viewBox="0 0 400 400" fill="none" style="position:absolute;inset:0;width:100%;height:100%;opacity:1;pointer-events:all;z-index:2;cursor:pointer" xmlns="http://www.w3.org/2000/svg">
<defs>
<filter id="fpGlow">
<feGaussianBlur stdDeviation="3" result="blur"/>
<feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge>
</filter>
<filter id="fpGlowStrong">
<feGaussianBlur stdDeviation="5" result="blur"/>
<feMerge><feMergeNode in="blur"/><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge>
</filter>
</defs>
<g class="fp-ridges" stroke="var(--acc)" stroke-linecap="round" fill="none">
<!-- bottom arcs -->
<path class="fp-r" d="M200 340 C120 340 60 280 60 200" stroke-width="2.5"/>
<path class="fp-r" d="M200 340 C280 340 340 280 340 200" stroke-width="2.5"/>
<path class="fp-r" d="M200 320 C130 320 80 270 80 200" stroke-width="2.5"/>
<path class="fp-r" d="M200 320 C270 320 320 270 320 200" stroke-width="2.5"/>
<path class="fp-r" d="M200 300 C140 300 96 254 96 200" stroke-width="2.5"/>
<path class="fp-r" d="M200 300 C260 300 304 254 304 200" stroke-width="2.5"/>
<path class="fp-r" d="M200 280 C150 280 112 244 112 200" stroke-width="2"/>
<path class="fp-r" d="M200 280 C250 280 288 244 288 200" stroke-width="2"/>
<path class="fp-r" d="M200 260 C158 260 128 232 128 200" stroke-width="2"/>
<path class="fp-r" d="M200 260 C242 260 272 232 272 200" stroke-width="2"/>
<path class="fp-r" d="M200 240 C167 240 144 220 144 200" stroke-width="2"/>
<path class="fp-r" d="M200 240 C233 240 256 220 256 200" stroke-width="2"/>
<path class="fp-r" d="M200 220 C176 220 160 210 160 200" stroke-width="1.8"/>
<path class="fp-r" d="M200 220 C224 220 240 210 240 200" stroke-width="1.8"/>
<ellipse class="fp-r" cx="200" cy="200" rx="22" ry="18" stroke-width="1.8"/>
<!-- top arches -->
<path class="fp-r" d="M140 200 C140 155 168 130 200 130 C232 130 260 155 260 200" stroke-width="2"/>
<path class="fp-r" d="M155 200 C155 162 175 140 200 140 C225 140 245 162 245 200" stroke-width="2"/>
<path class="fp-r" d="M170 200 C170 168 183 152 200 152 C217 152 230 168 230 200" stroke-width="1.8"/>
<path class="fp-r" d="M183 200 C183 176 190 164 200 164 C210 164 217 176 217 200" stroke-width="1.8"/>
<!-- outer sweeps -->
<path class="fp-r" d="M80 200 C80 150 100 100 140 72" stroke-width="2"/>
<path class="fp-r" d="M320 200 C320 150 300 100 260 72" stroke-width="2"/>
<path class="fp-r" d="M96 210 C90 160 110 110 150 82" stroke-width="2"/>
<path class="fp-r" d="M304 210 C310 160 290 110 250 82" stroke-width="2"/>
</g>
</svg>
<canvas class="sec-shield-canvas" id="shieldCv" style="position:relative;z-index:1"></canvas>
</div>
</div>
</section>
<!-- PRICING COMPARISON -->
<section id="pricecmp" class="sec sec-w scroll-section">
<div class="sl-top"></div><div class="sl-bottom"></div><div class="sl-left"></div><div class="sl-right"></div>
<div class="sec-in">
<div class="sec-ey rv">Komparasi</div>
<div class="sec-h rv" style="transition-delay:.07s">Pilih Tier <em>Yang Tepat</em></div>
<p class="sec-p rv" style="transition-delay:.14s">Bandingkan semua tier dalam satu tampilan. Tidak perlu scroll bolak-balik — semua informasi penting ada di sini.</p>
<div class="cmp-grid rv" style="transition-delay:.2s" id="cmpGrid"></div>
</div>
</section>
<script>
/* ── EMBEDDED IMAGE DATA ── */
const LOGO="assets/image/logo.png";
const IMG_UGRA="assets/image/ugra.jpeg";
const IMG_KENT="assets/image/kent.jpeg";
const IMG_DEZET="assets/image/dezet.jpeg";
const IMG_SHANX="assets/image/shanx.jpeg";
const IMG_VEMZ444="assets/image/vemz444.jpeg";
const IMG_ROO="assets/image/roo.jpeg";
/* ════════════════════════════════════════════════
DATA
════════════════════════════════════════════════ */
let lang='id', theme='default';
const TR={
id:{tBtn:'Tema',drTag:'Injector V2.0',drH:'Menu',drNav:'Navigasi',drTheme:'Tema Warna (50+)',
hEye:'Injector App Best V2.0 — 2025',hSub:'— Premium Injector V2.0 —',
hTag:'<strong>SNITZ PROJECT V2.0</strong> — Injector premium generasi terbaru. Sensi Optimizer, AimTrick Inject, Cache Cleaning, DPI via Notifikasi. Support Android, Emulator & Mobilador.',
hCta1:'Lihat VIP',hCta2:'Download Free',
wEy:'Keunggulan',wH:'Mengapa Memilih ',wP:'SNITZ V2.0 bukan sekadar injector biasa — ini adalah optimasi performa gaming terlengkap. Sensi, aim, performa device — semua dalam satu aplikasi. Bukan cheat, ini science.',
vEy:'Premium',vH:'Aplikasi ',vP:'Lima tier dirancang untuk setiap level kebutuhan. Mulai dari Rp 75.000 — semua tier support Android, Emulator, dan Mobilador dengan 1 Device slot VIP.',
dEy:'Free',dH:'Download ',dP:'Coba SNITZ V2.0 gratis. Fitur dasar sudah cukup kuat untuk merasakan perbedaan. Upgrade to VIP anytime untuk fitur penuh.',
buyBtn:'Beli via WhatsApp'},
en:{tBtn:'Theme',drTag:'Injector V2.0',drH:'Menu',drNav:'Navigation',drTheme:'Color Themes (50+)',
hEye:'Best Injector App V2.0 — 2025',hSub:'— Premium Injector V2.0 —',
hTag:'<strong>SNITZ PROJECT V2.0</strong> — Next-gen premium injector. Sensi Optimizer, AimTrick Inject, Cache Cleaning, DPI via Notification. Supports Android, Emulator & Mobilador.',
hCta1:'View VIP',hCta2:'Free Download',
wEy:'Advantages',wH:'Why Choose ',wP:'SNITZ V2.0 is not just an injector — it is the most complete gaming performance optimizer. Sensi, aim, device performance — all in one app. Not a cheat, this is science.',
vEy:'Premium',vH:'VIP ',vP:'Five tiers for every level of need. Starting from Rp 75.000 — all tiers support Android, Emulator, and Mobilador with 1 Device VIP slot.',
dEy:'Free',dH:'Free ',dP:'Try SNITZ V2.0 for free. Basic features are powerful enough to feel the difference. Upgrade to VIP anytime for full features.',
buyBtn:'Buy via WhatsApp',orderLbl:'How to Order',cfSuccess:'Message sent successfully. We will respond within 24 working hours.',
howEy:'How It Works',howH:'Easy In ',howHem:'4 Steps',howP:'From download to ready-to-play in just minutes. No tech skills needed, no root required.',
specEy:'Specifications',specH:'Technical ',specHem:'Comparison',specP:'Full transparency on what you get at every tier. No hidden fees, no hidden limits.',
testiEy:'Reviews',testiH:'What They Say ',testiHem:'About SNITZ',testiP:'Over 5,000 active users. Honest opinions, unfiltered.',
faqH:'Frequently ',faqHem:'Asked Questions',
contEy:'Team',contH:'Contributors',contHem:' & Founders',contP:'Small team, big results. Developers who code till dawn, sellers who never leave a question unanswered.',
socEy:'Social Media',socH:'Follow ',socHem:'SNITZ',socP:"Don't miss the latest updates, exclusive promos, and gaming content. Join thousands of active gamers.",
ctEy:'Contact',ctH:'Contact ',ctHem:'& Seller',ctP:'Contact our official sellers or send a message. Active <strong>24 hours a day, 7 days a week</strong>.',
supEy:'Support',supH:'Help ',supHem:'Center',supP:'Find quick answers or contact our team. Real solutions, not template replies.',
nlH:'Subscribe for ',nlHem:'Updates',nlP:'Get notified about the latest features, exclusive promos, and announcements.',
commEy:'Community',commH:'Join Our ',commHem:'Community',commP:'Over 5,000 active gamers across our official platforms. The bigger the community, the faster we grow.',
trustEy:'Why Trust Us',
secEy:'Security',secH:'Safe & ',secHem:'Trusted',
partEy:'Trusted by the Community',partH:'Join ',partHem:'Thousands of Gamers',
rmEy:'Roadmap',rmH:'Development ',rmHem:'Roadmap'}
};
const THEMES=[
{k:'default',c:'#0a0a0a',n:'Dark'},{k:'dark',c:'#1a1a18',n:'Night'},
{k:'neon',c:'#00ff88',n:'Neon'},{k:'red',c:'#e53935',n:'Red'},
{k:'blue',c:'#1565c0',n:'Blue'},{k:'purple',c:'#6a1b9a',n:'Purple'},
{k:'gold',c:'#e65100',n:'Gold'},{k:'pink',c:'#c2185b',n:'Pink'},
{k:'teal',c:'#00695c',n:'Teal'},{k:'orange',c:'#bf360c',n:'Orange'},
{k:'d_lime',c:'#558b2f',n:'Lime'},{k:'d_amber',c:'#ff6f00',n:'Amber'},
{k:'d_rose',c:'#ad1457',n:'Rose'},{k:'d_sky',c:'#0277bd',n:'Sky'},
{k:'d_violet',c:'#4527a0',n:'Violet'},{k:'d_mint',c:'#00695c',n:'Mint'},
{k:'d_turq',c:'#00838f',n:'Turquoise'},{k:'d_coral',c:'#bf360c',n:'Coral'},
{k:'d_ind',c:'#283593',n:'Indigo'},{k:'d_olive',c:'#827717',n:'Olive'},
{k:'d_slate',c:'#37474f',n:'Slate'},{k:'d_wine',c:'#880e4f',n:'Wine'},
{k:'d_forest',c:'#1b5e20',n:'Forest'},{k:'d_navy',c:'#0d47a1',n:'Navy'},
{k:'d_maroon',c:'#b71c1c',n:'Maroon'},{k:'d_copper',c:'#4e342e',n:'Copper'},
{k:'d_sand',c:'#795548',n:'Sand'},{k:'d_steel',c:'#546e7a',n:'Steel'},
{k:'d_blk',c:'#212121',n:'Jet'},{k:'d_gr',c:'#616161',n:'Gray'},
{k:'d_cyn',c:'#006064',n:'Cyan'},{k:'d_em',c:'#2e7d32',n:'Emerald'},
{k:'d_cr',c:'#d84315',n:'Crimson'},{k:'d_mu',c:'#6a1b9a',n:'Mauve'},
{k:'d_sp',c:'#00838f',n:'Sapphire'},{k:'d_cp',c:'#c62828',n:'Carmine'},
{k:'d_oz',c:'#bf360c',n:'Bronze'},{k:'d_pt',c:'#263238',n:'Petrol'},
{k:'d_rb',c:'#558b2f',n:'Herb'},{k:'d_bt',c:'#37474f',n:'Baltic'},
{k:'d_r2',c:'#ad1457',n:'Raspberry'},{k:'d_a2',c:'#ff6f00',n:'Apricot'},
{k:'d_p2',c:'#1a237e',n:'Twilight'},{k:'d_g2',c:'#004d40',n:'Malachite'},
{k:'d_n2',c:'#e65100',n:'Sunset'},{k:'d_o2',c:'#827717',n:'Chartreuse'},
{k:'d_q',c:'#880e4f',n:'Magenta'},{k:'d_r3',c:'#0d47a1',n:'Cobalt'},
{k:'d_s3',c:'#37474f',n:'Storm'},{k:'d_t3',c:'#4a148c',n:'Deep'},
];
const FEATS=[
{num:'01',t:{id:'Cleaning Cache Deep',en:'Deep Cache Cleaning'},
p:{id:'Membersihkan cache game secara mendalam hingga ke layer sistem — performa lebih bersih, loading lebih cepat, frame rate stabil tanpa jeda. Teknologi pembersihan yang jauh lebih dalam dari cleaner biasa.',
en:'Deeply cleans game cache down to the system layer — cleaner performance, faster loading, stable frame rate without lag.'},
tag:{id:'Deep Clean',en:'Deep Clean'}},
{num:'02',t:{id:'Up Performance',en:'Performance Boost'},
p:{id:'Meningkatkan performa device secara signifikan — alokasi RAM dioptimalkan, prioritas proses game dinaikkan, thermal throttling diminimalkan. Hasilnya: gameplay yang jauh lebih smooth dan responsif.',
en:'Significantly boosts device performance — RAM allocation optimized, game process priority raised, thermal throttling minimized.'},
tag:{id:'Boost',en:'Boost'}},
{num:'03',t:{id:'Kalkulasi Resolusi Akurat',en:'Accurate Resolution Calc'},
p:{id:'Menghitung dan menyesuaikan resolusi rendering secara otomatis dan akurat — tampilan lebih tajam, rendering lebih efisien, visual game dioptimalkan sesuai kapabilitas hardware device kamu.',
en:'Automatically calculates and adjusts rendering resolution — sharper display, more efficient rendering, optimized for your device hardware.'},
tag:{id:'Auto',en:'Auto'}},
{num:'04',t:{id:'Perubahan DPI via Notifikasi',en:'DPI Change via Notification'},
p:{id:'Ubah DPI sensitivity secara real-time langsung dari panel notifikasi tanpa perlu keluar dari game. Penyesuaian instan, terasa langsung, tidak mengganggu sesi bermain sama sekali.',
en:'Change DPI sensitivity in real-time directly from notification panel without leaving the game. Instant adjustment, felt immediately.'},
tag:{id:'Real-time',en:'Real-time'}},
{num:'05',t:{id:'Inject AimTrick to Path',en:'AimTrick Path Inject'},
p:{id:'Menyuntikkan algoritma AimTrick langsung ke path DLL game — meningkatkan tracking dan akurasi aim secara natural. Bukan cheat, melainkan optimasi lintasan bidikan berdasarkan kalkulasi fisika.',
en:'Injects AimTrick algorithm directly into game DLL path — naturally improves tracking and aim accuracy. Not a cheat, but aim trajectory optimization.'},
tag:{id:'Inject',en:'Inject'}},
{num:'06',t:{id:'Multi Platform',en:'Multi Platform'},
p:{id:'Support penuh untuk Android (8.0–14), Emulator (LDPlayer, Bluestack 5, MSI App Player 5), dan Mobilador. Kompatibel dengan 99% device. Tidak butuh root. Ukuran hanya 4.2MB.',
en:'Full support for Android (8.0–14), Emulator (LDPlayer, Bluestack 5, MSI App Player 5), and Mobilador. Compatible with 99% of devices.'},
tag:{id:'3 Platform',en:'3 Platforms'}},
{num:'07',t:{id:'Sensi Optimizer',en:'Sensi Optimizer'},
p:{id:'Mengoptimalkan sensitivity game secara presisi — dari sensitivity screen, weapon sensivity, hingga micro adjustment. Setiap tier memiliki persentase optimasi yang berbeda disesuaikan kebutuhan.',
en:'Precisely optimizes game sensitivity — from screen sensitivity, weapon sensitivity, to micro adjustment. Each tier has different optimization percentages.'},
tag:{id:'Presisi',en:'Precision'}},
{num:'08',t:{id:'Refund 24 Jam',en:'24H Refund'},
p:{id:'Garansi refund 24 jam jika aplikasi mengalami kerusakan atau tidak berfungsi sebagaimana mestinya. Proses klaim cepat, tidak berbelit — cukup hubungi seller resmi dengan bukti kerusakan.',
en:'24-hour refund guarantee if the app is broken or not functioning properly. Fast claim process — just contact the official seller with proof.'},
tag:{id:'24 Jam',en:'24 Hours'}},
];
const PRODS=[
{id:'pirate',n:'PIRATE',tier:'TIER S — ULTIMATE',rp:'500.000',dp:'450.000',rpn:500000,dpn:450000,featured:true,
f:{id:['Best Sensi Optimizer','AimTrick Inject 70%','Optimizer 70% + Sensi Pack','Cleaning Cache Deep','Up Performance Max','1 Device Only — VIP'],en:['Best Sensi Optimizer','AimTrick Inject 70%','Optimizer 70% + Sensi Pack','Deep Cache Cleaning','Max Performance Boost','1 Device Only — VIP']},
mf:{id:['Best Sensi Optimizer (tertinggi di semua tier)','AimTrick Path Inject 70% — akurasi headshot maksimal','Optimizer 70% + Sensi Pack premium','Cleaning Cache secara Deep — performa bersih','Up Performance boost hingga maksimal','Kalkulasi Resolusi Akurat otomatis','Perubahan DPI via Notifikasi real-time','Micro Adjustment V5 terbaru','Headtrick Adjuster 25% + Weapon Sensivity 30%','Reduce Recoil 15%','Support Android, Emulator & Mobilador','1 Device Only (VIP slot)','Refund 24 jam jika aplikasi rusak'],en:['Best Sensi Optimizer (highest tier)','AimTrick Path Inject 70% — max headshot accuracy','Optimizer 70% + Premium Sensi Pack','Deep Cache Cleaning — clean performance','Max Performance Boost','Auto Accurate Resolution Calculation','DPI Change via Notification real-time','Micro Adjustment V5 latest','Headtrick Adjuster 25% + Weapon Sensivity 30%','Reduce Recoil 15%','Android, Emulator & Mobilador Support','1 Device Only (VIP slot)','24h Refund if app broken']}},
{id:'barco',n:'BARCO',tier:'TIER A — ADVANCED',rp:'400.000',dp:'350.000',rpn:400000,dpn:350000,featured:false,
f:{id:['Sensi 55% + AimTrick 50%','Optimizer 55% + Sensi Pack','Cleaning Cache Deep','Up Performance','1 Device Only — VIP'],en:['Sensi 55% + AimTrick 50%','Optimizer 55% + Sensi Pack','Deep Cache Cleaning','Performance Boost','1 Device Only — VIP']},
mf:{id:['Sensi Optimizer 55%','AimTrick Path Inject 50%','Optimizer 55% + Sensi Pack','Cleaning Cache secara Deep','Up Performance boost','Kalkulasi Resolusi Akurat','Perubahan DPI via Notifikasi','Headtrick Adjuster 20% + Weapon Sensivity 25%','Reduce Recoil 12%','Support Android, Emulator & Mobilador','1 Device Only (VIP slot)','Refund 24 jam jika aplikasi rusak'],en:['Sensi Optimizer 55%','AimTrick Path Inject 50%','Optimizer 55% + Sensi Pack','Deep Cache Cleaning','Performance Boost','Accurate Resolution Calculation','DPI Change via Notification','Headtrick Adjuster 20% + Weapon Sensivity 25%','Reduce Recoil 12%','Android, Emulator & Mobilador Support','1 Device Only (VIP slot)','24h Refund if app broken']}},
{id:'crane',n:'CRANE',tier:'TIER B — STANDARD',rp:'300.000',dp:'250.000',rpn:300000,dpn:250000,featured:false,
f:{id:['Sensi 43% + AimTrick 44%','Optimizer 40% + Sensi Pack','Cleaning Cache Deep','Up Performance','1 Device Only — VIP'],en:['Sensi 43% + AimTrick 44%','Optimizer 40% + Sensi Pack','Deep Cache Cleaning','Performance Boost','1 Device Only — VIP']},
mf:{id:['Sensi Optimizer 43%','AimTrick Path Inject 44%','Optimizer 40% + Sensi Pack','Cleaning Cache Deep','Up Performance boost','Kalkulasi Resolusi Akurat','Perubahan DPI via Notifikasi','Headtrick Adjuster 15% + Weapon Sensivity 20%','Support Android, Emulator & Mobilador','1 Device Only (VIP slot)','Refund 24 jam jika aplikasi rusak'],en:['Sensi Optimizer 43%','AimTrick Path Inject 44%','Optimizer 40% + Sensi Pack','Deep Cache Cleaning','Performance Boost','Accurate Resolution Calculation','DPI Change via Notification','Headtrick Adjuster 15% + Weapon Sensivity 20%','Android, Emulator & Mobilador Support','1 Device Only (VIP slot)','24h Refund if app broken']}},
{id:'vague',n:'VAGUE',tier:'TIER C — BASIC',rp:'200.000',dp:'150.000',rpn:200000,dpn:150000,featured:false,
f:{id:['Sensi 25% + AimTrick 32%','Optimizer 30% + Sensi Pack','Cleaning Cache','Up Performance','1 Device Only — VIP'],en:['Sensi 25% + AimTrick 32%','Optimizer 30% + Sensi Pack','Cache Cleaning','Performance Boost','1 Device Only — VIP']},
mf:{id:['Sensi Optimizer 25%','AimTrick Path Inject 32%','Optimizer 30% + Sensi Pack','Cleaning Cache','Up Performance','Kalkulasi Resolusi Akurat','Support Android, Emulator & Mobilador','1 Device Only (VIP slot)','Refund 24 jam jika aplikasi rusak'],en:['Sensi Optimizer 25%','AimTrick Path Inject 32%','Optimizer 30% + Sensi Pack','Cache Cleaning','Performance Boost','Accurate Resolution Calculation','Android, Emulator & Mobilador Support','1 Device Only (VIP slot)','24h Refund if app broken']}},
{id:'ancla',n:'ANCLA',tier:'TIER D — STARTER',rp:'100.000',dp:'75.000',rpn:100000,dpn:75000,featured:false,
f:{id:['Sensi 12% + AimTrick 24%','Optimizer 15% + Sensi Pack','Cleaning Cache','Up Performance','1 Device Only — VIP'],en:['Sensi 12% + AimTrick 24%','Optimizer 15% + Sensi Pack','Cache Cleaning','Performance Boost','1 Device Only — VIP']},
mf:{id:['Sensi Optimizer 12%','AimTrick Path Inject 24%','Optimizer 15% + Sensi Pack','Cleaning Cache','Up Performance','Support Android, Emulator & Mobilador','1 Device Only (VIP slot)','Refund 24 jam jika aplikasi rusak'],en:['Sensi Optimizer 12%','AimTrick Path Inject 24%','Optimizer 15% + Sensi Pack','Cache Cleaning','Performance Boost','Android, Emulator & Mobilador Support','1 Device Only (VIP slot)','24h Refund if app broken']}},
];
const PRODS_PC=[
{id:'trionx',n:'TRION X',tier:'PC TIER S — ULTIMATE',rp:'1.000.000',dp:'800.000',rpn:1000000,dpn:800000,featured:true,
f:['Headlock Precision X (1:1 Raw Aim Sync)','No Recoil Mouse Pack X (Ultra Control Tweaks)','AimTracker + Cursor Optimization','Deep Emulator Setting (No Latency Mode)','Neuro SmartAim AI','Headshot Mouse Curve V2','Ultra Precision Emulator Tweaks (Ultra Precise Mode)','PC Engine Boost (Full System Optimization)','Registry Stability Core (Ultimate Registry Shield)','System Tips'],
mf:['Headlock Precision X — 1:1 Raw Aim Sync untuk akurasi maksimal','No Recoil Mouse Pack X — Ultra Control Tweaks terbaik','AimTracker + Cursor Optimization eksklusif','Deep Emulator Setting — Zero Latency Mode','Neuro SmartAim AI — kecerdasan buatan untuk targeting','Headshot Mouse Curve V2 khusus headshot precision','Ultra Precision Emulator Tweaks — mode ultra presisi','PC Engine Boost — Full System Optimization menyeluruh','Registry Stability Core — Ultimate Registry Shield','System Tips eksklusif']},
{id:'fexio',n:'FEXIO HEADLOCK V2',tier:'PC TIER A — ADVANCED',rp:'600.000',dp:'500.000',rpn:600000,dpn:500000,featured:false,
f:['Headlock Precision V2 (1:1 Raw Aim Sync)','No Recoil Mouse Pack V2 (Ultra Control Tweaks)','Deep Emulator Setting X (No Latency Mode)','PC Engine Boost (Full System Optimization)','Registry Stability Core (Ultimate Registry Shield)','System Tips'],
mf:['Headlock Precision V2 — 1:1 Raw Aim Sync presisi tinggi','No Recoil Mouse Pack V2 — Ultra Control Tweaks','Deep Emulator Setting X — No Latency Mode untuk emulator','PC Engine Boost — Full System Optimization','Registry Stability Core — Ultimate Registry Shield','System Tips lengkap']},
{id:'uno',n:'UNO HEADTRICK V2',tier:'PC TIER B — STARTER',rp:'300.000',dp:'250.000',rpn:300000,dpn:250000,featured:false,
f:['Headlock Precision V2 (1:1 Raw Aim Sync)','PC Engine Boost (Full System Optimization)','No Recoil Mouse Pack V2 (Ultra Control Tweaks)','System Tips'],
mf:['Headlock Precision V2 — 1:1 Raw Aim Sync','PC Engine Boost — Full System Optimization','No Recoil Mouse Pack V2 — Ultra Control Tweaks','System Tips untuk optimasi PC terbaik']},
];
const SETPC_PACKAGES=[
{id:'sp-elite',n:'SNITZ Sensitivity Elite',sub:'Private',rp:'450.000',
benefits:['Advanced sensitivity tuning with ultra high precision','Ultra-fast input response — low latency feel','Aim terasa lebih "locked" dan stabil di semua situasi','Smooth ultra — minimal micro-stutter','Exclusive setup khusus untuk performa maksimal','Windows fully optimized — ready to play','FPS bisa naik hingga 3x (tergantung spek PC)','Custom settings disesuaikan untuk PC kamu','Compatible dengan semua emulator','Includes exclusive tools & professional tweaks'],
contact:{name:'Ocho',wa:'+62 857-1638-4808',waLink:'https://wa.me/6285716384808'},
website:'www.snitzproject.id'},
{id:'sp-mid',n:'SNITZ Sensitivity Advanced',sub:'Mid',rp:'150.000',
benefits:['Better sensitivity setup untuk kontrol lebih presisi','Faster input response — mouse & touch lebih responsif','Smoother dan lebih konsisten dalam tracking & flick','Reduce delay saat flick dan tracking target','Ideal untuk gameplay kompetitif','Professional sensitivity tuning'],
contact:{name:'Ocho',wa:'+62 857-1638-4808',waLink:'https://wa.me/6285716384808'},
website:'www.snitzproject.id'},
{id:'sp-essential',n:'SNITZ Optimization',sub:'Essential',rp:'200.000',
benefits:['FPS lebih stabil di game & emulator','Reduce lag dan micro-stutter terasa langsung','Boot lebih cepat — system response meningkat','Best power plan untuk gaming','Disable unnecessary services — resource freed','Aman untuk semua PC (low to mid spec)','Includes basic optimization tools','Professional tweaking settings applied','Clean & optimized system configuration'],
contact:{name:'Ocho',wa:'+62 857-1638-4808',waLink:'https://wa.me/6285716384808'},
website:'www.snitzproject.id'},
];
const CONTRIBS=[
{n:'SHANX',r:{id:'Founder',en:'Founder'},
soc:{wa:'https://whatsapp.com/channel/0029VanvMw15q08i4s7Vqt0v',ig:'https://www.instagram.com/shanx.rar?igsh=MWt1anVkcXZ0a3piOA%3D%3D&utm_source=qr',tt:'https://www.tiktok.com/@shan.xpp?_r=1&_t=ZS-94nOQnDyClm'},
img:'sphan_px-e.jpeg',
desc:{id:'Founder SNITZ PROJECT. Visioner di balik semua inovasi & pengembangan V2.0.',en:'Founder of SNITZ PROJECT. The visionary behind all V2.0 innovations.'}},
{n:'KENT',r:{id:'Seller',en:'Seller'},
soc:{wa:'https://whatsapp.com/channel/0029Vb7DbdTEawdrqZRXxY40',ig:null,tt:'https://www.tiktok.com/@kennardddm?_r=1&_t=ZS-94nKc8vgCXJ'},
img:'kmeannddrd-e.jpeg',
desc:{id:'Official seller SNITZ. Fast respon, transaksi aman & terpercaya.',en:'Official SNITZ seller. Fast response, safe & trusted transactions.'}},
{n:'UGRA',r:{id:'Seller',en:'Seller'},
soc:{wa:'https://whatsapp.com/channel/0029VbCcC3L4inokjavntV3R',ig:null,tt:'https://www.tiktok.com/@ugraaparker?_r=1&_t=ZS-94nKeLOlvqT'},
img:'paraekrraug-e.jpeg',
desc:{id:'Official seller SNITZ. Siap membantu 24 jam, fast response.',en:'Official SNITZ seller. Ready to help 24 hours, fast response.'}},
{n:'DEZET',r:{id:'Seller',en:'Seller'},
soc:{wa:'https://whatsapp.com/channel/0029VafVERAGJP8OkM0R501P',ig:null,tt:'https://www.tiktok.com/@dezetpakez2?_r=1&_t=ZS-94nKaHBL1nt'},
img:'eeetdpkza2z-e.jpeg',
desc:{id:'Official seller SNITZ. Terpercaya, berpengalaman, harga terbaik.',en:'Official SNITZ seller. Trusted, experienced, best prices.'}},
{n:'VEMZ444',r:{id:'Seller',en:'Seller'},
soc:{wa:'https://whatsapp.com/channel/0029VafVERAGJP8OkM0R501P',ig:null,tt:'https://www.tiktok.com/@davinsukalive?_r=1&_t=ZS-959HBLsAsMr'},
img:'vemz444-e.jpeg',
desc:{id:'Official seller SNITZ. Terpercaya, berpengalaman, harga terbaik.',en:'Official SNITZ seller. Trusted, experienced, best prices.'}},
{n:'ROO',r:{id:'Seller',en:'Seller'},
soc:{wa:'https://whatsapp.com/channel/0029Vb7jN28KWEKhcPZF2P1h',ig:null,tt:'https://www.tiktok.com/@rooww18?_r=1&_t=ZS-95ziRT1jBKr'},
img:'roo-e.jpeg',
desc:{id:'Official seller SNITZ. Fast respon, amanah, siap melayani.',en:'Official SNITZ seller. Fast response, trustworthy, ready to serve.'}},
];
const SELLERS=[
{name:'Snitz Support',role:'Customer Support · 24/7',badge:'Support',
contacts:[
{icon:'M12 2.5c1 2 1.5 3.5 1.5 4.5S13 9.5 12 11c-.8.8-2.3 1.1-4 1.1s-3.2-.3-4-1.1C2.5 9.5 2 8.5 2 6.5S2.5 3.5 3.5 2.5C4.7 2 5.7 2 7.5 2s2.8 0 4.5.5z',lbl:'TikTok',val:'@shan.xpp',url:'https://www.tiktok.com/@shan.xpp?_r=1&_t=ZS-94nOQnDyClm'},
{icon:'M8 1a7 7 0 103 13.3L14 15l-.7-2.9A7 7 0 008 1z',lbl:'WhatsApp',val:'+62 895-2749-6330',url:'https://wa.me/6289527496330'},
]},
{name:'KENT',role:'Official Seller',badge:'Official',
contacts:[
{icon:'M12 2.5c1 2 1.5 3.5 1.5 4.5S13 9.5 12 11c-.8.8-2.3 1.1-4 1.1s-3.2-.3-4-1.1C2.5 9.5 2 8.5 2 6.5S2.5 3.5 3.5 2.5C4.7 2 5.7 2 7.5 2s2.8 0 4.5.5z',lbl:'TikTok',val:'@kennardddm',url:'https://www.tiktok.com/@kennardddm?_r=1&_t=ZS-94nKc8vgCXJ'},
{icon:'M8 1a7 7 0 103 13.3L14 15l-.7-2.9A7 7 0 008 1z',lbl:'WhatsApp',val:'+62 812-5033-8212',url:'https://wa.me/6281250338212'},
]},
{name:'UGRA',role:'Official Seller',badge:'Official',
contacts:[
{icon:'M12 2.5c1 2 1.5 3.5 1.5 4.5S13 9.5 12 11c-.8.8-2.3 1.1-4 1.1s-3.2-.3-4-1.1C2.5 9.5 2 8.5 2 6.5S2.5 3.5 3.5 2.5C4.7 2 5.7 2 7.5 2s2.8 0 4.5.5z',lbl:'TikTok',val:'@ugraaparker',url:'https://www.tiktok.com/@ugraaparker?_r=1&_t=ZS-94nKeLOlvqT'},
{icon:'M8 1a7 7 0 103 13.3L14 15l-.7-2.9A7 7 0 008 1z',lbl:'WhatsApp',val:'+62 831-7534-4088',url:'https://wa.me/6283175344088'},
]},
{name:'DEZET',role:'Official Seller',badge:'Official',
contacts:[
{icon:'M12 2.5c1 2 1.5 3.5 1.5 4.5S13 9.5 12 11c-.8.8-2.3 1.1-4 1.1s-3.2-.3-4-1.1C2.5 9.5 2 8.5 2 6.5S2.5 3.5 3.5 2.5C4.7 2 5.7 2 7.5 2s2.8 0 4.5.5z',lbl:'TikTok',val:'@dezetpakez2',url:'https://www.tiktok.com/@dezetpakez2?_r=1&_t=ZS-94nKaHBL1nt'},
{icon:'M8 1a7 7 0 103 13.3L14 15l-.7-2.9A7 7 0 008 1z',lbl:'WhatsApp',val:'+62 856-0313-4126',url:'https://wa.me/6285603134126'},
]},
{name:'VEMZ444',role:'Official Seller',badge:'Official',
contacts:[
{icon:'M12 2.5c1 2 1.5 3.5 1.5 4.5S13 9.5 12 11c-.8.8-2.3 1.1-4 1.1s-3.2-.3-4-1.1C2.5 9.5 2 8.5 2 6.5S2.5 3.5 3.5 2.5C4.7 2 5.7 2 7.5 2s2.8 0 4.5.5z',lbl:'TikTok',val:'@davinsukalive',url:'https://www.tiktok.com/@davinsukalive?_r=1&_t=ZS-959HBLsAsMr'},
{icon:'M8 1a7 7 0 103 13.3L14 15l-.7-2.9A7 7 0 008 1z',lbl:'WhatsApp',val:'+62 856-0313-4126',url:'https://wa.me/6289504459378'},
]},
{name:'ROO',role:'Official Seller',badge:'Official',
contacts:[
{icon:'M12 2.5c1 2 1.5 3.5 1.5 4.5S13 9.5 12 11c-.8.8-2.3 1.1-4 1.1s-3.2-.3-4-1.1C2.5 9.5 2 8.5 2 6.5S2.5 3.5 3.5 2.5C4.7 2 5.7 2 7.5 2s2.8 0 4.5.5z',lbl:'TikTok',val:'@rooww18',url:'https://www.tiktok.com/@rooww18?_r=1&_t=ZS-95ziRT1jBKr'},
{icon:'M8 1a7 7 0 103 13.3L14 15l-.7-2.9A7 7 0 008 1z',lbl:'WhatsApp',val:'+62 857-8273-4764',url:'https://wa.me/6285782734764'},
{icon:'M2 3h12v1.5L8 9 2 4.5V3zm0 3l6 4 6-4V13H2V6z',lbl:'Saluran WA',val:'Channel ROO',url:'https://whatsapp.com/channel/0029Vb7jN28KWEKhcPZF2P1h'},
]},
];
const SOCMEDS=[
{n:'Instagram',h:'@snitz_project',svg:'M4 1h8a3 3 0 013 3v8a3 3 0 01-3 3H4a3 3 0 01-3-3V4a3 3 0 013-3zm4 3a3 3 0 100 6 3 3 0 000-6zm3.8.2a.7.7 0 100 1.4.7.7 0 000-1.4z',url:'https://www.instagram.com/shanx.rar?igsh=MWt1anVkcXZ0a3piOA%3D%3D&utm_source=qr'},
{n:'TikTok',h:'@snitz.project',svg:'M12 2.5c1 2 1.5 3.5 1.5 4.5S13 9.5 12 11c-.8.8-2.3 1.1-4 1.1s-3.2-.3-4-1.1C2.5 9.5 2 8.5 2 6.5S2.5 3.5 3.5 2.5C4.7 2 5.7 2 7.5 2s2.8 0 4.5.5z',url:'https://www.tiktok.com/@shan.xpp?_r=1&_t=ZS-94nOQnDyClm'},
{n:'WhatsApp',h:'+62 896-5189-8701',svg:'M8 1a7 7 0 103 13.3L14 15l-.7-2.9A7 7 0 008 1z',url:'https://wa.me/6289651898701'},
{n:'Discord',h:'discord.gg/nDyKJy4QE',svg:'M7 1a6 6 0 102.7 11.4L12.5 13l-.65-2.6A6 6 0 107 1z',url:'https://discord.gg/nDyKJy4QE'},
];
const FAQS=[
{q:{id:'Apakah SNITZ V2.0 aman digunakan?',en:'Is SNITZ V2.0 safe to use?'},
a:{id:'Ya, 100% aman. SNITZ PROJECT V2.0 adalah aplikasi optimasi performa, bukan cheat. Fitur-fiturnya bekerja pada level sistem device — Sensi Optimizer, Cache Cleaning, AimTrick Path — tidak memodifikasi file game secara ilegal. Aman untuk akun gaming kamu.',
en:'Yes, 100% safe. SNITZ PROJECT V2.0 is a performance optimization app, not a cheat. Its features work at device system level — not illegally modifying game files. Safe for your gaming account.'}},
{q:{id:'Berapa lama proses pengiriman key VIP?',en:'How long does VIP key delivery take?'},
a:{id:'Key VIP dikirim dalam 5 menit atau kurang setelah pembayaran dikonfirmasi seller. Jika lebih dari 10 menit belum menerima key, hubungi seller dengan menyertakan bukti transfer dan key akan diproses segera.',
en:'VIP key is delivered within 5 minutes after payment is confirmed. If after 10 minutes still no key, contact seller with payment proof.'}},
{q:{id:'VIP bisa dipakai di berapa device?',en:'How many devices can VIP be used on?'},
a:{id:'Semua tier VIP (ANCLA, VAGUE, CRANE, BARCO, PIRATE) hanya mendukung 1 device saja. Versi FREE tidak ada batasan device. Ini untuk menjaga keamanan dan eksklusivitas key kamu.',
en:'All VIP tiers (ANCLA, VAGUE, CRANE, BARCO, PIRATE) only support 1 device. FREE version has no device limit. This ensures the security of your key.'}},
{q:{id:'Platform apa saja yang didukung?',en:'What platforms are supported?'},
a:{id:'SNITZ V2.0 mendukung penuh: Android 8.0–14 (semua brand), Emulator (LDPlayer, Bluestack 5, MSI App Player 5), dan Mobilador. Tidak butuh root. Ukuran hanya 4.2MB. Kompatibel dengan 99% device.',
en:'SNITZ V2.0 fully supports: Android 8.0–14 (all brands), Emulator (LDPlayer, Bluestack 5, MSI App Player 5), and Mobilador. No root needed. Only 4.2MB.'}},
{q:{id:'Bagaimana kebijakan refund?',en:'What is the refund policy?'},
a:{id:'Refund tersedia 24 jam jika aplikasi mengalami kerusakan atau tidak berfungsi. Hubungi seller resmi via WhatsApp dengan bukti kerusakan (screenshot/video). Klaim valid diproses dalam 24 jam. Refund berlaku untuk semua tier.',
en:'Refund available 24 hours if the app is broken or not functioning. Contact official seller via WhatsApp with proof of damage. Valid claims processed within 24 hours.'}},
{q:{id:'Apa saja fitur unggulan SNITZ V2.0?',en:'What are the key features of SNITZ V2.0?'},
a:{id:'Fitur utama: (1) Inject AimTrick to Path DLL — meningkatkan akurasi aim secara natural; (2) Sensi Optimizer — optimasi sensitivity presisi; (3) Cleaning Cache Deep — bersihkan cache game mendalam; (4) Up Performance — boost performa device; (5) Kalkulasi Resolusi Akurat — auto adjust rendering; (6) DPI via Notifikasi — ubah DPI real-time tanpa keluar game; (7) Micro Adjustment V5 + Reduce Recoil.',
en:'Main features: (1) AimTrick Path DLL Inject; (2) Sensi Optimizer; (3) Deep Cache Cleaning; (4) Performance Boost; (5) Auto Resolution Calculation; (6) DPI via Notification real-time; (7) Micro Adjustment V5 + Reduce Recoil.'}},
{q:{id:'Bagaimana cara menghubungi seller resmi?',en:'How to contact the official seller?'},
a:{id:'Seller resmi SNITZ PROJECT hanya yang tercantum di website ini. Hubungi via WhatsApp atau TikTok sesuai kontak di section Kontak & Seller. Waspada penipu yang mengatasnamakan SNITZ di luar channel resmi.',
en:'Official SNITZ PROJECT sellers are only listed on this website. Contact via WhatsApp or TikTok as shown in Contact & Seller section.'}},
{q:{id:'Ada versi gratis?',en:'Is there a free version?'},
a:{id:'Ya! SNITZ V2.0 FREE tersedia gratis dengan fitur dasar — Cache Cleaning, Sensi Optimizer basic, Up Performance basic. Device unlimited. Download dari halaman Download. Upgrade ke VIP untuk fitur penuh kapan saja.',
en:'Yes! SNITZ V2.0 FREE is available with basic features — Cache Cleaning, basic Sensi Optimizer, basic Performance Boost. Unlimited devices. Upgrade to VIP for full features anytime.'}},
];
const TESTIS=[
{name:'relzyinject',role:{id:'PIRATE User',en:'PIRATE User'},stars:5,text:{id:'Aplikasi Pirate terlalu gacor dan sangat aman karena saat di cek tidak ketahuan sama sekali',en:'The Pirate app is super lit and very safe because when checked it is not detected at all'}},
{name:'ALPAN',role:{id:'ANCLA User',en:'ANCLA User'},stars:5,text:{id:'Makasih Shanx, Gacor king, Lengket kepala aim gw padahal baru pake ancla belum pirate',en:'Thanks Shanx, my aim sticks to the head even though I just use ancla not pirate yet'}},
{name:'RAP',role:{id:'ANCLA User',en:'ANCLA User'},stars:5,text:{id:'Masih enak Ampe sekarang anjir gw takut ke band jadi make akun kecil',en:'Still smooth until now, scared of getting banned so I use a secondary account'}},
{name:'HANZ',role:{id:'ANCLA User',en:'ANCLA User'},stars:4,text:{id:'mayan lah gacor di harga segini mah, malahan gacor banget kalo di harga segini mah',en:'Pretty lit at this price, actually super lit for this price range'}},
{name:'LYN',role:{id:'ANCLA User',en:'ANCLA User'},stars:5,text:{id:'Aim sekarang jadi lebih enak untuk headshot, Sensi juga jadi ga berat lagi dan pas untuk mainan.',en:'Aim is now better for headshots, Sensi is no longer heavy and perfect for playing.'}},
{name:'AlwiFahri',role:{id:'ANCLA User',en:'ANCLA User'},stars:5,text:{id:'Drag gw sekarang jadi lebih enak dan sangat gampang untuk headshot',en:'My drag is now smoother and very easy to get headshots'}},
{name:'Budi Santoso',role:{id:'PIRATE User',en:'PIRATE User'},stars:5,text:{id:'SNITZ V2 beneran beda! Sensi optimizer kerasa banget, aim lebih smooth. Bukan cheat, ini optimasi yang legit!',en:'SNITZ V2 is truly different! Sensi optimizer feels great, aim is smoother. Legit optimization!'}},
{name:'Rizky Pratama',role:{id:'VAGUE User',en:'VAGUE User'},stars:5,text:{id:'Setelah pakai AimTrick, headshot rate naik signifikan. DPI via notifikasi fitur killer banget!',en:'After using AimTrick, my headshot rate went up significantly. DPI notification is a killer feature!'}},
{name:'Kevin Wijaya',role:{id:'PIRATE User',en:'PIRATE User'},stars:5,text:{id:'PIRATE tier worth it banget. Best Sensi + AimTrick 70% bikin gameplay totally different.',en:'PIRATE tier totally worth it. Best Sensi + AimTrick 70% makes gameplay totally different.'}},
{name:'Andi Maulana',role:{id:'VAGUE User',en:'VAGUE User'},stars:4,text:{id:'Versi gratis udah oke, tapi setelah upgrade ke VAGUE perbedaannya kerasa banget.',en:'Free version is decent, but after upgrading to VAGUE the difference is huge.'}},
{name:'Fajar Nugroho',role:{id:'BARCO User',en:'BARCO User'},stars:5,text:{id:'Up Performance bikin device lama gue kerasa baru lagi, smooth banget waktu skirmish.',en:'Performance Boost made my old device feel brand new, super smooth during skirmishes.'}},
{name:'Dimas Arya',role:{id:'CRANE User',en:'CRANE User'},stars:5,text:{id:'Resolusi otomatis + DPI notifikasi combo terbaik. Fine-tune sensitivity real-time dalam game!',en:'Auto resolution + DPI notification is the best combo. Fine-tune sensitivity in real-time!'}},
{name:'Hendra Kurniawan',role:{id:'BARCO User',en:'BARCO User'},stars:5,text:{id:'Bikin gaming jadi lebih enak. Aim smooth, sensi akurat, dan semuanya legal.',en:'Gaming is way better now. Smooth aim, accurate sensi, all legal.'}},
];
const LEGAL={
refund:{title:{id:'Pengembalian Dana',en:'Refund Policy'},secs:[
{t:{id:'Syarat dan Ketentuan Refund',en:'Refund Terms & Conditions'},p:'Pengembalian dana dapat diajukan dalam 24 jam jika aplikasi mengalami kerusakan atau tidak berfungsi sebagaimana mestinya. Refund hanya berlaku untuk masalah teknis yang berasal dari sisi aplikasi kami dan dapat dibuktikan dengan screenshot atau rekaman layar.'},
{t:{id:'Prosedur Pengajuan Refund',en:'Refund Procedure'},p:'Langkah 1: Hubungi seller resmi via WhatsApp dengan menyertakan bukti pembelian, key yang digunakan, deskripsi masalah, dan screenshot/video bukti kerusakan. Langkah 2: Tim kami akan memverifikasi laporan dalam 2–4 jam. Langkah 3: Jika klaim valid, refund diproses dalam 24 jam ke metode pembayaran asal.'},
{t:{id:'Pengecualian Refund',en:'Refund Exclusions'},p:'Refund tidak dapat diproses apabila: (1) Masalah disebabkan oleh perangkat pengguna (RAM tidak cukup, OS tidak kompatibel); (2) Pengguna melanggar Terms of Service dengan menggunakan key di lebih dari 1 device; (3) Pengajuan dilakukan setelah 24 jam sejak pembelian; (4) Tidak ada bukti kerusakan yang valid.'},
{t:{id:'Refund Cepat & Mudah',en:'Fast & Easy Refund'},p:'Proses refund dirancang sesederhana mungkin — tidak perlu dokumen berbelit, cukup bukti kerusakan yang jelas. Kami berkomitmen merespons setiap klaim dalam 24 jam kerja tanpa perlu menunggu lama.'},
]},
tos:{title:'Terms of Service',secs:[
{t:{id:'Penggunaan yang Diizinkan',en:'Permitted Use'},p:'SNITZ PROJECT V2.0 adalah aplikasi injector untuk optimasi performa gaming — Sensi Optimizer, AimTrick, Cache Cleaning, dan fitur peningkatan pengalaman bermain. Pengguna diizinkan menggunakan semua fitur sesuai tier yang dibeli pada 1 device terdaftar.'},
{t:{id:'Larangan Penggunaan',en:'Prohibited Use'},p:'Pengguna dilarang keras untuk: mendistribusikan, menjual, atau membagikan key kepada pihak lain; menggunakan key di lebih dari 1 device (VIP); melakukan reverse engineering terhadap aplikasi; atau menyalahgunakan aplikasi untuk tujuan yang merugikan pengguna lain.'},
{t:{id:'Kepemilikan dan Lisensi',en:'Ownership & License'},p:'Key VIP yang diberikan bersifat lisensi personal untuk 1 device dan tidak dapat dipindahtangankan. Kepemilikan key tidak berarti kepemilikan terhadap perangkat lunak SNITZ PROJECT V2.0. Semua hak kekayaan intelektual tetap milik tim developer SNITZ PROJECT.'},
{t:{id:'Update dan Pengembangan',en:'Updates & Development'},p:'SNITZ PROJECT berkomitmen untuk terus mengembangkan fitur dan meningkatkan performa aplikasi. Update akan didistribusikan secara berkala dan pengguna VIP mendapatkan notifikasi langsung melalui WhatsApp seller resmi.'},
]},
privacy:{title:'Privacy Policy',secs:[
{t:{id:'Data yang Kami Kumpulkan',en:'Data We Collect'},p:'Kami hanya mengumpulkan data minimum: (1) Device ID terenkripsi untuk verifikasi key VIP dan pembatasan 1 device slot; (2) Waktu aktivasi untuk keperluan refund 24 jam; (3) Kontak WhatsApp yang kamu berikan saat membeli, untuk pengiriman key dan support.'},
{t:{id:'Cara Kami Menggunakan Data',en:'How We Use Data'},p:'Data digunakan semata-mata untuk: verifikasi kepemilikan key yang sah; pembatasan 1 device per key VIP; memberikan support personal; mengirimkan notifikasi update fitur. Kami tidak pernah menggunakan data untuk iklan atau analitik pihak ketiga.'},
{t:{id:'Keamanan Data',en:'Data Security'},p:'Semua data sensitif disimpan dengan enkripsi AES-256. Device ID diproses melalui fungsi hash satu arah — tidak bisa dikembalikan ke bentuk aslinya. Keamanan data pengguna adalah prioritas utama kami.'},
{t:{id:'Hak Pengguna',en:'User Rights'},p:'Kamu berhak meminta penghapusan data atau salinan data yang kami miliki. Untuk menggunakan hak ini, hubungi seller resmi via WhatsApp atau Discord. Kami akan memproses permintaan dalam 1×24 jam kerja.'},
]},
safety:{title:'Safety Guidelines',secs:[
{t:{id:'Aplikasi Legal & Aman',en:'Legal & Safe App'},p:'SNITZ PROJECT V2.0 adalah aplikasi optimasi performa, bukan cheat. Fitur Sensi Optimizer, AimTrick, dan Cache Cleaning bekerja pada level sistem device — tidak memodifikasi file game secara ilegal. Gunakan sesuai panduan untuk pengalaman terbaik.'},
{t:{id:'Keamanan Akun Kamu',en:'Your Account Security'},p:'Jangan pernah membagikan key VIP kepada siapapun — key terikat pada 1 device saja. Jangan berikan informasi akun game kepada siapapun yang mengaku seller SNITZ di luar channel resmi kami. Verifikasi selalu melalui kontak resmi yang tertera di halaman ini.'},
{t:{id:'Waspada Penipuan',en:'Beware of Scams'},p:'Seller resmi SNITZ PROJECT hanya yang tercantum di halaman ini. Waspada terhadap penipu yang menggunakan nama SNITZ di platform lain seperti Telegram, Facebook, atau marketplace. Kami tidak bertanggung jawab atas transaksi di luar channel resmi.'},
{t:{id:'Melaporkan Masalah',en:'Reporting Issues'},p:'Jika kamu menemukan bug, masalah teknis, atau aktivitas mencurigakan yang mengatasnamakan SNITZ PROJECT, hubungi langsung seller resmi via WhatsApp. Setiap laporan akan ditangani dengan prioritas tinggi dan cepat.'},
]},
};
const HOW_STEPS=[
{n:'01',h:{id:'Download Aplikasi',en:'Download App'},p:{id:'Unduh APK SNITZ V2.0 gratis dari halaman download. Ukuran hanya 4.2MB, download kurang dari 1 menit. Support Android, Emulator & Mobilador.',en:'Download SNITZ V2.0 APK free from download page. Only 4.2MB. Supports Android, Emulator & Mobilador.'}},
{n:'02',h:{id:'Install & Buka App',en:'Install & Open App'},p:{id:'Activekan "Sumber Tidak Dikenal", install APK, buka aplikasi. No root required. Proses instalasi selesai dalam 30 detik.',en:'Enable "Unknown Sources", install APK, open the app. No root needed. Installation done in 30 seconds.'}},
{n:'03',h:{id:'Aktivasi Key VIP',en:'Activate VIP Key'},p:{id:'Beli key VIP dari seller resmi. Key dikirim dalam 5 menit, masukkan di aplikasi dan semua fitur premium langsung aktif di 1 device.',en:'Buy VIP key from official seller. Key delivered in 5 minutes, enter in app and all premium features activate on 1 device.'}},
{n:'04',h:{id:'Inject & Main',en:'Inject & Play'},p:{id:'Activekan fitur yang kamu butuhkan — Sensi Optimizer, AimTrick, Cache Cleaning, DPI Notification — lalu buka game dan rasakan perbedaannya.',en:'Activate the features you need — Sensi Optimizer, AimTrick, Cache Cleaning, DPI Notification — then open game and feel the difference.'}},
];
const SPECS=[
{label:{id:'Fitur',en:'Feature'},free:{id:'Dasar',en:'Basic'},vip:{id:'Penuh',en:'Full'}},
{label:{id:'AimTrick Inject',en:'AimTrick Inject'},free:{id:'Tidak',en:'No'},vip:{id:'Ya',en:'Yes'}},
{label:{id:'Sensi Optimizer',en:'Sensi Optimizer'},free:{id:'Dasar',en:'Basic'},vip:{id:'Penuh',en:'Full'}},
{label:{id:'Optimizer Level',en:'Optimizer Level'},free:{id:'5%',en:'5%'},vip:{id:'15–70%',en:'15–70%'}},
{label:{id:'Cleaning Cache',en:'Cache Cleaning'},free:{id:'Basic',en:'Basic'},vip:{id:'Deep Clean',en:'Deep Clean'}},
{label:{id:'Up Performance',en:'Performance Boost'},free:{id:'Basic',en:'Basic'},vip:{id:'Max Boost',en:'Max Boost'}},
{label:{id:'Kalkulasi Resolusi',en:'Resolution Calc'},free:{id:'Manual',en:'Manual'},vip:{id:'Otomatis',en:'Auto'}},
{label:{id:'DPI via Notifikasi',en:'DPI Notification'},free:{id:'Tidak',en:'No'},vip:{id:'Ya',en:'Yes'}},
{label:{id:'Micro Adjustment',en:'Micro Adjustment'},free:{id:'Tidak',en:'No'},vip:{id:'Ya (V5)',en:'Yes (V5)'}},
{label:{id:'Reduce Recoil',en:'Reduce Recoil'},free:{id:'Tidak',en:'No'},vip:{id:'Ya',en:'Yes'}},
{label:{id:'Platform',en:'Platform'},free:{id:'Android only',en:'Android only'},vip:{id:'Android + Emulator + Mobilador',en:'Android + Emulator + Mobilador'}},
{label:{id:'Device Slots',en:'Device Slots'},free:{id:'Unlimited',en:'Unlimited'},vip:{id:'1 Device Only',en:'1 Device Only'}},
{label:{id:'Refund',en:'Refund'},free:{id:'Tidak ada',en:'None'},vip:{id:'24 Jam (jika rusak)',en:'24H (if broken)'}},
];
const STATS_BAND_DATA=[];
const SUPPORT_CARDS=[
{icon:'M7 1a6 6 0 100 12A6 6 0 007 1zM7 5v2.5h2',
title:{id:'Pusat Bantuan',en:'Help Center'},
desc:{id:'Panduan lengkap instalasi, cara aktivasi key VIP, troubleshooting, dan FAQ.',en:'Full installation guide, VIP key activation, troubleshooting, and FAQ.'},
btn:{id:'Kunjungi',en:'Visit Help Center'},action:"openHelp()"},
{icon:'M7 1a6 6 0 102.7 11.4L12.5 13l-.65-2.6A6 6 0 107 1z',
title:{id:'Live Support Discord',en:'Live Discord Support'},
desc:{id:'Tim support standby 24 jam di Discord. Rata-rata respon 8 menit.',en:'Support team available 24/7 on Discord. Average response time 8 minutes.'},
btn:{id:'Buka Discord',en:'Open Discord'},action:"window.open('#discord')"},
{icon:'M2 7l5-5 5 5M2 7l5 5 5-5',
title:{id:'Pengembalian Dana',en:'Refund Policy'},
desc:{id:'Kebijakan refund adil dan transparan. Klaim diproses dalam 24 jam kerja.',en:'Fair and transparent refund policy. Claims processed within 24 working hours.'},
btn:{id:'Lihat Kebijakan',en:'View Policy'},action:"openLegal('refund')"},
{icon:'M1.5 3.5h11a1 1 0 011 1v7a1 1 0 01-1 1H1.5a1 1 0 01-1-1v-7a1 1 0 011-1zM.5 5.5l7 4.5 7-4.5',
title:{id:'Email Support',en:'Email Support'},
desc:{id:'Kirim email ke tim kami. Semua email dijawab dalam 24 jam kerja.',en:'Send an email to our team. All emails answered within 24 working hours.'},
btn:{id:'Kirim Pesan',en:'Send Message'},action:"document.getElementById('contact').scrollIntoView({behavior:'smooth'})"},
{icon:'M8 1l1.5 4.5H14l-3.7 2.7 1.4 4.3L8 10 4.3 12.5l1.4-4.3L2 5.5h4.5z',
title:{id:'Support SociaBuzz',en:'Support SociaBuzz'},
desc:{id:'Dukung pengembangan SNITZ PROJECT lewat SociaBuzz. Setiap dukunganmu sangat berarti untuk terus menghadirkan update dan fitur baru.',en:'Support SNITZ PROJECT development via SociaBuzz. Every contribution helps keep updates coming.'},
btn:{id:'Beri Dukungan ❤',en:'Support Us ❤'},action:"window.open('https://sociabuzz.com/shanxiter/tribe','_blank')"},
];
/* ════════════════════════════════════════════════
CURSOR
════════════════════════════════════════════════ */
const cur=document.getElementById('cur'),cR=document.getElementById('cur-r');
let mx=0,my=0,rx=0,ry=0;
document.addEventListener('mousemove',e=>{mx=e.clientX;my=e.clientY;cur.style.left=mx+'px';cur.style.top=my+'px'});
(function cl(){rx+=(mx-rx)*.12;ry+=(my-ry)*.12;cR.style.left=rx+'px';cR.style.top=ry+'px';requestAnimationFrame(cl)})();
document.addEventListener('mousedown',()=>{cur.style.transform='translate(-50%,-50%) scale(.35)';cR.style.width='50px';cR.style.height='50px'});
document.addEventListener('mouseup',()=>{cur.style.transform='translate(-50%,-50%) scale(1)';cR.style.width='32px';cR.style.height='32px'});
document.querySelectorAll('a,button,.fc,.pc,.ctc,.smc,.seller-card,.sup-card,.tc').forEach(el=>{
el.addEventListener('mouseenter',()=>document.body.classList.add('link-hover'));
el.addEventListener('mouseleave',()=>document.body.classList.remove('link-hover'));
});
/* ════════════════════════════════════════════════
LOADER
════════════════════════════════════════════════ */
window.addEventListener('load',()=>{
const msgs=['Initializing...','Loading assets...','Injecting modules...','Almost ready...'];
let i=0;
const iv=setInterval(()=>{i++;document.getElementById('ldTxt').textContent=msgs[Math.min(i,msgs.length-1)]},650);
setTimeout(()=>{clearInterval(iv);document.getElementById('loader').classList.add('out')},2600);
});
/* scrollTop + nav scrolled handled in batched scroll listener below */
/* ════════════════════════════════════════════════
PARTICLES
════════════════════════════════════════════════ */
(function(){
const cv=document.getElementById('partcv');if(!cv)return;
const ctx=cv.getContext('2d');
let W,H,pts=[],mouse={x:-999,y:-999};
// Mouse tracking untuk repel effect
window.addEventListener('mousemove',e=>{mouse.x=e.clientX;mouse.y=e.clientY;},{passive:true});
function init(){
W=cv.width=window.innerWidth;H=cv.height=window.innerHeight;
// 3 depth layers: jauh (kecil, lambat), tengah, dekat (besar, cepat)
pts=[];
[
{n:18,rMin:.4,rMax:1,spd:.15,conn:120,opMax:.35,layer:0},
{n:14,rMin:.8,rMax:1.6,spd:.28,conn:140,opMax:.22,layer:1},
{n:8, rMin:1.4,rMax:2.4,spd:.42,conn:0, opMax:.15,layer:2},
].forEach(cfg=>{
for(let i=0;i<cfg.n;i++) pts.push({
x:Math.random()*W,y:Math.random()*H,
vx:(Math.random()-.5)*cfg.spd,vy:(Math.random()-.5)*cfg.spd,
r:cfg.rMin+Math.random()*(cfg.rMax-cfg.rMin),
life:Math.random()*Math.PI*2,
layer:cfg.layer,conn:cfg.conn,opMax:cfg.opMax,
ox:0,oy:0, // offset dari mouse repel
});
});
}
init();window.addEventListener('resize',init,{passive:true});
function getAcc(){return getComputedStyle(document.documentElement).getPropertyValue('--acc').trim()||'#34a853';}
let t=0;
function frame(){
ctx.clearRect(0,0,W,H);
t++;
const acc=getAcc();
pts.forEach(p=>{
// mouse repel — lembut
const dx=p.x-mouse.x,dy=p.y-mouse.y;
const dist=Math.sqrt(dx*dx+dy*dy);
const repelR=90;
if(dist<repelR){
const force=(1-dist/repelR)*0.6;
p.ox+=(dx/dist)*force;p.oy+=(dy/dist)*force;
}
p.ox*=0.88;p.oy*=0.88; // decay
p.x+=p.vx+p.ox*.04;p.y+=p.vy+p.oy*.04;
p.life+=.006+p.layer*.002;
// wrap
if(p.x<-10)p.x=W+10;if(p.x>W+10)p.x=-10;
if(p.y<-10)p.y=H+10;if(p.y>H+10)p.y=-10;
// depth: layer 0 paling jauh (paling transparan), layer 2 paling dekat
const depthAlpha=[.28,.20,.13][p.layer]||.2;
const a=(depthAlpha+(.05+p.layer*.02)*Math.sin(p.life))*p.opMax*3.5;
ctx.globalAlpha=Math.min(a,.45);
ctx.beginPath();ctx.arc(p.x,p.y,p.r,0,Math.PI*2);
ctx.fillStyle=acc;ctx.fill();
});
ctx.globalAlpha=1;
// connection lines — hanya layer 0 dan 1
const connPts=pts.filter(p=>p.conn>0);
ctx.lineWidth=.4;
for(let i=0;i<connPts.length;i++){
for(let j=i+1;j<connPts.length;j++){
if(connPts[i].layer!==connPts[j].layer)continue; // hanya same layer
const dx=connPts[i].x-connPts[j].x,dy=connPts[i].y-connPts[j].y;
const d=Math.sqrt(dx*dx+dy*dy);
const maxD=connPts[i].conn;
if(d<maxD){
ctx.strokeStyle=acc;
ctx.globalAlpha=(1-d/maxD)*.07*(1-connPts[i].layer*.3);
ctx.beginPath();ctx.moveTo(connPts[i].x,connPts[i].y);
ctx.lineTo(connPts[j].x,connPts[j].y);ctx.stroke();
}
}
}
ctx.globalAlpha=1;
requestAnimationFrame(frame);
}
frame();
})();
/* ════════════════════════════════════════════════
HERO CANVAS
════════════════════════════════════════════════ */
(function(){
const cv=document.getElementById('hcv');if(!cv)return;
const ctx=cv.getContext('2d');
let W,H,t=0,mouseX=0.5,mouseY=0.5;
function rsz(){
W=cv.width=cv.parentElement.offsetWidth||window.innerWidth;
H=cv.height=cv.parentElement.offsetHeight||window.innerHeight;
}
rsz();window.addEventListener('resize',rsz,{passive:true});
// Mouse parallax pada hero
const hero=document.getElementById('hero');
if(hero) hero.addEventListener('mousemove',e=>{
const r=hero.getBoundingClientRect();
mouseX=(e.clientX-r.left)/r.width;
mouseY=(e.clientY-r.top)/r.height;
},{passive:true});
function getAcc(){return getComputedStyle(document.documentElement).getPropertyValue('--acc').trim()||'#34a853';}
// Aurora blobs
const blobs=Array.from({length:5},(_,i)=>({
x:.15+i*.18,y:.3+Math.sin(i*1.4)*.25,
vx:(Math.random()-.5)*.00018,vy:(Math.random()-.5)*.00014,
r:.22+Math.random()*.18,phase:i*1.1,
}));
// Perspective grid points
const GRID_COLS=14,GRID_ROWS=8;
function drawPerspectiveGrid(t,mx,my){
const acc=getAcc();
// Vanishing point — ikut mouse sedikit
const vpx=W*.5+(mx-.5)*W*.08;
const vpy=H*.75+(my-.5)*H*.05;
ctx.save();
ctx.globalAlpha=.045;
ctx.strokeStyle=acc;
ctx.lineWidth=.6;
// Vertical lines dari bawah ke vanishing point
for(let i=0;i<=GRID_COLS;i++){
const bx=(i/GRID_COLS)*W;
// Perspektif: garis menyatu ke vanishing point
const wave=Math.sin(t*.008+i*.35)*.012*W;
ctx.beginPath();ctx.moveTo(bx+wave,H);ctx.lineTo(vpx,vpy);ctx.stroke();
}
// Horizontal lines (depth bands)
for(let j=1;j<=GRID_ROWS;j++){
const prog=j/GRID_ROWS;
const ease=Math.pow(prog,.7);
// interpolasi dari bawah ke vanishing point
const y=vpy+(H-vpy)*ease+Math.sin(t*.006+j*.5)*.008*H;
const lx=W*.5+(0-W*.5)*ease;
const rx=W*.5+(W-W*.5)*ease;
const wave=Math.sin(t*.005+j*.7)*.006*W;
ctx.globalAlpha=.028*(1-ease*.6);
ctx.beginPath();ctx.moveTo(lx+wave,y);ctx.lineTo(rx-wave,y);ctx.stroke();
}
ctx.restore();
}
function drawAurora(t,mx,my){
blobs.forEach((b,i)=>{
b.x+=b.vx+Math.sin(t*.004+b.phase)*.00008;
b.y+=b.vy+Math.cos(t*.003+b.phase)*.00006;
if(b.x<-.1)b.x=1.1;if(b.x>1.1)b.x=-.1;
if(b.y<-.1)b.y=1.1;if(b.y>1.1)b.y=-.1;
// parallax ikut mouse
const px=b.x+(mx-.5)*(.04+i*.008);
const py=b.y+(my-.5)*(.03+i*.006);
const rg=ctx.createRadialGradient(px*W,py*H,0,px*W,py*H,b.r*Math.min(W,H));
const pulse=.028+.012*Math.sin(t*.009+b.phase);
rg.addColorStop(0,`rgba(52,168,83,${pulse})`);
rg.addColorStop(.5,`rgba(52,168,83,${pulse*.4})`);
rg.addColorStop(1,'transparent');
ctx.fillStyle=rg;ctx.fillRect(0,0,W,H);
});
}
// Floating energy orbs — subtle, di hero aja
const energyOrbs=Array.from({length:6},(_,i)=>({
x:(.15+i*.15)*1,y:.3+i*.1,
r:1.2+Math.random()*2.2,
speed:.0006+Math.random()*.0008,
phase:i*1.1,amp:.08+Math.random()*.06,
}));
function drawEnergyOrbs(t){
const acc=getAcc();
energyOrbs.forEach((o,i)=>{
const x=(o.x+Math.sin(t*o.speed+o.phase)*o.amp)*W;
const y=(o.y+Math.cos(t*o.speed*.7+o.phase)*o.amp*.6)*H;
const a=.12+.08*Math.sin(t*.012+o.phase);
const gw=ctx.createRadialGradient(x,y,0,x,y,o.r*14);
gw.addColorStop(0,`rgba(52,168,83,${a})`);
gw.addColorStop(.5,`rgba(52,168,83,${a*.3})`);
gw.addColorStop(1,'transparent');
ctx.fillStyle=gw;
ctx.beginPath();ctx.arc(x,y,o.r*14,0,Math.PI*2);ctx.fill();
// Core dot
ctx.beginPath();ctx.arc(x,y,o.r,0,Math.PI*2);
ctx.fillStyle=acc;ctx.globalAlpha=a*2.5;ctx.fill();ctx.globalAlpha=1;
});
}
function frame(){
ctx.clearRect(0,0,W,H);
t++;
const lerpF=.04;
// Smooth mouse
const tmx=mouseX,tmy=mouseY;
drawAurora(t,tmx,tmy);
drawPerspectiveGrid(t,tmx,tmy);
drawEnergyOrbs(t);
requestAnimationFrame(frame);
}
frame();
})();
/* ════════════════════════════════════════════════
DRAWER BANNER CANVAS
════════════════════════════════════════════════ */
function drawBanner(){
const c=document.getElementById('drBcv');if(!c)return;
c.width=344;c.height=170;const ctx=c.getContext('2d');
const ink=getComputedStyle(document.documentElement).getPropertyValue('--ink').trim()||'#0a0a0a';
ctx.fillStyle='#0d1f10';ctx.fillRect(0,0,344,170);
ctx.strokeStyle='rgba(255,255,255,.06)';ctx.lineWidth=.5;
for(let x=0;x<344;x+=26){ctx.beginPath();ctx.moveTo(x,0);ctx.lineTo(x,170);ctx.stroke()}
for(let y=0;y<170;y+=26){ctx.beginPath();ctx.moveTo(0,y);ctx.lineTo(344,y);ctx.stroke()}
const acc=getComputedStyle(document.documentElement).getPropertyValue('--acc').trim()||'#0a0a0a';
ctx.strokeStyle=acc;ctx.lineWidth=1;ctx.globalAlpha=.28;
ctx.beginPath();ctx.moveTo(0,170);ctx.lineTo(200,0);ctx.stroke();
ctx.beginPath();ctx.moveTo(344,170);ctx.lineTo(144,0);ctx.stroke();
ctx.globalAlpha=1;
ctx.strokeStyle=acc;ctx.lineWidth=2;
ctx.beginPath();ctx.moveTo(24,164);ctx.lineTo(140,164);ctx.stroke();
}
drawBanner();
/* ════════════════════════════════════════════════
LOADER CANVAS — 3D ring + particle burst
════════════════════════════════════════════════ */
(function(){
const cv=document.getElementById('ldcv');if(!cv)return;
const ctx=cv.getContext('2d');
let W,H,t=0,active=true;
function rsz(){W=cv.width=window.innerWidth;H=cv.height=window.innerHeight;}
rsz();window.addEventListener('resize',rsz,{passive:true});
// Stop animasi saat loader hilang
const observer=new MutationObserver(()=>{
if(document.getElementById('loader')?.classList.contains('out'))active=false;
});
const ld=document.getElementById('loader');
if(ld)observer.observe(ld,{attributes:true,attributeFilter:['class']});
function getAcc(){return getComputedStyle(document.documentElement).getPropertyValue('--acc').trim()||'#34a853';}
// Ring layers — 3 ring berputar beda kecepatan dan sudut
const rings=[
{r:.28,tilt:.55,speed:.008,dash:.22,width:1.2,alpha:.55},
{r:.38,tilt:.3, speed:-.005,dash:.18,width:.8,alpha:.35},
{r:.18,tilt:.8, speed:.014,dash:.3, width:.9,alpha:.45},
];
// Floating particles di loader
const ldPts=Array.from({length:28},(_,i)=>({
angle:(i/28)*Math.PI*2,
r:(.12+Math.random()*.24),
speed:(.003+Math.random()*.004)*(Math.random()>.5?1:-1),
size:1+Math.random()*2.2,
life:Math.random()*Math.PI*2,
alpha:.2+Math.random()*.3,
}));
function drawRing(t,ring,acc){
const cx=W/2,cy=H/2;
const radius=Math.min(W,H)*ring.r;
// 3D tilt: scale Y untuk efek perspektif elips
const scaleY=Math.cos(ring.tilt);
const angle=t*ring.speed;
ctx.save();
ctx.translate(cx,cy);
ctx.scale(1,scaleY);
// Glow blur layer
ctx.save();
ctx.filter=`blur(3px)`;
ctx.globalAlpha=ring.alpha*.25;
ctx.strokeStyle=acc;
ctx.lineWidth=ring.width*2.5;
ctx.setLineDash([radius*ring.dash, radius*(1-ring.dash)]);
ctx.lineDashOffset=-angle*radius;
ctx.beginPath();ctx.arc(0,0,radius,0,Math.PI*2);ctx.stroke();
ctx.filter='none';
ctx.restore();
// Sharp ring
ctx.globalAlpha=ring.alpha;
ctx.strokeStyle=acc;
ctx.lineWidth=ring.width;
ctx.setLineDash([radius*ring.dash*1.2, radius*(1-ring.dash*.8)]);
ctx.lineDashOffset=-angle*radius;
ctx.beginPath();ctx.arc(0,0,radius,0,Math.PI*2);ctx.stroke();
// Bright leading dot
const dotA=angle%(Math.PI*2);
const dotX=Math.cos(dotA)*radius;
const dotY=Math.sin(dotA)*radius;
ctx.setLineDash([]);
ctx.globalAlpha=ring.alpha*.9;
const dg=ctx.createRadialGradient(dotX,dotY,0,dotX,dotY,ring.width*5);
dg.addColorStop(0,acc);dg.addColorStop(1,'transparent');
ctx.fillStyle=dg;ctx.beginPath();ctx.arc(dotX,dotY,ring.width*4,0,Math.PI*2);ctx.fill();
ctx.restore();
ctx.globalAlpha=1;ctx.setLineDash([]);
}
function drawCenterPulse(t,acc){
const cx=W/2,cy=H/2;
const pulse=1+.08*Math.sin(t*.06);
const r=Math.min(W,H)*.055*pulse;
// Multi-layer glow
[.45,.25,.12].forEach((alpha,i)=>{
const gr=ctx.createRadialGradient(cx,cy,0,cx,cy,r*(2.5+i*1.5));
gr.addColorStop(0,`rgba(52,168,83,${alpha})`);gr.addColorStop(1,'transparent');
ctx.fillStyle=gr;ctx.fillRect(0,0,W,H);
});
// Core
const cg=ctx.createRadialGradient(cx-r*.2,cy-r*.2,0,cx,cy,r);
cg.addColorStop(0,'rgba(200,255,210,.9)');cg.addColorStop(.4,acc);cg.addColorStop(1,'transparent');
ctx.fillStyle=cg;ctx.beginPath();ctx.arc(cx,cy,r,0,Math.PI*2);ctx.fill();
}
function drawLdParticles(t,acc){
const cx=W/2,cy=H/2;
ldPts.forEach(p=>{
p.angle+=p.speed;p.life+=.015;
const radius=Math.min(W,H)*p.r*(1+.05*Math.sin(p.life));
const x=cx+Math.cos(p.angle)*radius;
const y=cy+Math.sin(p.angle)*radius*0.7; // slight elipse
const a=p.alpha*(0.5+0.5*Math.sin(p.life));
ctx.globalAlpha=a*.6;
ctx.beginPath();ctx.arc(x,y,p.size,0,Math.PI*2);
ctx.fillStyle=acc;ctx.fill();
ctx.globalAlpha=1;
});
}
// Ambient sweep lines
function drawSweep(t,acc){
const cx=W/2,cy=H/2;
const a1=t*.003,a2=t*.003+Math.PI;
const len=Math.min(W,H)*.42;
for(let i=0;i<2;i++){
const a=i===0?a1:a2;
const grd=ctx.createLinearGradient(cx,cy,cx+Math.cos(a)*len,cy+Math.sin(a)*len);
grd.addColorStop(0,`rgba(52,168,83,.14)`);grd.addColorStop(1,'transparent');
ctx.strokeStyle=grd;ctx.lineWidth=.8;
ctx.beginPath();ctx.moveTo(cx,cy);ctx.lineTo(cx+Math.cos(a)*len,cy+Math.sin(a)*len);ctx.stroke();
}
}
function frame(){
if(!active){ctx.clearRect(0,0,W,H);return;}
ctx.clearRect(0,0,W,H);t++;
const acc=getAcc();
drawSweep(t,acc);
rings.forEach(r=>drawRing(t,r,acc));
drawLdParticles(t,acc);
drawCenterPulse(t,acc);
requestAnimationFrame(frame);
}
frame();
})();
/* ════════════════════════════════════════════════
DOWNLOAD CANVAS
════════════════════════════════════════════════ */
function drawDl(){
const c=document.getElementById('dlcv');if(!c)return;
c.width=c.parentElement?.offsetWidth||660;c.height=280;
const ctx=c.getContext('2d'),w=c.width;
ctx.clearRect(0,0,w,280);
ctx.strokeStyle='rgba(255,255,255,.04)';ctx.lineWidth=.5;
for(let x=0;x<w;x+=50){ctx.beginPath();ctx.moveTo(x,0);ctx.lineTo(x,280);ctx.stroke()}
for(let y=0;y<280;y+=50){ctx.beginPath();ctx.moveTo(0,y);ctx.lineTo(w,y);ctx.stroke()}
const acc=getComputedStyle(document.documentElement).getPropertyValue('--acc').trim()||'#0a0a0a';
ctx.strokeStyle=acc;ctx.lineWidth=.7;ctx.globalAlpha=.2;
for(let i=0;i<w+280;i+=72){ctx.beginPath();ctx.moveTo(i,0);ctx.lineTo(i-280,280);ctx.stroke()}
ctx.globalAlpha=1;
}
drawDl();
/* ════════════════════════════════════════════════
PRODUCT CARD CANVAS
════════════════════════════════════════════════ */
function drawPcv(id){
const c=document.getElementById('c-'+id);if(!c)return;
const w=c.parentElement?.offsetWidth||320;c.width=w;c.height=132;
const ctx=c.getContext('2d');
ctx.fillStyle='#0d1f10';ctx.fillRect(0,0,w,132);
ctx.strokeStyle='rgba(255,255,255,.055)';ctx.lineWidth=.5;
for(let x=0;x<w;x+=18){ctx.beginPath();ctx.moveTo(x,0);ctx.lineTo(x,132);ctx.stroke()}
for(let y=0;y<132;y+=18){ctx.beginPath();ctx.moveTo(0,y);ctx.lineTo(w,y);ctx.stroke()}
const acc=getComputedStyle(document.documentElement).getPropertyValue('--acc').trim()||'#0a0a0a';
const g=ctx.createLinearGradient(0,0,w,0);
g.addColorStop(0,'transparent');g.addColorStop(.5,acc);g.addColorStop(1,'transparent');
ctx.strokeStyle=g;ctx.lineWidth=1;ctx.globalAlpha=.55;
ctx.beginPath();ctx.moveTo(0,131);ctx.lineTo(w,131);ctx.stroke();
ctx.globalAlpha=1;
}
/* ════════════════════════════════════════════════
MODAL CANVAS
════════════════════════════════════════════════ */
function drawMdCv(){
const c=document.getElementById('mdcv');if(!c)return;
c.width=520;c.height=92;const ctx=c.getContext('2d');
ctx.fillStyle='#0d1f10';ctx.fillRect(0,0,520,92);
ctx.strokeStyle='rgba(255,255,255,.055)';ctx.lineWidth=.5;
for(let x=0;x<520;x+=22){ctx.beginPath();ctx.moveTo(x,0);ctx.lineTo(x,92);ctx.stroke()}
const acc=getComputedStyle(document.documentElement).getPropertyValue('--acc').trim();
const g=ctx.createLinearGradient(0,0,520,0);
g.addColorStop(0,'transparent');g.addColorStop(.5,acc||'rgba(255,255,255,.5)');g.addColorStop(1,'transparent');
ctx.strokeStyle=g;ctx.lineWidth=1;ctx.globalAlpha=.45;
ctx.beginPath();ctx.moveTo(0,91);ctx.lineTo(520,91);ctx.stroke();ctx.globalAlpha=1;
}
/* ════════════════════════════════════════════════
FOOTER CANVAS
════════════════════════════════════════════════ */
function drawFtCv(){
const c=document.getElementById('ftCv');if(!c)return;
c.width=window.innerWidth;c.height=c.parentElement?.offsetHeight||500;
const ctx=c.getContext('2d'),w=c.width,h=c.height;
ctx.strokeStyle='rgba(255,255,255,.05)';ctx.lineWidth=.5;
for(let x=0;x<w;x+=60){ctx.beginPath();ctx.moveTo(x,0);ctx.lineTo(x,h);ctx.stroke()}
for(let y=0;y<h;y+=60){ctx.beginPath();ctx.moveTo(0,y);ctx.lineTo(w,y);ctx.stroke()}
const acc=getComputedStyle(document.documentElement).getPropertyValue('--acc').trim()||'#0a0a0a';
ctx.strokeStyle=acc;ctx.lineWidth=.6;ctx.globalAlpha=.12;
for(let i=0;i<w+h;i+=80){ctx.beginPath();ctx.moveTo(i,0);ctx.lineTo(0,i);ctx.stroke()}
ctx.globalAlpha=1;
}
setTimeout(drawFtCv,100);window.addEventListener('resize',drawFtCv);
/* ════════════════════════════════════════════════
AVATAR CANVAS
════════════════════════════════════════════════ */
function drawAv(canvas,name,i){
canvas.width=90;canvas.height=90;
const ctx=canvas.getContext('2d');
const colors=['#0a0a0a','#1a1a2e','#16213e','#0f3460','#1e1e2e','#0d0d1a'];
ctx.beginPath();ctx.arc(45,45,44,0,Math.PI*2);
ctx.fillStyle=colors[i%colors.length];ctx.fill();
ctx.strokeStyle='rgba(255,255,255,.1)';ctx.lineWidth=1;ctx.stroke();
ctx.font='600 30px Syne,sans-serif';ctx.textAlign='center';ctx.textBaseline='middle';
ctx.fillStyle='#ffffff';ctx.fillText(name.charAt(0).toUpperCase(),45,46);
}
function drawSellerAv(canvas,name,i){
canvas.width=52;canvas.height=52;
const ctx=canvas.getContext('2d');
const colors=['#0a0a0a','#1a1a2e','#16213e'];
ctx.fillStyle=colors[i%colors.length];ctx.fillRect(0,0,52,52);
ctx.strokeStyle='rgba(255,255,255,.08)';ctx.lineWidth=.5;
for(let x=0;x<52;x+=10){ctx.beginPath();ctx.moveTo(x,0);ctx.lineTo(x,52);ctx.stroke()}
ctx.font='700 20px Syne,sans-serif';ctx.textAlign='center';ctx.textBaseline='middle';
ctx.fillStyle='rgba(255,255,255,.9)';ctx.fillText(name.charAt(0).toUpperCase(),26,27);
}
/* ════════════════════════════════════════════════
BAND
════════════════════════════════════════════════ */
function buildBand(){
const items=['SNITZ PROJECT V2.0','Sensi Optimizer','AimTrick Inject','Premium VIP','24/7 Support','5 Tier','Up Performance','AES-256','Cache Cleaning','DPI Notification'];
const html=items.map(t=>`<div class="band-item"><svg class="band-dot" viewBox="0 0 5 5" style="width:5px;height:5px"><circle cx="2.5" cy="2.5" r="2.5" fill="currentColor"/></svg>${t}</div>`).join('');
document.getElementById('band1').innerHTML=html+html;
document.getElementById('band2').innerHTML=html+html;
}
buildBand();
/* ════════════════════════════════════════════════
BUILD SECTIONS
════════════════════════════════════════════════ */
const FEAT_ICONS={
'01':`<svg viewBox="0 0 32 32" fill="none" width="28" height="28"><circle cx="16" cy="16" r="12" stroke="var(--acc)" stroke-width="1.4" stroke-dasharray="3 2" opacity=".35"/><path d="M10 22s1-6 6-6 6 6 6 6" stroke="var(--acc)" stroke-width="1.8" stroke-linecap="round" opacity=".5"/><path d="M8 14l2.5 2.5M21.5 14l2.5-2.5M8 18h3M21 18h3" stroke="var(--acc)" stroke-width="1.4" stroke-linecap="round" opacity=".4"/><circle cx="16" cy="12" r="3.5" stroke="var(--acc)" stroke-width="1.7" fill="var(--acc)" fill-opacity=".12"/><path d="M12 26h8" stroke="var(--acc)" stroke-width="1.4" stroke-linecap="round" opacity=".35"/></svg>`,
'02':`<svg viewBox="0 0 32 32" fill="none" width="28" height="28"><rect x="5" y="10" width="22" height="16" rx="3" stroke="var(--acc)" stroke-width="1.5" fill="var(--acc)" fill-opacity=".07"/><path d="M10 6h12M16 6v4" stroke="var(--acc)" stroke-width="1.5" stroke-linecap="round" opacity=".45"/><path d="M11 18l3 3 7-7" stroke="var(--acc)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><circle cx="24" cy="10" r="4" fill="var(--acc)" fill-opacity=".18" stroke="var(--acc)" stroke-width="1.3"/><path d="M22.5 10l1 1 2-2" stroke="var(--acc)" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"/></svg>`,
'03':`<svg viewBox="0 0 32 32" fill="none" width="28" height="28"><rect x="4" y="7" width="24" height="16" rx="2.5" stroke="var(--acc)" stroke-width="1.5" fill="var(--acc)" fill-opacity=".06"/><path d="M4 11h24" stroke="var(--acc)" stroke-width="1" opacity=".3"/><circle cx="7.5" cy="9.5" r="1" fill="var(--acc)" opacity=".5"/><circle cx="10.5" cy="9.5" r="1" fill="var(--acc)" opacity=".4"/><circle cx="13.5" cy="9.5" r="1" fill="var(--acc)" opacity=".3"/><path d="M9 17l3 3 7-7" stroke="var(--acc)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M10 27h12M16 23v4" stroke="var(--acc)" stroke-width="1.4" stroke-linecap="round" opacity=".4"/></svg>`,
'04':`<svg viewBox="0 0 32 32" fill="none" width="28" height="28"><rect x="3" y="18" width="26" height="9" rx="2.5" stroke="var(--acc)" stroke-width="1.4" fill="var(--acc)" fill-opacity=".07"/><circle cx="7" cy="22.5" r="1.5" fill="var(--acc)" fill-opacity=".6"/><path d="M11 20.5h12M11 24.5h8" stroke="var(--acc)" stroke-width="1.2" stroke-linecap="round" opacity=".5"/><path d="M16 5v10M10 9l6 6 6-6" stroke="var(--acc)" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/><path d="M16 18a.5.5 0 100 1 .5.5 0 000-1z" fill="var(--acc)"/></svg>`,
'05':`<svg viewBox="0 0 32 32" fill="none" width="28" height="28"><circle cx="16" cy="16" r="12" stroke="var(--acc)" stroke-width="1.2" opacity=".25"/><circle cx="16" cy="16" r="7" stroke="var(--acc)" stroke-width="1.4" fill="var(--acc)" fill-opacity=".06"/><circle cx="16" cy="16" r="2.5" fill="var(--acc)" fill-opacity=".8"/><path d="M16 9v2M16 21v2M9 16H7M25 16h-2M11.2 11.2l1.4 1.4M19.4 19.4l1.4 1.4M11.2 20.8l1.4-1.4M19.4 12.6l1.4-1.4" stroke="var(--acc)" stroke-width="1.4" stroke-linecap="round" opacity=".45"/><path d="M16 16l6-4" stroke="var(--acc)" stroke-width="1.8" stroke-linecap="round" opacity=".7"/></svg>`,
'06':`<svg viewBox="0 0 32 32" fill="none" width="28" height="28"><rect x="3" y="12" width="10" height="7" rx="1.5" stroke="var(--acc)" stroke-width="1.4" fill="var(--acc)" fill-opacity=".1"/><rect x="19" y="12" width="10" height="7" rx="1.5" stroke="var(--acc)" stroke-width="1.4" fill="var(--acc)" fill-opacity=".1"/><rect x="11" y="8" width="10" height="7" rx="1.5" stroke="var(--acc)" stroke-width="1.4" fill="var(--acc)" fill-opacity=".16"/><path d="M8 19v3M24 19v3M16 15v5" stroke="var(--acc)" stroke-width="1.4" stroke-linecap="round" opacity=".5"/><path d="M5 22h22" stroke="var(--acc)" stroke-width="1.2" stroke-linecap="round" opacity=".35"/></svg>`,
'07':`<svg viewBox="0 0 32 32" fill="none" width="28" height="28"><path d="M16 28c-6.6 0-12-5.4-12-12S9.4 4 16 4s12 5.4 12 12" stroke="var(--acc)" stroke-width="1.5" stroke-linecap="round" opacity=".4"/><path d="M22 22c0 3.3-2.7 6-6 6s-6-2.7-6-6 2.7-6 6-6" stroke="var(--acc)" stroke-width="1.5" stroke-linecap="round"/><circle cx="16" cy="14" r="4" stroke="var(--acc)" stroke-width="1.5" fill="var(--acc)" fill-opacity=".08"/><path d="M14 14l1.5 1.5 3-3" stroke="var(--acc)" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg>`,
'08':`<svg viewBox="0 0 32 32" fill="none" width="28" height="28"><path d="M16 4l10 5v8c0 5.5-3.8 10.7-10 13C9.8 27.7 6 22.5 6 17V9l10-5z" stroke="var(--acc)" stroke-width="1.5" fill="var(--acc)" fill-opacity=".07" stroke-linejoin="round"/><path d="M11 17l3 3 7-7" stroke="var(--acc)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M16 8v4M14 10h4" stroke="var(--acc)" stroke-width="1.2" stroke-linecap="round" opacity=".4"/></svg>`,
};
function bFeats(){
const g=document.getElementById('featGrid');g.innerHTML='';
FEATS.forEach((f,i)=>{
const d=document.createElement('div');d.className='fc rv';d.style.transitionDelay=(i*.05)+'s';
const icon=FEAT_ICONS[f.num]||'';
d.innerHTML=`
<div style="width:52px;height:52px;background:var(--acc-t);border-radius:14px;display:flex;align-items:center;justify-content:center;margin-bottom:18px;border:1px solid var(--line2);flex-shrink:0">${icon}</div>
<div class="fc-num">${f.num}</div>
<div class="fc-h">${f.t[lang]}</div>
<div class="fc-p">${f.p[lang]}</div>
<div class="fc-tag">${f.tag[lang]}</div>`;
g.appendChild(d);setTimeout(()=>rvObs.observe(d),30);
});
}
function bProds(){
const g=document.getElementById('prodGrid');g.innerHTML='';
document.getElementById('ftProds').innerHTML='';
PRODS.forEach((p,i)=>{
const disc=Math.round((1-p.dpn/p.rpn)*100);
const d=document.createElement('div');d.className='pc rv'+(p.featured?' featured':'');d.style.transitionDelay=(i*.07)+'s';
d.innerHTML=`
${p.featured?'<div class="pc-feat-badge">Terpopuler</div>':''}
<div class="pc-head">
<canvas id="c-${p.id}" style="position:absolute;inset:0;width:100%;height:100%"></canvas>
<div class="pc-hl"><div class="pc-name">${p.n}</div><div class="pc-tier">${p.tier}</div></div>
</div>
<div class="pc-body">
<div class="pc-pr">
<span class="pc-orig">Rp ${p.rp}</span>
<span class="pc-disc">Rp ${p.dp}</span>
<span class="pc-usd" style="display:inline-flex;align-items:center;gap:6px;font-family:var(--CF);font-size:1rem;font-weight:700;color:var(--acc);letter-spacing:.05em;margin-top:6px;background:var(--acc-t);border:1px solid var(--line2);border-radius:8px;padding:4px 12px">≈ $${(p.dpn/16500).toFixed(1)} <span style="font-size:.65rem;opacity:.7;font-weight:400">USD</span></span>
<span class="pc-save">Hemat ${disc}%</span>
</div>
<ul class="pc-feats">${p.f[lang].map(x=>`<li>${x}</li>`).join('')}</ul>
<div class="pc-btns">
<button class="pb pb-buy" onclick="openPay(${i})">Beli Sekarang</button>
<button class="pb pb-info" onclick="oMd(${i})">Detail</button>
</div>
</div>`;
d.addEventListener('mousemove',e=>{
const r=d.getBoundingClientRect(),cx=r.left+r.width/2,cy=r.top+r.height/2;
d.style.transition='transform .1s';
d.style.transform=`perspective(900px) rotateX(${((e.clientY-cy)/r.height)*7}deg) rotateY(${-((e.clientX-cx)/r.width)*7}deg) translateY(-8px)`;
});
d.addEventListener('mouseleave',()=>{d.style.transition='transform .65s cubic-bezier(.22,1,.36,1)';d.style.transform=''});
g.appendChild(d);
setTimeout(()=>{rvObs.observe(d);drawPcv(p.id)},50*i+40);
// Footer products
const fl=document.createElement('a');fl.className='ft-link-item';fl.href='#vip';fl.textContent=p.n;
document.getElementById('ftProds').appendChild(fl);
});
}
function bProdsPC(){
const g=document.getElementById('prodGridPC');if(!g)return;g.innerHTML='';
PRODS_PC.forEach((p,i)=>{
const disc=Math.round((1-p.dpn/p.rpn)*100);
const d=document.createElement('div');
d.className='pc rv'+(p.featured?' featured':'');
d.style.transitionDelay=(i*.07)+'s';
d.innerHTML=`
${p.featured?'<div class="pc-feat-badge">Best PC</div>':''}
<div style="position:absolute;top:16px;right:${p.featured?'110px':'16px'};z-index:3;font-family:var(--CF);font-size:.48rem;letter-spacing:.14em;color:var(--acc);background:rgba(52,168,83,.1);border:1px solid var(--acc);padding:3px 9px;border-radius:100px;text-transform:uppercase">PC</div>
<div class="pc-head">
<canvas id="c-pc-${p.id}" style="position:absolute;inset:0;width:100%;height:100%"></canvas>
<div class="pc-hl"><div class="pc-name">${p.n}</div><div class="pc-tier">${p.tier}</div></div>
</div>
<div class="pc-body">
<div class="pc-pr">
<span class="pc-orig">Rp ${p.rp}</span>
<span class="pc-disc">Rp ${p.dp}</span>
<span class="pc-usd" style="display:inline-flex;align-items:center;gap:6px;font-family:var(--CF);font-size:1rem;font-weight:700;color:var(--acc);letter-spacing:.05em;margin-top:6px;background:var(--acc-t);border:1px solid var(--line2);border-radius:8px;padding:4px 12px">≈ $${(p.dpn/16500).toFixed(1)} <span style="font-size:.65rem;opacity:.7;font-weight:400">USD</span></span>
<span class="pc-save">Hemat ${disc}%</span>
</div>
<ul class="pc-feats">${p.f.map(x=>`<li>${x}</li>`).join('')}</ul>
<div class="pc-btns">
<button class="pb pb-buy" onclick="openPayPCDialog(${i})">Beli Sekarang</button>
<button class="pb pb-info" onclick="oMdPC(${i})">Detail</button>
</div>
</div>`;
d.addEventListener('mousemove',e=>{
const r=d.getBoundingClientRect(),cx=r.left+r.width/2,cy=r.top+r.height/2;
d.style.transition='transform .1s';
d.style.transform=`perspective(900px) rotateX(${((e.clientY-cy)/r.height)*7}deg) rotateY(${-((e.clientX-cx)/r.width)*7}deg) translateY(-8px)`;
});
d.addEventListener('mouseleave',()=>{d.style.transition='transform .65s cubic-bezier(.22,1,.36,1)';d.style.transform=''});
g.appendChild(d);
setTimeout(()=>{rvObs.observe(d);drawPcv('pc-'+p.id)},50*i+40);
});
}
function bSetPC(){
const g=document.getElementById('setpcGrid');if(!g)return;g.innerHTML='';
SETPC_PACKAGES.forEach((p,i)=>{
const d=document.createElement('div');d.className='setpc-card rv';d.style.transitionDelay=(i*.1)+'s';
const benefitList=p.benefits.slice(0,6).map(b=>`<li>${b}</li>`).join('');
d.innerHTML=`
<div class="setpc-head">
<canvas id="c-setpc-${p.id}" style="position:absolute;inset:0;width:100%;height:100%;z-index:0"></canvas>
<div class="setpc-head-line"></div>
<div class="setpc-badge" style="position:relative;z-index:2">SET PC · SHANX</div>
<div class="setpc-name" style="position:relative;z-index:2">${p.n}</div>
<div class="setpc-sub" style="position:relative;z-index:2">${p.sub} Package</div>
</div>
<div class="setpc-body">
<div class="setpc-price">Rp ${p.rp}<span>/ session</span></div>
<span class="pc-usd" style="display:inline-flex;align-items:center;gap:6px;font-family:var(--CF);font-size:1rem;font-weight:700;color:var(--acc);letter-spacing:.05em;margin-top:6px;background:var(--acc-t);border:1px solid var(--line2);border-radius:8px;padding:4px 12px">≈ $${(parseInt(p.rp.replace(/\./g,''))/16500).toFixed(1)} <span style="font-size:.65rem;opacity:.7;font-weight:400">USD</span></span>
<ul class="setpc-feats">${benefitList}</ul>
<div class="setpc-contact">
<div class="setpc-contact-info">
<div class="setpc-contact-lbl">Order via WhatsApp</div>
<div class="setpc-contact-name">Ocho — ${p.contact.wa}</div>
</div>
<div class="setpc-contact-arrow"><svg viewBox="0 0 14 14"><path d="M3 7h8M8 4l3 3-3 3" stroke-linecap="round" stroke-linejoin="round"/></svg></div>
</div>
<button class="setpc-btn" onclick="openPaySetPC(${i})">
<svg viewBox="0 0 16 16"><path d="M8 1a7 7 0 103 13.3L14 15l-.7-2.9A7 7 0 008 1z" stroke-linecap="round" stroke-linejoin="round"/></svg>
Order Sekarang
</button>
</div>`;
d.querySelector('.setpc-contact').addEventListener('click',()=>openPaySetPC(i));
d.addEventListener('mousemove',e=>{
const r=d.getBoundingClientRect(),cx=r.left+r.width/2,cy=r.top+r.height/2;
d.style.transition='transform .1s';
d.style.transform=`perspective(900px) rotateX(${((e.clientY-cy)/r.height)*6}deg) rotateY(${-((e.clientX-cx)/r.width)*6}deg) translateY(-8px)`;
});
d.addEventListener('mouseleave',()=>{d.style.transition='transform .65s cubic-bezier(.22,1,.36,1)';d.style.transform=''});
g.appendChild(d);
setTimeout(()=>{rvObs.observe(d);drawPcv('setpc-'+p.id)},50*i+40);
});
}
/* ── PC PAYMENT DIALOG (via Payment modal reuse) ── */
let _payPCIdx=0;
function openPayPCDialog(i){
_payPCIdx=i;
const p=PRODS_PC[i];
document.getElementById('payProdTag').textContent='SNITZ PC — '+p.n;
document.getElementById('payProdTier').textContent=p.tier.split('—')[0].trim();
document.getElementById('payProdPname').textContent=p.n;
document.getElementById('payProdPriceTag').textContent='Rp '+p.dp;
document.getElementById('pqrAmount').textContent='Rp '+p.dp;
// swap QRIS from existing element
const img = document.getElementById('pqrImg');
const qrisSrc = document.getElementById(`qris-img-${p.id}`);
if(qrisSrc) img.src = qrisSrc.src;
// Override WA confirm to PC msg
window._payMode='pc';
backToMethods();
document.getElementById('payov').classList.add('on');
document.body.style.overflow='hidden';
}
/* ── SET PC ORDER (WA direct to Ocho) ── */
let _paySetPCIdx=0;
function openPaySetPC(i){
_paySetPCIdx=i;
const p=SETPC_PACKAGES[i];
const msg=encodeURIComponent('Halo Ocho! Mau order *'+p.n+'* ('+p.sub+') Rp '+p.rp+'. Bisa dibantu info lebih lanjut? Terima kasih!');
window.open('https://wa.me/6285716384808?text='+msg,'_blank');
}
/* ── PC & SetPC DETAIL MODAL ── */
function oMdPC(i){
const p=PRODS_PC[i];
document.getElementById('mdT').textContent=p.n;
document.getElementById('mdP').innerHTML=`<span style="text-decoration:line-through;color:var(--ink4);font-size:.9rem;font-weight:400">Rp ${p.rp}</span> Rp ${p.dp} <span style="font-size:.7rem;background:var(--acc);color:#060b07;padding:2px 8px;border-radius:4px">PC Package</span>`;
document.getElementById('mdF').innerHTML=p.mf.map(x=>`<li>${x}</li>`).join('');
document.getElementById('mdBuyBtn').onclick=()=>openPayPCDialog(i);
drawMdCv();document.getElementById('mdov').classList.add('on');
}
function oMdSetPC(i){
const p=SETPC_PACKAGES[i];
document.getElementById('mdT').textContent=p.n;
document.getElementById('mdP').innerHTML=`Rp ${p.rp} / session <span style="font-size:.7rem;background:rgba(52,168,83,.15);color:var(--acc);border:1px solid var(--acc);padding:2px 8px;border-radius:4px">SET PC</span><div style="font-size:.75rem;color:var(--ink3);margin-top:6px;font-weight:300">Hubungi Ocho: +62 857-1638-4808</div>`;
document.getElementById('mdF').innerHTML=p.benefits.map(x=>`<li>${x}</li>`).join('');
document.getElementById('mdBuyBtn').onclick=()=>openPaySetPC(i);
drawMdCv();document.getElementById('mdov').classList.add('on');
}
/* ── SLIDER-BASED TAB SWITCHER ── */
let _vipTabIdx=0;
const _vipTabMap={android:0,pc:1,setpc:2};
function switchVipTab(name,idx){
if(idx===_vipTabIdx)return;
const prevIdx=_vipTabIdx;
// Tabs active state
document.querySelectorAll('.vip-tab').forEach(t=>t.classList.remove('active'));
document.getElementById('tab-'+name).classList.add('active');
// Build lazy content BEFORE sliding
if(name==='pc'&&document.getElementById('prodGridPC').children.length===0)bProdsPC();
if(name==='setpc'&&document.getElementById('setpcGrid').children.length===0)bSetPC();
_vipTabIdx=idx;
// Slide inner track — translateX full panels
const inner=document.getElementById('vipInner');
inner.style.transform='translateX(-'+(idx*100)+'%)';
// Mark all panels hidden except active, add 3D anim class
const goRight=idx>prevIdx;
document.querySelectorAll('.vip-panel').forEach((p,i)=>{
p.classList.remove('v-active','v-hidden','anim-in-left','anim-in-right');
if(i===idx){
p.classList.add('v-active');
p.classList.add(goRight?'anim-in-left':'anim-in-right');
} else {
p.classList.add('v-hidden');
}
});
// Sync height to active panel
const panel=document.getElementById('panel-'+name);
const wrapper=document.getElementById('vipPanels');
setTimeout(()=>{
wrapper.style.height=panel.offsetHeight+'px';
// reveal new cards
panel.querySelectorAll('.rv:not(.in)').forEach((el,i)=>{
setTimeout(()=>el.classList.add('in'),i*50+80);
});
// tilt 3D effect on the whole section briefly
const sec=document.getElementById('vip');
if(sec){
sec.style.transition='transform .55s cubic-bezier(.16,1,.3,1)';
sec.style.transform='perspective(1400px) rotateY('+(goRight?'-1.2deg':'1.2deg')+')';
setTimeout(()=>{sec.style.transform='perspective(1400px) rotateY(0deg)';
setTimeout(()=>{sec.style.transition='';sec.style.transform='';},600);},320);
}
},30);
}
function initVipPanel(){
const wrapper=document.getElementById('vipPanels');
const panel=document.getElementById('panel-android');
// Mark first panel active
document.querySelectorAll('.vip-panel').forEach((p,i)=>{
if(i===0){p.classList.add('v-active');}
else{p.classList.add('v-hidden');}
});
setTimeout(()=>{if(panel)wrapper.style.height=panel.offsetHeight+'px';},200);
}
setTimeout(initVipPanel,300);
function bHow(){
const g=document.getElementById('howSteps');g.innerHTML='';
HOW_STEPS.forEach((s,i)=>{
const d=document.createElement('div');d.className='how-step rv';d.style.transitionDelay=(i*.1)+'s';
d.innerHTML=`<div class="how-num">${s.n}</div><div class="how-h">${s.h[lang]}</div><div class="how-p">${s.p[lang]}</div>`;
g.appendChild(d);setTimeout(()=>rvObs.observe(d),30);
});
}
function bSpecs(){
const g=document.getElementById('specsTable');g.innerHTML='';
// Header
const h=document.createElement('div');h.className='specs-row specs-head';
h.innerHTML=`<div class="specs-cell">Specifications</div><div class="specs-cell">Free</div><div class="specs-cell">VIP</div>`;
g.appendChild(h);
SPECS.forEach(s=>{
const r=document.createElement('div');r.className='specs-row';
const checkSvg=`<div class="specs-ok"><svg viewBox="0 0 14 14"><path d="M2 7l3.5 3.5L12 4" stroke-linecap="round" stroke-linejoin="round"/></svg></div>`;
const xSvg=`<div class="specs-ok"><svg viewBox="0 0 14 14" stroke="var(--ink4)"><path d="M3 3l8 8M11 3L3 11" stroke-linecap="round"/></svg></div>`;
const isVipGood=(s.vip[lang]!=='Tidak' && s.vip[lang]!=='No' && s.vip[lang]!=='None' && s.vip[lang]!=='Tidak ada');
const isFreeGood=(s.free[lang]!=='Tidak' && s.free[lang]!=='No' && s.free[lang]!=='None' && s.free[lang]!=='Tidak ada');
r.innerHTML=`<div class="specs-cell" style="font-weight:500;color:var(--ink)">${s.label[lang]}</div>
<div class="specs-cell">${isFreeGood?checkSvg:xSvg}<span style="font-size:.82rem">${s.free[lang]}</span></div>
<div class="specs-cell">${isVipGood?checkSvg:xSvg}<span style="font-size:.82rem;color:var(--acc);font-weight:500">${s.vip[lang]}</span></div>`;
g.appendChild(r);
});
}
function bTesti(){
const inner=document.getElementById('testiInner');inner.innerHTML='';
const all=[...TESTIS,...TESTIS];
all.forEach(t=>{
const d=document.createElement('div');d.className='tc';
const stars='<svg class="tc-star" viewBox="0 0 14 14"><polygon points="7,1 8.8,5.3 13.5,5.7 10.1,8.7 11.2,13.3 7,10.7 2.8,13.3 3.9,8.7 .5,5.7 5.2,5.3"/></svg>'.repeat(t.stars);
d.innerHTML=`<div class="tc-stars">${stars}</div><div class="tc-text">"${typeof t.text==='object'?t.text[lang]:t.text}"</div><div class="tc-author"><div class="tc-av">${t.name.charAt(0)}</div><div><div class="tc-an">${t.name}</div><div class="tc-ar">${typeof t.role==='object'?t.role[lang]:t.role}</div></div></div>`;
inner.appendChild(d);
});
}
function bFaq(){
const g=document.getElementById('faqList');g.innerHTML='';
FAQS.forEach((f,i)=>{
const d=document.createElement('div');d.className='fq rv';d.style.transitionDelay=(i*.05)+'s';
d.innerHTML=`<div class="fq-q"><span class="fq-ql">${f.q[lang]}</span><span class="fq-ar"><svg viewBox="0 0 10 10" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M1 3l4 4 4-4"/></svg></span></div><div class="fq-a"><div class="fq-ai">${f.a[lang]}</div></div>`;
d.querySelector('.fq-q').onclick=()=>d.classList.toggle('on');
g.appendChild(d);setTimeout(()=>rvObs.observe(d),30);
});
}
function bContribs(){
const g=document.getElementById('ctGrid');g.innerHTML='';
const igSvg='M4 1h8a3 3 0 013 3v8a3 3 0 01-3 3H4a3 3 0 01-3-3V4a3 3 0 013-3zm4 3a3 3 0 100 6 3 3 0 000-6zm3.8.2a.7.7 0 100 1.4.7.7 0 000-1.4z';
const waSvg='M8 1a7 7 0 103 13.3L14 15l-.7-2.9A7 7 0 008 1z';
const ttSvg='M12 2.5c1 2 1.5 3.5 1.5 4.5S13 9.5 12 11c-.8.8-2.3 1.1-4 1.1s-3.2-.3-4-1.1C2.5 9.5 2 8.5 2 6.5S2.5 3.5 3.5 2.5C4.7 2 5.7 2 7.5 2s2.8 0 4.5.5z';
const imgArr=[IMG_SHANX,IMG_KENT,IMG_UGRA,IMG_DEZET,IMG_VEMZ444,IMG_ROO];
CONTRIBS.forEach((c,i)=>{
const d=document.createElement('div');d.className='ctc rv';d.style.transitionDelay=(i*.07)+'s';
const igBtn=c.soc.ig?`<a class="ctc-sb ctc-sb-link" href="${c.soc.ig}" title="Instagram" target="_blank"><svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.7"><path d="${igSvg}"/></svg></a>`:'';
d.innerHTML=`
<div class="ctc-av" style="position:relative;display:flex;justify-content:center;align-items:center;margin-bottom:24px">
<div style="position:relative;display:inline-block">
<div style="overflow:hidden;border-radius:50%;width:90px;height:90px;border:2px solid var(--line2)">
<img src="${imgArr[i]}" alt="${c.n}" style="width:100%;height:100%;object-fit:cover;display:block"/>
</div>
<div style="position:absolute;bottom:-16px;left:50%;transform:translateX(-50%);width:38px;height:38px;display:flex;align-items:center;justify-content:center">
<img src="${LOGO}" alt="SNITZ" style="width:100%;height:100%;object-fit:contain;display:block;filter:${i===0?'drop-shadow(0 0 3px var(--acc)) drop-shadow(0 0 6px var(--acc)) drop-shadow(0 0 10px var(--acc))':''}"/>
</div>
</div>
</div>
<div class="ctc-n">${c.n}</div>
<div class="ctc-r">${c.r[lang]}</div>
<div class="ctc-desc">${c.desc[lang]}</div>
<div class="ctc-soc">
<a class="ctc-sb ctc-sb-link" href="${c.soc.wa}" title="WhatsApp" target="_blank">
<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.7"><path d="${waSvg}"/></svg>
</a>
${igBtn}
<a class="ctc-sb ctc-sb-link" href="${c.soc.tt}" title="TikTok" target="_blank">
<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.7"><path d="${ttSvg}"/></svg>
</a>
</div>`;
g.appendChild(d);setTimeout(()=>{rvObs.observe(d)},30);
});
}
function bSocmed(){
const g=document.getElementById('smGrid');g.innerHTML='';
SOCMEDS.forEach((s,i)=>{
const d=document.createElement('a');d.className='smc rv';d.href=s.url||'#';d.target='_blank';d.rel='noopener';d.style.transitionDelay=(i*.05)+'s';
d.innerHTML=`<div class="smc-ic"><svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.7"><path d="${s.svg}"/></svg></div><div><div class="smc-n">${s.n}</div><div class="smc-h">${s.h}</div></div>`;
g.appendChild(d);setTimeout(()=>rvObs.observe(d),30);
});
}
function bSellers(){
const g=document.getElementById('sellersGrid');if(!g)return;g.innerHTML='';
// Support=Shanx, Kent, Ugra, Dezet — using embedded base64
const realImgs=[IMG_SHANX, IMG_KENT, IMG_UGRA, IMG_DEZET, IMG_VEMZ444, IMG_ROO];
SELLERS.forEach((s,i)=>{
const d=document.createElement('div');d.className='seller-card rv';d.style.transitionDelay=(i*.1)+'s';
const rows=s.contacts.map(c=>`
<a class="sc-row" href="${c.url||'#'}" target="_blank" rel="noopener" style="text-decoration:none">
<div class="sc-ico"><svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.7"><path d="${c.icon}"/></svg></div>
<div><div class="sc-lbl">${c.lbl}</div><div class="sc-val">${c.val}</div></div>
</a>`).join('');
d.innerHTML=`
<div class="sc-top">
<div class="sc-av" style="overflow:hidden;border-radius:8px;width:52px;height:52px;flex-shrink:0"><img src="${realImgs[i]}" alt="${s.name}" style="width:100%;height:100%;object-fit:cover;display:block"/></div>
<div class="sc-meta">
<div class="sc-badge">${s.badge}</div>
<div class="sc-name">${s.name}</div>
<div class="sc-role">${s.role}</div>
</div>
</div>
<div class="sc-contacts">${rows}</div>`;
g.appendChild(d);
setTimeout(()=>{rvObs.observe(d)},30);
});
}
function bSupport(){
const g=document.getElementById('supportGrid');if(!g)return;g.innerHTML='';
SUPPORT_CARDS.forEach((s,i)=>{
const d=document.createElement('div');d.className='sup-card rv';d.style.transitionDelay=(i*.08)+'s';
d.innerHTML=`
<div class="sup-ico"><svg viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="1.6"><path d="${s.icon}" stroke-linecap="round" stroke-linejoin="round"/></svg></div>
<div class="sup-title">${typeof s.title==='object'?s.title[lang]:s.title}</div>
<div class="sup-desc">${typeof s.desc==='object'?s.desc[lang]:s.desc}</div>
<button class="sup-btn" onclick="${s.action}">
<svg viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2.5 7h9M8 4l3 3-3 3"/></svg>
${typeof s.btn==='object'?s.btn[lang]:s.btn}
</button>`;
g.appendChild(d);setTimeout(()=>rvObs.observe(d),30);
});
}
function bFtSocials(){
const g=document.getElementById('ftSocials');if(!g)return;g.innerHTML='';
SOCMEDS.forEach(s=>{
const d=document.createElement('a');d.className='ft-soc';d.href=s.url||'#';d.target='_blank';d.rel='noopener';
d.innerHTML=`<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.7"><path d="${s.svg}"/></svg>`;
g.appendChild(d);
});
}
function bOrderSteps(){
const g=document.getElementById('orderSteps');if(!g)return;
const steps=[
{n:'01',t:{id:'Pilih paket VIP yang sesuai kebutuhan dari halaman di atas',en:'Choose the VIP package that suits your needs from the page above'}},
{n:'02',t:{id:'Hubungi seller resmi kami via WA atau Discord — hati-hati seller palsu',en:'Contact our official seller via WA or Discord — beware of fake sellers'}},
{n:'03',t:{id:'Lakukan transfer sesuai harga, kirim bukti pembayaran ke seller',en:'Transfer the payment and send proof of payment to the seller'}},
{n:'04',t:{id:'Key unik dikirim otomatis dalam 5 menit setelah pembayaran dikonfirmasi',en:'Unique key delivered automatically within 5 minutes after payment is confirmed'}},
{n:'✓',t:{id:'Proses Cepat · Aman · Terpercaya · Bergaransi',en:'Fast Process · Safe · Trusted · Guaranteed'},accent:true},
];
g.innerHTML=`<div style="display:flex;flex-direction:column;gap:14px">
${steps.map(s=>`<div style="display:flex;align-items:flex-start;gap:14px">
<div style="width:28px;height:28px;border-radius:50%;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-family:var(--CF);font-size:.6rem;color:${s.accent?'var(--bg)':'var(--ink3)'};background:${s.accent?'var(--ink)':'transparent'};flex-shrink:0;margin-top:2px">${s.n}</div>
<div style="font-size:.9rem;color:${s.accent?'var(--acc)':'var(--ink2)'};line-height:1.65;padding-top:4px;font-weight:${s.accent?'500':'300'}">${typeof s.t==='object'?s.t[lang]:s.t}</div>
</div>`).join('')}
</div>`;
}
/* ════════════════════════════════════════════════
CONTACT FORM
════════════════════════════════════════════════ */
function submitContactForm(){
const n=document.getElementById('cf-name').value.trim();
const e=document.getElementById('cf-email').value.trim();
const m=document.getElementById('cf-msg').value.trim();
['cf-name','cf-email','cf-msg'].forEach(id=>{document.getElementById(id).style.borderColor=''});
if(!n)document.getElementById('cf-name').style.borderColor='var(--acc)';
if(!e)document.getElementById('cf-email').style.borderColor='var(--acc)';
if(!m)document.getElementById('cf-msg').style.borderColor='var(--acc)';
if(!n||!e||!m)return;
const subj=document.getElementById('cf-subject')?.value||'Contact Form';
window.location.href='mailto:snitzinformationapps@gmail.com?subject='+encodeURIComponent(subj)+'&body='+encodeURIComponent('Name: '+n+'\nEmail: '+e+'\n\n'+m);
document.getElementById('cfSuccess').classList.add('on');
['cf-name','cf-email','cf-msg'].forEach(id=>{document.getElementById(id).value=''});
document.getElementById('cf-subject').value='';
setTimeout(()=>document.getElementById('cfSuccess').classList.remove('on'),6000);
}
function subscribeNewsletter(){
const e=document.getElementById('nlEmail').value.trim();
if(!e)return;
window.location.href='mailto:snitzinformationapps@gmail.com?subject=Newsletter%20Subscribe&body=Email%20subscriber%3A%20'+encodeURIComponent(e);
document.getElementById('nlEmail').value='';
document.getElementById('nlEmail').placeholder='Berhasil! Kamu akan menerima update dari kami.';
setTimeout(()=>{document.getElementById('nlEmail').placeholder='Your email'},4000);
}
/* ════════════════════════════════════════════════
THEME SYSTEM
════════════════════════════════════════════════ */
function buildThemes(){
const el=document.getElementById('themeRow');el.innerHTML='';
THEMES.slice(0,20).forEach(t=>{
const d=document.createElement('div');d.className='dr-td'+(t.k===theme?' act':'');
d.style.background=t.c;d.title=t.n;d.onclick=()=>applyTheme(t.k,t);el.appendChild(d);
});
}
function buildThemePicker(){
const el=document.getElementById('tpScroll');if(!el)return;
const cats=[
{label:'Tema Preset',slice:[0,10]},
{label:'Koleksi Extended',slice:[10,30]},
{label:'Koleksi Eksklusif',slice:[30,THEMES.length]},
];
el.innerHTML='';
cats.forEach(cat=>{
const items=THEMES.slice(cat.slice[0],cat.slice[1]);if(!items.length)return;
const lbl=document.createElement('div');lbl.className='tp-lbl';
lbl.textContent=cat.label+' ('+items.length+')';
el.appendChild(lbl);
const grid=document.createElement('div');grid.className='tp-grid';
items.forEach(t=>{
const sw=document.createElement('div');
sw.className='tp-sw'+(t.k===theme?' act':'');
sw.style.background=t.c;
sw.title=t.n;
sw.dataset.key=t.k;
const sn=document.createElement('span');sn.className='tp-sn';sn.textContent=t.n;
sw.appendChild(sn);
sw.addEventListener('click',function(){
applyTheme(t.k,t);buildThemePicker();buildThemes();
});
grid.appendChild(sw);
});
el.appendChild(grid);
});
}
function openThemePicker(){buildThemePicker();document.getElementById('tpov').classList.add('on')}
function closeThemePicker(){document.getElementById('tpov').classList.remove('on')}
function applyTheme(k,t){
theme=k;
document.getElementById('injT')?.remove();
document.documentElement.removeAttribute('data-t');
const preset=['default','dark','neon','red','blue','purple','gold','pink','teal','orange'];
if(preset.includes(k)){
if(k!=='default')document.documentElement.setAttribute('data-t',k);
} else {
const hex=t?.c||'#333333';
const st=document.createElement('style');st.id='injT';
st.textContent=`:root{--acc:${hex};--acc-t:${hex}18;--line:${hex}22;--line2:${hex}44}`;
document.head.appendChild(st);
}
setTimeout(()=>{
drawHero();drawBanner();
/* ════════════════════════════════════════════════
LOADER CANVAS — 3D ring + particle burst
════════════════════════════════════════════════ */
(function(){
const cv=document.getElementById('ldcv');if(!cv)return;
const ctx=cv.getContext('2d');
let W,H,t=0,active=true;
function rsz(){W=cv.width=window.innerWidth;H=cv.height=window.innerHeight;}
rsz();window.addEventListener('resize',rsz,{passive:true});
// Stop animasi saat loader hilang
const observer=new MutationObserver(()=>{
if(document.getElementById('loader')?.classList.contains('out'))active=false;
});
const ld=document.getElementById('loader');
if(ld)observer.observe(ld,{attributes:true,attributeFilter:['class']});
function getAcc(){return getComputedStyle(document.documentElement).getPropertyValue('--acc').trim()||'#34a853';}
// Ring layers — 3 ring berputar beda kecepatan dan sudut
const rings=[
{r:.28,tilt:.55,speed:.008,dash:.22,width:1.2,alpha:.55},
{r:.38,tilt:.3, speed:-.005,dash:.18,width:.8,alpha:.35},
{r:.18,tilt:.8, speed:.014,dash:.3, width:.9,alpha:.45},
];
// Floating particles di loader
const ldPts=Array.from({length:28},(_,i)=>({
angle:(i/28)*Math.PI*2,
r:(.12+Math.random()*.24),
speed:(.003+Math.random()*.004)*(Math.random()>.5?1:-1),
size:1+Math.random()*2.2,
life:Math.random()*Math.PI*2,
alpha:.2+Math.random()*.3,
}));
function drawRing(t,ring,acc){
const cx=W/2,cy=H/2;
const radius=Math.min(W,H)*ring.r;
// 3D tilt: scale Y untuk efek perspektif elips
const scaleY=Math.cos(ring.tilt);
const angle=t*ring.speed;
ctx.save();
ctx.translate(cx,cy);
ctx.scale(1,scaleY);
// Glow blur layer
ctx.save();
ctx.filter=`blur(3px)`;
ctx.globalAlpha=ring.alpha*.25;
ctx.strokeStyle=acc;
ctx.lineWidth=ring.width*2.5;
ctx.setLineDash([radius*ring.dash, radius*(1-ring.dash)]);
ctx.lineDashOffset=-angle*radius;
ctx.beginPath();ctx.arc(0,0,radius,0,Math.PI*2);ctx.stroke();
ctx.filter='none';
ctx.restore();
// Sharp ring
ctx.globalAlpha=ring.alpha;
ctx.strokeStyle=acc;
ctx.lineWidth=ring.width;
ctx.setLineDash([radius*ring.dash*1.2, radius*(1-ring.dash*.8)]);
ctx.lineDashOffset=-angle*radius;
ctx.beginPath();ctx.arc(0,0,radius,0,Math.PI*2);ctx.stroke();
// Bright leading dot
const dotA=angle%(Math.PI*2);
const dotX=Math.cos(dotA)*radius;
const dotY=Math.sin(dotA)*radius;
ctx.setLineDash([]);
ctx.globalAlpha=ring.alpha*.9;
const dg=ctx.createRadialGradient(dotX,dotY,0,dotX,dotY,ring.width*5);
dg.addColorStop(0,acc);dg.addColorStop(1,'transparent');
ctx.fillStyle=dg;ctx.beginPath();ctx.arc(dotX,dotY,ring.width*4,0,Math.PI*2);ctx.fill();
ctx.restore();
ctx.globalAlpha=1;ctx.setLineDash([]);
}
function drawCenterPulse(t,acc){
const cx=W/2,cy=H/2;
const pulse=1+.08*Math.sin(t*.06);
const r=Math.min(W,H)*.055*pulse;
// Multi-layer glow
[.45,.25,.12].forEach((alpha,i)=>{
const gr=ctx.createRadialGradient(cx,cy,0,cx,cy,r*(2.5+i*1.5));
gr.addColorStop(0,`rgba(52,168,83,${alpha})`);gr.addColorStop(1,'transparent');
ctx.fillStyle=gr;ctx.fillRect(0,0,W,H);
});
// Core
const cg=ctx.createRadialGradient(cx-r*.2,cy-r*.2,0,cx,cy,r);
cg.addColorStop(0,'rgba(200,255,210,.9)');cg.addColorStop(.4,acc);cg.addColorStop(1,'transparent');
ctx.fillStyle=cg;ctx.beginPath();ctx.arc(cx,cy,r,0,Math.PI*2);ctx.fill();
}
function drawLdParticles(t,acc){
const cx=W/2,cy=H/2;
ldPts.forEach(p=>{
p.angle+=p.speed;p.life+=.015;
const radius=Math.min(W,H)*p.r*(1+.05*Math.sin(p.life));
const x=cx+Math.cos(p.angle)*radius;
const y=cy+Math.sin(p.angle)*radius*0.7; // slight elipse
const a=p.alpha*(0.5+0.5*Math.sin(p.life));
ctx.globalAlpha=a*.6;
ctx.beginPath();ctx.arc(x,y,p.size,0,Math.PI*2);
ctx.fillStyle=acc;ctx.fill();
ctx.globalAlpha=1;
});
}
// Ambient sweep lines
function drawSweep(t,acc){
const cx=W/2,cy=H/2;
const a1=t*.003,a2=t*.003+Math.PI;
const len=Math.min(W,H)*.42;
for(let i=0;i<2;i++){
const a=i===0?a1:a2;
const grd=ctx.createLinearGradient(cx,cy,cx+Math.cos(a)*len,cy+Math.sin(a)*len);
grd.addColorStop(0,`rgba(52,168,83,.14)`);grd.addColorStop(1,'transparent');
ctx.strokeStyle=grd;ctx.lineWidth=.8;
ctx.beginPath();ctx.moveTo(cx,cy);ctx.lineTo(cx+Math.cos(a)*len,cy+Math.sin(a)*len);ctx.stroke();
}
}
function frame(){
if(!active){ctx.clearRect(0,0,W,H);return;}
ctx.clearRect(0,0,W,H);t++;
const acc=getAcc();
drawSweep(t,acc);
rings.forEach(r=>drawRing(t,r,acc));
drawLdParticles(t,acc);
drawCenterPulse(t,acc);
requestAnimationFrame(frame);
}
frame();
})();
drawDl();drawFtCv();
PRODS.forEach(p=>drawPcv(p.id));
},40);
}
buildThemes();
/* ════════════════════════════════════════════════
LANGUAGE
════════════════════════════════════════════════ */
function applyLang(){
document.getElementById('ll').textContent=lang.toUpperCase();
document.querySelectorAll('[data-i]').forEach(el=>{
const k=el.getAttribute('data-i');if(TR[lang][k]!==undefined)el.innerHTML=TR[lang][k];
});
bFeats();bProds();bHow();bFaq();bContribs();bSocmed();bSupport();bTesti();bSpecs();renderLegal();if(typeof bRoadmap==="function")bRoadmap();if(typeof bSecFeats==="function")bSecFeats();bOrderSteps();
// Update placeholders
document.querySelectorAll('[data-placeholder-id]').forEach(el=>{
el.placeholder=lang==='id'?el.getAttribute('data-placeholder-id'):el.getAttribute('data-placeholder-en');
});
}
function togLang(){lang=lang==='id'?'en':'id';applyLang()}
/* ════════════════════════════════════════════════
COUNTERS
════════════════════════════════════════════════ */
const cObs=new IntersectionObserver(es=>es.forEach(e=>{if(e.isIntersecting){animC(e.target);cObs.unobserve(e.target)}}),{threshold:.4});
document.querySelectorAll('[data-cnt]').forEach(e=>cObs.observe(e));
function animC(el){
const t=+el.getAttribute('data-cnt');let c=0,step=Math.max(1,Math.floor(t/60));
const iv=setInterval(()=>{c=Math.min(c+step,t);el.textContent=t>=1000?(c/1000).toFixed(0)+'K':c;if(c>=t)clearInterval(iv)},18);
}
/* ════════════════════════════════════════════════
SCROLL REVEALS
════════════════════════════════════════════════ */
const rvObs=new IntersectionObserver(es=>es.forEach(e=>{
if(e.isIntersecting){
const delay=parseFloat(e.target.style.transitionDelay)||0;
e.target.classList.add('in');
}
}),{threshold:.06,rootMargin:'0px 0px -40px 0px'});
function obRv(){
// Auto stagger: elemen dalam container yang sama dapat delay berurutan
const containers=document.querySelectorAll('.feat-grid,.prod-grid,.ct-grid,.faq-list,.h-stats,.rm-timeline,.cmp-grid,.sec-feat-list');
containers.forEach(container=>{
const children=container.querySelectorAll('.rv,.rvl,.rvr,.rvs,.fc,.pc,.ctc,.fq,.hst,.rm-item,.cmp-col,.sec-feat');
children.forEach((el,i)=>{
const existing=parseFloat(el.style.transitionDelay)||0;
if(!existing) el.style.transitionDelay=Math.min(i*0.08,0.48)+'s';
});
});
document.querySelectorAll('.rv,.rvl,.rvr,.rvs').forEach(e=>rvObs.observe(e));
}
obRv();
/* ════════════════════════════════════════════════
SECTION BORDERS
════════════════════════════════════════════════ */
const secObs=new IntersectionObserver(es=>es.forEach(e=>{
e.target.classList.toggle('active',e.isIntersecting);
}),{threshold:.04});
document.querySelectorAll('.scroll-section').forEach(e=>secObs.observe(e));
/* ════════════════════════════════════════════════
ACTIVE NAV + SCROLL TOP + NAV SCROLLED — batched single listener
════════════════════════════════════════════════ */
(function(){
const NAV_IDS=['hero','why','how','vip','dl','specs','testi','faq','contrib','socmed','contact','support','newsletter'];
const nav=document.getElementById('nav');
const stBtn=document.getElementById('scrollTop');
const drItems=document.querySelectorAll('.dr-item');
let rafPend=false;
function onScroll(){
rafPend=false;
const sy=window.scrollY;
// Nav scrolled class
if(nav)nav.classList.toggle('scrolled',sy>40);
// Scroll top btn
if(stBtn)stBtn.classList.toggle('on',sy>320);
// Active nav item
let a='';
NAV_IDS.forEach(id=>{const el=document.getElementById(id);if(el&&sy>=el.offsetTop-110)a=id;});
drItems.forEach(el=>{const h=el.getAttribute('href');el.classList.toggle('act',h==='#'+a);});
}
window.addEventListener('scroll',()=>{
if(!rafPend){rafPend=true;requestAnimationFrame(onScroll);}
},{passive:true});
onScroll();
})();
/* ════════════════════════════════════════════════
DRAWER
════════════════════════════════════════════════ */
function openDr(){document.getElementById('dr').classList.add('on');document.getElementById('dov').classList.add('on')}
function closeDr(){document.getElementById('dr').classList.remove('on');document.getElementById('dov').classList.remove('on')}
function toggleSb(){document.getElementById('sbFloat').classList.toggle('open')}
document.addEventListener('click',function(e){const f=document.getElementById('sbFloat');if(f&&f.classList.contains('open')&&!f.contains(e.target))f.classList.remove('open')});
/* ════════════════════════════════════════════════
MODAL PRODUCT
════════════════════════════════════════════════ */
let _mdCurIdx=0;
function oMd(i){
_mdCurIdx=i;
const p=PRODS[i];
document.getElementById('mdT').textContent=p.n;
document.getElementById('mdP').textContent=`Rp ${p.dp} · ≈ $${(p.dpn/16500).toFixed(1)} USD · Hemat dari Rp ${p.rp}`;
document.getElementById('mdF').innerHTML=p.mf[lang].map(x=>`<li>${x}</li>`).join('');
document.getElementById('mdBuyBtn').onclick=()=>openPayFromModal();
drawMdCv();document.getElementById('mdov').classList.add('on');
}
function cMd(e){
if(!e||e.target===document.getElementById('mdov')||e.target.closest?.('.md-close'))
document.getElementById('mdov').classList.remove('on');
}
function openPayFromModal(){
document.getElementById('mdov').classList.remove('on');
setTimeout(()=>openPay(_mdCurIdx),160);
}
/* ════════════════════════════════════════════════
PAYMENT DIALOG
════════════════════════════════════════════════ */
function getQrisImg(prodId){
const el=document.getElementById('qris-img-'+prodId);
return el?el.src:'';
}
const SHANX_WA='6289651898701';
let _payIdx=0;
window._payMode='android';
function openPay(i){
_payIdx=i;
window._payMode='android';
const p=PRODS[i];
document.getElementById('payProdTag').textContent='SNITZ PROJECT — '+p.n;
document.getElementById('payProdTier').textContent=p.tier.split('—')[0].trim();
document.getElementById('payProdPname').textContent=p.n;
document.getElementById('payProdPriceTag').textContent='Rp '+p.dp;
document.getElementById('pqrAmount').textContent='Rp '+p.dp;
const img=document.getElementById('pqrImg');
img.src=getQrisImg(p.id)||'';
backToMethods();
document.getElementById('payov').classList.add('on');
document.body.style.overflow='hidden';
}
function closePay(){
document.getElementById('payov').classList.remove('on');
document.body.style.overflow='';
setTimeout(backToMethods,380);
}
function showPayQris(){
document.getElementById('payMethodsWrap').style.display='none';
document.getElementById('payQrisView').classList.add('on');
document.getElementById('pqrWaBtn').style.display='none';
}
function backToMethods(){
document.getElementById('payMethodsWrap').style.display='';
document.getElementById('payQrisView').classList.remove('on');
document.getElementById('pqrWaBtn').style.display='none';
}
function downloadAndConfirm(){
if(window._payMode==='pc'){confirmViaWA();return;}
const p=PRODS[_payIdx];
const a=document.createElement('a');
a.href=getQrisImg(p.id)||'';
a.download='QRIS_SNITZ_'+p.n+'_Rp'+p.dp.replace(/\./g,'')+'.jpg';
a.click();
const waBtn=document.getElementById('pqrWaBtn');
waBtn.style.display='flex';
waBtn.style.animation='none';
setTimeout(()=>{waBtn.style.animation='';},10);
}
function confirmViaWA(){
if(window._payMode==='pc'){
const p=PRODS_PC[_payPCIdx];
const msg=encodeURIComponent('Halo Shanx! Mau order paket PC *'+p.n+'* Rp '+p.dp+'. Mohon info pembayarannya ya, terima kasih!');
window.open('https://wa.me/'+SHANX_WA+'?text='+msg,'_blank');
return;
}
const p=PRODS[_payIdx];
const msg=encodeURIComponent('Halo Shanx, sudah bayar via QRIS paket *'+p.n+'* Rp '+p.dp+'. Ini bukti bayarnya. Mohon key-nya, terima kasih!');
window.open('https://wa.me/'+SHANX_WA+'?text='+msg,'_blank');
}
function payViaWA(method){
if(window._payMode==='pc'){
const p=PRODS_PC[_payPCIdx];
const msg=encodeURIComponent('Halo Shanx! Mau order paket PC *'+p.n+'* Rp '+p.dp+'. Metode: *'+method+'*. Info rekening/nomor '+method+'-nya ya, thanks!');
window.open('https://wa.me/'+SHANX_WA+'?text='+msg,'_blank');
return;
}
const p=PRODS[_payIdx];
const msg=encodeURIComponent('Halo Shanx! Mau order paket *'+p.n+'* ('+p.tier+') Rp '+p.dp+'. Metode: *'+method+'*. Info nomor '+method+'-nya dong, thanks!');
window.open('https://wa.me/'+SHANX_WA+'?text='+msg,'_blank');
}
/* ════════════════════════════════════════════════
HELP CENTER
════════════════════════════════════════════════ */
function openHelp(){document.getElementById('helpov').classList.add('on')}
function closeHelp(){document.getElementById('helpov').classList.remove('on')}
/* ════════════════════════════════════════════════
LEGAL MODAL
════════════════════════════════════════════════ */
let activeLegalTab='refund';
function openLegal(tab){
activeLegalTab=tab||'refund';renderLegal();
document.getElementById('legalov').classList.add('on');
}
function closeLegal(){document.getElementById('legalov').classList.remove('on')}
function switchLegalTab(tab){activeLegalTab=tab;renderLegal()}
function renderLegal(){
const data=LEGAL[activeLegalTab];if(!data)return;
document.getElementById('legalTitle').textContent=typeof data.title==='object'?data.title[lang]:data.title;
document.getElementById('legalBody').innerHTML=data.secs.map(s=>
`<div class="legal-section"><div class="legal-section-t">${typeof s.t==='object'?s.t[lang]:s.t}</div><div class="legal-section-p">${s.p}</div></div>`
).join('');
document.querySelectorAll('.ltab').forEach(t=>t.classList.remove('act'));
const tab=document.getElementById('ltab-'+activeLegalTab);if(tab)tab.classList.add('act');
}
renderLegal();
/* ════════════════════════════════════════════════
INIT ALL
════════════════════════════════════════════════ */
bFeats();bProds();bHow();bSpecs();bTesti();bFaq();bContribs();bSocmed();bSellers();bSupport();bFtSocials();bOrderSteps();applyLang();
/* ════════════════════════════════════════════════
MAGNETIC BUTTONS
════════════════════════════════════════════════ */
document.querySelectorAll('.btn,.btn-w,.npill.accent,.pb-buy,.cf-btn,.sup-btn,.nl-btn').forEach(el=>{
el.addEventListener('mousemove',e=>{
const r=el.getBoundingClientRect();
const cx=r.left+r.width/2,cy=r.top+r.height/2;
const dx=(e.clientX-cx)*0.32,dy=(e.clientY-cy)*0.32;
el.style.transform=`translate(${dx}px,${dy}px)`;
});
el.addEventListener('mouseleave',()=>{el.style.transform='';});
});
/* ════════════════════════════════════════════════
STATS COUNTER ANIMATE ON SCROLL
════════════════════════════════════════════════ */
const hstObs=new IntersectionObserver(es=>es.forEach(e=>{
if(e.isIntersecting){
e.target.querySelectorAll('[data-cnt]').forEach(animC);
hstObs.unobserve(e.target);
}
}),{threshold:.4});
const hs=document.querySelector('.h-stats');if(hs)hstObs.observe(hs);
/* ════════════════════════════════════════════════
PARALLAX SCROLL HERO TITLE — RAF optimized
════════════════════════════════════════════════ */
(function(){
const hero=document.getElementById('hero');
const hc=hero?.querySelector('.hero-c');
const hcv=document.getElementById('hcv');
let rafP=false,sy=0;
function applyP(){
rafP=false;
if(hc)hc.style.transform='translateY('+sy*0.22+'px)';
if(hcv)hcv.style.transform='translateY('+sy*0.12+'px)';
}
window.addEventListener('scroll',()=>{
sy=scrollY;
if(!rafP){rafP=true;requestAnimationFrame(applyP);}
},{passive:true});
})();
/* ════════════════════════════════════════════════
CARD TILT (FEAT CARDS)
════════════════════════════════════════════════ */
document.querySelectorAll('.fc,.ctc,.sup-card').forEach(el=>{
el.addEventListener('mousemove',e=>{
const r=el.getBoundingClientRect();
const cx=r.left+r.width/2,cy=r.top+r.height/2;
const rx2=((e.clientY-cy)/r.height)*7;
const ry2=-((e.clientX-cx)/r.width)*7;
el.style.transition='transform .12s';
el.style.transform=`perspective(700px) rotateX(${rx2}deg) rotateY(${ry2}deg) translateY(-5px)`;
});
el.addEventListener('mouseleave',()=>{
el.style.transition='transform .65s cubic-bezier(.22,1,.36,1)';
el.style.transform='';
});
});
/* ════════════════════════════════════════════════
SCROLL PROGRESS BAR — uses shared scroll handler via RAF
════════════════════════════════════════════════ */
(function(){
const bar=document.createElement('div');
bar.id='scrollBar';
bar.style.cssText='position:fixed;top:0;left:0;height:2px;background:var(--acc);z-index:99999;transition:width .06s linear;pointer-events:none;width:0;will-change:width';
document.body.appendChild(bar);
let rafP=false;
window.addEventListener('scroll',()=>{
if(!rafP){rafP=true;requestAnimationFrame(()=>{
rafP=false;
const p=scrollY/(document.body.scrollHeight-window.innerHeight)*100;
bar.style.width=p+'%';
});}
},{passive:true});
})();
/* ════════════════════════════════════════════════
GLITCH TEXT EFFECT ON LOGO
════════════════════════════════════════════════ */
(function(){
const logo=document.querySelector('.h-logo');if(!logo)return;
let glitchIv=null;
function glitch(){
const chars='SNITZ';
const glitchChars='$#@%&!';
let count=0;
glitchIv=setInterval(()=>{
const arr=chars.split('').map((c,i)=>
Math.random()>.72?glitchChars[Math.floor(Math.random()*glitchChars.length)]:c
);
logo.childNodes[0].textContent=arr.slice(0,3).join('');
count++;if(count>10){clearInterval(glitchIv);logo.childNodes[0].textContent='SNI';}
},55);
}
setInterval(glitch,6500);
})();
/* ════════════════════════════════════════════════
BAND SCROLL SPEED ON MOUSE POSITION
════════════════════════════════════════════════ */
(function(){
const band=document.querySelector('.band-track');if(!band)return;
let speed=22;
window.addEventListener('mousemove',e=>{
speed=18+(e.clientX/window.innerWidth)*12;
document.querySelectorAll('.band-track').forEach(b=>{
b.style.animationDuration=speed+'s';
});
});
})();
/* ════════════════════════════════════════════════
CANVAS ORBS ANIMATION SECTION DIVIDERS
════════════════════════════════════════════════ */
(function(){
const orbTargets=document.querySelectorAll('.sec');
orbTargets.forEach(sec=>{
const cv=document.createElement('canvas');
cv.style.cssText='position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:0;opacity:.035';
sec.style.position='relative';
sec.insertBefore(cv,sec.firstChild);
let W=0,H=0;
function rs(){W=cv.width=sec.offsetWidth;H=cv.height=sec.offsetHeight;}
rs();
const ctx=cv.getContext('2d');
const orbs=Array.from({length:3},()=>({
x:Math.random()*W,y:Math.random()*H,
r:Math.random()*120+60,
vx:(Math.random()-.5)*.18,vy:(Math.random()-.5)*.18,
phase:Math.random()*Math.PI*2
}));
let frame=0;
function draw(){
ctx.clearRect(0,0,W,H);
frame++;
const acc=getComputedStyle(document.documentElement).getPropertyValue('--acc').trim()||'#000';
orbs.forEach(o=>{
o.x+=o.vx;o.y+=o.vy;o.phase+=.006;
if(o.x<-o.r)o.x=W+o.r;if(o.x>W+o.r)o.x=-o.r;
if(o.y<-o.r)o.y=H+o.r;if(o.y>H+o.r)o.y=-o.r;
const rg=ctx.createRadialGradient(o.x,o.y,0,o.x,o.y,o.r*(1+.15*Math.sin(o.phase)));
rg.addColorStop(0,acc);rg.addColorStop(1,'transparent');
ctx.fillStyle=rg;ctx.beginPath();ctx.arc(o.x,o.y,o.r,0,Math.PI*2);ctx.fill();
});
requestAnimationFrame(draw);
}
draw();
const rObs=new ResizeObserver(rs);rObs.observe(sec);
});
})();
/* ════════════════════════════════════════════════
FLOATING ACCENT DOTS
════════════════════════════════════════════════ */
(function(){
const dotCv=document.createElement('canvas');
dotCv.style.cssText='position:fixed;inset:0;pointer-events:none;z-index:1;opacity:0;transition:opacity 2s';
document.body.appendChild(dotCv);
setTimeout(()=>dotCv.style.opacity='.18',1000);
const ctx=dotCv.getContext('2d');
let W,H;
function rs(){W=dotCv.width=window.innerWidth;H=dotCv.height=window.innerHeight}
rs();window.addEventListener('resize',rs);
const dots=Array.from({length:16},()=>({
x:Math.random()*1400,y:Math.random()*900,
r:Math.random()*.9+.3,
vx:(Math.random()-.5)*.22,vy:(Math.random()-.5)*.22,
life:Math.random()*Math.PI*2
}));
function frame(){
ctx.clearRect(0,0,W,H);
const acc=getComputedStyle(document.documentElement).getPropertyValue('--acc').trim()||'#000';
dots.forEach(d=>{
d.x+=d.vx;d.y+=d.vy;d.life+=.012;
if(d.x<0)d.x=W;if(d.x>W)d.x=0;
if(d.y<0)d.y=H;if(d.y>H)d.y=0;
ctx.globalAlpha=.6+.4*Math.sin(d.life);
ctx.beginPath();ctx.arc(d.x,d.y,d.r,0,Math.PI*2);
ctx.fillStyle=acc;ctx.fill();
});
ctx.globalAlpha=1;
requestAnimationFrame(frame);
}
frame();
})();
/* ════════════════════════════════════════════════
KEYBOARD SHORTCUT: ESC TO CLOSE ALL MODALS
════════════════════════════════════════════════ */
document.addEventListener('keydown',e=>{
if(e.key==='Escape'){
closeDr();closeThemePicker();closeHelp();closeLegal();
document.getElementById('mdov')?.classList.remove('on');
}
});
/* ════════════════════════════════════════════════
STATS BAND COUNTER ANIMATION
════════════════════════════════════════════════ */
const sbObs=new IntersectionObserver(es=>es.forEach(e=>{
if(e.isIntersecting){
e.target.querySelectorAll('.sb-n').forEach(el=>{
const t=el.textContent;
let i=0;
const iv=setInterval(()=>{
i++;el.style.opacity=(i/20).toString();
if(i>=20)clearInterval(iv);
},35);
});sbObs.unobserve(e.target);
}
}),{threshold:.3});
document.querySelectorAll('.stats-band').forEach(e=>sbObs.observe(e));
/* ════════════════════════════════════════════════
PRODUCT CARD AURORA SHIMMER
════════════════════════════════════════════════ */
(function(){
let t=0;
function shimmer(){
t+=.008;
document.querySelectorAll('.pc').forEach((card,i)=>{
const phase=t+i*0.8;
const glow=Math.sin(phase)*0.5+0.5;
card.style.boxShadow=`0 ${4+glow*12}px ${20+glow*40}px rgba(0,0,0,${0.07+glow*0.08})`;
});
requestAnimationFrame(shimmer);
}
shimmer();
})();
/* ════════════════════════════════════════════════
SECTION ENTRANCE WITH STAGGER
════════════════════════════════════════════════ */
const staggerObs=new IntersectionObserver(es=>es.forEach(e=>{
if(e.isIntersecting){
const items=e.target.querySelectorAll('.rv:not(.in),.rvl:not(.in),.rvr:not(.in)');
items.forEach((el,i)=>{
setTimeout(()=>el.classList.add('in'),i*55);
});
staggerObs.unobserve(e.target);
}
}),{threshold:.05});
document.querySelectorAll('.sec,.scroll-section,.stats-band').forEach(e=>staggerObs.observe(e));
/* ════════════════════════════════════════════════
TYPEWRITER ON HERO SUBTITLE
════════════════════════════════════════════════ */
(function(){
const el=document.querySelector('.h-eye span:not(.h-eye-dot)');if(!el)return;
const phrases=['Injector V2.0 Best','Sensi Optimizer Pro','AimTrick Path Inject','Up Performance Max','Support 24/7 Active'];
let pi=0,ci=0,del=false;
function tick(){
const p=phrases[pi];
if(!del){el.textContent=p.slice(0,ci);ci++;if(ci>p.length){del=true;setTimeout(tick,1800);return;}}
else{el.textContent=p.slice(0,ci);ci--;if(ci<0){del=false;pi=(pi+1)%phrases.length;ci=0;}}
setTimeout(tick,del?48:82);
}
setTimeout(tick,3200);
})();
/* ════════════════════════════════════════════════
TOOLTIP ON THEME SWATCHES
════════════════════════════════════════════════ */
(function(){
const tip=document.createElement('div');
tip.style.cssText='position:fixed;pointer-events:none;z-index:99999;background:var(--acc);color:#060b07;font-family:var(--CF);font-size:.5rem;letter-spacing:.14em;padding:4px 10px;border-radius:6px;opacity:0;transition:opacity .18s;white-space:nowrap;text-transform:uppercase';
document.body.appendChild(tip);
document.addEventListener('mousemove',e=>{
if(e.target.classList.contains('tp-sw')||e.target.classList.contains('dr-td')){
tip.textContent=e.target.title||'';
tip.style.left=(e.clientX+10)+'px';tip.style.top=(e.clientY-28)+'px';tip.style.opacity='1';
} else tip.style.opacity='0';
});
})();
/* ════════════════════════════════════════════════
RESIZE HANDLER
════════════════════════════════════════════════ */
window.addEventListener('resize',()=>{
drawHero();drawDl();drawFtCv();drawBanner();
/* ════════════════════════════════════════════════
LOADER CANVAS — 3D ring + particle burst
════════════════════════════════════════════════ */
(function(){
const cv=document.getElementById('ldcv');if(!cv)return;
const ctx=cv.getContext('2d');
let W,H,t=0,active=true;
function rsz(){W=cv.width=window.innerWidth;H=cv.height=window.innerHeight;}
rsz();window.addEventListener('resize',rsz,{passive:true});
// Stop animasi saat loader hilang
const observer=new MutationObserver(()=>{
if(document.getElementById('loader')?.classList.contains('out'))active=false;
});
const ld=document.getElementById('loader');
if(ld)observer.observe(ld,{attributes:true,attributeFilter:['class']});
function getAcc(){return getComputedStyle(document.documentElement).getPropertyValue('--acc').trim()||'#34a853';}
// Ring layers — 3 ring berputar beda kecepatan dan sudut
const rings=[
{r:.28,tilt:.55,speed:.008,dash:.22,width:1.2,alpha:.55},
{r:.38,tilt:.3, speed:-.005,dash:.18,width:.8,alpha:.35},
{r:.18,tilt:.8, speed:.014,dash:.3, width:.9,alpha:.45},
];
// Floating particles di loader
const ldPts=Array.from({length:28},(_,i)=>({
angle:(i/28)*Math.PI*2,
r:(.12+Math.random()*.24),
speed:(.003+Math.random()*.004)*(Math.random()>.5?1:-1),
size:1+Math.random()*2.2,
life:Math.random()*Math.PI*2,
alpha:.2+Math.random()*.3,
}));
function drawRing(t,ring,acc){
const cx=W/2,cy=H/2;
const radius=Math.min(W,H)*ring.r;
// 3D tilt: scale Y untuk efek perspektif elips
const scaleY=Math.cos(ring.tilt);
const angle=t*ring.speed;
ctx.save();
ctx.translate(cx,cy);
ctx.scale(1,scaleY);
// Glow blur layer
ctx.save();
ctx.filter=`blur(3px)`;
ctx.globalAlpha=ring.alpha*.25;
ctx.strokeStyle=acc;
ctx.lineWidth=ring.width*2.5;
ctx.setLineDash([radius*ring.dash, radius*(1-ring.dash)]);
ctx.lineDashOffset=-angle*radius;
ctx.beginPath();ctx.arc(0,0,radius,0,Math.PI*2);ctx.stroke();
ctx.filter='none';
ctx.restore();
// Sharp ring
ctx.globalAlpha=ring.alpha;
ctx.strokeStyle=acc;
ctx.lineWidth=ring.width;
ctx.setLineDash([radius*ring.dash*1.2, radius*(1-ring.dash*.8)]);
ctx.lineDashOffset=-angle*radius;
ctx.beginPath();ctx.arc(0,0,radius,0,Math.PI*2);ctx.stroke();
// Bright leading dot
const dotA=angle%(Math.PI*2);
const dotX=Math.cos(dotA)*radius;
const dotY=Math.sin(dotA)*radius;
ctx.setLineDash([]);
ctx.globalAlpha=ring.alpha*.9;
const dg=ctx.createRadialGradient(dotX,dotY,0,dotX,dotY,ring.width*5);
dg.addColorStop(0,acc);dg.addColorStop(1,'transparent');
ctx.fillStyle=dg;ctx.beginPath();ctx.arc(dotX,dotY,ring.width*4,0,Math.PI*2);ctx.fill();
ctx.restore();
ctx.globalAlpha=1;ctx.setLineDash([]);
}
function drawCenterPulse(t,acc){
const cx=W/2,cy=H/2;
const pulse=1+.08*Math.sin(t*.06);
const r=Math.min(W,H)*.055*pulse;
// Multi-layer glow
[.45,.25,.12].forEach((alpha,i)=>{
const gr=ctx.createRadialGradient(cx,cy,0,cx,cy,r*(2.5+i*1.5));
gr.addColorStop(0,`rgba(52,168,83,${alpha})`);gr.addColorStop(1,'transparent');
ctx.fillStyle=gr;ctx.fillRect(0,0,W,H);
});
// Core
const cg=ctx.createRadialGradient(cx-r*.2,cy-r*.2,0,cx,cy,r);
cg.addColorStop(0,'rgba(200,255,210,.9)');cg.addColorStop(.4,acc);cg.addColorStop(1,'transparent');
ctx.fillStyle=cg;ctx.beginPath();ctx.arc(cx,cy,r,0,Math.PI*2);ctx.fill();
}
function drawLdParticles(t,acc){
const cx=W/2,cy=H/2;
ldPts.forEach(p=>{
p.angle+=p.speed;p.life+=.015;
const radius=Math.min(W,H)*p.r*(1+.05*Math.sin(p.life));
const x=cx+Math.cos(p.angle)*radius;
const y=cy+Math.sin(p.angle)*radius*0.7; // slight elipse
const a=p.alpha*(0.5+0.5*Math.sin(p.life));
ctx.globalAlpha=a*.6;
ctx.beginPath();ctx.arc(x,y,p.size,0,Math.PI*2);
ctx.fillStyle=acc;ctx.fill();
ctx.globalAlpha=1;
});
}
// Ambient sweep lines
function drawSweep(t,acc){
const cx=W/2,cy=H/2;
const a1=t*.003,a2=t*.003+Math.PI;
const len=Math.min(W,H)*.42;
for(let i=0;i<2;i++){
const a=i===0?a1:a2;
const grd=ctx.createLinearGradient(cx,cy,cx+Math.cos(a)*len,cy+Math.sin(a)*len);
grd.addColorStop(0,`rgba(52,168,83,.14)`);grd.addColorStop(1,'transparent');
ctx.strokeStyle=grd;ctx.lineWidth=.8;
ctx.beginPath();ctx.moveTo(cx,cy);ctx.lineTo(cx+Math.cos(a)*len,cy+Math.sin(a)*len);ctx.stroke();
}
}
function frame(){
if(!active){ctx.clearRect(0,0,W,H);return;}
ctx.clearRect(0,0,W,H);t++;
const acc=getAcc();
drawSweep(t,acc);
rings.forEach(r=>drawRing(t,r,acc));
drawLdParticles(t,acc);
drawCenterPulse(t,acc);
requestAnimationFrame(frame);
}
frame();
})();
PRODS.forEach(p=>drawPcv(p.id));
});
/* ── EXTRA SECTION JS (merged) ── */
/* ── UPDATE LOG ── */
const UPD_DATA=[
{ver:'v2.0.0',date:'Mar 2025',t:'SNITZ V2.0 Launch — Full Injector Overhaul',p:'Peluncuran SNITZ PROJECT V2.0. AimTrick Path Inject generasi baru, Micro Adjustment V5, DPI via Notifikasi, support Emulator & Mobilador resmi.',tags:['new']},
{ver:'v1.9.5',date:'Feb 2025',t:'Sensi Optimizer Engine Upgrade',p:'Algoritma Sensi Optimizer diperbarui total — kalkulasi lebih presisi, response lebih smooth, kompatibel lebih luas di semua tier.',tags:['new','fix']},
{ver:'v1.9.0',date:'Jan 2025',t:'Deep Cache Cleaning + Performance Boost',p:'Modul Cache Cleaning diperdalam hingga layer sistem. Up Performance engine dioptimasi untuk device RAM rendah. Reduce Recoil 15% ditambahkan ke BARCO & PIRATE.',tags:['new']},
{ver:'v1.8.5',date:'Des 2024',t:'DPI Notification Panel — Real-time Control',p:'Fitur revolusioner: ubah DPI sensitivity langsung dari notifikasi tanpa keluar game. Tersedia untuk VAGUE, CRANE, BARCO, PIRATE.',tags:['new']},
{ver:'v1.8.0',date:'Nov 2024',t:'Emulator & Mobilador Support',p:'SNITZ kini support penuh LDPlayer, Bluestack 5, MSI App Player 5, dan Mobilador. Tidak ada lagi batasan platform — 3 platform dalam 1 app.',tags:['new']},
];
function bUpdList(){
const g=document.getElementById('updList');if(!g)return;g.innerHTML='';
UPD_DATA.forEach(u=>{
const d=document.createElement('div');d.className='upd-item';
const tags=u.tags.map(t=>`<span class="upd-tag ${t}">${t==='fix'?'Bugfix':t==='new'?'New Feature':'Security'}</span>`).join('');
d.innerHTML=`<div class="upd-head"><span class="upd-ver">${u.ver}</span><span class="upd-date">${u.date}</span></div><div class="upd-t">${u.t}</div><div class="upd-p">${u.p}</div><div class="upd-tags">${tags}</div>`;
g.appendChild(d);
});
}
bUpdList();
/* ── COMMUNITY CANVAS ── */
(function(){
const cv=document.getElementById('commCv');if(!cv)return;
const ctx=cv.getContext('2d');let W,H,t=0;
function rs(){W=cv.width=window.innerWidth;H=cv.height=cv.parentElement?.offsetHeight||600}
rs();window.addEventListener('resize',rs);
function draw(){
ctx.clearRect(0,0,W,H);t+=.003;
ctx.strokeStyle='rgba(255,255,255,.04)';ctx.lineWidth=.4;
for(let x=0;x<W;x+=60){ctx.beginPath();ctx.moveTo(x,0);ctx.lineTo(x,H);ctx.stroke()}
for(let y=0;y<H;y+=60){ctx.beginPath();ctx.moveTo(0,y);ctx.lineTo(W,y);ctx.stroke()}
const acc=getComputedStyle(document.documentElement).getPropertyValue('--acc').trim()||'#fff';
// Wave lines
[0.35,0.5,0.65].forEach((yp,i)=>{
ctx.beginPath();
for(let x=0;x<=W;x+=4){
const y2=H*yp+30*Math.sin(x*.008+t+i*1.2)+20*Math.cos(x*.014+t*1.3+i);
i===0?ctx.moveTo(x,y2):ctx.lineTo(x,y2);
if(i>0)ctx.lineTo(x,y2);
}
ctx.strokeStyle=acc;ctx.lineWidth=.6;ctx.globalAlpha=.07-i*.015;ctx.stroke();ctx.globalAlpha=1;
});
requestAnimationFrame(draw);
}
draw();
})();
/* ── CTA FINAL CANVAS ── */
(function(){
const cv=document.getElementById('ctafCv');if(!cv)return;
const ctx=cv.getContext('2d');let W,H,t=0;
function rs(){W=cv.width=window.innerWidth;H=cv.height=cv.parentElement?.offsetHeight||600}
rs();window.addEventListener('resize',rs);
function draw(){
ctx.clearRect(0,0,W,H);t+=.004;
const bg=getComputedStyle(document.documentElement).getPropertyValue('--bg').trim()||'#fafaf8';
ctx.fillStyle=bg;ctx.fillRect(0,0,W,H);
const acc=getComputedStyle(document.documentElement).getPropertyValue('--acc').trim()||'#0a0a0a';
// Grid
ctx.strokeStyle=getComputedStyle(document.documentElement).getPropertyValue('--line').trim();
ctx.lineWidth=.4;
for(let x=0;x<W;x+=80){ctx.beginPath();ctx.moveTo(x,0);ctx.lineTo(x,H);ctx.stroke()}
for(let y=0;y<H;y+=80){ctx.beginPath();ctx.moveTo(0,y);ctx.lineTo(W,y);ctx.stroke()}
// Radial pulse from center
const cx=W/2,cy=H/2;
for(let i=0;i<4;i++){
const r=(t*60+i*90)%(Math.max(W,H)*.8);
ctx.beginPath();ctx.arc(cx,cy,r,0,Math.PI*2);
ctx.strokeStyle=acc;ctx.lineWidth=.6;ctx.globalAlpha=Math.max(0,.25-r/(Math.max(W,H)*.8)*.25);ctx.stroke();
}
ctx.globalAlpha=1;
// Vignette
const vg=ctx.createRadialGradient(cx,cy,0,cx,cy,Math.max(W,H)*.6);
vg.addColorStop(0,'transparent');vg.addColorStop(1,bg);
ctx.fillStyle=vg;ctx.fillRect(0,0,W,H);
requestAnimationFrame(draw);
}
draw();
})();
/* ── TRUST BADGES ── */
const TRUST_DATA=[
{svg:`<svg viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="24" cy="24" r="22" stroke="var(--acc)" stroke-width="1.2" stroke-dasharray="4 3" opacity=".3"/><path d="M24 8l2.5 6h6.5l-5.2 3.8 2 6.2L24 20.5l-5.8 3.5 2-6.2L15 14h6.5z" fill="var(--acc)" fill-opacity=".18" stroke="var(--acc)" stroke-width="1.4" stroke-linejoin="round"/><path d="M16 28l4.5 4.5L32 21" stroke="var(--acc)" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/><circle cx="24" cy="24" r="10" stroke="var(--acc)" stroke-width=".7" opacity=".2"/></svg>`,t:'Bukan Cheat — Legal',p:'SNITZ V2.0 adalah aplikasi optimasi performa, bukan cheat. Bekerja di level sistem device — aman untuk akun gaming kamu.'},
{svg:`<svg viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="24" cy="24" r="22" stroke="var(--acc)" stroke-width="1.2" stroke-dasharray="4 3" opacity=".3"/><path d="M12 24c0-6.6 5.4-12 12-12s12 5.4 12 12" stroke="var(--acc)" stroke-width="1.5" opacity=".35"/><circle cx="24" cy="24" r="4" fill="var(--acc)" fill-opacity=".25"/><circle cx="24" cy="24" r="1.8" fill="var(--acc)"/><path d="M24 20v-5M30.5 21.5l3.5-3.5M27.5 27.5l3.5 3.5M17.5 21.5l-3.5-3.5M20.5 27.5l-3.5 3.5" stroke="var(--acc)" stroke-width="1.8" stroke-linecap="round"/><path d="M24 24l7-5" stroke="var(--acc)" stroke-width="1.8" stroke-linecap="round" opacity=".6"/></svg>`,t:'AimTrick Path Inject',p:'Teknologi inject AimTrick langsung ke DLL path game — meningkatkan akurasi aim secara natural dan terasa berbeda.'},
{svg:`<svg viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="24" cy="24" r="22" stroke="var(--acc)" stroke-width="1.2" stroke-dasharray="4 3" opacity=".3"/><path d="M24 12a12 12 0 100 24A12 12 0 0024 12z" stroke="var(--acc)" stroke-width="1.4" fill="var(--acc)" fill-opacity=".07"/><path d="M14 36l2-7a10 10 0 010-10M34 36l-2-7" stroke="var(--acc)" stroke-width="1.5" stroke-linecap="round" opacity=".5"/><path d="M20 22h4v6" stroke="var(--acc)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><circle cx="24" cy="19" r="1.2" fill="var(--acc)"/></svg>`,t:'Support 24/7',p:'Tim support aktif tanpa henti via WhatsApp dan TikTok. Rata-rata response time hanya 8 menit setiap hari.'},
{svg:`<svg viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="24" cy="24" r="22" stroke="var(--acc)" stroke-width="1.2" stroke-dasharray="4 3" opacity=".3"/><rect x="14" y="20" width="20" height="16" rx="3" stroke="var(--acc)" stroke-width="1.6" fill="var(--acc)" fill-opacity=".07"/><path d="M18 20v-3a6 6 0 0112 0v3" stroke="var(--acc)" stroke-width="1.6" stroke-linecap="round"/><circle cx="24" cy="28" r="2.5" fill="var(--acc)" fill-opacity=".5"/><path d="M24 28v4" stroke="var(--acc)" stroke-width="1.6" stroke-linecap="round" opacity=".5"/></svg>`,t:'1 Device VIP — Aman',p:'Key VIP terikat pada 1 device saja — AES-256 encrypted, tidak bisa dishare. Akun gaming kamu 100% terlindungi.'},
{svg:`<svg viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="24" cy="24" r="22" stroke="var(--acc)" stroke-width="1.2" stroke-dasharray="4 3" opacity=".3"/><rect x="10" y="16" width="12" height="8" rx="2" stroke="var(--acc)" stroke-width="1.5" fill="var(--acc)" fill-opacity=".1"/><rect x="26" y="16" width="12" height="8" rx="2" stroke="var(--acc)" stroke-width="1.5" fill="var(--acc)" fill-opacity=".1"/><rect x="18" y="28" width="12" height="8" rx="2" stroke="var(--acc)" stroke-width="1.5" fill="var(--acc)" fill-opacity=".18"/><path d="M22 24v4M26 24v4M16 24v4" stroke="var(--acc)" stroke-width="1.3" stroke-linecap="round" opacity=".4"/></svg>`,t:'3 Platform Support',p:'Android, Emulator (Bluestack 5, MSI App Player 5), dan Mobilador. Satu key untuk satu device di platform manapun.'},
{svg:`<svg viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="24" cy="24" r="22" stroke="var(--acc)" stroke-width="1.2" stroke-dasharray="4 3" opacity=".3"/><path d="M24 12v6M24 30v6M12 24h6M30 24h6" stroke="var(--acc)" stroke-width="1.4" stroke-linecap="round" opacity=".35"/><path d="M17 17l4.2 4.2M26.8 26.8L31 31M17 31l4.2-4.2M26.8 21.2L31 17" stroke="var(--acc)" stroke-width="1.3" stroke-linecap="round" opacity=".25"/><circle cx="24" cy="24" r="6" stroke="var(--acc)" stroke-width="1.6" fill="var(--acc)" fill-opacity=".1"/><path d="M20.5 24l2.5 2.5 4-5" stroke="var(--acc)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>`,t:'Refund 24 Jam',p:'Jaminan refund 24 jam jika aplikasi mengalami kerusakan. Proses klaim cepat, tidak berbelit, diproses hari itu juga.'},
];
function bTrustGrid(){
const g=document.getElementById('trustGrid');if(!g)return;g.innerHTML='';
TRUST_DATA.forEach((t2,i)=>{
const d=document.createElement('div');d.className='trust-card rv';d.style.transitionDelay=(i*.06)+'s';
d.innerHTML=`<div class="trust-svg-ic" style="width:60px;height:60px;margin-bottom:16px;flex-shrink:0">${t2.svg}</div><div class="trust-t">${t2.t}</div><div class="trust-p">${t2.p}</div>`;
g.appendChild(d);
setTimeout(()=>{rvObs.observe(d)},40);
});
}
function drawTrustCv(i,iconPath){
const cv=document.getElementById('trustCv'+i);if(!cv)return;
cv.width=60;cv.height=60;const ctx=cv.getContext('2d');let t=0;
function draw(){
ctx.clearRect(0,0,60,60);t+=.02;
const acc=getComputedStyle(document.documentElement).getPropertyValue('--acc').trim()||'#000';
ctx.strokeStyle=acc;ctx.lineWidth=.5;ctx.globalAlpha=.15;
ctx.beginPath();ctx.arc(30,30,27,0,Math.PI*2);ctx.stroke();
ctx.globalAlpha=1;
const prog=.65+.25*Math.sin(t);
ctx.beginPath();ctx.arc(30,30,27,-Math.PI*.5,-Math.PI*.5+prog*Math.PI*2);
ctx.strokeStyle=acc;ctx.lineWidth=1.5;ctx.globalAlpha=.4+.2*Math.sin(t*.8);ctx.stroke();
ctx.globalAlpha=1;
// Draw icon
ctx.save();ctx.translate(22,22);ctx.scale(.82,.82);
ctx.strokeStyle=acc;ctx.lineWidth=1.7;ctx.lineCap='round';ctx.lineJoin='round';ctx.globalAlpha=.8;
const p=new Path2D(`M${iconPath}`);ctx.stroke(p);
ctx.restore();
requestAnimationFrame(draw);
}
draw();
}
bTrustGrid();
/* Re-observe all new elements */
obRv();
document.querySelectorAll('.scroll-section').forEach(e=>{
secObs.observe(e);staggerObs.observe(e);
});
document.querySelectorAll('.trust-card,.comm-plat,.upd-item,.cmp-col').forEach(el=>{
el.addEventListener('mouseenter',()=>document.body.classList.add('link-hover'));
el.addEventListener('mouseleave',()=>document.body.classList.remove('link-hover'));
el.addEventListener('mousemove',e=>{
const r=el.getBoundingClientRect();
const cx=r.left+r.width/2,cy=r.top+r.height/2;
el.style.transition='transform .12s';
var rx5=((e.clientY-cy)/r.height)*5;var ry5=-((e.clientX-cx)/r.width)*5;
el.style.transform='perspective(700px) rotateX('+rx5+'deg) rotateY('+ry5+'deg) translateY(-4px)';
});
el.addEventListener('mouseleave',()=>{el.style.transition='transform .6s cubic-bezier(.22,1,.36,1)';el.style.transform=''});
});
</script><script>
/* ── FINGERPRINT GLOW ANIMATION ── */
(function(){
const svg=document.getElementById('fpSvg');
if(!svg)return;
const ridges=Array.from(svg.querySelectorAll('.fp-r'));
const total=ridges.length;
if(!total)return;
let phase='trail'; // 'trail' | 'fadingOut'
let litUpTo=0; // index up to which ridges are lit
let trailHead=0; // float index, front of glow wave
const SPEED=0.55; // ridges per frame to advance
const TRAIL=5; // number of ridges in glowing trail window
let fadeTimer=0;
let pressed=false;
let rafId=null;
function setRidgeState(idx,isLit){
const r=ridges[idx];
if(!r)return;
if(isLit){
r.classList.add('fp-lit');
} else {
r.classList.remove('fp-lit');
}
}
function frame(){
if(pressed){rafId=requestAnimationFrame(frame);return;}
if(phase==='trail'){
trailHead+=SPEED;
// Light up ridges up to trailHead
const headIdx=Math.min(Math.floor(trailHead),total-1);
const tailIdx=Math.max(0,Math.floor(trailHead-TRAIL));
ridges.forEach((r,i)=>{
if(i>=tailIdx && i<=headIdx){
r.classList.add('fp-lit');
} else if(i<tailIdx){
// Behind tail — keep dim glow (already lit, reduce opacity)
r.classList.remove('fp-lit');
} else {
r.classList.remove('fp-lit');
}
});
if(trailHead>=total+TRAIL){
// All ridges have been swept — pause then fade all
phase='pause';
fadeTimer=0;
}
} else if(phase==='pause'){
fadeTimer++;
if(fadeTimer>35){
// Start fading all lit ridges from first to last
phase='fadeOut';
fadeTimer=0;
}
} else if(phase==='fadeOut'){
fadeTimer+=SPEED*0.8;
const clearIdx=Math.floor(fadeTimer);
for(let i=0;i<Math.min(clearIdx,total);i++){
ridges[i].classList.remove('fp-lit');
}
if(clearIdx>=total){
// All cleared — reset and restart
trailHead=0;
fadeTimer=0;
phase='trail';
}
}
rafId=requestAnimationFrame(frame);
}
// Press interaction
svg.addEventListener('mousedown',onPress);
svg.addEventListener('touchstart',e=>{e.preventDefault();onPress();},{passive:false});
window.addEventListener('mouseup',onRelease,{passive:true});
window.addEventListener('touchend',onRelease,{passive:true});
function onPress(){
pressed=true;
svg.classList.add('fp-pressed');
ridges.forEach(r=>r.classList.add('fp-lit'));
// Add ripple circle
addRipple();
}
function onRelease(){
if(!pressed)return;
pressed=false;
svg.classList.remove('fp-pressed');
// Reset trail from beginning
trailHead=0;
fadeTimer=0;
phase='trail';
ridges.forEach(r=>r.classList.remove('fp-lit'));
}
function addRipple(){
const circle=document.createElementNS('http://www.w3.org/2000/svg','circle');
circle.setAttribute('cx','200');
circle.setAttribute('cy','200');
circle.setAttribute('r','8');
circle.classList.add('fp-ripple-ring');
svg.appendChild(circle);
circle.addEventListener('animationend',()=>circle.remove());
// Second ripple slightly delayed
setTimeout(()=>{
const c2=document.createElementNS('http://www.w3.org/2000/svg','circle');
c2.setAttribute('cx','200');c2.setAttribute('cy','200');c2.setAttribute('r','8');
c2.classList.add('fp-ripple-ring');
c2.style.animationDelay='0.18s';
svg.appendChild(c2);
c2.addEventListener('animationend',()=>c2.remove());
},120);
}
// Start
frame();
})();
/* ── SHIELD CANVAS ── */
(function(){
const cv=document.getElementById('shieldCv');if(!cv)return;
let W,H;
function rs(){W=cv.width=cv.offsetWidth||380;H=cv.height=cv.offsetHeight||380}
rs();new ResizeObserver(rs).observe(cv.parentElement);
const ctx=cv.getContext('2d');let t=0;
function draw(){
ctx.clearRect(0,0,W,H);t+=.012;
const acc=getComputedStyle(document.documentElement).getPropertyValue('--acc').trim()||'#000';
const cx=W/2,cy=H/2,r=Math.min(W,H)*.38;
// Outer ring glow
for(let i=0;i<3;i++){
const rr=r+i*22+8*Math.sin(t+i);
ctx.beginPath();ctx.arc(cx,cy,rr,0,Math.PI*2);
ctx.strokeStyle=acc;ctx.lineWidth=.5;ctx.globalAlpha=.06*(3-i);ctx.stroke();
}
ctx.globalAlpha=1;
// Shield path
ctx.save();
ctx.translate(cx,cy-r*.05);
const sw=r*.85,sh=r*1.1;
ctx.beginPath();
ctx.moveTo(0,-sh*.5);
ctx.bezierCurveTo(sw*.5,-sh*.5,sw*.5,-sh*.1,sw*.5,sh*.12);
ctx.bezierCurveTo(sw*.5,sh*.46,0,sh*.5,0,sh*.5);
ctx.bezierCurveTo(-sw*.5,sh*.5,-sw*.5,sh*.46,-sw*.5,sh*.12);
ctx.bezierCurveTo(-sw*.5,-sh*.1,-sw*.5,-sh*.5,0,-sh*.5);
ctx.closePath();
// Fill
const sg=ctx.createLinearGradient(0,-sh*.5,0,sh*.5);
sg.addColorStop(0,'rgba(255,255,255,.04)');sg.addColorStop(1,'rgba(255,255,255,.01)');
ctx.fillStyle=sg;ctx.fill();
ctx.strokeStyle=acc;ctx.lineWidth=1.2;ctx.globalAlpha=.35+.12*Math.sin(t);ctx.stroke();
ctx.globalAlpha=1;
// Shield inner check
ctx.lineWidth=2;ctx.strokeStyle=acc;ctx.globalAlpha=.6+.2*Math.sin(t*.7);
ctx.beginPath();ctx.moveTo(-sw*.2,sh*.02);ctx.lineTo(-sw*.05,sh*.22);ctx.lineTo(sw*.24,-sh*.14);ctx.stroke();
ctx.globalAlpha=1;
ctx.restore();
// Scan line
const scanY=-Math.min(W,H)*.44+((t*.5%Math.PI)/Math.PI)*Math.min(W,H)*.88;
const sg2=ctx.createLinearGradient(cx-r,cy+scanY,cx+r,cy+scanY);
sg2.addColorStop(0,'transparent');sg2.addColorStop(.5,acc);sg2.addColorStop(1,'transparent');
ctx.strokeStyle=sg2;ctx.lineWidth=.8;ctx.globalAlpha=.35;
ctx.beginPath();ctx.moveTo(cx-r,cy+scanY);ctx.lineTo(cx+r,cy+scanY);ctx.stroke();
ctx.globalAlpha=1;
requestAnimationFrame(draw);
}
draw();
})();
/* ── PARTNERS ── */
function bPartners(){
const prtItems=['Free Fire Community','Gamer Indonesia','Mobile Esports','Gaming Content Creator','Injector V2.0','Android & Emulator','Mobilador Users','Sensi Optimizer','AimTrick Inject','VIP Gaming','SNITZ Community','Premium Gamer'];
const html=prtItems.map(t=>`<div class="prt-item"><div class="prt-dot"></div>${t}</div>`).join('');
const t2=document.getElementById('prtTrack1');const t3=document.getElementById('prtTrack2');
if(t2)t2.innerHTML=html+html;
if(t3)t3.innerHTML=html+html;
}
bPartners();
/* ── ROADMAP ── */
const RM_DATA=[
{tag:'done',label:{id:'Selesai',en:'Done'},date:'Q1 2023',h:{id:'Peluncuran SNITZ PROJECT v1.0',en:'SNITZ PROJECT v1.0 Launch'},p:{id:'Rilis perdana dengan Sensi Optimizer dasar, sistem key terenkripsi, distribusi via WhatsApp.',en:'First release with basic Sensi Optimizer, encrypted key system, and WhatsApp distribution.'}},
{tag:'done',label:{id:'Selesai',en:'Done'},date:'Q3 2023',h:{id:'Key System & 3 Tier VIP',en:'Key System & 3 VIP Tiers'},p:{id:'Implementasi key AES-256, tiga paket VIP pertama, support komunitas via WhatsApp.',en:'AES-256 key system, first three VIP packages, community support via WhatsApp.'}},
{tag:'done',label:{id:'Selesai',en:'Done'},date:'Q1 2024',h:{id:'5 Tier VIP + Cache Deep Cleaning',en:'5 VIP Tiers + Deep Cache Cleaning'},p:{id:'Lineup lengkap 5 tier dari ANCLA hingga PIRATE. Cache Deep Cleaning diperkenalkan.',en:'Full 5-tier lineup from ANCLA to PIRATE. Deep Cache Cleaning module introduced.'}},
{tag:'done',label:{id:'Selesai',en:'Done'},date:'Q3 2024',h:{id:'Website Resmi & DPI Notification',en:'Official Website & DPI Notification'},p:{id:'Peluncuran website resmi. DPI via Notifikasi real-time dirilis — game changer.',en:'Official website launched. Real-time DPI via Notification released — game changer.'}},
{tag:'active',label:{id:'Sedang Berjalan',en:'In Progress'},date:'Q1 2025',h:{id:'V2.0 — AimTrick Path Inject + Emulator/Mobilador',en:'V2.0 — AimTrick Path Inject + Emulator/Mobilador'},p:{id:'SNITZ V2.0 dengan AimTrick Path DLL Inject, Micro Adjustment V5, support Emulator & Mobilador.',en:'SNITZ V2.0 with AimTrick Path DLL Inject, Micro Adjustment V5, full Emulator & Mobilador support.'}},
{tag:'upcoming',label:{id:'Akan Datang',en:'Upcoming'},date:'Q3 2025',h:{id:'Desktop Version & PC Native Support',en:'Desktop Version & PC Native Support'},p:{id:'Ekspansi ke PC dengan dukungan native Windows dan semua major emulator.',en:'Expansion to PC with native Windows support and all major emulators.'}},
{tag:'upcoming',label:{id:'Akan Datang',en:'Upcoming'},date:'Q1 2026',h:{id:'AI Sensi Predict & Smart Optimizer',en:'AI Sensi Predict & Smart Optimizer'},p:{id:'Machine learning on-device untuk prediksi Sensi optimal otomatis berdasarkan playstyle.',en:'On-device machine learning to automatically predict optimal Sensi based on playstyle.'}},
];
function bRoadmap(){
const g=document.getElementById('rmList');if(!g)return;g.innerHTML='';
RM_DATA.forEach((r,i)=>{
const d=document.createElement('div');d.className=`rm-item ${r.tag} rv`;d.style.transitionDelay=(i*.07)+'s';
const lbl=typeof r.label==='object'?r.label[lang]:r.label;const rh=typeof r.h==='object'?r.h[lang]:r.h;const rp=typeof r.p==='object'?r.p[lang]:r.p;d.innerHTML=`<div class="rm-tag ${r.tag}">${r.tag==='done'?'<svg viewBox="0 0 10 8" style="width:10px;height:8px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;vertical-align:middle;margin-right:4px"><path d="M1 4l2.5 2.5L9 1"/></svg>':r.tag==='active'?'<svg viewBox="0 0 10 10" style="width:10px;height:10px;fill:currentColor;margin-right:4px"><circle cx="5" cy="5" r="3"/></svg>':''} ${lbl} · ${r.date}</div><div class="rm-h">${rh}</div><div class="rm-p">${rp}</div>`;
g.appendChild(d);setTimeout(()=>rvObs.observe(d),30);
});
}
bRoadmap();
/* ── SECURITY FEATURES ── */
const SEC_FEATS=[
{icon:'M7 1a6 6 0 100 12A6 6 0 007 1zM5 7.5L6.5 9 9 5.5',t:'AES-256 Key Encryption',p:{id:'Setiap key VIP dienkripsi AES-256. Terikat 1 device, tidak bisa dishare.',en:'Every VIP key is AES-256 encrypted. Bound to 1 device and cannot be shared.'}},
{icon:'M1 8a7 7 0 1014 0A7 7 0 001 8zM7 5v3l2 1',t:'1 Device Binding',p:{id:'Key terikat kriptografis pada 1 device via hash non-reversible.',en:'Key is cryptographically bound to 1 device via non-reversible hash.'}},
{icon:'M2 2l10 10M12 2L2 12',t:'Zero-Log Policy',p:{id:'Tidak ada log aktivitas. Privasi kamu adalah prioritas.',en:'No activity logs stored. Your privacy is our priority.'}},
{icon:'M8 1a7 7 0 100 14A7 7 0 008 1zM8 5v4M8 11v.5',t:{id:'Inject Aman — Bukan Cheat',en:'Safe Inject — Not a Cheat'},p:{id:'AimTrick bekerja di level DLL sistem — bukan modifikasi file game ilegal.',en:'AimTrick works at device DLL system level — not illegal game file modification.'}},
];
function bSecFeats(){
const g=document.getElementById('secFeats');if(!g)return;g.innerHTML='';
SEC_FEATS.forEach((s,i)=>{
const d=document.createElement('div');d.className='sec-feat';
d.style.transitionDelay=(i*.07)+'s';
d.innerHTML=`<div class="sec-feat-ic"><svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="${s.icon}"/></svg></div><div><div class="sec-feat-t">${typeof s.t==='object'?s.t[lang]:s.t}</div><div class="sec-feat-p">${typeof s.p==='object'?s.p[lang]:s.p}</div></div>`;
g.appendChild(d);
});
}
bSecFeats();
/* ── PRICING COMPARISON ── */
function bCmp(){
const g=document.getElementById('cmpGrid');if(!g)return;g.innerHTML='';
const rows=['AimTrick Inject','Sensi Optimizer','Cache Cleaning','Up Performance','DPI Notification','Micro Adjustment','Reduce Recoil','Emulator Support','1 Device (VIP)','Refund 24 Jam'];
const tiers=[
{n:'FREE',p:'Free',best:false,vals:[false,true,true,true,false,false,false,false,false,false]},
{n:'ANCLA',p:'75rb',best:false,vals:[true,true,true,true,false,false,false,true,true,true]},
{n:'VAGUE',p:'150rb',best:false,vals:[true,true,true,true,true,false,false,true,true,true]},
{n:'CRANE',p:'250rb',best:false,vals:[true,true,true,true,true,true,false,true,true,true]},
{n:'BARCO',p:'350rb',best:false,vals:[true,true,true,true,true,true,true,true,true,true]},
{n:'PIRATE',p:'450rb',best:true,vals:[true,true,true,true,true,true,true,true,true,true]},
];
tiers.forEach(tier=>{
const d=document.createElement('div');d.className='cmp-col'+(tier.best?' best':'');
const okSvg='<div class="cmp-ok"><svg viewBox="0 0 12 10"><path d="M1 5l3 3.5L11 1" stroke-linecap="round" stroke-linejoin="round"/></svg></div>';
const xSvg='<div class="cmp-x"><svg viewBox="0 0 10 10"><path d="M2 2l6 6M8 2L2 8" stroke-linecap="round"/></svg></div>';
d.innerHTML=`<div class="cmp-head"><div class="cmp-n">${tier.n}</div><div class="cmp-pr">${tier.p}</div></div><div class="cmp-rows">${rows.map((r,i)=>`<div class="cmp-row">${tier.vals[i]?okSvg:xSvg}<span>${r}</span></div>`).join('')}</div>`;
g.appendChild(d);
});
}
bCmp();
/* Re-init observers for new elements */
obRv();
document.querySelectorAll('.scroll-section').forEach(e=>secObs.observe(e));
/* ════════════════════════════════════════════════
CONTRIBUTOR ORBITAL CANVAS
════════════════════════════════════════════════ */
(function(){
const cv=document.getElementById('contribOrbCv');if(!cv)return;
let W,H;
function rs(){
const parent=cv.parentElement;
W=cv.width=parent?parent.offsetWidth||440:440;
H=cv.height=parent?parent.offsetHeight||440:440;
}
rs();
const ctx=cv.getContext('2d');
const cx2=()=>W/2,cy2=()=>H/2;
let t=0;
const rings=[
{r:.40,speed:.0025,color:'rgba(10,10,10,.04)',dots:5,dotR:2,phase:0},
{r:.27,speed:.005,color:'rgba(10,10,10,.07)',dots:3,dotR:3,phase:1.1},
{r:.15,speed:.009,color:'rgba(10,10,10,.1)',dots:2,dotR:3.5,phase:2.2},
];
function draw(){
ctx.clearRect(0,0,W,H);
t+=1;
const acc=getComputedStyle(document.documentElement).getPropertyValue('--acc').trim()||'#0a0a0a';
const ink=getComputedStyle(document.documentElement).getPropertyValue('--ink').trim()||'#0a0a0a';
// Outer glow radial
const rg=ctx.createRadialGradient(cx2(),cy2(),0,cx2(),cy2(),W*.38);
rg.addColorStop(0,acc.includes('#')?acc+'0d':'rgba(10,10,10,.03)');
rg.addColorStop(1,'transparent');
ctx.fillStyle=rg;ctx.beginPath();ctx.arc(cx2(),cy2(),W*.38,0,Math.PI*2);ctx.fill();
// Rings + orbiting dots
rings.forEach(ring=>{
const rad=Math.min(W,H)*ring.r;
// Ring circle
ctx.strokeStyle=acc;ctx.lineWidth=.5;ctx.globalAlpha=.08;
ctx.beginPath();ctx.arc(cx2(),cy2(),rad,0,Math.PI*2);ctx.stroke();
// Rotating dashes
ctx.globalAlpha=.04;ctx.lineWidth=.3;ctx.setLineDash([5,18]);
ctx.beginPath();ctx.arc(cx2(),cy2(),rad,t*ring.speed*0.3,t*ring.speed*0.3+Math.PI*1.6);ctx.stroke();
ctx.setLineDash([]);
ctx.globalAlpha=1;
// Orbiting dots
for(let i=0;i<ring.dots;i++){
const angle=t*ring.speed+i*(Math.PI*2/ring.dots)+ring.phase;
const dx=cx2()+Math.cos(angle)*rad;
const dy=cy2()+Math.sin(angle)*rad;
// Dot glow subtle
const dg=ctx.createRadialGradient(dx,dy,0,dx,dy,ring.dotR*2);
dg.addColorStop(0,acc);dg.addColorStop(1,'transparent');
ctx.fillStyle=dg;ctx.globalAlpha=.18;
ctx.beginPath();ctx.arc(dx,dy,ring.dotR*2,0,Math.PI*2);ctx.fill();
// Dot core
ctx.beginPath();ctx.arc(dx,dy,ring.dotR,0,Math.PI*2);
ctx.fillStyle=acc;ctx.globalAlpha=.65;ctx.fill();
ctx.globalAlpha=1;
}
});
// Center pulsing core — minimal
const pulse=1+0.08*Math.sin(t*0.04);
const coreR=Math.min(W,H)*.055*pulse;
const cg=ctx.createRadialGradient(cx2(),cy2(),0,cx2(),cy2(),coreR*2);
cg.addColorStop(0,acc);
cg.addColorStop(1,'transparent');
ctx.fillStyle=cg;ctx.globalAlpha=.5;
ctx.beginPath();ctx.arc(cx2(),cy2(),coreR*2,0,Math.PI*2);ctx.fill();
ctx.globalAlpha=1;
// Small center dot
ctx.beginPath();ctx.arc(cx2(),cy2(),coreR*.5,0,Math.PI*2);
ctx.fillStyle=acc;ctx.globalAlpha=.8;ctx.fill();ctx.globalAlpha=1;
// Center text label
ctx.font='700 '+Math.floor(Math.min(W,H)*.055)+'px Syne,sans-serif';
ctx.textAlign='center';ctx.textBaseline='middle';
ctx.fillStyle='#d4f5dc';ctx.globalAlpha=.75;
ctx.fillText('SNITZ',cx2(),cy2()-Math.min(W,H)*.028);
ctx.font='400 '+Math.floor(Math.min(W,H)*.024)+'px Space Mono,monospace';
ctx.fillStyle=acc;ctx.globalAlpha=.55;
ctx.fillText('V2.0',cx2(),cy2()+Math.min(W,H)*.034);
ctx.globalAlpha=1;
requestAnimationFrame(draw);
}
draw();
new ResizeObserver(rs).observe(cv.parentElement||cv);
})();
/* ── RIPPLE CLICK EFFECT ── */
document.querySelectorAll('.btn,.btn-w,.pb-buy,.cf-btn,.sup-btn,.nl-btn,.npill').forEach(el=>{
el.addEventListener('click',function(e){
const r=el.getBoundingClientRect();
const ripple=document.createElement('span');
ripple.style.cssText=`position:absolute;border-radius:50%;background:rgba(255,255,255,.3);width:20px;height:20px;left:${e.clientX-r.left-10}px;top:${e.clientY-r.top-10}px;transform:scale(0);animation:ripple .5s ease-out forwards;pointer-events:none;z-index:10`;
el.style.position='relative';el.style.overflow='hidden';
el.appendChild(ripple);
setTimeout(()=>ripple.remove(),500);
});
});
/* ── MAGNETIC FLOAT ON SCROLL — RAF batched, no layout thrash ── */
(function(){
let lastSY=window.scrollY,rafPending=false,delta=0;
const cards=()=>document.querySelectorAll('.pc,.fc');
function applyFloat(){
rafPending=false;
if(Math.abs(delta)<1)return;
cards().forEach((el,i)=>{
if(el.matches(':hover'))return;
const offset=Math.sin(i*0.5)*delta*0.035;
el.style.transform='translateY('+offset+'px)';
});
delta*=0.7;
if(Math.abs(delta)>0.5){
rafPending=true;
requestAnimationFrame(applyFloat);
} else {
cards().forEach(el=>{if(!el.matches(':hover'))el.style.transform='';});
}
}
window.addEventListener('scroll',()=>{
const sy=window.scrollY;
delta=sy-lastSY;
lastSY=sy;
if(!rafPending){rafPending=true;requestAnimationFrame(applyFloat);}
},{passive:true});
})();
/* ── STAGGER OBSERVER for grids ── */
const staggerEls=document.querySelectorAll('.ct-grid .ctc,.feat-grid .fc,.prod-grid .pc');
staggerEls.forEach((el,i)=>{
el.style.transitionDelay=Math.min(i*.07,.5)+'s';
rvObs.observe(el);
});
/* ── SMOOTH ANCHOR SCROLL ── */
document.querySelectorAll('a[href^="#"]').forEach(a=>{
a.addEventListener('click',function(e){
const target=document.querySelector(this.getAttribute('href'));
if(target){e.preventDefault();target.scrollIntoView({behavior:'smooth',block:'start'})}
});
});
/* ── T ORBIT GLOW — stroke animasi mengikuti kontur huruf T ── */
(function(){
function initTOrbit(){
const span=document.getElementById('heroT');
const svg=document.getElementById('t-orbit-svg');
const path=document.getElementById('t-orbit-path');
if(!span||!svg||!path)return;
const rect=span.getBoundingClientRect();
const W=rect.width;
const H=rect.height;
if(W<2||H<2)return;
const pad=W*0.03;
const bw=W*0.88;
const bh=H*0.38;
const sw=W*0.36;
const bx=(W-bw)/2;
const sx=(W-sw)/2;
const r=W*0.02;
const p=pad;
const gTop = H*0.08;
const gBot = H*0.90;
const TL_x=bx-p, TL_y=gTop;
const TR_x=bx+bw+p, TR_y=gTop;
const TBR_x=TR_x, TBR_y=bh;
const SR_x=sx+sw+p, SR_y=bh;
const BR_x=SR_x, BR_y=gBot;
const BL_x=sx-p, BL_y=gBot;
const SL_x=sx-p, SL_y=bh;
const TBL_x=bx-p, TBL_y=bh;
const d=[
`M ${TL_x+r} ${TL_y}`,
`L ${TR_x-r} ${TR_y}`,
`Q ${TR_x} ${TR_y} ${TR_x} ${TR_y+r}`,
`L ${TBR_x} ${TBR_y-r}`,
`Q ${TBR_x} ${TBR_y} ${TBR_x-r} ${TBR_y}`,
`L ${SR_x+r} ${SR_y}`,
`Q ${SR_x} ${SR_y} ${SR_x} ${SR_y+r}`,
`L ${BR_x} ${BR_y-r}`,
`Q ${BR_x} ${BR_y} ${BR_x-r} ${BR_y}`,
`L ${BL_x+r} ${BL_y}`,
`Q ${BL_x} ${BL_y} ${BL_x} ${BL_y-r}`,
`L ${SL_x} ${SL_y+r}`,
`Q ${SL_x} ${SL_y} ${SL_x-r} ${SL_y}`,
`L ${TBL_x+r} ${TBL_y}`,
`Q ${TBL_x} ${TBL_y} ${TBL_x} ${TBL_y-r}`,
`L ${TBL_x} ${TL_y+r}`,
`Q ${TBL_x} ${TL_y} ${TL_x+r} ${TL_y}`,
`Z`
].join(' ');
svg.setAttribute('viewBox',`0 0 ${W} ${H}`);
svg.setAttribute('width',W);
svg.setAttribute('height',H);
svg.style.cssText=`position:absolute;top:0;left:0;width:${W}px;height:${H}px;overflow:visible;pointer-events:none;z-index:10`;
path.setAttribute('d',d);
const len=path.getTotalLength();
if(!len||len<1)return;
const dashLen=len*0.22;
const gap=len-dashLen;
const sw2=3;
path.style.fill='none';
path.style.stroke='var(--acc)';
path.style.strokeWidth=sw2+'px';
path.style.strokeLinecap='round';
path.style.strokeLinejoin='round';
path.style.filter='drop-shadow(0 0 2px var(--acc)) drop-shadow(0 0 5px rgba(52,168,83,.7))';
path.style.strokeDasharray=`${dashLen} ${gap}`;
path.style.strokeDashoffset=len;
path.style.opacity='1';
path.style.transition='none';
let offset=len;
let lastT=0;
const speed=len/1.8;
if(window._tOrbitRaf)cancelAnimationFrame(window._tOrbitRaf);
function tick(ts){
const dt=Math.min((ts-lastT)/1000,0.05);
lastT=ts;
offset-=speed*dt;
if(offset<-dashLen)offset=len;
path.style.strokeDashoffset=offset;
window._tOrbitRaf=requestAnimationFrame(tick);
}
window._tOrbitRaf=requestAnimationFrame(ts=>{lastT=ts;window._tOrbitRaf=requestAnimationFrame(tick);});
}
if(document.fonts&&document.fonts.ready){
document.fonts.ready.then(()=>setTimeout(initTOrbit,200));
}else{
window.addEventListener('load',()=>setTimeout(initTOrbit,200));
}
let _rt;
window.addEventListener('resize',()=>{clearTimeout(_rt);_rt=setTimeout(initTOrbit,250);},{passive:true});
})();
</script>
<!-- ══════════════════════════════════════════════
EXTRA CONTENT: COMMUNITY + TRUST BADGES + UPDATES LOG
════════════════════════════════════════════════ -->
<!-- extra JS merged into main script -->
<!-- QRIS DATA -->
<div style="display:none" aria-hidden="true">
<img id="qris-img-pirate" src="assets/image/qris-pirate.jpeg" alt="">
<img id="qris-img-barco" src="assets/image/qris-barco.jpeg" alt="">
<img id="qris-img-crane" src="assets/image/qris-crane.jpeg" alt="">
<img id="qris-img-vague" src="assets/image/qris-vague.jpeg" alt="">
<img id="qris-img-ancla" src="assets/image/qris-ancla.jpeg" alt="">
<img id="qris-img-trionx" src="assets/image/qris-trionx.jpeg" alt="">
<img id="qris-img-fexio" src="assets/image/qris-fexio.jpeg" alt="">
<img id="qris-img-uno" src="assets/image/qris-uno.jpeg" alt="">
</div>
</body>
</html>