{"title":"Bahasa Inggris Bayar Sesuai Pemakaian! | Kelas bahasa Inggris online yang fleksibel","description":"\u003cstyle\u003e\n .rc-adults-wrap{\n   max-width:1080px;\n   margin:0 auto;\n   padding:18px 18px 40px;\n   color:#1f2937;\n   line-height:1.74;\n }\n\n .rc-adults-hero{\n   position:relative;\n   overflow:hidden;\n   border-radius:30px;\n   padding:34px 26px 30px;\n   background:\n     radial-gradient(circle at top left, rgba(147,197,253,.42) 0%, rgba(147,197,253,0) 30%),\n     radial-gradient(circle at bottom right, rgba(196,181,253,.30) 0%, rgba(196,181,253,0) 28%),\n     linear-gradient(135deg, #f8fbff 0%, #eef6ff 52%, #f8f7ff 100%);\n   border:1px solid rgba(0,0,0,.06);\n   box-shadow:0 18px 40px rgba(0,0,0,.06);\n   margin-bottom:22px;\n }\n\n .rc-adults-hero-grid{\n   display:grid;\n   grid-template-columns:1.35fr .95fr;\n   gap:24px;\n   align-items:center;\n }\n\n .rc-adults-hero h1{\n   margin:0 0 12px;\n   font-size:clamp(2rem, 4vw, 3.2rem);\n   line-height:1.08;\n   letter-spacing:-.02em;\n }\n\n .rc-adults-sub{\n   font-size:1.08rem;\n   color:#4b5563;\n   max-width:730px;\n   margin:0 0 18px;\n }\n\n .rc-adults-highlight{\n   display:inline-block;\n   padding:14px 18px;\n   border-radius:18px;\n   background:linear-gradient(135deg, #ffffff 0%, #f7fbff 100%);\n   border:1px solid rgba(29,78,216,.10);\n   box-shadow:0 10px 24px rgba(29,78,216,.08);\n   font-weight:700;\n   color:#1e3a8a;\n   margin-bottom:16px;\n }\n\n .rc-adults-buttons{\n   display:flex;\n   flex-wrap:wrap;\n   gap:12px;\n   margin-top:10px;\n }\n\n .rc-adults-btn{\n   display:inline-block;\n   padding:12px 18px;\n   border-radius:999px;\n   text-decoration:none;\n   font-weight:800;\n   border:1px solid rgba(0,0,0,.08);\n   box-shadow:0 8px 18px rgba(0,0,0,.06);\n   transition:transform .15s ease, opacity .15s ease, box-shadow .15s ease;\n }\n\n .rc-adults-btn:hover{\n   transform:translateY(-1px);\n   opacity:.96;\n   box-shadow:0 12px 24px rgba(0,0,0,.08);\n }\n\n .rc-adults-btn-primary{\n   background:linear-gradient(145deg,#4fc8c4 0%,#2ca7b1 58%,#1f7d95 100%);\n   color:#fff !important;\n   border-color:rgba(16, 94, 105, .18);\n   box-shadow:0 10px 22px rgba(29, 120, 133, .18);\n }\n\n .rc-adults-btn-secondary{\n   background:linear-gradient(145deg,#ffffff 0%,#f2fcfc 100%);\n   color:#1f2937 !important;\n   border:1px solid rgba(80, 170, 180, .18);\n   box-shadow:0 10px 22px rgba(29, 120, 133, .08);\n }\n\n .rc-adults-bubbles{\n   position:relative;\n   min-height:355px;\n }\n\n .rc-adults-bubble{\n   position:absolute;\n   border-radius:24px;\n   padding:16px 18px;\n   box-shadow:0 18px 34px rgba(0,0,0,.08);\n   border:1px solid rgba(0,0,0,.05);\n   animation-timing-function:ease-in-out;\n   animation-iteration-count:infinite;\n   will-change:transform;\n }\n\n .rc-adults-bubble:before{\n   content:\"\";\n   position:absolute;\n   inset:0;\n   border-radius:24px;\n   box-shadow:inset 0 1px 0 rgba(255,255,255,.6);\n   pointer-events:none;\n }\n\n .rc-adults-bubble-a{\n   top:10px;\n   right:18px;\n   width:230px;\n   background:linear-gradient(145deg, #dbeafe 0%, #eff6ff 100%);\n   animation-name:rcAdultsFloatA;\n   animation-duration:8.8s;\n }\n\n .rc-adults-bubble-b{\n   top:120px;\n   left:8px;\n   width:210px;\n   background:linear-gradient(145deg, #fde68a 0%, #fff7cc 100%);\n   animation-name:rcAdultsFloatB;\n   animation-duration:9.5s;\n   animation-delay:.65s;\n }\n\n .rc-adults-bubble-c{\n   bottom:16px;\n   right:10px;\n   width:250px;\n   background:linear-gradient(145deg, #ddd6fe 0%, #f5f3ff 100%);\n   animation-name:rcAdultsFloatC;\n   animation-duration:8.9s;\n   animation-delay:1.1s;\n }\n\n .rc-adults-bubble-title{\n   font-weight:800;\n   margin:0 0 6px;\n   font-size:1rem;\n }\n\n .rc-adults-bubble p{\n   margin:0;\n   font-size:.98rem;\n }\n\n @keyframes rcAdultsFloatA{\n   0%{transform:translate3d(0,0,0) rotate(-1deg);}\n   50%{transform:translate3d(4px,-8px,0) rotate(1deg);}\n   100%{transform:translate3d(0,0,0) rotate(-1deg);}\n }\n\n @keyframes rcAdultsFloatB{\n   0%{transform:translate3d(0,0,0) rotate(1deg);}\n   50%{transform:translate3d(-5px,-7px,0) rotate(-1deg);}\n   100%{transform:translate3d(0,0,0) rotate(1deg);}\n }\n\n @keyframes rcAdultsFloatC{\n   0%{transform:translate3d(0,0,0) rotate(-.5deg);}\n   50%{transform:translate3d(3px,-9px,0) rotate(.8deg);}\n   100%{transform:translate3d(0,0,0) rotate(-.5deg);}\n }\n\n .rc-adults-grid{\n   display:grid;\n   grid-template-columns:repeat(3, minmax(0, 1fr));\n   gap:16px;\n   margin:0 0 24px;\n }\n\n .rc-adults-card{\n   background:linear-gradient(180deg, #ffffff 0%, #f4fcfc 100%);\n   border:1px solid rgba(80, 170, 180, .14);\n   border-radius:24px;\n   padding:20px 18px;\n   box-shadow:0 12px 28px rgba(29, 120, 133, .06);\n }\n\n .rc-adults-card h3{\n   margin:0 0 10px;\n   font-size:1.08rem;\n   line-height:1.3;\n }\n\n .rc-adults-card p{\n   margin:0;\n }\n\n .rc-adults-section{\n   margin-bottom:24px;\n }\n\n .rc-adults-section h2{\n   margin:0 0 12px;\n   font-size:1.5rem;\n   line-height:1.2;\n }\n\n .rc-adults-softbox{\n   background:linear-gradient(145deg, #ffffff 0%, #f5fcfc 100%);\n   border:1px solid rgba(80, 170, 180, .14);\n   border-radius:24px;\n   padding:20px 18px;\n   box-shadow:0 12px 28px rgba(29, 120, 133, .06);\n }\n\n .rc-adults-softbox p{\n   margin:0 0 12px;\n }\n\n .rc-adults-list{\n   margin:0;\n   padding-left:1.2rem;\n }\n\n .rc-adults-list li{\n   margin-bottom:10px;\n }\n\n .rc-adults-proof{\n   margin-top:12px;\n   padding:16px 18px;\n   border-radius:20px;\n   background:linear-gradient(145deg, #eefdfd 0%, #f5fffe 100%);\n   border:1px solid rgba(80, 170, 180, .16);\n   box-shadow:0 10px 24px rgba(29, 120, 133, .07);\n }\n\n .rc-adults-proof strong{\n   color:#0f5f66;\n }\n\n .rc-payg-shell{\n   background:linear-gradient(145deg, #ffffff 0%, #f3fbfb 100%);\n   border:1px solid rgba(80, 170, 180, .16);\n   border-radius:24px;\n   padding:20px 18px;\n   box-shadow:0 12px 28px rgba(29, 120, 133, .06);\n }\n\n .rc-payg-head{\n   display:flex;\n   align-items:flex-start;\n   justify-content:space-between;\n   gap:14px;\n   margin-bottom:2px;\n }\n\n .rc-payg-head h2{\n   margin:0 0 12px;\n }\n\n .rc-payg-head-ship{\n   flex:0 0 auto;\n   display:flex;\n   align-items:flex-start;\n   justify-content:center;\n   min-width:54px;\n   padding-top:2px;\n }\n\n .rc-payg-head-ship img{\n   display:block;\n   width:54px;\n   height:auto;\n   max-height:54px;\n   object-fit:contain;\n   filter:drop-shadow(0 4px 10px rgba(31,127,150,.16));\n }\n\n .rc-payg-topline{\n   margin:0 0 8px;\n   color:#4b5563;\n }\n\n .rc-payg-timezone{\n   display:inline-block;\n   margin:0 0 16px;\n   padding:8px 12px;\n   border-radius:999px;\n   background:linear-gradient(145deg,#f3ffff 0%,#e7fbfb 100%);\n   border:1px solid rgba(78, 170, 176, .22);\n   color:#116466;\n   font-weight:700;\n   font-size:.95rem;\n }\n\n .rc-payg-grid{\n   display:grid;\n   grid-template-columns:repeat(2, minmax(0, 1fr));\n   gap:14px;\n }\n\n .rc-payg-day{\n   border-radius:20px;\n   padding:16px;\n   background:linear-gradient(180deg, #ffffff 0%, #f7fefe 100%);\n   border:1px solid rgba(80, 170, 180, .12);\n   box-shadow:0 10px 22px rgba(29, 120, 133, .04);\n }\n\n .rc-payg-day h3{\n   margin:0 0 10px;\n   font-size:1.05rem;\n   color:#111827;\n }\n\n .rc-payg-slots{\n   margin:0;\n   padding-left:1.1rem;\n }\n\n .rc-payg-slots li{\n   margin-bottom:8px;\n }\n\n .rc-payg-note{\n   margin-top:14px;\n   color:#6b7280;\n   font-size:.96rem;\n }\n\n .rc-payg-empty,\n .rc-payg-loading,\n .rc-payg-error{\n   padding:14px 16px;\n   border-radius:18px;\n   background:linear-gradient(145deg,#ffffff 0%,#f5fdfd 100%);\n   border:1px solid rgba(80, 170, 180, .12);\n }\n\n .rc-payg-error{\n   background:#fff7f7;\n   border-color:rgba(185,28,28,.12);\n   color:#991b1b;\n }\n\n @media (max-width:920px){\n   .rc-adults-hero-grid{grid-template-columns:1fr;}\n   .rc-adults-bubbles{min-height:310px;}\n   .rc-adults-grid{grid-template-columns:1fr;}\n   .rc-payg-grid{grid-template-columns:1fr;}\n }\n\n @media (max-width:640px){\n   .rc-adults-hero{padding:26px 18px 24px;}\n   .rc-adults-bubbles{min-height:340px;}\n   .rc-adults-bubble-a,\n   .rc-adults-bubble-b,\n   .rc-adults-bubble-c{\n     position:relative;\n     top:auto;\n     left:auto;\n     right:auto;\n     bottom:auto;\n     width:auto;\n     margin-bottom:14px;\n   }\n\n   .rc-payg-head{\n     gap:10px;\n   }\n\n   .rc-payg-head-ship img{\n     width:48px;\n     max-height:48px;\n   }\n }\n\u003c\/style\u003e\n\n\u003cdiv class=\"rc-adults-wrap\"\u003e\n \u003csection class=\"rc-adults-hero\"\u003e\n   \u003cdiv class=\"rc-adults-hero-grid\"\u003e\n     \u003cdiv\u003e\n       \u003ch1\u003e\u003cstrong\u003eBahasa Inggris Umum \u003cem\u003eBayar Sesuai Pemakaian!\u003c\/em\u003e untuk Dewasa (16+)\u003c\/strong\u003e\u003c\/h1\u003e\n       \u003cp class=\"rc-adults-sub\"\u003ePercakapan nyata, panduan jelas, dan model Bayar Sesuai Pemakaian yang unik untuk dewasa yang menginginkan fleksibilitas tanpa jebakan keanggotaan.\u003c\/p\u003e\n       \u003cdiv class=\"rc-adults-highlight\"\u003eTidak ada kontrak jangka panjang. Tidak ada tekanan paket berlebihan. Bayar hanya untuk waktu belajar bahasa Inggris yang benar-benar Anda inginkan dan gunakan.\u003c\/div\u003e\n       \u003cdiv class=\"rc-adults-buttons\"\u003e\n         \u003ca href=\"\/id-za\/appointment\" class=\"rc-adults-btn rc-adults-btn-primary\"\u003eBuat Janji\u003c\/a\u003e\n       \u003c\/div\u003e\n     \u003c\/div\u003e\n\n     \u003cdiv class=\"rc-adults-bubbles\"\u003e\n       \u003cdiv class=\"rc-adults-bubble rc-adults-bubble-a\"\u003e\n         \u003cdiv class=\"rc-adults-bubble-title\"\u003eKomunikasi nyata\u003c\/div\u003e\n         \u003cp\u003eMendengarkan, berbicara, kosakata, dan kepercayaan diri dibangun dengan cara yang terasa berguna dalam kehidupan nyata.\u003c\/p\u003e\n       \u003c\/div\u003e\n       \u003cdiv class=\"rc-adults-bubble rc-adults-bubble-b\"\u003e\n         \u003cdiv class=\"rc-adults-bubble-title\"\u003eFleksibel secara desain\u003c\/div\u003e\n         \u003cp\u003eJika hidup Anda sibuk atau tidak dapat diprediksi, model ini memudahkan untuk menjaga bahasa Inggris dalam rutinitas Anda.\u003c\/p\u003e\n       \u003c\/div\u003e\n       \u003cdiv class=\"rc-adults-bubble rc-adults-bubble-c\"\u003e\n         \u003cdiv class=\"rc-adults-bubble-title\"\u003eLebih dari sekadar les acak\u003c\/div\u003e\n         \u003cp\u003eAnda belajar dengan guru nyata, bukan menebak-nebak melalui platform besar penuh profil.\u003c\/p\u003e\n       \u003c\/div\u003e\n     \u003c\/div\u003e\n   \u003c\/div\u003e\n \u003c\/section\u003e\n\n \u003csection class=\"rc-adults-grid\"\u003e\n   \u003cdiv class=\"rc-adults-card\"\u003e\n     \u003ch3\u003eKelas online langsung dengan Ross Cline\u003c\/h3\u003e\n     \u003cp\u003eDipandu oleh guru berpengalaman dengan gaya praktis dan mendukung yang dibentuk oleh lebih dari 20 tahun di bidang ESL.\u003c\/p\u003e\n   \u003c\/div\u003e\n   \u003cdiv class=\"rc-adults-card\"\u003e\n     \u003ch3\u003eKelompok kecil dan ramah\u003c\/h3\u003e\n     \u003cp\u003eCukup terstruktur untuk membuat kemajuan, cukup santai untuk membantu Anda rileks, berbicara, dan benar-benar menikmati proses belajar.\u003c\/p\u003e\n   \u003c\/div\u003e\n   \u003cdiv class=\"rc-adults-card\"\u003e\n     \u003ch3\u003eBayar hanya untuk waktu yang Anda gunakan\u003c\/h3\u003e\n     \u003cp\u003eSistem Bayar Sesuai Pemakaian sederhana yang dirancang untuk dewasa yang menginginkan lebih banyak kebebasan dan lebih sedikit pemborosan.\u003c\/p\u003e\n   \u003c\/div\u003e\n \u003c\/section\u003e\n\n \u003csection class=\"rc-adults-section\"\u003e\n   \u003cdiv class=\"rc-adults-softbox\"\u003e\n     \u003ch2\u003eApa sebenarnya program ini\u003c\/h2\u003e\n     \u003cp\u003eProgram ini untuk dewasa yang menginginkan bahasa Inggris yang terasa hidup, berguna, dan layak untuk kembali dipelajari. Dirancang berdasarkan komunikasi nyata, bukan hanya latihan buku teks atau les umum. Apakah tujuan Anda kerja, perjalanan, kepercayaan diri, kefasihan, atau sekadar keluar dari kebuntuan, fokusnya adalah berbicara, mendengarkan, memahami, dan momentum nyata.\u003c\/p\u003e\n     \u003cp\u003eJika Anda lelah dengan sistem kaku, komitmen gaya keanggotaan, atau platform impersonal di mana Anda tidak benar-benar tahu jenis guru yang Anda dapatkan, ini adalah alternatifnya.\u003c\/p\u003e\n   \u003c\/div\u003e\n \u003c\/section\u003e\n\n \u003csection class=\"rc-adults-section\"\u003e\n   \u003cdiv class=\"rc-adults-softbox\"\u003e\n     \u003ch2\u003eCara memulai\u003c\/h2\u003e\n     \u003cul class=\"rc-adults-list\"\u003e\n       \u003cli\u003eBuat janji agar kami dapat membicarakan tujuan Anda dan kecocokan terbaik untuk level Anda.\u003c\/li\u003e\n       \u003cli\u003eIsi formulir pendaftaran saat Anda siap.\u003c\/li\u003e\n       \u003cli\u003eIkuti tes penempatan bahasa Inggris gratis agar kami dapat membimbing Anda dengan tepat.\u003c\/li\u003e\n       \u003cli\u003eTerima Dokumen Waktu Anda dengan detail kelas, informasi bergabung, dan langkah selanjutnya.\u003c\/li\u003e\n     \u003c\/ul\u003e\n     \u003cdiv class=\"rc-adults-proof\"\u003e\n       \u003cstrong\u003eOpsi saat ini ditampilkan langsung di halaman ini.\u003c\/strong\u003e Waktu kelas yang tersedia di bawah dapat ditampilkan secara otomatis dalam zona waktu lokal pengunjung.\n     \u003c\/div\u003e\n   \u003c\/div\u003e\n \u003c\/section\u003e\n\n \u003csection class=\"rc-adults-section\"\u003e\n   \u003cdiv class=\"rc-payg-shell\"\u003e\n     \u003cdiv class=\"rc-payg-head\"\u003e\n       \u003ch2\u003eWaktu kelas yang tersedia\u003c\/h2\u003e\n       \u003cdiv class=\"rc-payg-head-ship\" aria-hidden=\"true\"\u003e\n         \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0567\/6148\/3312\/files\/sail-1.gif?v=1692956642\" alt=\"\"\u003e\n       \u003c\/div\u003e\n     \u003c\/div\u003e\n     \u003cp class=\"rc-payg-topline\"\u003eBerikut adalah waktu kelas Bahasa Inggris Umum Bayar Sesuai Pemakaian saat ini.\u003c\/p\u003e\n     \u003cdiv id=\"rc-payg-timezone\" class=\"rc-payg-timezone\"\u003eMemeriksa zona waktu Anda…\u003c\/div\u003e\n     \u003cdiv id=\"rc-payg-output\" class=\"rc-payg-loading\"\u003eMemuat waktu yang tersedia…\u003c\/div\u003e\n     \u003cp class=\"rc-payg-note\"\u003eSemua waktu ditampilkan secara otomatis dalam zona waktu lokal penonton.\u003c\/p\u003e\n   \u003c\/div\u003e\n \u003c\/section\u003e\n\n \u003csection class=\"rc-adults-section\"\u003e\n   \u003cdiv class=\"rc-adults-softbox\"\u003e\n     \u003ch2\u003eTentang Ross\u003c\/h2\u003e\n     \u003cp\u003eRoss Cline telah bekerja di bidang ESL selama lebih dari 20 tahun, mengajar di Toronto, Jerman, dan Taiwan. Dia mendirikan perusahaan bahasanya pada tahun 2009 dan telah mengajar ribuan siswa di kelas dan online. Gaya mengajarnya ramah, sabar, dan fokus membantu Anda benar-benar menggunakan bahasa Inggris dalam kehidupan nyata.\u003c\/p\u003e\n     \u003cp\u003eJika Anda siap membangun momentum bahasa Inggris nyata dengan guru yang dapat Anda percaya, langkah selanjutnya sederhana.\u003c\/p\u003e\n   \u003c\/div\u003e\n \u003c\/section\u003e\n\n \u003csection class=\"rc-adults-section\"\u003e\n   \u003cdiv class=\"rc-adults-buttons\"\u003e\n     \u003ca href=\"\/id-za\/appointment\" class=\"rc-adults-btn rc-adults-btn-primary\"\u003eBuat Janji\u003c\/a\u003e\n     \u003ca href=\"\/id-za\/pages\/english-level-test\" class=\"rc-adults-btn rc-adults-btn-secondary\"\u003eIkuti Tes Penempatan\u003c\/a\u003e\n     \u003ca href=\"\/id-za\/pages\/contact\" class=\"rc-adults-btn rc-adults-btn-secondary\"\u003eHubungi Ross\u003c\/a\u003e\n   \u003c\/div\u003e\n \u003c\/section\u003e\n\u003c\/div\u003e\n\n\u003cp\u003e \u003c\/p\u003e\n\u003cscript\u003e\n(function() {\n var RC_PAYG_CONFIG = {\n   jsonUrl: 'https:\/\/script.google.com\/macros\/s\/AKfycbyWDjNwMVjT11Rg2iKkPDQB0w6Wc54xsiA_PwREweoccZ_LbIeVmapI_ocq_9N6XkkQIw\/exec',\n   strings: {\n     timezonePrefix: 'Zona waktu:',\n     loading: 'Memuat waktu yang tersedia…',\n     empty: 'Tidak ada waktu kelas yang tersedia saat ini. Silakan cek kembali nanti.',\n     error: 'Kami tidak dapat memuat jadwal kelas saat ini.',\n     localTimeSuffix: 'waktu lokal',\n     dayLabelFallback: 'Waktu yang tersedia'\n   }\n };\n\n var timezoneEl = document.getElementById('rc-payg-timezone');\n var outputEl = document.getElementById('rc-payg-output');\n\n if (!timezoneEl || !outputEl) return;\n\n var viewerTimeZone = '';\n try {\n   viewerTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone || '';\n } catch (e) {\n   viewerTimeZone = '';\n }\n\n timezoneEl.textContent = RC_PAYG_CONFIG.strings.timezonePrefix + ' ' + (viewerTimeZone || 'Waktu lokal');\n outputEl.className = 'rc-payg-loading';\n outputEl.textContent = RC_PAYG_CONFIG.strings.loading;\n\n function escapeHtml(str) {\n   return String(str).replace(\/[\u0026\u003c\u003e\"']\/g, function(match) {\n     return ({\n       '\u0026':'\u0026amp;',\n       '\u003c':'\u0026lt;',\n       '\u003e':'\u0026gt;',\n       '\"':'\u0026quot;',\n       \"'\":'\u0026#39;'\n     })[match];\n   });\n }\n\n function weekdayIndexFromDate(date) {\n   var weekday = new Intl.DateTimeFormat('en-US', {\n     weekday: 'short',\n     timeZone: viewerTimeZone || undefined\n   }).format(date);\n\n   var map = { Sun:0, Mon:1, Tue:2, Wed:3, Thu:4, Fri:5, Sat:6 };\n   return map[weekday] != null ? map[weekday] : date.getDay();\n }\n\n function weekdayNameFromDate(date) {\n   return new Intl.DateTimeFormat(undefined, {\n     weekday: 'long',\n     timeZone: viewerTimeZone || undefined\n   }).format(date);\n }\n\n function timeLabelFromDate(date) {\n   return new Intl.DateTimeFormat(undefined, {\n     hour: 'numeric',\n     minute: '2-digit',\n     timeZone: viewerTimeZone || undefined\n   }).format(date);\n }\n\n function minuteValueFromDate(date) {\n   var parts = new Intl.DateTimeFormat('en-GB', {\n     hour: '2-digit',\n     minute: '2-digit',\n     hourCycle: 'h23',\n     timeZone: viewerTimeZone || undefined\n   }).formatToParts(date);\n\n   var hour = 0;\n   var minute = 0;\n\n   for (var i = 0; i \u003c parts.length; i++) {\n     if (parts[i].type === 'hour') hour = parseInt(parts[i].value, 10) || 0;\n     if (parts[i].type === 'minute') minute = parseInt(parts[i].value, 10) || 0;\n   }\n\n   return (hour * 60) + minute;\n }\n\n function groupByWeekday(slots) {\n   var groups = {};\n   var ordered = [];\n\n   for (var i = 0; i \u003c slots.length; i++) {\n     var date = new Date(slots[i].iso);\n     if (isNaN(date.getTime())) continue;\n\n     var weekdayIndex = weekdayIndexFromDate(date);\n     var weekdayName = weekdayNameFromDate(date);\n     var timeLabel = timeLabelFromDate(date);\n     var uniqueKey = weekdayIndex + '|' + timeLabel;\n\n     if (!groups[weekdayIndex]) {\n       groups[weekdayIndex] = {\n         weekdayIndex: weekdayIndex,\n         weekdayName: weekdayName,\n         items: []\n       };\n       ordered.push(groups[weekdayIndex]);\n     }\n\n     var exists = false;\n     for (var j = 0; j \u003c groups[weekdayIndex].items.length; j++) {\n       if (groups[weekdayIndex].items[j].uniqueKey === uniqueKey) {\n         exists = true;\n         break;\n       }\n     }\n\n     if (!exists) {\n       groups[weekdayIndex].items.push({\n         uniqueKey: uniqueKey,\n         timeLabel: timeLabel,\n         minuteValue: minuteValueFromDate(date)\n       });\n     }\n   }\n\n   ordered.sort(function(a, b) {\n     return a.weekdayIndex - b.weekdayIndex;\n   });\n\n   for (var k = 0; k \u003c ordered.length; k++) {\n     ordered[k].items.sort(function(a, b) {\n       return a.minuteValue - b.minuteValue;\n     });\n   }\n\n   return ordered;\n }\n\n function renderSchedule(slots) {\n   if (!slots || !slots.length) {\n     outputEl.className = 'rc-payg-empty';\n     outputEl.textContent = RC_PAYG_CONFIG.strings.empty;\n     return;\n   }\n\n   var groups = groupByWeekday(slots);\n   var html = '\u003cdiv class=\"rc-payg-grid\"\u003e';\n\n   for (var i = 0; i \u003c groups.length; i++) {\n     html += '\u003cdiv class=\"rc-payg-day\"\u003e';\n     html += '\u003ch3\u003e' + escapeHtml(groups[i].weekdayName || RC_PAYG_CONFIG.strings.dayLabelFallback) + '\u003c\/h3\u003e';\n     html += '\u003cul class=\"rc-payg-slots\"\u003e';\n\n     for (var j = 0; j \u003c groups[i].items.length; j++) {\n       html += '\u003cli\u003e' + escapeHtml(groups[i].items[j].timeLabel) + ' \u003cspan style=\"color:#6b7280;\"\u003e(' + escapeHtml(RC_PAYG_CONFIG.strings.localTimeSuffix) + ')\u003c\/span\u003e\u003c\/li\u003e';\n     }\n\n     html += '\u003c\/ul\u003e';\n     html += '\u003c\/div\u003e';\n   }\n\n   html += '\u003c\/div\u003e';\n   outputEl.className = '';\n   outputEl.innerHTML = html;\n }\n\n function renderError(message) {\n   outputEl.className = 'rc-payg-error';\n   outputEl.textContent = message || RC_PAYG_CONFIG.strings.error;\n }\n\n window.rcPaygScheduleCallback = function(data) {\n   try {\n     if (!data || !data.ok || !data.slots) {\n       throw new Error(data \u0026\u0026 data.error ? data.error : RC_PAYG_CONFIG.strings.error);\n     }\n     renderSchedule(data.slots);\n   } catch (err) {\n     renderError(err \u0026\u0026 err.message ? err.message : RC_PAYG_CONFIG.strings.error);\n   }\n };\n\n function loadSchedule() {\n   var url = RC_PAYG_CONFIG.jsonUrl\n     + '?callback=rcPaygScheduleCallback\u0026_rcv='\n     + Date.now();\n\n   var script = document.createElement('script');\n   script.src = url;\n   script.async = true;\n   script.onerror = function() {\n     renderError('Gagal memuat');\n   };\n   document.head.appendChild(script);\n }\n\n loadSchedule();\n})();\n\u003c\/script\u003e","products":[{"product_id":"onehour","title":"Kelas Bayar Sesuai Pemakaian 1 Jam","description":"\u003cstyle\u003e\n  .rc-ge-product{\n    max-width: 760px;\n    margin: 0 auto;\n    padding: 24px 20px 22px;\n    border-radius: 26px;\n    background: linear-gradient(145deg, #ffffff 0%, #f5fcfc 100%);\n    border: 1px solid rgba(80,170,180,.16);\n    box-shadow: 0 14px 30px rgba(29,120,133,.08);\n    color: #1f2937;\n    line-height: 1.7;\n  }\n\n  .rc-ge-product *,\n  .rc-ge-product h2,\n  .rc-ge-product h3,\n  .rc-ge-product p,\n  .rc-ge-product li,\n  .rc-ge-product a,\n  .rc-ge-product span,\n  .rc-ge-product div,\n  .rc-ge-product strong{\n    font-family: inherit !important;\n  }\n\n  .rc-ge-product-hero{\n    text-align: center;\n    margin-bottom: 18px;\n  }\n\n  .rc-ge-product-hero h2{\n    margin: 0 0 10px;\n    font-size: clamp(1.7rem, 3.2vw, 2.3rem);\n    line-height: 1.15;\n    color: #111827;\n    letter-spacing: -.02em;\n  }\n\n  .rc-ge-product-sub{\n    max-width: 620px;\n    margin: 0 auto 12px;\n    font-size: 1.03rem;\n    color: #4b5563;\n  }\n\n  .rc-ge-product-highlight{\n    display: inline-block;\n    padding: 12px 16px;\n    border-radius: 18px;\n    background: linear-gradient(135deg, #f3ffff 0%, #eafcfc 100%);\n    border: 1px solid rgba(78,170,176,.20);\n    box-shadow: 0 10px 22px rgba(29,120,133,.08);\n    font-weight: 700;\n    color: #116466;\n  }\n\n  .rc-ge-product-bubbles{\n    display: flex;\n    flex-wrap: wrap;\n    justify-content: center;\n    gap: 10px;\n    margin: 16px 0 20px;\n  }\n\n  .rc-ge-product-bubble{\n    display: inline-flex;\n    align-items: center;\n    padding: 10px 14px;\n    border-radius: 999px;\n    border: 1px solid rgba(0,0,0,.06);\n    box-shadow: 0 6px 14px rgba(0,0,0,.05);\n    font-weight: 700;\n    font-size: .95rem;\n    color: #1f2937;\n  }\n\n  .rc-ge-product-bubble:nth-child(1){ background: #eafcfc; }\n  .rc-ge-product-bubble:nth-child(2){ background: #eefdf2; }\n  .rc-ge-product-bubble:nth-child(3){ background: #fff4df; }\n  .rc-ge-product-bubble:nth-child(4){ background: #eef6ff; }\n\n  .rc-ge-product-copy{\n    margin-bottom: 18px;\n  }\n\n  .rc-ge-product-copy p{\n    margin: 0 0 12px;\n  }\n\n  .rc-ge-product-copy ul{\n    margin: 0;\n    padding-left: 1.2rem;\n  }\n\n  .rc-ge-product-copy li{\n    margin-bottom: 8px;\n  }\n\n  .rc-ge-times-shell{\n    margin: 18px 0 18px;\n    padding: 18px 16px;\n    border-radius: 22px;\n    background: linear-gradient(145deg, #ffffff 0%, #f3fbfb 100%);\n    border: 1px solid rgba(80,170,180,.16);\n    box-shadow: 0 12px 24px rgba(29,120,133,.06);\n  }\n\n  .rc-ge-times-head{\n    display: flex;\n    align-items: flex-start;\n    justify-content: space-between;\n    gap: 12px;\n    margin-bottom: 4px;\n  }\n\n  .rc-ge-times-head h3{\n    margin: 0 0 8px;\n    font-size: 1.18rem;\n    line-height: 1.2;\n    color: #111827;\n  }\n\n  .rc-ge-times-ship{\n    flex: 0 0 auto;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-width: 52px;\n  }\n\n  .rc-ge-times-ship img{\n    display: block;\n    width: 52px;\n    height: auto;\n    max-height: 52px;\n    object-fit: contain;\n    filter: drop-shadow(0 4px 10px rgba(31,127,150,.16));\n  }\n\n  .rc-ge-times-topline{\n    margin: 0 0 8px;\n    color: #4b5563;\n    font-size: .98rem;\n  }\n\n  .rc-ge-timezone{\n    display: inline-block;\n    margin: 0 0 14px;\n    padding: 8px 12px;\n    border-radius: 999px;\n    background: linear-gradient(145deg,#f3ffff 0%,#e7fbfb 100%);\n    border: 1px solid rgba(78,170,176,.22);\n    color: #116466;\n    font-weight: 700;\n    font-size: .93rem;\n  }\n\n  .rc-ge-times-grid{\n    display: grid;\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n    gap: 12px;\n  }\n\n  .rc-ge-day{\n    border-radius: 18px;\n    padding: 14px;\n    background: linear-gradient(180deg, #ffffff 0%, #f8fefe 100%);\n    border: 1px solid rgba(80,170,180,.12);\n    box-shadow: 0 8px 18px rgba(29,120,133,.04);\n  }\n\n  .rc-ge-day h4{\n    margin: 0 0 8px;\n    font-size: 1rem;\n    color: #111827;\n  }\n\n  .rc-ge-slots{\n    margin: 0;\n    padding-left: 1rem;\n  }\n\n  .rc-ge-slots li{\n    margin-bottom: 6px;\n  }\n\n  .rc-ge-times-loading,\n  .rc-ge-times-empty,\n  .rc-ge-times-error{\n    padding: 14px 16px;\n    border-radius: 18px;\n    background: linear-gradient(145deg,#ffffff 0%,#f5fdfd 100%);\n    border: 1px solid rgba(80,170,180,.12);\n  }\n\n  .rc-ge-times-error{\n    background: #fff7f7;\n    border-color: rgba(185,28,28,.12);\n    color: #991b1b;\n  }\n\n  .rc-ge-note{\n    margin-top: 12px;\n    color: #6b7280;\n    font-size: .95rem;\n  }\n\n  .rc-ge-product-buttons{\n    display: flex;\n    flex-wrap: wrap;\n    gap: 12px;\n    margin-top: 18px;\n  }\n\n  .rc-ge-btn{\n    display: inline-block;\n    padding: 12px 18px;\n    border-radius: 999px;\n    text-decoration: none;\n    font-weight: 800;\n    border: 1px solid rgba(0,0,0,.08);\n    box-shadow: 0 8px 18px rgba(0,0,0,.06);\n    transition: transform .15s ease, opacity .15s ease, box-shadow .15s ease;\n  }\n\n  .rc-ge-btn:hover{\n    transform: translateY(-1px);\n    opacity: .96;\n    box-shadow: 0 12px 24px rgba(0,0,0,.08);\n  }\n\n  .rc-ge-btn-primary{\n    background: linear-gradient(145deg,#4fc8c4 0%,#2ca7b1 58%,#1f7d95 100%);\n    color: #fff !important;\n    border-color: rgba(16,94,105,.18);\n    box-shadow: 0 10px 22px rgba(29,120,133,.18);\n  }\n\n  .rc-ge-btn-secondary{\n    background: linear-gradient(145deg,#ffffff 0%,#f2fcfc 100%);\n    color: #1f2937 !important;\n    border: 1px solid rgba(80,170,180,.18);\n    box-shadow: 0 10px 22px rgba(29,120,133,.08);\n  }\n\n  @media (max-width: 700px){\n    .rc-ge-times-grid{\n      grid-template-columns: 1fr;\n    }\n  }\n\n  @media (max-width: 640px){\n    .rc-ge-product{\n      padding: 20px 16px 20px;\n      border-radius: 22px;\n    }\n\n    .rc-ge-product-buttons{\n      flex-direction: column;\n    }\n\n    .rc-ge-btn{\n      width: 100%;\n      text-align: center;\n      box-sizing: border-box;\n    }\n\n    .rc-ge-times-head{\n      gap: 10px;\n    }\n\n    .rc-ge-times-ship img{\n      width: 46px;\n      max-height: 46px;\n    }\n  }\n\u003c\/style\u003e\n\n\u003cdiv class=\"rc-ge-product\"\u003e\n  \u003cdiv class=\"rc-ge-product-hero\"\u003e\n    \u003ch2\u003eBahasa Inggris Umum 1 Jam\u003c\/h2\u003e\n    \u003cp class=\"rc-ge-product-sub\"\u003eCara sederhana dan tanpa tekanan untuk mencoba kelas, datang kapan pun Anda mau, atau mulai membangun kemampuan Bahasa Inggris Anda bersama Ross Cline.\u003c\/p\u003e\n    \u003cdiv class=\"rc-ge-product-highlight\"\u003eLangkah pertama: buat janji dengan Ross, lalu kita akan mencari kecocokan terbaik bersama-sama.\u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"rc-ge-product-bubbles\"\u003e\n    \u003cspan class=\"rc-ge-product-bubble\"\u003eCoba sekali\u003c\/span\u003e\n    \u003cspan class=\"rc-ge-product-bubble\"\u003eFleksibel\u003c\/span\u003e\n    \u003cspan class=\"rc-ge-product-bubble\"\u003e1 jam online\u003c\/span\u003e\n    \u003cspan class=\"rc-ge-product-bubble\"\u003eGuru asli\u003c\/span\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"rc-ge-product-copy\"\u003e\n    \u003cp\u003ePilihan ini ideal untuk pelajar pemula, pembelajar sesekali, atau orang dewasa sibuk yang ingin menjaga Bahasa Inggris dalam hidup mereka tanpa harus terikat komitmen besar secara langsung.\u003c\/p\u003e\n    \u003cul\u003e\n      \u003cli\u003e\n\u003cstrong\u003eTerbaik untuk:\u003c\/strong\u003e mencoba kelas, kembali kapan pun Anda mau, atau memulai\u003c\/li\u003e\n      \u003cli\u003e\n\u003cstrong\u003eDurasi kelas:\u003c\/strong\u003e 1 jam online\u003c\/li\u003e\n      \u003cli\u003e\n\u003cstrong\u003ePendekatan:\u003c\/strong\u003e percakapan nyata, panduan jelas, dan Bahasa Inggris praktis\u003c\/li\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"rc-ge-times-shell\"\u003e\n    \u003cdiv class=\"rc-ge-times-head\"\u003e\n      \u003ch3\u003eWaktu kelas yang tersedia saat ini\u003c\/h3\u003e\n      \u003cdiv class=\"rc-ge-times-ship\" aria-hidden=\"true\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0567\/6148\/3312\/files\/sail-1.gif?v=1692956642\" alt=\"\"\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cp class=\"rc-ge-times-topline\"\u003eIni adalah waktu Bahasa Inggris Umum saat ini dalam zona waktu lokal Anda.\u003c\/p\u003e\n    \u003cdiv id=\"rc-ge-timezone\" class=\"rc-ge-timezone\"\u003eMemeriksa zona waktu Anda…\u003c\/div\u003e\n    \u003cdiv id=\"rc-ge-output\" class=\"rc-ge-times-loading\"\u003eMemuat waktu yang tersedia…\u003c\/div\u003e\n    \u003cp class=\"rc-ge-note\"\u003eSetelah Anda membuat janji, Ross dapat membantu Anda memilih opsi dan waktu kelas terbaik.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"rc-ge-product-buttons\"\u003e\n    \u003ca class=\"rc-ge-btn rc-ge-btn-primary\" href=\"\/id-za\/appointment\"\u003eBuat Janji\u003c\/a\u003e\n    \u003ca class=\"rc-ge-btn rc-ge-btn-secondary\" href=\"\/id-za\/register\"\u003eDaftar\u003c\/a\u003e\n    \u003ca class=\"rc-ge-btn rc-ge-btn-secondary\" href=\"\/id-za\/policy\"\u003eKebijakan\u003c\/a\u003e\n    \u003ca class=\"rc-ge-btn rc-ge-btn-secondary\" href=\"\/id-za\/pages\/time-document\"\u003eDokumen Waktu\u003c\/a\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function() {\n  var RC_GE_CONFIG = {\n    jsonUrl: 'https:\/\/script.google.com\/macros\/s\/AKfycbyWDjNwMVjT11Rg2iKkPDQB0w6Wc54xsiA_PwREweoccZ_LbIeVmapI_ocq_9N6XkkQIw\/exec',\n    strings: {\n      timezonePrefix: 'Zona waktu:',\n      loading: 'Memuat waktu yang tersedia…',\n      empty: 'Tidak ada waktu kelas yang tersedia saat ini. Silakan cek kembali nanti.',\n      error: 'Kami tidak dapat memuat jadwal kelas saat ini.',\n      localTimeSuffix: 'waktu lokal',\n      dayLabelFallback: 'Waktu yang tersedia'\n    }\n  };\n\n  var timezoneEl = document.getElementById('rc-ge-timezone');\n  var outputEl = document.getElementById('rc-ge-output');\n\n  if (!timezoneEl || !outputEl) return;\n\n  var viewerTimeZone = '';\n  try {\n    viewerTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone || '';\n  } catch (e) {\n    viewerTimeZone = '';\n  }\n\n  timezoneEl.textContent = RC_GE_CONFIG.strings.timezonePrefix + ' ' + (viewerTimeZone || 'Waktu lokal');\n  outputEl.className = 'rc-ge-times-loading';\n  outputEl.textContent = RC_GE_CONFIG.strings.loading;\n\n  function escapeHtml(str) {\n    return String(str).replace(\/[\u0026\u003c\u003e\"']\/g, function(match) {\n      return ({\n        '\u0026':'\u0026amp;',\n        '\u003c':'\u0026lt;',\n        '\u003e':'\u0026gt;',\n        '\"':'\u0026quot;',\n        \"'\":'\u0026#39;'\n      })[match];\n    });\n  }\n\n  function weekdayIndexFromDate(date) {\n    var weekday = new Intl.DateTimeFormat('en-US', {\n      weekday: 'short',\n      timeZone: viewerTimeZone || undefined\n    }).format(date);\n\n    var map = { Sun:0, Mon:1, Tue:2, Wed:3, Thu:4, Fri:5, Sat:6 };\n    return map[weekday] != null ? map[weekday] : date.getDay();\n  }\n\n  function weekdayNameFromDate(date) {\n    return new Intl.DateTimeFormat(undefined, {\n      weekday: 'long',\n      timeZone: viewerTimeZone || undefined\n    }).format(date);\n  }\n\n  function timeLabelFromDate(date) {\n    return new Intl.DateTimeFormat(undefined, {\n      hour: 'numeric',\n      minute: '2-digit',\n      timeZone: viewerTimeZone || undefined\n    }).format(date);\n  }\n\n  function minuteValueFromDate(date) {\n    var parts = new Intl.DateTimeFormat('en-GB', {\n      hour: '2-digit',\n      minute: '2-digit',\n      hourCycle: 'h23',\n      timeZone: viewerTimeZone || undefined\n    }).formatToParts(date);\n\n    var hour = 0;\n    var minute = 0;\n\n    for (var i = 0; i \u003c parts.length; i++) {\n      if (parts[i].type === 'hour') hour = parseInt(parts[i].value, 10) || 0;\n      if (parts[i].type === 'minute') minute = parseInt(parts[i].value, 10) || 0;\n    }\n\n    return (hour * 60) + minute;\n  }\n\n  function groupByWeekday(slots) {\n    var groups = {};\n    var ordered = [];\n\n    for (var i = 0; i \u003c slots.length; i++) {\n      var date = new Date(slots[i].iso);\n      if (isNaN(date.getTime())) continue;\n\n      var weekdayIndex = weekdayIndexFromDate(date);\n      var weekdayName = weekdayNameFromDate(date);\n      var timeLabel = timeLabelFromDate(date);\n      var uniqueKey = weekdayIndex + '|' + timeLabel;\n\n      if (!groups[weekdayIndex]) {\n        groups[weekdayIndex] = {\n          weekdayIndex: weekdayIndex,\n          weekdayName: weekdayName,\n          items: []\n        };\n        ordered.push(groups[weekdayIndex]);\n      }\n\n      var exists = false;\n      for (var j = 0; j \u003c groups[weekdayIndex].items.length; j++) {\n        if (groups[weekdayIndex].items[j].uniqueKey === uniqueKey) {\n          exists = true;\n          break;\n        }\n      }\n\n      if (!exists) {\n        groups[weekdayIndex].items.push({\n          uniqueKey: uniqueKey,\n          timeLabel: timeLabel,\n          minuteValue: minuteValueFromDate(date)\n        });\n      }\n    }\n\n    ordered.sort(function(a, b) {\n      return a.weekdayIndex - b.weekdayIndex;\n    });\n\n    for (var k = 0; k \u003c ordered.length; k++) {\n      ordered[k].items.sort(function(a, b) {\n        return a.minuteValue - b.minuteValue;\n      });\n    }\n\n    return ordered;\n  }\n\n  function renderSchedule(slots) {\n    if (!slots || !slots.length) {\n      outputEl.className = 'rc-ge-times-empty';\n      outputEl.textContent = RC_GE_CONFIG.strings.empty;\n      return;\n    }\n\n    var groups = groupByWeekday(slots);\n    var html = '\u003cdiv class=\"rc-ge-times-grid\"\u003e';\n\n    for (var i = 0; i \u003c groups.length; i++) {\n      html += '\u003cdiv class=\"rc-ge-day\"\u003e';\n      html += '\u003ch4\u003e' + escapeHtml(groups[i].weekdayName || RC_GE_CONFIG.strings.dayLabelFallback) + '\u003c\/h4\u003e';\n      html += '\u003cul class=\"rc-ge-slots\"\u003e';\n\n      for (var j = 0; j \u003c groups[i].items.length; j++) {\n        html += '\u003cli\u003e' + escapeHtml(groups[i].items[j].timeLabel) + ' \u003cspan style=\"color:#6b7280;\"\u003e(' + escapeHtml(RC_GE_CONFIG.strings.localTimeSuffix) + ')\u003c\/span\u003e\u003c\/li\u003e';\n      }\n\n      html += '\u003c\/ul\u003e';\n      html += '\u003c\/div\u003e';\n    }\n\n    html += '\u003c\/div\u003e';\n    outputEl.className = '';\n    outputEl.innerHTML = html;\n  }\n\n  function renderError(message) {\n    outputEl.className = 'rc-ge-times-error';\n    outputEl.textContent = message || RC_GE_CONFIG.strings.error;\n  }\n\n  window.rcGeScheduleCallback = function(data) {\n    try {\n      if (!data || !data.ok || !data.slots) {\n        throw new Error(data \u0026\u0026 data.error ? data.error : RC_GE_CONFIG.strings.error);\n      }\n      renderSchedule(data.slots);\n    } catch (err) {\n      renderError(err \u0026\u0026 err.message ? err.message : RC_GE_CONFIG.strings.error);\n    }\n  };\n\n  function loadSchedule() {\n    var url = RC_GE_CONFIG.jsonUrl\n      + '?callback=rcGeScheduleCallback\u0026_rcv='\n      + Date.now();\n\n    var script = document.createElement('script');\n    script.src = url;\n    script.async = true;\n    script.onerror = function() {\n      renderError('Gagal memuat');\n    };\n    document.head.appendChild(script);\n  }\n\n  loadSchedule();\n})();\n\u003c\/script\u003e","brand":"rosscline.com","offers":[{"title":"Default Title","offer_id":40388041506864,"sku":"","price":13.81,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0567\/6148\/3312\/files\/ross-cline-pay-as-you-go-one-class-square.jpg?v=1778589935"},{"product_id":"pay-as-you-go-subscription","title":"Langganan Bayar Sesuai Pemakaian","description":"\u003cstyle\u003e\n  .rc-ge-product{\n    max-width: 760px;\n    margin: 0 auto;\n    padding: 24px 20px 22px;\n    border-radius: 26px;\n    background: linear-gradient(145deg, #ffffff 0%, #f5fcfc 100%);\n    border: 1px solid rgba(80,170,180,.16);\n    box-shadow: 0 14px 30px rgba(29,120,133,.08);\n    color: #1f2937;\n    line-height: 1.7;\n  }\n\n  .rc-ge-product *,\n  .rc-ge-product h2,\n  .rc-ge-product h3,\n  .rc-ge-product p,\n  .rc-ge-product li,\n  .rc-ge-product a,\n  .rc-ge-product span,\n  .rc-ge-product div,\n  .rc-ge-product strong{\n    font-family: inherit !important;\n  }\n\n  .rc-ge-product-hero{\n    text-align: center;\n    margin-bottom: 18px;\n  }\n\n  .rc-ge-product-hero h2{\n    margin: 0 0 10px;\n    font-size: clamp(1.7rem, 3.2vw, 2.3rem);\n    line-height: 1.15;\n    color: #111827;\n    letter-spacing: -.02em;\n  }\n\n  .rc-ge-product-sub{\n    max-width: 620px;\n    margin: 0 auto 12px;\n    font-size: 1.03rem;\n    color: #4b5563;\n  }\n\n  .rc-ge-product-highlight{\n    display: inline-block;\n    padding: 12px 16px;\n    border-radius: 18px;\n    background: linear-gradient(135deg, #f3ffff 0%, #eafcfc 100%);\n    border: 1px solid rgba(78,170,176,.20);\n    box-shadow: 0 10px 22px rgba(29,120,133,.08);\n    font-weight: 700;\n    color: #116466;\n  }\n\n  .rc-ge-product-bubbles{\n    display: flex;\n    flex-wrap: wrap;\n    justify-content: center;\n    gap: 10px;\n    margin: 16px 0 20px;\n  }\n\n  .rc-ge-product-bubble{\n    display: inline-flex;\n    align-items: center;\n    padding: 10px 14px;\n    border-radius: 999px;\n    border: 1px solid rgba(0,0,0,.06);\n    box-shadow: 0 6px 14px rgba(0,0,0,.05);\n    font-weight: 700;\n    font-size: .95rem;\n    color: #1f2937;\n  }\n\n  .rc-ge-product-bubble:nth-child(1){ background: #eafcfc; }\n  .rc-ge-product-bubble:nth-child(2){ background: #eefdf2; }\n  .rc-ge-product-bubble:nth-child(3){ background: #fff4df; }\n  .rc-ge-product-bubble:nth-child(4){ background: #eef6ff; }\n\n  .rc-ge-product-copy{\n    margin-bottom: 18px;\n  }\n\n  .rc-ge-product-copy p{\n    margin: 0 0 12px;\n  }\n\n  .rc-ge-product-copy ul{\n    margin: 0;\n    padding-left: 1.2rem;\n  }\n\n  .rc-ge-product-copy li{\n    margin-bottom: 8px;\n  }\n\n  .rc-ge-times-shell{\n    margin: 18px 0 18px;\n    padding: 18px 16px;\n    border-radius: 22px;\n    background: linear-gradient(145deg, #ffffff 0%, #f3fbfb 100%);\n    border: 1px solid rgba(80,170,180,.16);\n    box-shadow: 0 12px 24px rgba(29,120,133,.06);\n  }\n\n  .rc-ge-times-head{\n    display: flex;\n    align-items: flex-start;\n    justify-content: space-between;\n    gap: 12px;\n    margin-bottom: 4px;\n  }\n\n  .rc-ge-times-head h3{\n    margin: 0 0 8px;\n    font-size: 1.18rem;\n    line-height: 1.2;\n    color: #111827;\n  }\n\n  .rc-ge-times-ship{\n    flex: 0 0 auto;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-width: 52px;\n  }\n\n  .rc-ge-times-ship img{\n    display: block;\n    width: 52px;\n    height: auto;\n    max-height: 52px;\n    object-fit: contain;\n    filter: drop-shadow(0 4px 10px rgba(31,127,150,.16));\n  }\n\n  .rc-ge-times-topline{\n    margin: 0 0 8px;\n    color: #4b5563;\n    font-size: .98rem;\n  }\n\n  .rc-ge-timezone{\n    display: inline-block;\n    margin: 0 0 14px;\n    padding: 8px 12px;\n    border-radius: 999px;\n    background: linear-gradient(145deg,#f3ffff 0%,#e7fbfb 100%);\n    border: 1px solid rgba(78,170,176,.22);\n    color: #116466;\n    font-weight: 700;\n    font-size: .93rem;\n  }\n\n  .rc-ge-times-grid{\n    display: grid;\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n    gap: 12px;\n  }\n\n  .rc-ge-day{\n    border-radius: 18px;\n    padding: 14px;\n    background: linear-gradient(180deg, #ffffff 0%, #f8fefe 100%);\n    border: 1px solid rgba(80,170,180,.12);\n    box-shadow: 0 8px 18px rgba(29,120,133,.04);\n  }\n\n  .rc-ge-day h4{\n    margin: 0 0 8px;\n    font-size: 1rem;\n    color: #111827;\n  }\n\n  .rc-ge-slots{\n    margin: 0;\n    padding-left: 1rem;\n  }\n\n  .rc-ge-slots li{\n    margin-bottom: 6px;\n  }\n\n  .rc-ge-times-loading,\n  .rc-ge-times-empty,\n  .rc-ge-times-error{\n    padding: 14px 16px;\n    border-radius: 18px;\n    background: linear-gradient(145deg,#ffffff 0%,#f5fdfd 100%);\n    border: 1px solid rgba(80,170,180,.12);\n  }\n\n  .rc-ge-times-error{\n    background: #fff7f7;\n    border-color: rgba(185,28,28,.12);\n    color: #991b1b;\n  }\n\n  .rc-ge-note{\n    margin-top: 12px;\n    color: #6b7280;\n    font-size: .95rem;\n  }\n\n  .rc-ge-product-buttons{\n    display: flex;\n    flex-wrap: wrap;\n    gap: 12px;\n    margin-top: 18px;\n  }\n\n  .rc-ge-btn{\n    display: inline-block;\n    padding: 12px 18px;\n    border-radius: 999px;\n    text-decoration: none;\n    font-weight: 800;\n    border: 1px solid rgba(0,0,0,.08);\n    box-shadow: 0 8px 18px rgba(0,0,0,.06);\n    transition: transform .15s ease, opacity .15s ease, box-shadow .15s ease;\n  }\n\n  .rc-ge-btn:hover{\n    transform: translateY(-1px);\n    opacity: .96;\n    box-shadow: 0 12px 24px rgba(0,0,0,.08);\n  }\n\n  .rc-ge-btn-primary{\n    background: linear-gradient(145deg,#4fc8c4 0%,#2ca7b1 58%,#1f7d95 100%);\n    color: #fff !important;\n    border-color: rgba(16,94,105,.18);\n    box-shadow: 0 10px 22px rgba(29,120,133,.18);\n  }\n\n  .rc-ge-btn-secondary{\n    background: linear-gradient(145deg,#ffffff 0%,#f2fcfc 100%);\n    color: #1f2937 !important;\n    border: 1px solid rgba(80,170,180,.18);\n    box-shadow: 0 10px 22px rgba(29,120,133,.08);\n  }\n\n  @media (max-width: 700px){\n    .rc-ge-times-grid{\n      grid-template-columns: 1fr;\n    }\n  }\n\n  @media (max-width: 640px){\n    .rc-ge-product{\n      padding: 20px 16px 20px;\n      border-radius: 22px;\n    }\n\n    .rc-ge-product-buttons{\n      flex-direction: column;\n    }\n\n    .rc-ge-btn{\n      width: 100%;\n      text-align: center;\n      box-sizing: border-box;\n    }\n\n    .rc-ge-times-head{\n      gap: 10px;\n    }\n\n    .rc-ge-times-ship img{\n      width: 46px;\n      max-height: 46px;\n    }\n  }\n\u003c\/style\u003e\n\u003cdiv class=\"rc-ge-product\"\u003e\n\u003cdiv class=\"rc-ge-product-hero\"\u003e\n\u003ch2\u003eLangganan Bulanan Bayar Sesuai Pemakaian\u003c\/h2\u003e\n\u003cp class=\"rc-ge-product-sub\"\u003eCara yang lebih sederhana untuk melanjutkan kelas bahasa Inggris mingguan Anda setiap bulan tanpa repot membayar per minggu.\u003c\/p\u003e\n\u003cdiv class=\"rc-ge-product-highlight\"\u003eSatu pembayaran setiap bulan untuk waktu kelas mingguan Anda. Perlu mengubah waktu reguler Anda kadang-kadang? Cukup beri tahu Ross.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"rc-ge-product-bubbles\"\u003e\n\u003cspan class=\"rc-ge-product-bubble\"\u003eDibayar bulanan\u003c\/span\u003e \u003cspan class=\"rc-ge-product-bubble\"\u003eWaktu kelas mingguan\u003c\/span\u003e \u003cspan class=\"rc-ge-product-bubble\"\u003ePerubahan fleksibel\u003c\/span\u003e \u003cspan class=\"rc-ge-product-bubble\"\u003eGuru asli\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"rc-ge-product-copy\"\u003e\n\u003cp\u003eOpsi ini untuk siswa yang menginginkan kemudahan membayar sekali per bulan daripada mengurus pembayaran per minggu. Kebanyakan siswa memilih satu waktu kelas reguler setiap minggu dan tetap menggunakannya, tetapi jika Anda perlu mengubah waktu mingguan Anda sesekali, biasanya tidak masalah. Cukup beri tahu Ross dan Dokumen Waktu Anda dapat diperbarui sesuai kebutuhan.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eTerbaik untuk:\u003c\/strong\u003e siswa yang menginginkan pembayaran bulanan sederhana untuk kelas bahasa Inggris mingguan reguler\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eJadwal:\u003c\/strong\u003e biasanya satu waktu kelas per minggu\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFleksibilitas:\u003c\/strong\u003e perubahan jadwal biasanya diperbolehkan saat diperlukan — cukup komunikasikan sebelumnya\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eKebijakan:\u003c\/strong\u003e kebijakan pembatalan 5+ jam yang biasa masih berlaku\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"rc-ge-times-shell\"\u003e\n\u003cdiv class=\"rc-ge-times-head\"\u003e\n\u003ch3\u003eWaktu kelas yang tersedia saat ini\u003c\/h3\u003e\n\u003cdiv class=\"rc-ge-times-ship\" aria-hidden=\"true\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0567\/6148\/3312\/files\/sail-1.gif?v=1692956642\" alt=\"\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp class=\"rc-ge-times-topline\"\u003eIni adalah waktu General English saat ini dalam zona waktu lokal Anda.\u003c\/p\u003e\n\u003cdiv id=\"rc-ge-timezone\" class=\"rc-ge-timezone\"\u003eMemeriksa zona waktu Anda…\u003c\/div\u003e\n\u003cdiv id=\"rc-ge-output\" class=\"rc-ge-times-loading\"\u003eMemuat waktu yang tersedia…\u003c\/div\u003e\n\u003cp class=\"rc-ge-note\"\u003eKebanyakan siswa memilih satu waktu mingguan reguler, tetapi perubahan kecil biasanya bisa diatur. Cukup beri tahu Ross.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"rc-ge-product-buttons\"\u003e\n\u003ca class=\"rc-ge-btn rc-ge-btn-primary\" href=\"\/id-za\/appointment\"\u003eBuat Janji\u003c\/a\u003e \u003ca class=\"rc-ge-btn rc-ge-btn-secondary\" href=\"\/id-za\/register\"\u003eDaftar\u003c\/a\u003e \u003ca class=\"rc-ge-btn rc-ge-btn-secondary\" href=\"\/id-za\/policy\"\u003eKebijakan\u003c\/a\u003e \u003ca class=\"rc-ge-btn rc-ge-btn-secondary\" href=\"\/id-za\/pages\/time-document\"\u003eDokumen Waktu\u003c\/a\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp\u003e \u003c\/p\u003e","brand":"rosscline.com","offers":[{"title":"Default Title","offer_id":42906910785584,"sku":null,"price":49.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0567\/6148\/3312\/files\/ross-cline-pay-as-you-go-four-classes-subscription-offer-square_b2e38195-6693-47aa-99e2-df63aa298e77.jpg?v=1778590988"}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0567\/6148\/3312\/collections\/english-pay-as-you-go-243791.jpg?v=1691658081","url":"https:\/\/rosscline.com\/id-za\/collections\/klasik-bayar-sesuai-pemakaian.oembed","provider":"rosscline.com","version":"1.0","type":"link"}