{"title":"Tiếng Anh trả theo mức dùng! | Lớp tiếng Anh trực tuyến linh hoạt","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\u003eTiếng Anh Tổng quát \u003cem\u003eTrả Tiền Theo Lượt!\u003c\/em\u003e cho Người lớn (16+)\u003c\/strong\u003e\u003c\/h1\u003e\n       \u003cp class=\"rc-adults-sub\"\u003eGiao tiếp thực tế, hướng dẫn rõ ràng, và mô hình Trả Tiền Theo Lượt độc đáo dành cho người lớn muốn sự linh hoạt mà không bị ràng buộc thành viên.\u003c\/p\u003e\n       \u003cdiv class=\"rc-adults-highlight\"\u003eKhông hợp đồng dài hạn. Không áp lực gói dịch vụ phình to. Chỉ trả tiền cho thời gian học tiếng Anh bạn thực sự muốn và sử dụng.\u003c\/div\u003e\n       \u003cdiv class=\"rc-adults-buttons\"\u003e\n         \u003ca href=\"\/vi-qa\/appointment\" class=\"rc-adults-btn rc-adults-btn-primary\"\u003eĐặt Lịch Hẹn\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\"\u003eGiao tiếp thực tế\u003c\/div\u003e\n         \u003cp\u003eNghe, nói, từ vựng và sự tự tin được xây dựng theo cách cảm thấy hữu ích trong cuộc sống thực.\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\"\u003eLinh hoạt theo thiết kế\u003c\/div\u003e\n         \u003cp\u003eNếu cuộc sống của bạn bận rộn hoặc không thể đoán trước, mô hình này giúp bạn dễ dàng duy trì tiếng Anh trong thói quen hàng ngày.\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\"\u003eHơn cả việc dạy kèm ngẫu nhiên\u003c\/div\u003e\n         \u003cp\u003eBạn đang học với một giáo viên thực sự, không phải đoán mò qua một nền tảng khổng lồ đầy hồ sơ.\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\u003eLớp học trực tuyến trực tiếp với Ross Cline\u003c\/h3\u003e\n     \u003cp\u003eĐược hướng dẫn bởi một giáo viên giàu kinh nghiệm với phong cách thực tế, khích lệ, được hình thành qua hơn 20 năm trong lĩnh vực ESL.\u003c\/p\u003e\n   \u003c\/div\u003e\n   \u003cdiv class=\"rc-adults-card\"\u003e\n     \u003ch3\u003eNhóm nhỏ, thân thiện\u003c\/h3\u003e\n     \u003cp\u003eĐủ cấu trúc để tiến bộ, đủ thoải mái để giúp bạn thư giãn, nói chuyện và thực sự tận hưởng quá trình học.\u003c\/p\u003e\n   \u003c\/div\u003e\n   \u003cdiv class=\"rc-adults-card\"\u003e\n     \u003ch3\u003eChỉ trả tiền cho thời gian bạn sử dụng\u003c\/h3\u003e\n     \u003cp\u003eMột hệ thống Trả Tiền Theo Lượt đơn giản được thiết kế cho người lớn muốn tự do hơn và ít lãng phí hơn.\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\u003eChương trình này thực sự là về điều gì\u003c\/h2\u003e\n     \u003cp\u003eChương trình này dành cho người lớn muốn tiếng Anh sống động, hữu ích và đáng để quay lại. Nó được thiết kế xoay quanh giao tiếp thực tế, không chỉ là bài tập trong sách giáo khoa hay dạy kèm chung chung. Dù mục tiêu của bạn là công việc, du lịch, sự tự tin, lưu loát hay đơn giản là thoát khỏi tình trạng bế tắc, trọng tâm là nói, nghe, hiểu và tạo đà thực sự.\u003c\/p\u003e\n     \u003cp\u003eNếu bạn mệt mỏi với các hệ thống cứng nhắc, cam kết kiểu thành viên, hoặc các nền tảng vô cảm nơi bạn không thực sự biết bạn sẽ nhận được giáo viên như thế nào, đây là lựa chọn thay thế.\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\u003eCách bắt đầu\u003c\/h2\u003e\n     \u003cul class=\"rc-adults-list\"\u003e\n       \u003cli\u003eĐặt lịch hẹn để chúng ta có thể nói về mục tiêu của bạn và lựa chọn phù hợp nhất với trình độ của bạn.\u003c\/li\u003e\n       \u003cli\u003eHoàn thành mẫu đăng ký khi bạn đã sẵn sàng.\u003c\/li\u003e\n       \u003cli\u003eLàm bài kiểm tra xếp lớp tiếng Anh miễn phí để chúng tôi có thể hướng dẫn bạn đúng cách.\u003c\/li\u003e\n       \u003cli\u003eNhận Tài liệu Thời gian của bạn với chi tiết lớp học, thông tin tham gia và các bước tiếp theo.\u003c\/li\u003e\n     \u003c\/ul\u003e\n     \u003cdiv class=\"rc-adults-proof\"\u003e\n       \u003cstrong\u003eCác lựa chọn hiện tại được hiển thị ngay trên trang này.\u003c\/strong\u003e Thời gian lớp học có sẵn bên dưới có thể tự động hiển thị theo múi giờ địa phương của người xem.\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\u003eThời gian lớp học có sẵn\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\"\u003eDưới đây là thời gian lớp học Tiếng Anh Tổng quát Trả Tiền Theo Lượt hiện tại.\u003c\/p\u003e\n     \u003cdiv id=\"rc-payg-timezone\" class=\"rc-payg-timezone\"\u003eĐang kiểm tra múi giờ của bạn…\u003c\/div\u003e\n     \u003cdiv id=\"rc-payg-output\" class=\"rc-payg-loading\"\u003eĐang tải thời gian có sẵn…\u003c\/div\u003e\n     \u003cp class=\"rc-payg-note\"\u003eTất cả thời gian được hiển thị tự động theo múi giờ địa phương của người xem.\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\u003eVề Ross\u003c\/h2\u003e\n     \u003cp\u003eRoss Cline đã làm việc trong lĩnh vực ESL hơn 20 năm, giảng dạy tại Toronto, Đức và Đài Loan. Ông thành lập công ty ngôn ngữ của mình vào năm 2009 và đã dạy hàng ngàn học viên trong lớp học và trực tuyến. Phong cách giảng dạy của ông thân thiện, kiên nhẫn và tập trung giúp bạn thực sự sử dụng tiếng Anh trong cuộc sống thực.\u003c\/p\u003e\n     \u003cp\u003eNếu bạn đã sẵn sàng xây dựng đà tiếng Anh thực sự với một giáo viên bạn có thể tin tưởng, bước tiếp theo rất đơn giản.\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=\"\/vi-qa\/appointment\" class=\"rc-adults-btn rc-adults-btn-primary\"\u003eĐặt Lịch Hẹn\u003c\/a\u003e\n     \u003ca href=\"\/vi-qa\/pages\/english-level-test\" class=\"rc-adults-btn rc-adults-btn-secondary\"\u003eLàm Bài Kiểm Tra Xếp Lớp\u003c\/a\u003e\n     \u003ca href=\"\/vi-qa\/pages\/contact\" class=\"rc-adults-btn rc-adults-btn-secondary\"\u003eLiên Hệ 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: 'Múi giờ:',\n     loading: 'Đang tải thời gian có sẵn…',\n     empty: 'Hiện tại không có thời gian lớp học nào. Vui lòng quay lại sau.',\n     error: 'Chúng tôi không thể tải lịch học ngay bây giờ.',\n     localTimeSuffix: 'giờ địa phương',\n     dayLabelFallback: 'Thời gian có sẵn'\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 || 'Giờ địa phương');\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('Tải thất bại');\n   };\n   document.head.appendChild(script);\n }\n\n loadSchedule();\n})();\n\u003c\/script\u003e","products":[{"product_id":"onehour","title":"Lớp Học Trả Theo Giờ 1 Giờ","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\u003eTiếng Anh Tổng quát 1 Giờ\u003c\/h2\u003e\n    \u003cp class=\"rc-ge-product-sub\"\u003eMột cách đơn giản, không áp lực để thử một lớp học, tham gia khi bạn thấy phù hợp, hoặc bắt đầu xây dựng tiếng Anh cùng Ross Cline.\u003c\/p\u003e\n    \u003cdiv class=\"rc-ge-product-highlight\"\u003eBước đầu tiên: đặt lịch hẹn với Ross, sau đó chúng ta sẽ cùng tìm ra phương án phù hợp nhất.\u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"rc-ge-product-bubbles\"\u003e\n    \u003cspan class=\"rc-ge-product-bubble\"\u003eThử một lần\u003c\/span\u003e\n    \u003cspan class=\"rc-ge-product-bubble\"\u003eLinh hoạt\u003c\/span\u003e\n    \u003cspan class=\"rc-ge-product-bubble\"\u003e1 giờ học trực tuyến\u003c\/span\u003e\n    \u003cspan class=\"rc-ge-product-bubble\"\u003eGiáo viên thật\u003c\/span\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"rc-ge-product-copy\"\u003e\n    \u003cp\u003eLựa chọn này lý tưởng cho học viên lần đầu, người học thỉnh thoảng, hoặc người lớn bận rộn muốn giữ tiếng Anh trong cuộc sống mà không phải cam kết lâu dài ngay lập tức.\u003c\/p\u003e\n    \u003cul\u003e\n      \u003cli\u003e\n\u003cstrong\u003ePhù hợp nhất cho:\u003c\/strong\u003e thử một lớp học, quay lại khi bạn thấy phù hợp, hoặc bắt đầu học\u003c\/li\u003e\n      \u003cli\u003e\n\u003cstrong\u003eThời lượng lớp học:\u003c\/strong\u003e 1 giờ học trực tuyến\u003c\/li\u003e\n      \u003cli\u003e\n\u003cstrong\u003ePhương pháp:\u003c\/strong\u003e hội thoại thực tế, hướng dẫn rõ ràng, và tiếng Anh thực tiễn\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\u003eThời gian lớp học hiện có\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\"\u003eĐây là các thời gian học Tiếng Anh Tổng quát hiện tại theo múi giờ địa phương của bạn.\u003c\/p\u003e\n    \u003cdiv id=\"rc-ge-timezone\" class=\"rc-ge-timezone\"\u003eĐang kiểm tra múi giờ của bạn…\u003c\/div\u003e\n    \u003cdiv id=\"rc-ge-output\" class=\"rc-ge-times-loading\"\u003eĐang tải thời gian có sẵn…\u003c\/div\u003e\n    \u003cp class=\"rc-ge-note\"\u003eSau khi bạn đã đặt lịch hẹn, Ross sẽ giúp bạn chọn lựa chọn và thời gian lớp học phù hợp nhất.\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=\"\/vi-qa\/appointment\"\u003eĐặt Lịch Hẹn\u003c\/a\u003e\n    \u003ca class=\"rc-ge-btn rc-ge-btn-secondary\" href=\"\/vi-qa\/register\"\u003eĐăng Ký\u003c\/a\u003e\n    \u003ca class=\"rc-ge-btn rc-ge-btn-secondary\" href=\"\/vi-qa\/policy\"\u003eChính Sách\u003c\/a\u003e\n    \u003ca class=\"rc-ge-btn rc-ge-btn-secondary\" href=\"\/vi-qa\/pages\/time-document\"\u003eTài Liệu Thời Gian\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: 'Múi giờ:',\n      loading: 'Đang tải thời gian có sẵn…',\n      empty: 'Hiện tại không có thời gian lớp học nào. Vui lòng quay lại sau.',\n      error: 'Chúng tôi không thể tải lịch học ngay bây giờ.',\n      localTimeSuffix: 'giờ địa phương',\n      dayLabelFallback: 'Thời gian có sẵn'\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 || 'Giờ địa phương');\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('Tải thất bại');\n    };\n    document.head.appendChild(script);\n  }\n\n  loadSchedule();\n})();\n\u003c\/script\u003e","brand":"rosscline.com","offers":[{"title":"Tiêu đề Mặc định","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":"Đăng Ký Trả Theo Sử Dụng","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\u003eĐăng Ký Hàng Tháng Trả Theo Lượt\u003c\/h2\u003e\n\u003cp class=\"rc-ge-product-sub\"\u003eMột cách đơn giản hơn để duy trì lớp học tiếng Anh hàng tuần mỗi tháng mà không phải lo lắng về việc thanh toán từng tuần.\u003c\/p\u003e\n\u003cdiv class=\"rc-ge-product-highlight\"\u003eThanh toán một lần mỗi tháng cho thời gian học hàng tuần của bạn. Cần điều chỉnh thời gian học thường xuyên đôi khi? Chỉ cần thông báo cho Ross.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"rc-ge-product-bubbles\"\u003e\n\u003cspan class=\"rc-ge-product-bubble\"\u003eThanh toán hàng tháng\u003c\/span\u003e \u003cspan class=\"rc-ge-product-bubble\"\u003eThời gian học hàng tuần\u003c\/span\u003e \u003cspan class=\"rc-ge-product-bubble\"\u003eThay đổi linh hoạt\u003c\/span\u003e \u003cspan class=\"rc-ge-product-bubble\"\u003eGiáo viên thật\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"rc-ge-product-copy\"\u003e\n\u003cp\u003eLựa chọn này dành cho học viên muốn sự đơn giản khi thanh toán một lần mỗi tháng thay vì phải xử lý thanh toán từng tuần. Hầu hết học viên chọn một thời gian học cố định mỗi tuần và giữ nguyên, nhưng nếu bạn cần thay đổi thời gian học hàng tuần đôi khi, điều đó thường không thành vấn đề. Chỉ cần thông báo cho Ross và Tài liệu Thời gian của bạn sẽ được cập nhật tương ứng.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003ePhù hợp nhất cho:\u003c\/strong\u003e học viên muốn thanh toán hàng tháng đơn giản cho các lớp tiếng Anh hàng tuần cố định\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eLịch học:\u003c\/strong\u003e thường là một buổi học mỗi tuần\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eTính linh hoạt:\u003c\/strong\u003e thay đổi lịch học thường được chấp nhận khi cần — chỉ cần thông báo trước\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eChính sách:\u003c\/strong\u003e chính sách hủy lớp trước 5+ giờ vẫn được áp dụng\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\u003eThời gian học hiện có\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\"\u003eĐây là các thời gian học tiếng Anh tổng quát hiện tại theo múi giờ địa phương của bạn.\u003c\/p\u003e\n\u003cdiv id=\"rc-ge-timezone\" class=\"rc-ge-timezone\"\u003eĐang kiểm tra múi giờ của bạn…\u003c\/div\u003e\n\u003cdiv id=\"rc-ge-output\" class=\"rc-ge-times-loading\"\u003eĐang tải thời gian có sẵn…\u003c\/div\u003e\n\u003cp class=\"rc-ge-note\"\u003eHầu hết học viên chọn một thời gian cố định hàng tuần, nhưng thường có thể sắp xếp thay đổi nhỏ. Chỉ cần thông báo cho 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=\"\/vi-qa\/appointment\"\u003eĐặt Lịch Hẹn\u003c\/a\u003e \u003ca class=\"rc-ge-btn rc-ge-btn-secondary\" href=\"\/vi-qa\/register\"\u003eĐăng Ký\u003c\/a\u003e \u003ca class=\"rc-ge-btn rc-ge-btn-secondary\" href=\"\/vi-qa\/policy\"\u003eChính Sách\u003c\/a\u003e \u003ca class=\"rc-ge-btn rc-ge-btn-secondary\" href=\"\/vi-qa\/pages\/time-document\"\u003eTài Liệu Thời Gian\u003c\/a\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp\u003e \u003c\/p\u003e","brand":"rosscline.com","offers":[{"title":"Tiêu đề Mặc định","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\/vi-qa\/collections\/co-dien-tra-theo-phan-su-dung.oembed","provider":"rosscline.com","version":"1.0","type":"link"}