# Digital Marketing Singapore Indonesia: Cross-Border Guide

> A practical guide to digital marketing from Singapore into Indonesia: channels, SEO, performance marketing, localization and measurement for B2B brands

- URL: https://medikabyte.com/digital-marketing-singapore-indonesia/
- Diperbarui: 2026-10-16
- Penulis: MedikaByte
- Penerbit: MedikaByte (B2B digital agency)

Skip to content

[**ADTYAA** Technology & Digital Systems](https://medikabyte.com/)

**EN**

**ID**

**中文**

Consultation

[Capabilities](https://medikabyte.com/#capabilities)
[Expertise](https://medikabyte.com/#expertise)
[Approach](https://medikabyte.com/#approach)
[Proof](https://medikabyte.com/#proof)
[About](https://medikabyte.com/#about)
[Essentials](https://medikabyte.com/essentials/)
Consultation

# How B2B Brands Run Paid Ads in Singapore & Indonesia: *A Cross-Border Guide*

By Adtyaa 9 October 2026 8 min read

Digital advertiser Singapore Indonesia is a search that usually starts with one need: a Singapore brand wants paid ads that reach Indonesian buyers without wasting budget. The work looks simple on a platform dashboard, but two markets, two currencies, and two buying behaviors make it a discipline of its own. This guide explains how cross-border paid campaigns are structured, run, and measured.

**Key takeaway**

Run Singapore and Indonesia as separate campaigns with their own budgets, language, and tracking. Google captures existing demand, Meta builds reach, and both are judged by qualified leads rather than clicks.

![Digital advertiser presenting a Google and Meta Ads campaign plan for Singapore brands entering Indonesia](https://medikabyte.com/wp-content/uploads/2026/10/digital-advertiser-singapore-indonesia.jpg)

A digital advertiser walks a team through campaign data for the Singapore and Indonesia markets.

## What a digital advertiser does when budgets cross borders

A digital advertiser for Singapore and Indonesia covers account structure, targeting, creative direction, budget control, and tracking. Every ad also has to follow platform rules, so the official guidance in [Google Ads Help](https://support.google.com/google-ads) and the [Meta Business Help Centre](https://www.facebook.com/business/help) belongs in the working checklist, not in an afterthought.

The distinction matters because Singapore and Indonesia rarely respond to the same campaign. Search volume, cost per click, language, and the path from first click to first conversation all differ, so each market needs its own plan.

## Jasa digital advertiser Singapore Indonesia: scope of work

A jasa digital advertiser Singapore Indonesia engagement should be written down as four connected workstreams, so both sides know what is delivered and how it is reviewed.

### Account structure

Separate campaigns per market, product, and funnel stage, with clear naming.

### Creative and message

Ad copy and landing pages written natively in English and Bahasa Indonesia.

### Audience and targeting

Keyword, location, and role-based audiences matched to the buyer, not the broadest reach.

### Tracking and reporting

Conversions recorded in one view, reported in English for the Singapore team.

## Google & Meta Ads specialist Singapore Indonesia: who does what

Google Ads works best where demand already exists. Buyers who search for a service in Bahasa Indonesia or English show intent, and well-structured search campaigns put your offer in front of them at that moment.

Meta Ads works where demand has to be created. It reaches business owners and decision-makers before they search, and it supports retargeting for visitors who have already read your pages.

- Search campaigns for high-intent queries in both languages.
- Meta lead and traffic campaigns with retargeting for visitors who did not convert.
- Landing pages and tracking built to the same standard as the ads, as outlined in our [growth systems capabilities](https://medikabyte.com/#capabilities).

## Cross-border performance media buyer SG ID: budgets, bidding, and testing

A cross-border performance media buyer plans budgets per market rather than as one pooled amount. Costs per click and per lead differ between Singapore and Indonesia, and platforms bill in specific currencies, so exchange rates should be tracked in reporting from the first month.

Testing follows a fixed rhythm: one variable at a time, enough data before a decision, and a written note of what was learned. Campaigns are judged on qualified leads and the cost to acquire them, not on impressions.

- Cost per qualified lead and lead-to-meeting rate for B2B enquiries.
- Return on ad spend where the sale happens online.
- Monthly review and quarterly budget reallocation between the two markets.

## Agensi paid ads ekspansi pasar Singapore Indonesia: the local playbook

An agensi paid ads for Singapore–Indonesia market expansion adapts the campaign to how Indonesian buyers actually decide. These are the elements that most often change between the two markets:

- Native Bahasa Indonesia ad copy, reviewed by a local editor.
- WhatsApp as a primary contact option in the conversion path.
- Local payment methods wherever the campaign leads to a purchase.
- Mobile-first landing pages with fast load times.
- Offers and proof points framed for Indonesian buyers, not translated from Singapore.

For how an engagement moves from discovery to optimization, see the [approach](https://medikabyte.com/#approach) used across ADTYAA projects.

## Performance advertising agency for SG brands in Indonesia: how to evaluate one

When comparing a performance advertising agency for SG brands in Indonesia, look for clarity rather than claims: a written scope, defined milestones, direct senior involvement, reporting tied to qualified leads, and access to your own ad accounts so the data always stays with you.

That is the model behind ADTYAA: advertising, search, engineering, and security under one accountable partner. Review the [capabilities](https://medikabyte.com/#capabilities) to see how paid ads connect to the rest of the digital system.

### Planning paid ads for Indonesia?

Share your target market, budget range, and goal. You receive a written proposal with a defined scope, and every enquiry is answered within 24 hours.

[Request a campaign proposal](https://wa.me/6281411188809) Send a project brief

## Frequently asked questions

**Do Singapore and Indonesia need separate ad campaigns?**

Yes. Separate campaigns allow separate budgets, languages, bidding, and tracking, and they make results from each market easy to compare.

**Should Google Ads or Meta Ads come first?**

Most B2B brands start with Google Ads to capture existing search demand, then add Meta Ads for reach and retargeting once tracking is in place.

**Who manages the Indonesian ad accounts day to day?**

A named specialist runs the campaigns remotely, writes ad copy in Indonesian where needed, and sends English summaries to your team. The accounts themselves remain in your name.

**How soon can campaigns launch?**

After discovery and a written proposal, launch follows once tracking, landing pages, and creatives are approved. The proposal sets the launch date.

Project brief

## Share your requirement.

Describe what you are building, what is not performing, or what needs to improve. I will review the brief and respond within 24 hours.

WhatsApp / Phone [0814 111 888 09](tel:+6281411188809)

Email [hallo@adtyaa.cloud](mailto:hallo@adtyaa.cloud)

Base **Jakarta, Indonesia**

Location

## Find us on Google Maps.

In-person meetings are by appointment. Please message first so a time can be confirmed.

### DJURAGAN IKLAN ID

Founded by ADTYAA

Jl. Green Pramuka City No.9 13, RT.13/RW.9, Rawasari, Kec. Cempaka Putih, Kota Jakarta Pusat, DKI Jakarta 10570

#### Opening hours

Mon, Wed to Sat 08:00 – 21:30

Tuesday 08:00 – 21:00

Sunday 09:00 – 21:30

[Get directions](https://www.google.com/maps/dir/?api=1&destination=-6.1883766,106.8732792&destination_place_id=ChIJKcjnOqb1aS4RfbYD_EKMv84)
[Chat on WhatsApp](https://wa.me/6281411188809)
[Call now](tel:+6281411188809)

Build what your business depends on.

## Let’s build something worth depending on.

One accountable technology partner across engineering, growth, security, and digital infrastructure.

Request a consultation [Explore capabilities](https://medikabyte.com/#capabilities)

[**ADTYAA**](https://medikabyte.com/)

Digital Systems & Technology Consultancy

Aditya

Founder & Technology Strategist

Djuragan Iklan

Navigate

- [Capabilities](https://medikabyte.com/#capabilities)
- [Expertise](https://medikabyte.com/#expertise)
- [Approach](https://medikabyte.com/#approach)
- [About](https://medikabyte.com/#about)
- Location
- Contact

Capabilities

- [Software Engineering](https://medikabyte.com/#capabilities)
- [Digital Engineering](https://medikabyte.com/#capabilities)
- [Growth Systems](https://medikabyte.com/#capabilities)
- [Security & Infrastructure](https://medikabyte.com/#capabilities)
- [Medical SEO](https://medikabyte.com/#medical)
- [Custom Plugins](https://medikabyte.com/essentials/)
- [Custom Themes](https://medikabyte.com/essentials/)
- [Add-ons & Care Plans](https://medikabyte.com/essentials/)

Contact

[WhatsApp](https://wa.me/6281411188809)
[hallo@adtyaa.cloud](mailto:hallo@adtyaa.cloud)
Jakarta, Indonesia

ADTYAA

© 2026 ADTYAA. All rights reserved.

[Essentials](https://medikabyte.com/essentials/)

[Chat on WhatsApp](https://wa.me/6281411188809)

var D = {"skip":["Skip to content","Lewati ke konten","跳到主要内容"],"menu":["Menu","Menu","菜单"],"lang.group":["Language","Bahasa","语言"],"nav.cap":["Capabilities","Keahlian","核心能力"],"nav.work":["Expertise","Spesialisasi","行业专长"],"nav.app":["Approach","Pendekatan","合作流程"],"nav.proof":["Proof","Bukti","实绩"],"nav.about":["About","Tentang","关于"],"nav.ess":["Essentials","Essentials","Essentials"],"nav.cta":["Consultation","Konsultasi","预约咨询"],"nav.contact":["Contact","Kontak","联系我们"],"bag.aria":["ADTYAA Essentials: services, themes, plugins, and add-ons","ADTYAA Essentials: jasa, tema, plugin, dan add-on","ADTYAA Essentials：服务、主题、插件与附加服务"],"hero.cta1":["Request a consultation","Jadwalkan konsultasi","预约咨询"],"hero.cta2":["Explore capabilities","Jelajahi keahlian","了解核心能力"],"hero.role":["Founder & Technology Strategist","Founder & Technology Strategist","创始人 · 技术战略顾问"],"cap4.title":["Software Engineering","Software Engineering","软件工程"],"cap1.title":["Digital Engineering","Digital Engineering","数字工程"],"cap2.title":["Growth Systems","Growth Systems","增长体系"],"cap3.title":["Security & Infrastructure","Security & Infrastructure","安全与基础设施"],"opt.med":["Medical SEO","SEO Medis","医疗 SEO"],"opt.other":["Other / Not sure yet","Lainnya / Belum yakin","其他 / 尚未确定"],"contact.label":["Project brief","Brief proyek","项目简报"],"contact.title":["Share your requirement.","Sampaikan kebutuhan Anda.","请告诉我们您的需求。"],"contact.copy":["Describe what you are building, what is not performing, or what needs to improve. I will review the brief and respond within 24 hours.","Jelaskan apa yang sedang Anda bangun, apa yang belum berjalan optimal, atau apa yang perlu ditingkatkan. Saya akan mempelajari brief dan merespons dalam 24 jam.","请描述您正在构建的内容、表现不佳之处或需要改进的方面。我会审阅简报并在 24 小时内回复，咨询以英文进行。"],"contact.wa":["WhatsApp / Phone","WhatsApp / Telepon","WhatsApp / 电话"],"contact.loc":["Base","Lokasi","所在地"],"contact.city":["Jakarta, Indonesia","Jakarta, Indonesia","印度尼西亚 · 雅加达"],"form.name":["Name *","Nama *","姓名 *"],"form.email":["Email","Email","邮箱"],"form.wa":["WhatsApp","WhatsApp","WhatsApp"],"form.url":["Website","Website","网站"],"form.service":["Capability *","Keahlian *","所需能力 *"],"form.choose":["Choose a capability","Pilih keahlian","请选择能力方向"],"form.eng":["Engagement","Jenis kerja sama","合作类型"],"form.time":["Timeline","Target waktu","时间安排"],"form.choose2":["Choose one","Pilih salah satu","请选择"],"form.msg":["Project / problem","Proyek / masalah","项目 / 问题"],"form.sendwa":["Send via WhatsApp","Kirim lewat WhatsApp","通过 WhatsApp 发送"],"form.sendmail":["Send via email","Kirim lewat email","通过邮件发送"],"form.note":["Your brief opens in WhatsApp or your email application. Nothing is stored on this page.","Brief Anda terbuka di WhatsApp atau aplikasi email, siap dikirim. Tidak ada data yang disimpan di halaman ini.","您的简报将在 WhatsApp 或邮件应用中打开，供您发送。本页面不会保存任何数据。"],"eng.1":["One-time fix or setup","Perbaikan atau setup sekali jalan","一次性修复或设置"],"eng.2":["Full project","Proyek penuh","完整项目"],"eng.3":["Ongoing monthly support","Dukungan bulanan berkelanjutan","持续月度支持"],"eng.4":["Not sure yet","Belum yakin","尚未确定"],"time.1":["As soon as possible","Secepatnya","尽快"],"time.2":["Within 1 month","Dalam 1 bulan","1 个月内"],"time.3":["Within 3 months","Dalam 3 bulan","3 个月内"],"time.4":["Flexible","Fleksibel","灵活"],"f.err":["Please enter your name and choose a capability first.","Isi nama dan pilih keahlian terlebih dahulu.","请先填写姓名并选择能力方向。"],"f.okwa":["Opening WhatsApp...","Membuka WhatsApp...","正在打开 WhatsApp…"],"f.okmail":["Opening your email application...","Membuka aplikasi email Anda...","正在打开邮件应用…"],"m.name":["Name","Nama","Name"],"m.email":["Email","Email","Email"],"m.wa":["WhatsApp","WhatsApp","WhatsApp"],"m.url":["Website","Website","Website"],"m.service":["Capability","Keahlian","Capability"],"m.eng":["Engagement","Jenis kerja sama","Engagement"],"m.time":["Timeline","Target waktu","Timeline"],"m.msg":["Message","Pesan","Message"],"m.subject":["Project enquiry","Permintaan proyek","Project enquiry"],"loc.label":["Location","Lokasi","地点"],"loc.title":["Find us on Google Maps.","Temukan kami di Google Maps.","在 Google 地图上找到我们。"],"loc.lead":["In-person meetings are by appointment. Please message first so a time can be confirmed.","Pertemuan langsung dengan janji temu. Kirim pesan terlebih dahulu agar waktunya dapat dikonfirmasi.","现场会面需提前预约。请先发送消息以确认时间。"],"loc.founded":["Founded by ADTYAA","Founded by ADTYAA","由 ADTYAA 创立"],"loc.hours":["Opening hours","Jam operasional","营业时间"],"loc.d1":["Mon, Wed to Sat","Sen, Rab sampai Sab","周一、周三至周六"],"loc.d2":["Tuesday","Selasa","周二"],"loc.d3":["Sunday","Minggu","周日"],"loc.dir":["Get directions","Petunjuk arah","获取路线"],"loc.wa":["Chat on WhatsApp","Chat via WhatsApp","通过 WhatsApp 洽谈"],"loc.call":["Call now","Telepon sekarang","立即致电"],"loc.map":["DJURAGAN IKLAN ID on Google Maps","DJURAGAN IKLAN ID di Google Maps","DJURAGAN IKLAN ID 的 Google 地图位置"],"final.label":["Build what your business depends on.","Bangun sistem yang diandalkan bisnis Anda.","构建您的业务所依赖的系统。"],"final.title":["Let's build something worth depending on.","Mari bangun sesuatu yang layak diandalkan.","让我们共同构建值得依赖的系统。"],"final.copy":["One accountable technology partner across engineering, growth, security, and digital infrastructure.","Satu partner teknologi yang akuntabel untuk engineering, growth, keamanan, dan infrastruktur digital.","一个对结果负责的技术合作方，覆盖工程、增长、安全与数字基础设施。"],"foot.nav":["Navigate","Navigasi","导航"],"foot.cap":["Capabilities","Keahlian","核心能力"],"foot.con":["Contact","Kontak","联系"],"foot.plugins":["Custom Plugins","Plugin Kustom","定制插件"],"foot.themes":["Custom Themes","Tema Kustom","定制主题"],"foot.addons":["Add-ons & Care Plans","Add-on & Paket Perawatan","附加服务与维护计划"],"foot.rights":["All rights reserved.","Hak cipta dilindungi.","保留所有权利。"],"dock.group":["Quick contact","Kontak cepat","快速联系"],"dock.wa":["Chat on WhatsApp","Chat via WhatsApp","通过 WhatsApp 洽谈"],"dock.maps":["Open in Google Maps","Buka di Google Maps","在 Google 地图中打开"],"dock.call":["Call now","Telepon sekarang","立即致电"],"wa.general":["Hi Adtyaa, I found your article on Digital Advertiser Singapore Indonesia and I'd like to discuss a paid ads project.","Hi Adtyaa, I found your article on Digital Advertiser Singapore Indonesia and I'd like to discuss a paid ads project.","Hi Adtyaa, I found your article on Digital Advertiser Singapore Indonesia and I'd like to discuss a paid ads project."],"wa.article":["Hi Adtyaa, I read your article on Digital Advertiser Singapore Indonesia and I'd like to request a proposal for a Google & Meta Ads campaign from Singapore into Indonesia.","Hi Adtyaa, I read your article on Digital Advertiser Singapore Indonesia and I'd like to request a proposal for a Google & Meta Ads campaign from Singapore into Indonesia.","Hi Adtyaa, I read your article on Digital Advertiser Singapore Indonesia and I'd like to request a proposal for a Google & Meta Ads campaign from Singapore into Indonesia."],"a.home":["Home","Beranda","首页"],"a.crumb":["Digital Advertiser Singapore Indonesia","Digital Advertiser Singapore Indonesia","新加坡与印尼数字广告投放"],"a.h1a":["How B2B Brands Run Paid Ads in Singapore & Indonesia:","Cara Brand B2B Menjalankan Iklan Berbayar di Singapura & Indonesia:","B2B 品牌如何在新加坡与印尼投放付费广告："],"a.h1b":["A Cross-Border Guide","Panduan Lintas Negara","跨境指南"],"a.m1":["By Adtyaa","Oleh Adtyaa","作者：Adtyaa"],"a.m2":["9 October 2026","9 Oktober 2026","2026 年 10 月 9 日"],"a.m3":["8 min read","Baca 8 menit","阅读约 8 分钟"],"a.lead":["Digital advertiser Singapore Indonesia is a search that usually starts with one need: a Singapore brand wants paid ads that reach Indonesian buyers without wasting budget. The work looks simple on a platform dashboard, but two markets, two currencies, and two buying behaviors make it a discipline of its own. This guide explains how cross-border paid campaigns are structured, run, and measured.","Digital advertiser Singapore Indonesia adalah pencarian yang biasanya berawal dari satu kebutuhan: brand Singapura ingin iklan berbayar yang menjangkau pembeli Indonesia tanpa membuang anggaran. Di dashboard platform tampak sederhana, tetapi dua pasar, dua mata uang, dan dua perilaku pembelian menjadikannya disiplin tersendiri. Panduan ini menjelaskan bagaimana kampanye berbayar lintas negara disusun, dijalankan, dan diukur.","“新加坡与印尼数字广告投放”这类搜索，通常源于一个需求：新加坡品牌希望用付费广告触达印尼买家，同时不浪费预算。在平台后台看似简单，但两个市场、两种货币和两种购买行为，使其成为一门独立的专业工作。本文介绍跨境付费广告如何搭建、运营与衡量。"],"a.key.t":["Key takeaway","Intinya","核心要点"],"a.key.c":["Run Singapore and Indonesia as separate campaigns with their own budgets, language, and tracking. Google captures existing demand, Meta builds reach, and both are judged by qualified leads rather than clicks.","Jalankan Singapura dan Indonesia sebagai kampanye terpisah dengan anggaran, bahasa, dan pelacakan masing-masing. Google menangkap permintaan yang sudah ada, Meta membangun jangkauan, dan keduanya dinilai dari lead berkualitas, bukan klik.","将新加坡与印尼作为独立的广告活动运营，各自拥有预算、语言与追踪。Google 捕捉既有需求，Meta 扩大触达，二者都以有效线索而非点击量来评估。"],"a.img.alt":["Digital advertiser presenting a Google and Meta Ads campaign plan for Singapore brands entering Indonesia","Digital advertiser mempresentasikan rencana kampanye Google dan Meta Ads untuk brand Singapura yang masuk ke Indonesia","数字广告投放专员为进入印尼的新加坡品牌展示 Google 与 Meta 广告方案"],"a.img.cap":["A digital advertiser walks a team through campaign data for the Singapore and Indonesia markets.","Seorang digital advertiser memaparkan data kampanye untuk pasar Singapura dan Indonesia kepada tim.","数字广告投放专员向团队讲解新加坡与印尼两个市场的广告数据。"],"a.toc":["In this article","Dalam artikel ini","本文内容"],"toc1":["What a digital advertiser does","Peran seorang digital advertiser","数字广告投放专员的职责"],"toc2":["Scope of work across two markets","Lingkup kerja di dua pasar","跨两个市场的工作范围"],"toc3":["Google and Meta: who does what","Google dan Meta: pembagian peran","Google 与 Meta：各自分工"],"toc4":["Budgets, bidding, and testing","Anggaran, bidding, dan pengujian","预算、出价与测试"],"toc5":["The local playbook for Indonesia","Strategi lokal untuk Indonesia","印尼本地化策略"],"toc6":["How to evaluate an agency","Cara menilai agensi","如何评估服务机构"],"toc7":["Frequently asked questions","Pertanyaan yang sering diajukan","常见问题"],"s1.h":["What a digital advertiser does when budgets cross borders","Peran digital advertiser ketika anggaran melintasi negara","预算跨境时，数字广告投放专员做什么"],"s1.p1":["A digital advertiser for Singapore and Indonesia covers account structure, targeting, creative direction, budget control, and tracking. Every ad also has to follow platform rules, so the official guidance in [Google Ads Help<\/a> and the](https://support.google.com/google-ads) [Meta Business Help Centre<\/a> belongs in the working checklist, not in an afterthought.","Digital advertiser untuk Singapura dan Indonesia mencakup struktur akun, targeting, arahan kreatif, kontrol anggaran, dan pelacakan. Setiap iklan juga harus mengikuti aturan platform, sehingga panduan resmi di](https://www.facebook.com/business/help) [Google Ads Help<\/a> dan](https://support.google.com/google-ads) [Meta Business Help Centre<\/a> masuk dalam daftar kerja, bukan sekadar pelengkap.","面向新加坡与印尼的数字广告投放，涵盖账户结构、定向、创意方向、预算控制与追踪。每条广告还必须遵守平台规则，因此](https://www.facebook.com/business/help) [Google Ads 帮助中心<\/a>与](https://support.google.com/google-ads) [Meta 商业帮助中心<\/a>的官方指引，应列入日常工作清单，而不是事后补充。"],"s1.p2":["The distinction matters because Singapore and Indonesia rarely respond to the same campaign. Search volume, cost per click, language, and the path from first click to first conversation all differ, so each market needs its own plan.","Perbedaan ini penting karena Singapura dan Indonesia jarang merespons kampanye yang sama. Volume pencarian, biaya per klik, bahasa, dan jalur dari klik pertama sampai percakapan pertama berbeda, sehingga setiap pasar membutuhkan rencananya sendiri.","这一区分很重要，因为新加坡与印尼很少对同一套广告做出相同反应。搜索量、单次点击成本、语言，以及从首次点击到首次沟通的路径都不同，每个市场都需要独立的方案。"],"s2.h":["Jasa digital advertiser Singapore Indonesia: scope of work","Jasa digital advertiser Singapore Indonesia: lingkup pekerjaan","新加坡与印尼数字广告投放服务（Jasa Digital Advertiser Singapore Indonesia）：工作范围"],"s2.p":["A jasa digital advertiser Singapore Indonesia engagement should be written down as four connected workstreams, so both sides know what is delivered and how it is reviewed.","Kerja sama jasa digital advertiser Singapore Indonesia sebaiknya dituliskan sebagai empat alur kerja yang saling terhubung, agar kedua pihak tahu apa yang dikirim dan bagaimana ditinjau.","新加坡与印尼数字广告投放服务（jasa digital advertiser Singapore Indonesia）的合作，应以书面形式列明四条相互衔接的工作线，让双方清楚交付内容与评审方式。"],"s2.1t":["Account structure","Struktur akun","账户结构"],"s2.1c":["Separate campaigns per market, product, and funnel stage, with clear naming.","Kampanye terpisah per pasar, produk, dan tahap funnel, dengan penamaan yang jelas.","按市场、产品与漏斗阶段分设广告活动，并保持清晰命名。"],"s2.2t":["Creative and message","Kreatif dan pesan","创意与信息"],"s2.2c":["Ad copy and landing pages written natively in English and Bahasa Indonesia.","Copy iklan dan landing page ditulis natural dalam bahasa Inggris dan Bahasa Indonesia.","广告文案与落地页分别以地道的英语和印尼语撰写。"],"s2.3t":["Audience and targeting","Audiens dan targeting","受众与定向"],"s2.3c":["Keyword, location, and role-based audiences matched to the buyer, not the broadest reach.","Audiens berbasis kata kunci, lokasi, dan jabatan yang sesuai dengan pembeli, bukan jangkauan terluas.","按关键词、地域与职位匹配真实买家，而不是追求最大覆盖。"],"s2.4t":["Tracking and reporting","Pelacakan dan pelaporan","追踪与报告"],"s2.4c":["Conversions recorded in one view, reported in English for the Singapore team.","Konversi dicatat dalam satu tampilan, dilaporkan dalam bahasa Inggris untuk tim Singapura.","转化统一记录在同一视图中，并以英文向新加坡团队汇报。"],"s3.h":["Google & Meta Ads specialist Singapore Indonesia: who does what","Google & Meta Ads specialist Singapore Indonesia: pembagian peran","Google 与 Meta 广告专员（新加坡—印尼）：各自分工"],"s3.p1":["Google Ads works best where demand already exists. Buyers who search for a service in Bahasa Indonesia or English show intent, and well-structured search campaigns put your offer in front of them at that moment.","Google Ads paling efektif di tempat permintaan sudah ada. Pembeli yang mencari layanan dalam Bahasa Indonesia atau Inggris menunjukkan intent, dan kampanye search yang tersusun baik menampilkan penawaran Anda pada saat itu.","Google Ads 在需求已经存在的地方效果最好。用印尼语或英语搜索服务的买家带有明确意向，结构合理的搜索广告能在那一刻把您的方案呈现给他们。"],"s3.p2":["Meta Ads works where demand has to be created. It reaches business owners and decision-makers before they search, and it supports retargeting for visitors who have already read your pages.","Meta Ads bekerja di tempat permintaan perlu diciptakan. Platform ini menjangkau pemilik bisnis dan pengambil keputusan sebelum mereka mencari, dan mendukung retargeting bagi pengunjung yang sudah membaca halaman Anda.","Meta Ads 适用于需要创造需求的场景。它能在决策者搜索之前就触达企业主与管理者，并支持对已浏览过您页面的访客进行再营销。"],"s3.l1":["Search campaigns for high-intent queries in both languages.","Kampanye search untuk kueri ber-intent tinggi dalam kedua bahasa.","针对两种语言的高意向搜索词投放搜索广告。"],"s3.l2":["Meta lead and traffic campaigns with retargeting for visitors who did not convert.","Kampanye lead dan traffic di Meta dengan retargeting bagi pengunjung yang belum konversi.","在 Meta 投放线索与流量广告，并对未转化访客进行再营销。"],"s3.l3":["Landing pages and tracking built to the same standard as the ads, as outlined in our](https://www.facebook.com/business/help) [growth systems capabilities<\/a>.","Landing page dan pelacakan dibangun dengan standar yang sama dengan iklannya, seperti dijelaskan pada](https://medikabyte.com/#capabilities) [kemampuan growth systems<\/a> kami.","落地页与追踪的建设标准与广告一致，详见我们的](https://medikabyte.com/#capabilities) [增长体系能力<\/a>。"],"s4.h":["Cross-border performance media buyer SG ID: budgets, bidding, and testing","Cross-border performance media buyer SG ID: anggaran, bidding, dan pengujian","跨境效果广告买手（新加坡—印尼）：预算、出价与测试"],"s4.p1":["A cross-border performance media buyer plans budgets per market rather than as one pooled amount. Costs per click and per lead differ between Singapore and Indonesia, and platforms bill in specific currencies, so exchange rates should be tracked in reporting from the first month.","Cross-border performance media buyer merencanakan anggaran per pasar, bukan satu dana gabungan. Biaya per klik dan per lead berbeda antara Singapura dan Indonesia, dan platform menagih dalam mata uang tertentu, sehingga nilai tukar perlu dicatat dalam laporan sejak bulan pertama.","跨境效果广告买手会按市场分别规划预算，而不是使用单一合并预算。新加坡与印尼的单次点击和单条线索成本不同，且平台以特定货币计费，因此从第一个月起就应在报告中跟踪汇率。"],"s4.p2":["Testing follows a fixed rhythm: one variable at a time, enough data before a decision, and a written note of what was learned. Campaigns are judged on qualified leads and the cost to acquire them, not on impressions.","Pengujian mengikuti ritme yang tetap: satu variabel dalam satu waktu, data yang cukup sebelum keputusan, dan catatan tertulis tentang apa yang dipelajari. Kampanye dinilai dari lead berkualitas dan biaya mendapatkannya, bukan dari impresi.","测试遵循固定节奏：一次只改变一个变量，积累足够数据后再决策，并书面记录所学。评判广告的标准是有效线索及其获取成本，而不是曝光量。"],"s4.l1":["Cost per qualified lead and lead-to-meeting rate for B2B enquiries.","Biaya per qualified lead dan rasio lead ke meeting untuk enquiry B2B.","B2B 询盘的单条有效线索成本与线索到会议转化率。"],"s4.l2":["Return on ad spend where the sale happens online.","Return on ad spend bila penjualan terjadi online.","线上成交场景下的广告支出回报率。"],"s4.l3":["Monthly review and quarterly budget reallocation between the two markets.","Tinjauan bulanan dan realokasi anggaran per kuartal antara kedua pasar.","每月复盘，并按季度在两个市场之间重新分配预算。"],"s5.h":["Agensi paid ads ekspansi pasar Singapore Indonesia: the local playbook","Agensi paid ads ekspansi pasar Singapore Indonesia: strategi lokal","印尼市场扩张的付费广告机构（Agensi Paid Ads Ekspansi Pasar Singapore Indonesia）：本地化策略"],"s5.p1":["An agensi paid ads for Singapore–Indonesia market expansion adapts the campaign to how Indonesian buyers actually decide. These are the elements that most often change between the two markets:","Agensi paid ads untuk ekspansi pasar Singapore Indonesia menyesuaikan kampanye dengan cara pembeli Indonesia mengambil keputusan. Berikut elemen yang paling sering berubah antara kedua pasar:","面向新加坡—印尼市场扩张的付费广告机构（agensi paid ads），会让广告贴合印尼买家的实际决策方式。以下是两个市场之间最常需要调整的要素："],"s5.l1":["Native Bahasa Indonesia ad copy, reviewed by a local editor.","Copy iklan Bahasa Indonesia yang natural, ditinjau editor lokal.","由本地编辑审校的原生印尼语广告文案。"],"s5.l2":["WhatsApp as a primary contact option in the conversion path.","WhatsApp sebagai opsi kontak utama dalam alur konversi.","在转化路径中将 WhatsApp 作为主要联系方式。"],"s5.l3":["Local payment methods wherever the campaign leads to a purchase.","Metode pembayaran lokal bila kampanye mengarah pada pembelian.","当广告指向购买时，提供本地支付方式。"],"s5.l4":["Mobile-first landing pages with fast load times.","Landing page mobile-first dengan waktu muat cepat.","移动优先、加载快速的落地页。"],"s5.l5":["Offers and proof points framed for Indonesian buyers, not translated from Singapore.","Penawaran dan bukti pendukung disusun untuk pembeli Indonesia, bukan terjemahan dari Singapura.","面向印尼买家构建的优惠与佐证内容，而非照搬新加坡版本的翻译。"],"s5.p2":["For how an engagement moves from discovery to optimization, see the](https://medikabyte.com/#capabilities) [approach<\/a> used across ADTYAA projects.","Untuk memahami bagaimana kerja sama berjalan dari discovery hingga optimasi, lihat](https://medikabyte.com/#approach) [pendekatan<\/a> yang dipakai di seluruh proyek ADTYAA.","合作如何从探索走到优化，请见 ADTYAA 各项目所采用的](https://medikabyte.com/#approach) [合作流程<\/a>。"],"s6.h":["Performance advertising agency for SG brands in Indonesia: how to evaluate one","Performance advertising agency untuk brand SG di Indonesia: cara menilainya","为进入印尼的新加坡品牌选择效果广告机构：评估要点"],"s6.p1":["When comparing a performance advertising agency for SG brands in Indonesia, look for clarity rather than claims: a written scope, defined milestones, direct senior involvement, reporting tied to qualified leads, and access to your own ad accounts so the data always stays with you.","Saat membandingkan performance advertising agency untuk brand SG di Indonesia, cari kejelasan, bukan klaim: lingkup tertulis, milestone yang jelas, keterlibatan langsung tenaga senior, pelaporan yang terkait lead berkualitas, dan akses ke akun iklan milik Anda sehingga data selalu tetap pada Anda.","比较面向新加坡品牌进入印尼的效果广告机构时，应看重清晰度而非口号：书面范围、明确里程碑、资深人员直接参与、与有效线索挂钩的报告，以及由您自己持有广告账户，让数据始终留在您手中。"],"s6.p2":["That is the model behind ADTYAA: advertising, search, engineering, and security under one accountable partner. Review the](https://medikabyte.com/#approach) [capabilities<\/a> to see how paid ads connect to the rest of the digital system.","Itulah model di balik ADTYAA: iklan, search, engineering, dan keamanan di bawah satu partner yang akuntabel. Lihat](https://medikabyte.com/#capabilities) [keahlian<\/a> kami untuk memahami bagaimana iklan berbayar terhubung dengan sistem digital lainnya.","这正是 ADTYAA 的模式：广告、搜索、工程与安全统一由一个对结果负责的合作方承担。请查看](https://medikabyte.com/#capabilities) [核心能力<\/a>，了解付费广告如何与整个数字系统衔接。"],"cta.t":["Planning paid ads for Indonesia?","Merencanakan iklan berbayar untuk Indonesia?","正在规划印尼市场的付费广告？"],"cta.c":["Share your target market, budget range, and goal. You receive a written proposal with a defined scope, and every enquiry is answered within 24 hours.","Sampaikan target pasar, kisaran anggaran, dan tujuan Anda. Anda menerima proposal tertulis dengan lingkup yang jelas, dan setiap pesan dibalas dalam 24 jam.","请告知目标市场、预算范围与目标。您将收到范围明确的书面方案，每条咨询均在 24 小时内回复。"],"cta.b1":["Request a campaign proposal","Minta proposal kampanye","获取广告方案"],"cta.b2":["Send a project brief","Kirim brief proyek","提交项目简报"],"faq.h":["Frequently asked questions","Pertanyaan yang sering diajukan","常见问题"],"q1":["Do Singapore and Indonesia need separate ad campaigns?","Apakah Singapura dan Indonesia membutuhkan kampanye iklan terpisah?","新加坡与印尼需要分开投放广告吗？"],"r1":["Yes. Separate campaigns allow separate budgets, languages, bidding, and tracking, and they make results from each market easy to compare.","Ya. Kampanye terpisah memungkinkan anggaran, bahasa, bidding, dan pelacakan yang terpisah, serta memudahkan perbandingan hasil tiap pasar.","需要。分开的广告活动可以分别设置预算、语言、出价与追踪，也便于比较两个市场的结果。"],"q2":["Should Google Ads or Meta Ads come first?","Mana yang didahulukan, Google Ads atau Meta Ads?","应先投放 Google Ads 还是 Meta Ads？"],"r2":["Most B2B brands start with Google Ads to capture existing search demand, then add Meta Ads for reach and retargeting once tracking is in place.","Kebanyakan brand B2B memulai dengan Google Ads untuk menangkap permintaan pencarian yang ada, lalu menambahkan Meta Ads untuk jangkauan dan retargeting setelah pelacakan berjalan.","多数 B2B 品牌先用 Google Ads 捕捉既有搜索需求，待追踪就绪后，再加入 Meta Ads 扩大触达并做再营销。"],"q3":["Who manages the Indonesian ad accounts day to day?","Siapa yang mengelola akun iklan Indonesia sehari-hari?","印尼广告账户由谁日常管理？"],"r3":["A named specialist runs the campaigns remotely, writes ad copy in Indonesian where needed, and sends English summaries to your team. The accounts themselves remain in your name.","Seorang spesialis bernama menjalankan kampanye secara jarak jauh, menulis copy iklan dalam bahasa Indonesia bila perlu, dan mengirim ringkasan berbahasa Inggris ke tim Anda. Akun iklannya tetap atas nama Anda.","由一位具名专员远程运营广告活动，必要时以印尼语撰写文案，并向您的团队发送英文摘要。广告账户始终登记在您名下。"],"q4":["How soon can campaigns launch?","Seberapa cepat kampanye bisa diluncurkan?","广告多久可以上线？"],"r4":["After discovery and a written proposal, launch follows once tracking, landing pages, and creatives are approved. The proposal sets the launch date.","Setelah discovery dan proposal tertulis, peluncuran dilakukan begitu pelacakan, landing page, dan kreatif disetujui. Proposal menetapkan tanggal peluncuran.","完成探索并出具书面方案后，待追踪、落地页与创意获批即可上线，方案会确定上线日期。"],"au.name":["Adtyaa, Founder of](https://medikabyte.com/#capabilities) [DJURAGAN IKLAN ID<\/a>","Adtyaa, Founder of](https://maps.app.goo.gl/YRw1yaWB5xfHcjwq5) [DJURAGAN IKLAN ID<\/a>","Adtyaa，](https://maps.app.goo.gl/YRw1yaWB5xfHcjwq5) [DJURAGAN IKLAN ID<\/a> 创始人"],"au.bio":["Builds websites, SEO, and paid advertising systems for businesses that depend on their digital presence.","Membangun website, SEO, dan sistem iklan berbayar untuk bisnis yang bergantung pada kehadiran digitalnya.","为依赖数字业务的企业构建网站、SEO 与付费广告体系。"],"au.cta":["Request a campaign proposal","Minta proposal kampanye","获取广告方案"],"au.alt":["Adtyaa, author of the Digital Advertiser Singapore Indonesia guide","Adtyaa, penulis panduan Digital Advertiser Singapore Indonesia","Adtyaa，《新加坡与印尼数字广告投放》指南作者"]}; var LI = { en: 0, id: 1, zh: 2 }; var L = "en"; var PHONE = "6281411188809", MAIL = "hallo@adtyaa.cloud";](https://maps.app.goo.gl/YRw1yaWB5xfHcjwq5)

function $(sel, ctx) { return Array.prototype.slice.call((ctx || root).querySelectorAll(sel)); } function byId(id) { return document.getElementById(id); } function t(key, lang) { var e = D[key]; if (!e) { return key; } var v = e[LI[lang || L]]; return (v === undefined || v === "") ? e[0] : v; } function msgLang() { return "en"; } function waUrl(m) { return "https://wa.me/" + PHONE + "?text=" + encodeURIComponent(m); }

/* ---------- language (EN default, ID, 中文) ---------- */ var scLoaded = false; function loadSC() { if (scLoaded) { return; } scLoaded = true; var l = document.createElement("link"); l.rel = "stylesheet"; l.href = "https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@300;400;500;700&display=swap"; document.head.appendChild(l); } function apply() { if (L === "zh") { loadSC(); } document.documentElement.setAttribute("lang", L === "zh" ? "zh-Hans" : L); root.setAttribute("data-l", L); $("[data-i18n]").forEach(function (el) { el.textContent = t(el.getAttribute("data-i18n")); }); $("[data-i18n-html]").forEach(function (el) { el.innerHTML = t(el.getAttribute("data-i18n-html")); }); $("[data-i18n-alt]").forEach(function (el) { el.setAttribute("alt", t(el.getAttribute("data-i18n-alt"))); }); $("[data-i18n-title]").forEach(function (el) { el.setAttribute("title", t(el.getAttribute("data-i18n-title"))); }); $("[data-i18n-aria]").forEach(function (el) { el.setAttribute("aria-label", t(el.getAttribute("data-i18n-aria"))); }); $("[data-wa]").forEach(function (el) { el.setAttribute("href", waUrl(t(el.getAttribute("data-wa"), msgLang()))); }); $("[data-lang]").forEach(function (b) { b.setAttribute("aria-pressed", b.getAttribute("data-lang") === L ? "true" : "false"); }); var st = byId("fs"); if (st) { st.textContent = ""; st.classList.remove("err"); } }

root.addEventListener("click", function (e) { var b = e.target.closest ? e.target.closest("[data-lang]") : null; if (!b) { return; } L = b.getAttribute("data-lang"); apply(); });

(function initLang() { var pick = null; try { var q = new URLSearchParams(window.location.search || "").get("lang"); if (q && LI[q] !== undefined) { pick = q; } } catch (x) {} if (pick) { L = pick; } })();

/* ---------- header + mobile menu ---------- */ var hd = byId("hd"), bg = byId("bg"), mn = byId("mn"); var bar = root.querySelector(".prog span"); var ticking = false; function onScroll() { ticking = false; if (hd) { hd.classList.toggle("sc", window.scrollY > 8); } if (bar) { var h = document.documentElement.scrollHeight - window.innerHeight; var p = h > 0 ? Math.min(1, Math.max(0, window.scrollY / h)) : 0; bar.style.transform = "scaleX(" + p.toFixed(4) + ")"; } } window.addEventListener("scroll", function () { if (!ticking) { ticking = true; window.requestAnimationFrame(onScroll); } }, { passive: true }); onScroll();

function closeMenu() { if (mn) { mn.classList.remove("on"); } if (bg) { bg.setAttribute("aria-expanded", "false"); } } if (bg && mn) { bg.addEventListener("click", function () { var on = mn.classList.toggle("on"); bg.setAttribute("aria-expanded", on ? "true" : "false"); }); mn.addEventListener("click", function (e) { if (e.target.closest && e.target.closest("a")) { closeMenu(); } }); } document.addEventListener("keydown", function (e) { if (e.key === "Escape") { closeMenu(); } }); window.addEventListener("resize", function () { if (window.innerWidth > 1000) { closeMenu(); } });

/* ---------- contact form (no server) ---------- */ var form = byId("cf"); if (form) { var fs = byId("fs"); var val = function (id) { var el = byId(id); return el ? el.value.trim() : ""; }; var optText = function (id) { var el = byId(id); if (!el || !el.value) { return ""; } var key = el.options[el.selectedIndex].getAttribute("data-i18n"); return key ? t(key, msgLang()) : el.options[el.selectedIndex].text; }; var setStatus = function (key, err) { fs.textContent = key ? t(key) : ""; fs.classList.toggle("err", !!err); }; var validate = function () { var ok = true; ["f-name", "f-service"].forEach(function (id) { var el = byId(id), bad = !el.value.trim(); el.setAttribute("aria-invalid", bad ? "true" : "false"); if (bad) { ok = false; } }); return ok; }; var compose = function () { var ml = msgLang(), lines = [t("wa.general", ml), ""]; var add = function (k, v) { if (v) { lines.push(t(k, ml) + ": " + v); } }; add("m.name", val("f-name")); add("m.email", val("f-email")); add("m.wa", val("f-wa")); add("m.url", val("f-url")); add("m.service", optText("f-service")); add("m.eng", optText("f-eng")); add("m.time", optText("f-time")); var m = val("f-msg"); if (m) { lines.push(""); lines.push(t("m.msg", ml) + ":"); lines.push(m); } return lines.join("\n"); }; byId("send-wa").addEventListener("click", function () { if (!validate()) { setStatus("f.err", true); return; } setStatus("f.okwa", false); window.open(waUrl(compose()), "_blank", "noopener"); }); byId("send-mail").addEventListener("click", function () { if (!validate()) { setStatus("f.err", true); return; } setStatus("f.okmail", false); var subject = t("m.subject", msgLang()) + " - " + val("f-name"); window.location.href = "mailto:" + MAIL + "?subject=" + encodeURIComponent(subject) + "&body=" + encodeURIComponent(compose()); }); form.addEventListener("submit", function (e) { e.preventDefault(); byId("send-wa").click(); }); ["f-name", "f-service"].forEach(function (id) { var el = byId(id); var clear = function () { if (el.value.trim()) { el.setAttribute("aria-invalid", "false"); } }; el.addEventListener("input", clear); el.addEventListener("change", clear); }); }

apply();

/* ---------- motion (respects reduced motion) ---------- */ var reduce = window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches;

/* ---------- particle field (article header + final CTA) ---------- */ function initFx(host) { if (!host) { return; } var cv = document.createElement("canvas"); cv.className = "fx"; cv.setAttribute("aria-hidden", "true"); host.insertBefore(cv, host.firstChild); var ctx = cv.getContext("2d"); if (!ctx) { return; } var W = 1, H = 1, stars = [], dust = [], nodes = [], mx = -9999, my = -9999, onScreen = true; var sprite = document.createElement("canvas"); sprite.width = sprite.height = 48; var sg = sprite.getContext("2d"), grad = sg.createRadialGradient(24, 24, 0, 24, 24, 24); grad.addColorStop(0, "rgba(255,243,209,1)"); grad.addColorStop(.25, "rgba(230,200,140,.55)"); grad.addColorStop(1, "rgba(201,164,92,0)"); sg.fillStyle = grad; sg.fillRect(0, 0, 48, 48); function rnd(a, b) { return a + Math.random() * (b - a); } function seed() { var a = W * H, i; stars = []; dust = []; nodes = []; for (i = 0; i < Math.round(a / 9000); i++) { stars.push({ x: rnd(0, W), y: rnd(0, H), r: rnd(.3, 1.05), p: rnd(0, 6.28), s: rnd(.5, 1.6) }); } for (i = 0; i < Math.round(Math.min(46, 16 + a / 42000)); i++) { dust.push({ x: rnd(0, W), y: rnd(0, H), r: rnd(1.4, 3.6), vy: rnd(.1, .38), vx: rnd(-.07, .07), a: rnd(.25, .65), p: rnd(0, 6.28) }); } for (i = 0; i < Math.round(Math.min(64, Math.max(20, a / 24000))); i++) { nodes.push({ x: rnd(0, W), y: rnd(0, H), vx: rnd(-.12, .12), vy: rnd(-.1, .1) }); } } function size() { var r = host.getBoundingClientRect(), dpr = Math.min(window.devicePixelRatio || 1, 2); W = Math.max(1, r.width); H = Math.max(1, r.height); cv.width = Math.round(W * dpr); cv.height = Math.round(H * dpr); ctx.setTransform(dpr, 0, 0, dpr, 0, 0); seed(); draw(0, true); } function draw(t, still) { var i, j, n, m, dx, dy, d, al; ctx.clearRect(0, 0, W, H); for (i = 0; i < stars.length; i++) { n = stars[i]; al = .2 + .6 * (.5 + .5 * Math.sin(t * .001 * n.s + n.p)); ctx.fillStyle = "rgba(243,232,205," + (al * .75).toFixed(3) + ")"; ctx.beginPath(); ctx.arc(n.x, n.y, n.r, 0, 6.2832); ctx.fill(); } for (i = 0; i < nodes.length; i++) { n = nodes[i]; if (!still) { n.x += n.vx; n.y += n.vy; if (n.x < -10) { n.x = W + 10; } else if (n.x > W + 10) { n.x = -10; } if (n.y < -10) { n.y = H + 10; } else if (n.y > H + 10) { n.y = -10; } } for (j = i + 1; j < nodes.length; j++) { m = nodes[j]; dx = n.x - m.x; dy = n.y - m.y; if (dx > 150 || dx < -150 || dy > 150 || dy < -150) { continue; } d = Math.sqrt(dx * dx + dy * dy); if (d < 150) { ctx.strokeStyle = "rgba(217,188,130," + ((1 - d / 150) * .2).toFixed(3) + ")"; ctx.lineWidth = .7; ctx.beginPath(); ctx.moveTo(n.x, n.y); ctx.lineTo(m.x, m.y); ctx.stroke(); } } dx = n.x - mx; dy = n.y - my; d = Math.sqrt(dx * dx + dy * dy); if (d < 190) { ctx.strokeStyle = "rgba(246,231,189," + ((1 - d / 190) * .5).toFixed(3) + ")"; ctx.lineWidth = .9; ctx.beginPath(); ctx.moveTo(n.x, n.y); ctx.lineTo(mx, my); ctx.stroke(); } ctx.fillStyle = "rgba(230,205,150,.7)"; ctx.beginPath(); ctx.arc(n.x, n.y, 1.25, 0, 6.2832); ctx.fill(); } for (i = 0; i < dust.length; i++) { n = dust[i]; if (!still) { n.y -= n.vy; n.x += n.vx + Math.sin(t * .0006 + n.p) * .12; if (n.y < -12) { n.y = H + 12; n.x = rnd(0, W); } } ctx.globalAlpha = n.a * (.65 + .35 * Math.sin(t * .0012 + n.p)); ctx.drawImage(sprite, n.x - n.r * 3, n.y - n.r * 3, n.r * 6, n.r * 6); } ctx.globalAlpha = 1; } function loop(ts) { if (onScreen && !document.hidden) { draw(ts, false); } window.requestAnimationFrame(loop); } size(); if ("ResizeObserver" in window) { new ResizeObserver(function () { size(); }).observe(host); } else { window.addEventListener("resize", size); } if (reduce) { return; } if ("IntersectionObserver" in window) { new IntersectionObserver(function (es) { es.forEach(function (en) { onScreen = en.isIntersecting; }); }, { rootMargin: "100px" }).observe(host); } host.addEventListener("pointermove", function (e) { var r = host.getBoundingClientRect(); mx = e.clientX - r.left; my = e.clientY - r.top; }); host.addEventListener("pointerleave", function () { mx = -9999; my = -9999; }); window.requestAnimationFrame(loop); } initFx(root.querySelector(".ah")); initFx(root.querySelector(".final")); if (reduce || !("IntersectionObserver" in window)) { return; } if (!document.body.classList.contains("elementor-editor-active")) { root.classList.add("js"); var rv = new IntersectionObserver(function (es) { es.forEach(function (en) { if (!en.isIntersecting) { return; } en.target.classList.add("in"); rv.unobserve(en.target); }); }, { threshold: 0, rootMargin: "0px 0px -6% 0px" }); $(".rv").forEach(function (el) { rv.observe(el); }); } })();

tetap bisa diseleksi/disalin. */ (function(){ 'use strict'; if(window.__cgOn)return;window.__cgOn=1; if(document.body&&document.body.classList.contains('elementor-editor-active'))return;

var doc=document,root=doc.documentElement; var EDITABLE="input,textarea,select,[contenteditable='true']"; var COPYABLE='.cm,address'; var WM_MS=5000; /* lama watermark tampil setelah screenshot terdeteksi */ var wm=null,wmTimer=0;

root.classList.add('cg-on');

function inEditable(el){return !!(el&&el.closest&&el.closest(EDITABLE))} function block(e){e.preventDefault()}

/* ---------- Watermark screenshot ---------- */ function showWatermark(){ if(!wm){ if(!doc.body)return; wm=doc.createElement('div'); wm.className='cg-wm'; wm.setAttribute('aria-hidden','true'); doc.body.appendChild(wm); } root.classList.add('cg-shot'); clearTimeout(wmTimer); wmTimer=setTimeout(function(){root.classList.remove('cg-shot')},WM_MS); }

/* ---------- Print ---------- */ function printOn(){root.classList.add('cg-print')} function printOff(){root.classList.remove('cg-print')} window.addEventListener('beforeprint',printOn); window.addEventListener('afterprint',printOff); if(window.matchMedia){ var mq=window.matchMedia('print'); var onMq=function(e){e.matches?printOn():printOff()}; if(mq.addEventListener)mq.addEventListener('change',onMq); else if(mq.addListener)mq.addListener(onMq); }

/* ---------- Mouse / seleksi ---------- */ doc.addEventListener('contextmenu',function(e){ if(!inEditable(e.target))block(e); });

doc.addEventListener('dragstart',block);

doc.addEventListener('selectstart',function(e){ var t=e.target&&e.target.nodeType===1?e.target:(e.target&&e.target.parentElement); if(inEditable(t)||(t&&t.closest&&t.closest(COPYABLE)))return; block(e); });

/* ---------- Keyboard ---------- */ doc.addEventListener('keydown',function(e){ var k=e.code,mod=e.ctrlKey||e.metaKey,stop=false;

/* Screenshot: PrintScreen, Cmd+Shift+3/4/5/6 (Mac), Win+Shift+S */ if(k==='PrintScreen'||e.key==='PrintScreen'|| (e.metaKey&&e.shiftKey&&(k==='Digit3'||k==='Digit4'||k==='Digit5'||k==='Digit6'||k==='KeyS'))){ showWatermark(); }

if(k==='F12'){ stop=true; }else if(mod&&!e.altKey&&(k==='KeyP'||(!e.shiftKey&&(k==='KeyS'||k==='KeyU')))){ stop=true; /* Ctrl/Cmd + P (print), S, U */ }else if( (mod&&e.shiftKey&&(k==='KeyI'||k==='KeyJ'||k==='KeyC'))|| /* Ctrl/Cmd + Shift + I, J, C */ (e.metaKey&&e.altKey&&(k==='KeyI'||k==='KeyJ'||k==='KeyC'||k==='KeyU')) /* Cmd + Option + I, J, C, U (Mac) */ ){ stop=true; } if(stop){block(e);e.stopPropagation()} },true);

/* Di Windows, PrintScreen sering hanya mengirim keyup */ doc.addEventListener('keyup',function(e){ if(e.code==='PrintScreen'||e.key==='PrintScreen')showWatermark(); },true);

/* Desktop saja: bila panel dev tools terbuka (docked), bersihkan console saat jendela di-resize */ if(window.matchMedia&&window.matchMedia('(hover:hover) and (pointer:fine)').matches){ var raf=0; window.addEventListener('resize',function(){ if(raf)return; raf=requestAnimationFrame(function(){ raf=0; if((window.outerWidth-window.innerWidth>200||window.outerHeight-window.innerHeight>260)&&window.console&&console.clear){console.clear()} }); },{passive:true}); } }());
