{"id":255,"date":"2026-09-17T01:01:38","date_gmt":"2026-09-17T05:01:38","guid":{"rendered":"https:\/\/www.airepoto.com\/en\/?page_id=255"},"modified":"2026-09-21T04:53:23","modified_gmt":"2026-09-21T08:53:23","slug":"sdk","status":"publish","type":"page","link":"https:\/\/www.airepoto.com\/en\/sdk\/","title":{"rendered":"SDK"},"content":{"rendered":"<div class=\"sdk_page\">\r\n\r\n    <!-- ===== Hero (\uacf5\ud1b5 sub_hero) ===== -->\r\n    <section class=\"sub_hero\">\r\n        <picture class=\"sub_hero_bg\">\r\n            <source media=\"(max-width: 640px)\" srcset=\"\/wp-content\/uploads\/image\/sub\/hero_sdk_en_m.webp\" \/>\r\n            <img loading=\"lazy\" decoding=\"async\" src=\"\/wp-content\/uploads\/image\/sub\/hero_sdk_en.webp\" width=\"1440\" height=\"620\" alt=\"AI\ub808\ud3ec\ud1a0 SDK\" \/>\r\n        <\/picture>\r\n        <div class=\"container\">\r\n            <div class=\"sub_hero_text\">\r\n                <h1>Add custom AI meeting minutes to your <br class=\"br_pc\">web and app with the Airepoto SDK<\/h1>\r\n                <p class=\"sub_desc\">Use Airepoto through SDK \u2014 quickly deploy it into mobile apps, <br class=\"br_pc\">internal portals, video conferencing and consultation platforms.<\/p>\r\n                <div class=\"btn_wrap\">\r\n                    <a href=\"#sdk_inquiry\" id=\"sdk_hero_inquiry\" class=\"hero_btn blue_line able_cta_btn\">Contact Sales for SDK<\/a>    \r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n    <\/section>\r\n\r\n    <!-- snackbar: hero ~ repoto_faq \uad6c\uac04\uc5d0\uc11c\ub9cc \ub178\ucd9c (\uc544\ub798 \uc2a4\ud06c\ub9bd\ud2b8\uc5d0\uc11c .is-visible \ud1a0\uae00) -->\r\n    <div class=\"snackbar\">\r\n        <div class=\"box\">\r\n            <div class=\"txt\">\r\n            <img src=\"\/wp-content\/uploads\/image\/sub\/controls_toast_icon.webp\" width=\"36\" height=\"36\" decoding=\"async\" loading=\"lazy\" alt=\"\">\r\n            <span>Adopting the SDK? Talk to us now<\/span>\r\n            <\/div>\r\n            <div class=\"snackbar_actions\">\r\n                <div class=\"next\">Late<\/div>\r\n                <a href=\"#sdk_inquiry\" id=\"sdk_snackbar_inquiry\" class=\"form_btn form_scroll inquiry able_cta_btn\" data-target=\"#sdkInquiry\">Contact Us Now<img decoding=\"async\" src=\"\/wp-content\/uploads\/image\/sub\/icon_snackbar.svg\" width=\"20px\" height=\"20px\" alt=\"\uc9c0\uae08 \ubb3c\uc5b4\ubcf4\uae30\"><\/a>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- ===== Stats ===== -->\r\n    <section class=\"sdk_stats\">\r\n        <div class=\"container\">\r\n            <div class=\"sdk_stats_row\" id=\"sdk_stats_counter\">\r\n                <div class=\"sdk_stats_item\">\r\n                    <div class=\"sdk_stats_item_box\">\r\n                        <div class=\"sdk_stats_num\"><span class=\"lwCounter\">100<\/span><span class=\"unit\">%<\/span><\/div>\r\n                        <div class=\"sdk_stats_label\">Brand-customized UX<\/div>\r\n                    <\/div>\r\n                <\/div>\r\n                <div class=\"sdk_stats_item\">\r\n                    <div class=\"sdk_stats_item_box\">\r\n                        <div class=\"sdk_stats_num\"><span class=\"lwCounter\">1-2<\/span><span class=\"unit\">weeks<\/span><\/div>\r\n                        <div class=\"sdk_stats_label\">SDK setup time<\/div>\r\n                    <\/div>\r\n                <\/div>\r\n                <div class=\"sdk_stats_item\">\r\n                    <div class=\"sdk_stats_item_box\">\r\n                        <div class=\"sdk_stats_num\"><span class=\"lwCounter\">99.9<\/span><span class=\"unit\">%<\/span><\/div>\r\n                        <div class=\"sdk_stats_label\">System stability \u2014 SLA-based<\/div>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n    <\/section>\r\n\r\n    <!-- ===== Section 1: 3-way \ube44\uad50 (SaaS \/ On-Premise \/ SDK) ===== -->\r\n    <section class=\"sdk_compare\">\r\n        <div class=\"container\">\r\n            <div class=\"sdk_section_head\">\r\n                <h2>Integrate AI directly into your existing workflow<br class=\"br_pc\"> \u2014 <br class=\"br_mobile\">no separate service required<\/h2>\r\n                <p class=\"sub_desc\">Integrate the AI meeting minutes engine directly into your existing system <br class=\"br_pc\">for fast deployment \u2014 with no separate service to manage.<\/p>\r\n            <\/div>\r\n\r\n            <div class=\"sdk_compare_cards\">\r\n                <!-- \uad6c\ub3c5\ud615 SaaS -->\r\n                <div class=\"sdk_compare_card\">\r\n                    <div class=\"sdk_compare_card_head\">\r\n                        <div>\r\n                            <span class=\"sdk_compare_badge\">SaaS<\/span>\r\n                        <\/div>\r\n                        <picture>\r\n                            <source media=\"(max-width: 640px)\" srcset=\"\/wp-content\/uploads\/image\/sub\/img_sdk_compare_saas_m.webp\" \/>\r\n                            <img loading=\"lazy\" decoding=\"async\" src=\"\/wp-content\/uploads\/image\/sub\/img_sdk_compare_saas.webp\" width=\"269\" height=\"155\" alt=\"\uad6c\ub3c5\ud615(SaaS)\" \/>\r\n                        <\/picture>\r\n                    <\/div>\r\n                    <ul class=\"sdk_compare_list\">\r\n                        <li><span class=\"sdk_compare_label\">Environment<\/span><span class=\"sdk_compare_val\">External cloud web\/app access<\/span><\/li>\r\n                        <li><span class=\"sdk_compare_label\">Deployment time<\/span><span class=\"sdk_compare_val\">Immediately after subscribing<\/span><\/li>\r\n                        <li><span class=\"sdk_compare_label\">Screen &#038; UI\/UX<\/span><span class=\"sdk_compare_val\">Fixed default UI<\/span><\/li>\r\n                        <li><span class=\"sdk_compare_label\">Security &#038; data isolation<\/span><span class=\"sdk_compare_val\">Complies with external cloud security standards<\/span><\/li>\r\n                        <li><span class=\"sdk_compare_label\">Account &#038; login<\/span><span class=\"sdk_compare_val\">Requires a separate <br class=\"br_pc\">account login<\/span><\/li>\r\n                    <\/ul>\r\n                <\/div>\r\n\r\n                <!-- \uad6c\ucd95\ud615 \uc194\ub8e8\uc158 On-Premise -->\r\n                <div class=\"sdk_compare_card\">\r\n                    <div class=\"sdk_compare_card_head\">\r\n                        <div>\r\n                            <span class=\"sdk_compare_badge\">On-Premise<\/span>\r\n                        <\/div>\r\n                        <picture>\r\n                            <source media=\"(max-width: 640px)\" srcset=\"\/wp-content\/uploads\/image\/sub\/img_sdk_compare_onpremise_m.webp\" \/>\r\n                            <img loading=\"lazy\" decoding=\"async\" src=\"\/wp-content\/uploads\/image\/sub\/img_sdk_compare_onpremise.webp\" width=\"269\" height=\"155\" alt=\"\uad6c\ucd95\ud615 \uc194\ub8e8\uc158(On-Premise)\" \/>\r\n                        <\/picture>\r\n                    <\/div>\r\n                    <ul class=\"sdk_compare_list\">\r\n                        <li><span class=\"sdk_compare_label\">Environment<\/span><span class=\"sdk_compare_val\">Dedicated on-premises server<\/span><\/li>\r\n                        <li><span class=\"sdk_compare_label\">Deployment time<\/span><span class=\"sdk_compare_val\">3 to 6 months<\/span><\/li>\r\n                        <li><span class=\"sdk_compare_label\">Screen &#038; UI\/UX<\/span><span class=\"sdk_compare_val\">Fixed default UI<\/span><\/li>\r\n                        <li><span class=\"sdk_compare_label\">Security &#038; data isolation<\/span><span class=\"sdk_compare_val\">Fully isolated on an internal network<\/span><\/li>\r\n                        <li><span class=\"sdk_compare_label\">Account &#038; login<\/span><span class=\"sdk_compare_val\">Requires internal account integration development<\/span><\/li>\r\n                    <\/ul>\r\n                <\/div>\r\n\r\n                <!-- SDK (\uac15\uc870) -->\r\n                <div class=\"sdk_compare_card is-featured\">\r\n                    <div class=\"sdk_compare_card_head\">\r\n                        <div>\r\n                            <span class=\"sdk_compare_badge\">SDK<\/span>\r\n                        <\/div>\r\n                        <picture>\r\n                            <source media=\"(max-width: 640px)\" srcset=\"\/wp-content\/uploads\/image\/sub\/img_sdk_compare_sdk_m.webp\" \/>\r\n                            <img loading=\"lazy\" decoding=\"async\" src=\"\/wp-content\/uploads\/image\/sub\/img_sdk_compare_sdk.webp\" width=\"269\" height=\"155\" alt=\"SDK\" \/>\r\n                        <\/picture>\r\n                    <\/div>\r\n                    <ul class=\"sdk_compare_list\">\r\n                        <li><span class=\"sdk_compare_label\">Environment<\/span><span class=\"sdk_compare_val\">Runs inside your existing service<\/span><\/li>\r\n                        <li><span class=\"sdk_compare_label\">Deployment time<\/span><span class=\"sdk_compare_val\">1\u20132 weeks<\/span><\/li>\r\n                        <li><span class=\"sdk_compare_label\">Screen &#038; UI\/UX<\/span><span class=\"sdk_compare_val\">100% custom branding<\/span><\/li>\r\n                        <li><span class=\"sdk_compare_label\">Security &#038; data isolation<\/span><span class=\"sdk_compare_val\">Choose external cloud, private cloud, or an isolated internal network<\/span><\/li>\r\n                        <li><span class=\"sdk_compare_label\">Account &#038; login<\/span><span class=\"sdk_compare_val\">Requires internal account integration <br class=\"br_pc\">development<\/span><\/li>\r\n                    <\/ul>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n    <\/section>\r\n\r\n    <!-- ===== Section 2: AI\ub808\ud3ec\ud1a0 SDK \ub3c4\uc785\uc73c\ub85c \ub9de\ucda4\ud615 AI \ud68c\uc758\ub85d\uc744 \ub9cc\ub4dc\uc138\uc694 ===== -->\r\n    <section class=\"sdk_reasons\">\r\n        <div class=\"container\">\r\n            <div class=\"sdk_section_head\">\r\n                <h2>Build custom AI meeting minutes with the Airepoto SDK<\/h2>\r\n                <p class=\"sub_desc\">Use every proven Airepoto feature exactly as is, tailored to your brand and system environment.<\/p>\r\n            <\/div>\r\n\r\n            <div class=\"sdk_reason_grid\">\r\n                <div class=\"sdk_reason_card\">\r\n                    <div class=\"sdk_reason_ico\">\r\n                        <img decoding=\"async\" src=\"\/wp-content\/uploads\/image\/sub\/ico_sdk_feature01.webp\" width=\"108\" height=\"100\" alt=\"\ub9de\ucda4\ud615 UI \uc801\uc6a9\" loading=\"lazy\" \/>\r\n                    <\/div>\r\n                    <h3>All Airepoto features, <br class=\"br_mobile\">tailored to your company<\/h3>\r\n                    <p>Add Airepoto features with no external branding exposed \u2014 100% matched to your existing brand UI\/UX.<\/p>\r\n                <\/div>\r\n                <div class=\"sdk_reason_card\">\r\n                    <div class=\"sdk_reason_ico\">\r\n                        <img decoding=\"async\" src=\"\/wp-content\/uploads\/image\/sub\/ico_sdk_feature02.webp\" width=\"108\" height=\"100\" alt=\"\uae30\uc874 \uc5c5\ubb34\uc640 \ub3d9\uc77c\ud55c \ubc29\uc2dd\" loading=\"lazy\" \/>\r\n                    <\/div>\r\n                    <h3>Use the same account as your existing workflow<\/h3>\r\n                    <p>No need to switch to a separate service \u2014 use your existing groupware and CRM environment and SSO login as is.<\/p>\r\n                <\/div>\r\n                <div class=\"sdk_reason_card\">\r\n                    <div class=\"sdk_reason_ico\">\r\n                        <img decoding=\"async\" src=\"\/wp-content\/uploads\/image\/sub\/ico_sdk_feature03.webp\" width=\"108\" height=\"100\" alt=\"1-2\uc8fc \ub0b4 \uc2e0\uc18d\ud55c \ub0b4\uc7ac\ud654\" loading=\"lazy\" \/>\r\n                    <\/div>\r\n                    <h3>Fully integrated in just 1-2 weeks<\/h3>\r\n                    <p>Skip months of complex AI R&#038;D \u2014 complete integration as your own service feature in just 1-2 weeks using standard libraries.<\/p>\r\n                <\/div>\r\n                <div class=\"sdk_reason_card\">\r\n                    <div class=\"sdk_reason_ico\">\r\n                        <img decoding=\"async\" src=\"\/wp-content\/uploads\/image\/sub\/ico_sdk_feature04.webp\" width=\"108\" height=\"100\" alt=\"\uc5d4\ud130\ud504\ub77c\uc774\uc988 \ubcf4\uc548 \ubc0f \uc548\uc815\uc131\" loading=\"lazy\" \/>\r\n                    <\/div>\r\n                    <h3>Enterprise-grade security &#038; stability<\/h3>\r\n                    <p>Supports on-premises server deployment, protecting meeting data with automatic backup even in the event of an unexpected shutdown or dead battery.<\/p>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n    <\/section>\r\n\r\n    <!-- ===== Section 3: \uc6f9\/\ubaa8\ubc14\uc77c \ud658\uacbd\ubcc4 \uae30\ub2a5 ===== -->\r\n    <section class=\"sdk_feature\">\r\n        <div class=\"container\">\r\n            <div class=\"sdk_section_head\">\r\n                <h2>Offers a range of features for both web <br class=\"br_pc\">and mobile environments<\/h2>\r\n                <p class=\"sub_desc\">Flexibly integrate it into whatever environment you&#8217;re building \u2014 <br class=\"br_pc\">web portals, mobile apps, and more.<\/p>\r\n            <\/div>\r\n\r\n            <!-- \uc6f9 \/ \uc11c\ubc84 \ud658\uacbd -->\r\n            <div class=\"sdk_autotab_block\">\r\n                <h3>Web\/server environment <br class=\"br_mobile\">(Web &#038; Server SDK)<\/h3>\r\n                <p>Web-only API integration spec for internal portals, groupware, video conferencing, and CRM systems<br>\u203b Includes Airepoto&#8217;s core features by default \u2014 AI script generation, summarization, and report conversion<\/p>\r\n\r\n                <div class=\"feature_autotab\" data-autotab data-interval=\"10000\">\r\n                    <div class=\"feature_autotab_list\">\r\n                        <div class=\"feature_autotab_item is-active\" data-index=\"0\">\r\n                            <button type=\"button\" id=\"sdk_environment_web1\" class=\"feature_autotab_head able_cta_btn\">\r\n                                <span class=\"progress_track\"><span class=\"progress_fill\"><\/span><\/span>\r\n                                <h3>Core AI meeting minutes engine built in<\/h3>\r\n                            <\/button>\r\n                            <div class=\"feature_autotab_panel\">\r\n                                <div class=\"feature_autotab_panel_inner\">\r\n                                    <p>Includes speech-to-text (STT), AI meeting summarization, speaker separation, a script editor, and report export by default.<\/p>\r\n                                    <div class=\"feature_autotab_media\">\r\n                                        <img src=\"\/wp-content\/uploads\/image\/sub\/img_sdk_autotab_01_en.webp\" width=\"598\" height=\"414\" alt=\"Core AI meeting minutes engine built in\" loading=\"lazy\" decoding=\"async\" \/>\r\n                                    <\/div>\r\n                                    <div class=\"feature_autotab_progress_m\"><span class=\"progress_fill\"><\/span><\/div>\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"feature_autotab_item\" data-index=\"1\">\r\n                            <button type=\"button\" id=\"sdk_environment_web2\" class=\"feature_autotab_head able_cta_btn\">\r\n                                <span class=\"progress_track\"><span class=\"progress_fill\"><\/span><\/span>\r\n                                <h3>Airepoto BOT integration<\/h3>\r\n                            <\/button>\r\n                            <div class=\"feature_autotab_panel\">\r\n                                <div class=\"feature_autotab_panel_inner\">\r\n                                    <p>Enter the meeting URL from RemoteMeeting, Zoom, Teams, Meet, Webex, and other major platforms \u2014 <br class=\"br_pc\">the BOT joins and precisely captures audio.<\/p>\r\n                                    <div class=\"feature_autotab_media\">\r\n                                        <img src=\"\/wp-content\/uploads\/image\/sub\/img_sdk_autotab_02_en.webp\" width=\"598\" height=\"414\" alt=\"Airepoto BOT integration\" loading=\"lazy\" decoding=\"async\" \/>\r\n                                    <\/div>\r\n                                    <div class=\"feature_autotab_progress_m\"><span class=\"progress_fill\"><\/span><\/div>\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"feature_autotab_item\" data-index=\"2\">\r\n                            <button type=\"button\" id=\"sdk_environment_web3\" class=\"feature_autotab_head able_cta_btn\">\r\n                                <span class=\"progress_track\"><span class=\"progress_fill\"><\/span><\/span>\r\n                                <h3>Web editor &#038; partial summarization<\/h3>\r\n                            <\/button>\r\n                            <div class=\"feature_autotab_panel\">\r\n                                <div class=\"feature_autotab_panel_inner\">\r\n                                    <p>Supports a script mini toolbar (speaker editing, bookmarks, notes), plus &#8216;partial summarization&#8217; of selected text and visibility toggle controls.<\/p>\r\n                                    <div class=\"feature_autotab_media\">\r\n                                        <img src=\"\/wp-content\/uploads\/image\/sub\/img_sdk_autotab_03_en.webp\" width=\"598\" height=\"414\" alt=\"Web editor &#038; partial summarization\" loading=\"lazy\" decoding=\"async\" \/>\r\n                                    <\/div>\r\n                                    <div class=\"feature_autotab_progress_m\"><span class=\"progress_fill\"><\/span><\/div>\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"feature_autotab_item\" data-index=\"3\">\r\n                            <button type=\"button\" id=\"sdk_environment_web4\" class=\"feature_autotab_head able_cta_btn\">\r\n                                <span class=\"progress_track\"><span class=\"progress_fill\"><\/span><\/span>\r\n                                <h3>Simultaneous screen &#038; audio recording<\/h3>\r\n                            <\/button>\r\n                            <div class=\"feature_autotab_panel\">\r\n                                <div class=\"feature_autotab_panel_inner\">\r\n                                    <p>Automatically records shared presentation slides, dashboard screens, and audio for up to 4 continuous hours.<\/p>\r\n                                    <div class=\"feature_autotab_media\">\r\n                                        <img src=\"\/wp-content\/uploads\/image\/sub\/img_sdk_autotab_04_en.webp\" width=\"598\" height=\"414\" alt=\"Simultaneous screen &#038; audio recording\" loading=\"lazy\" decoding=\"async\" \/>\r\n                                    <\/div>\r\n                                    <div class=\"feature_autotab_progress_m\"><span class=\"progress_fill\"><\/span><\/div>\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"feature_autotab_item\" data-index=\"4\">\r\n                            <button type=\"button\" id=\"sdk_environment_web5\" class=\"feature_autotab_head able_cta_btn\">\r\n                                <span class=\"progress_track\"><span class=\"progress_fill\"><\/span><\/span>\r\n                                <h3>Bulk user dictionary registration<\/h3>\r\n                            <\/button>\r\n                            <div class=\"feature_autotab_panel\">\r\n                                <div class=\"feature_autotab_panel_inner\">\r\n                                    <p>Register up to 100 internal terms, department names, or jargon in bulk via Excel to maximize recognition accuracy.<\/p>\r\n                                    <div class=\"feature_autotab_media\">\r\n                                        <img src=\"\/wp-content\/uploads\/image\/sub\/img_sdk_autotab_05_en.webp\" width=\"598\" height=\"414\" alt=\"Bulk user dictionary registration\" loading=\"lazy\" decoding=\"async\" \/>\r\n                                    <\/div>\r\n                                    <div class=\"feature_autotab_progress_m\"><span class=\"progress_fill\"><\/span><\/div>\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n<button type=\"button\" class=\"feature_autotab_toggle\" aria-pressed=\"false\" aria-label=\"\uc790\ub3d9 \uc7ac\uc0dd \uc77c\uc2dc\uc815\uc9c0\">\r\n                        <span class=\"ico_pause\" aria-hidden=\"true\"><\/span>\r\n                        <span class=\"ico_play\" aria-hidden=\"true\"><\/span>\r\n                    <\/button>\r\n\r\n                    <div class=\"feature_autotab_visual\">\r\n                        <div class=\"feature_autotab_visual_item is-active\" data-index=\"0\">\r\n                            <img src=\"\/wp-content\/uploads\/image\/sub\/img_sdk_autotab_01_en.webp\" width=\"598\" height=\"414\" alt=\"\ud575\uc2ec AI \ud68c\uc758\ub85d \uc5d4\uc9c4 \uae30\ubcf8 \ud0d1\uc7ac\" loading=\"lazy\" decoding=\"async\" \/>\r\n                        <\/div>\r\n                        <div class=\"feature_autotab_visual_item\" data-index=\"1\">\r\n                            <img src=\"\/wp-content\/uploads\/image\/sub\/img_sdk_autotab_02_en.webp\" width=\"598\" height=\"414\" alt=\"AI\ub808\ud3ec\ud1a0 BOT \uc5f0\ub3d9\" loading=\"lazy\" decoding=\"async\" \/>\r\n                        <\/div>\r\n                        <div class=\"feature_autotab_visual_item\" data-index=\"2\">\r\n                            <img src=\"\/wp-content\/uploads\/image\/sub\/img_sdk_autotab_03_en.webp\" width=\"598\" height=\"414\" alt=\"\uc6f9 \uc5d0\ub514\ud130 \ubc0f \ubd80\ubd84 \uc694\uc57d\" loading=\"lazy\" decoding=\"async\" \/>\r\n                        <\/div>\r\n                        <div class=\"feature_autotab_visual_item\" data-index=\"3\">\r\n                            <img src=\"\/wp-content\/uploads\/image\/sub\/img_sdk_autotab_04_en.webp\" width=\"598\" height=\"414\" alt=\"\ud654\uba74 \ubc0f \uc74c\uc131 \ub3d9\uc2dc \ub179\ud654\" loading=\"lazy\" decoding=\"async\" \/>\r\n                        <\/div>\r\n                        <div class=\"feature_autotab_visual_item\" data-index=\"4\">\r\n                            <img src=\"\/wp-content\/uploads\/image\/sub\/img_sdk_autotab_05_en.webp\" width=\"598\" height=\"414\" alt=\"\uc0ac\uc6a9\uc790 \uc0ac\uc804 \ub300\ub7c9 \ub4f1\ub85d\" loading=\"lazy\" decoding=\"async\" \/>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n\r\n            <!-- \ubaa8\ubc14\uc77c \ud658\uacbd -->\r\n            <div class=\"sdk_autotab_block\">\r\n                <h3>Mobile environment <br class=\"br_mobile\">(Native Mobile SDK)<\/h3>\r\n                <p class=\"adv_feature_desc\">Native mobile app library for in-person meeting recording, field visits, and work on the go<br>\u203b Includes all web features by default, plus additional mobile-only capabilities<\/p>\r\n\r\n                <div class=\"feature_autotab\" data-autotab data-interval=\"10000\">\r\n                    <div class=\"feature_autotab_list\">\r\n                        <div class=\"feature_autotab_item is-active\" data-index=\"0\">\r\n                            <button type=\"button\" id=\"sdk_environment_mobile1\" class=\"feature_autotab_head able_cta_btn\">\r\n                                <span class=\"progress_track\"><span class=\"progress_fill\"><\/span><\/span>\r\n                                <h3>100% support for all common Airepoto features<\/h3>\r\n                            <\/button>\r\n                            <div class=\"feature_autotab_panel\">\r\n                                <div class=\"feature_autotab_panel_inner\">\r\n                                    <p>Use the same core features as the web\/server environment \u2014 AI scripts, summarization, report conversion, and user dictionaries \u2014 on mobile as well.<\/p>\r\n                                    <div class=\"feature_autotab_media\">\r\n                                        <img src=\"\/wp-content\/uploads\/image\/sub\/img_sdk_autotab_mob_01_en.webp\" width=\"588\" height=\"290\" alt=\"100% support for all common Airepoto features\" loading=\"lazy\" decoding=\"async\" \/>\r\n                                    <\/div>\r\n                                    <div class=\"feature_autotab_progress_m\"><span class=\"progress_fill\"><\/span><\/div>\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"feature_autotab_item\" data-index=\"1\">\r\n                            <button type=\"button\" id=\"sdk_environment_mobile2\" class=\"feature_autotab_head able_cta_btn\">\r\n                                <span class=\"progress_track\"><span class=\"progress_fill\"><\/span><\/span>\r\n                                <h3>One-touch on-site recording<\/h3>\r\n                            <\/button>\r\n                            <div class=\"feature_autotab_panel\">\r\n                                <div class=\"feature_autotab_panel_inner\">\r\n                                    <p>Record continuously for up to 4 hours with a single tap, using smartphone mic control for in-person meetings while out of the office or on the move.<\/p>\r\n                                    <div class=\"feature_autotab_media\">\r\n                                        <img src=\"\/wp-content\/uploads\/image\/sub\/img_sdk_autotab_mob_02_en.webp\" width=\"588\" height=\"290\" alt=\"One-touch on-site recording\" loading=\"lazy\" decoding=\"async\" \/>\r\n                                    <\/div>\r\n                                    <div class=\"feature_autotab_progress_m\"><span class=\"progress_fill\"><\/span><\/div>\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"feature_autotab_item\" data-index=\"2\">\r\n                            <button type=\"button\" id=\"sdk_environment_mobile3\" class=\"feature_autotab_head able_cta_btn\">\r\n                                <span class=\"progress_track\"><span class=\"progress_fill\"><\/span><\/span>\r\n                                <h3>Uninterrupted background processing<\/h3>\r\n                            <\/button>\r\n                            <div class=\"feature_autotab_panel\">\r\n                                <div class=\"feature_autotab_panel_inner\">\r\n                                    <p>Recording and data analysis continue seamlessly in the background \u2014 even when the screen locks, the device sleeps, or you switch to another app.<\/p>\r\n                                    <div class=\"feature_autotab_media\">\r\n                                        <img src=\"\/wp-content\/uploads\/image\/sub\/img_sdk_autotab_mob_03_en.webp\" width=\"588\" height=\"290\" alt=\"Uninterrupted background processing\" loading=\"lazy\" decoding=\"async\" \/>\r\n                                    <\/div>\r\n                                    <div class=\"feature_autotab_progress_m\"><span class=\"progress_fill\"><\/span><\/div>\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"feature_autotab_item\" data-index=\"3\">\r\n                            <button type=\"button\" id=\"sdk_environment_mobile4\" class=\"feature_autotab_head able_cta_btn\">\r\n                                <span class=\"progress_track\"><span class=\"progress_fill\"><\/span><\/span>\r\n                                <h3>Automatic call interruption handling<\/h3>\r\n                            <\/button>\r\n                            <div class=\"feature_autotab_panel\">\r\n                                <div class=\"feature_autotab_panel_inner\">\r\n                                    <p>Automatically detects and pauses for incoming calls during recording, then resumes automatically once the call ends.<\/p>\r\n                                    <div class=\"feature_autotab_media\">\r\n                                        <img src=\"\/wp-content\/uploads\/image\/sub\/img_sdk_autotab_mob_04_en.webp\" width=\"588\" height=\"290\" alt=\"Automatic call interruption handling\" loading=\"lazy\" decoding=\"async\" \/>\r\n                                    <\/div>\r\n                                    <div class=\"feature_autotab_progress_m\"><span class=\"progress_fill\"><\/span><\/div>\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"feature_autotab_item\" data-index=\"4\">\r\n                            <button type=\"button\" id=\"sdk_environment_mobile5\" class=\"feature_autotab_head able_cta_btn\">\r\n                                <span class=\"progress_track\"><span class=\"progress_fill\"><\/span><\/span>\r\n                                <h3>Local sandbox backup &#038; recovery<\/h3>\r\n                            <\/button>\r\n                            <div class=\"feature_autotab_panel\">\r\n                                <div class=\"feature_autotab_panel_inner\">\r\n                                    <p>If the battery dies or the app is forced to close, audio data is instantly backed up to local sandbox storage to prevent loss.<\/p>\r\n                                    <div class=\"feature_autotab_media\">\r\n                                        <img src=\"\/wp-content\/uploads\/image\/sub\/img_sdk_autotab_mob_05_en.webp\" width=\"588\" height=\"290\" alt=\"Local sandbox backup &#038; recovery\" loading=\"lazy\" decoding=\"async\" \/>\r\n                                    <\/div>\r\n                                    <div class=\"feature_autotab_progress_m\"><span class=\"progress_fill\"><\/span><\/div>\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n<button type=\"button\" class=\"feature_autotab_toggle\" aria-pressed=\"false\" aria-label=\"\uc790\ub3d9 \uc7ac\uc0dd \uc77c\uc2dc\uc815\uc9c0\">\r\n                        <span class=\"ico_pause\" aria-hidden=\"true\"><\/span>\r\n                        <span class=\"ico_play\" aria-hidden=\"true\"><\/span>\r\n                    <\/button>\r\n\r\n                    <div class=\"feature_autotab_visual\">\r\n                        <div class=\"feature_autotab_visual_item is-active\" data-index=\"0\">\r\n                            <img src=\"\/wp-content\/uploads\/image\/sub\/img_sdk_autotab_mob_01_en.webp\" width=\"588\" height=\"290\" alt=\"100% support for all common Airepoto features\" loading=\"lazy\" decoding=\"async\" \/>\r\n                        <\/div>\r\n                        <div class=\"feature_autotab_visual_item\" data-index=\"1\">\r\n                            <img src=\"\/wp-content\/uploads\/image\/sub\/img_sdk_autotab_mob_02_en.webp\" width=\"588\" height=\"290\" alt=\"One-touch on-site recording\" loading=\"lazy\" decoding=\"async\" \/>\r\n                        <\/div>\r\n                        <div class=\"feature_autotab_visual_item\" data-index=\"2\">\r\n                            <img src=\"\/wp-content\/uploads\/image\/sub\/img_sdk_autotab_mob_03_en.webp\" width=\"588\" height=\"290\" alt=\"Uninterrupted background processing\" loading=\"lazy\" decoding=\"async\" \/>\r\n                        <\/div>\r\n                        <div class=\"feature_autotab_visual_item\" data-index=\"3\">\r\n                            <img src=\"\/wp-content\/uploads\/image\/sub\/img_sdk_autotab_mob_04_en.webp\" width=\"588\" height=\"290\" alt=\"Automatic call interruption handling\" loading=\"lazy\" decoding=\"async\" \/>\r\n                        <\/div>\r\n                        <div class=\"feature_autotab_visual_item\" data-index=\"4\">\r\n                            <img src=\"\/wp-content\/uploads\/image\/sub\/img_sdk_autotab_mob_05_en.webp\" width=\"588\" height=\"290\" alt=\"Local sandbox backup &#038; recovery\" loading=\"lazy\" decoding=\"async\" \/>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n    <\/section>\r\n\r\n    <!-- ===== Section 4: \ud65c\uc6a9 \uc0ac\ub840 ===== -->\r\n    <section class=\"sdk_usecase\">\r\n        <div class=\"container\">\r\n            <div class=\"sdk_section_head\">\r\n                <h2>Here&#8217;s how you can use the Airepoto SDK<\/h2>\r\n                <p class=\"sub_desc\">Use it across internal systems, CRM, SaaS collaboration tools, and more.<\/p>\r\n            <\/div>\r\n\r\n            <div class=\"sdk_usecase_grid swiper-container\">\r\n                <div class=\"swiper-wrapper\">\r\n                    <div class=\"sdk_usecase_card swiper-slide\">\r\n                        <div class=\"sdk_usecase_thumb\">\r\n                            <img decoding=\"async\" src=\"\/wp-content\/uploads\/image\/sub\/img_sdk_usecase_01_en.webp\" width=\"400\" height=\"240\" alt=\"Combined with financial &#038; enterprise-wide portals\" loading=\"lazy\" \/>\r\n                        <\/div>\r\n                        <div class=\"sdk_usecase_body\">\r\n                            <span class=\"sdk_usecase_tag\">Internal work portal integration<\/span>\r\n                            <h4><span class=\"highlight-wrap bg02\"><span class=\"highlight-text\">Combined with financial &#038; <br>enterprise-wide portals<\/span><\/span><\/h4>\r\n                            <p>Integrates with calendar and meeting scheduling so a virtual BOT joins automatically and handles the recording for you. Completed meeting minutes are stored entirely within your own internal security network.<\/p>\r\n                            <div class=\"sdk_usecase_roi\">\r\n                                <span class=\"sdk_usecase_roi_title\">Results (ROI)<\/span>\r\n                                <ul class=\"sdk_usecase_roi_list\">\r\n                                    <li>Cuts manual meeting-minutes work by 85%<\/li>\r\n                                    <li>Fully turns internal meeting data into <br class=\"br_mobile\">a reusable asset<\/li>\r\n                                <\/ul>\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                    <div class=\"sdk_usecase_card swiper-slide\">\r\n                        <div class=\"sdk_usecase_thumb\">\r\n                            <img decoding=\"async\" src=\"\/wp-content\/uploads\/image\/sub\/img_sdk_usecase_02_en.webp\" width=\"400\" height=\"240\" alt=\"Contact center management solution\" loading=\"lazy\" \/>\r\n                        <\/div>\r\n                        <div class=\"sdk_usecase_body\">\r\n                            <span class=\"sdk_usecase_tag\">Contact center &#038; CRM<\/span>\r\n                            <h4><span class=\"highlight-wrap bg02\"><span class=\"highlight-text\">Contact center <br class=\"br_mobile\">management solution<\/span><\/span><\/h4>\r\n                            <p>Adds real-time captions and a key-summary widget to the agent&#8217;s screen. As soon as the call ends, filler words (um, uh, etc.) are cleaned up to produce key sentences.<\/p>\r\n                            <div class=\"sdk_usecase_roi\">\r\n                                <span class=\"sdk_usecase_roi_title\">Results (ROI)<\/span>\r\n                                <ul class=\"sdk_usecase_roi_list\">\r\n                                    <li>Cuts post-call processing time <br class=\"br_mobile\">by 5 minutes per case <\/li>\r\n                                    <li>Fully digitizes consultation history<\/li>\r\n                                <\/ul>\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                    <div class=\"sdk_usecase_card swiper-slide\">\r\n                        <div class=\"sdk_usecase_thumb\">\r\n                            <img decoding=\"async\" src=\"\/wp-content\/uploads\/image\/sub\/img_sdk_usecase_03_en.webp\" width=\"400\" height=\"240\" alt=\"Video conferencing &#038; video training\" loading=\"lazy\" \/>\r\n                        <\/div>\r\n                        <div class=\"sdk_usecase_body\">\r\n                            <span class=\"sdk_usecase_tag\">IT solutions &#038; SaaS<\/span>\r\n                            <h4><span class=\"highlight-wrap bg02\"><span class=\"highlight-text\">Video conferencing &#038; <br class=\"br_mobile\">video training<\/span><\/span><\/h4>\r\n                            <p>A simple API integration adds a special &#8216;AI records room&#8217; to your service. Launch a premium paid service (BM) right away \u2014 no complex R&#038;D planning required.<\/p>\r\n                            <div class=\"sdk_usecase_roi\">\r\n                                <span class=\"sdk_usecase_roi_title\">Results (ROI)<\/span>\r\n                                <ul class=\"sdk_usecase_roi_list\">\r\n                                    <li>Zero core AI R&#038;D cost<\/li>\r\n                                    <li>Additional revenue through paid <br class=\"br_mobile\">subscription options<\/li>\r\n                                <\/ul>\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n                <div class=\"swiper-pagination\"><\/div>\r\n            <\/div>\r\n        <\/div>\r\n    <\/section>\r\n\r\n    <!-- ===== Section 5: \ub3c4\uc785 \uc808\ucc28 (index.php\uc758 process_tl_wrap \ud0c0\uc784\ub77c\uc778\uc744 3\ub2e8\uacc4\ub85c \uc774\uc2dd) ===== -->\r\n    <section class=\"sdk_process\" id=\"sdk_process_timeline\">\r\n        <div class=\"container\">\r\n            <div class=\"sdk_section_head\">\r\n                <h2>Adopting the Airepoto SDK is simpler than you&#8217;d think<\/h2>\r\n                <p class=\"sub_desc\">From inquiry to launch, the process moves quickly.<\/p>\r\n            <\/div>\r\n\r\n            <div class=\"process_tl_wrap\">\r\n                <div class=\"process_tl\">\r\n                    <div class=\"tl_track_outer\">\r\n                        <!-- \uc774\ub3d9 \uc544\uc774\ucf58 -->\r\n                        <div class=\"tl_icon\" id=\"sdk_tl_icon\">\r\n                            <img decoding=\"async\" id=\"sdk_tl_icon_img\" src=\"\/wp-content\/uploads\/image\/sub\/ico_sdk_step01.webp\" width=\"153\" height=\"153\" alt=\"\" loading=\"lazy\" \/>\r\n                        <\/div>\r\n                        <!-- \ud2b8\ub799: fill \uc138\uadf8\uba3c\ud2b8 + \ub3c4\ud2b8 -->\r\n                        <div class=\"tl_track\">\r\n                            <div class=\"tl_seg\" data-seg=\"0\"><\/div>\r\n                            <div class=\"tl_seg\" data-seg=\"1\"><\/div>\r\n                            <div class=\"tl_seg\" data-seg=\"2\"><\/div>\r\n                            <div class=\"tl_dot_item\" data-step=\"0\"><div class=\"tl_dot\"><\/div><\/div>\r\n                            <div class=\"tl_dot_item\" data-step=\"1\"><div class=\"tl_dot\"><\/div><\/div>\r\n                            <div class=\"tl_dot_item\" data-step=\"2\"><div class=\"tl_dot\"><\/div><\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <div class=\"process_flow\">\r\n                    <div class=\"process_step\" data-step=\"0\">\r\n                        <div class=\"process_step_top\">\r\n                            <span class=\"step\">STEP 01<\/span>\r\n                            <h4><span class=\"highlight-wrap bg03\"><span class=\"highlight-text\">Business consultation<\/span><\/span><\/h4>\r\n                            <p>A dedicated consultant analyzes your business platform and requirements to design the optimal integration plan.<\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                    <div class=\"process_step\" data-step=\"1\">\r\n                        <div class=\"process_step_top\">\r\n                            <span class=\"step\">STEP 02<\/span>\r\n                            <h4><span class=\"highlight-wrap bg04\"><span class=\"highlight-text\">License &#038; source issuance<\/span><\/span><\/h4>\r\n                            <p>Receive SDK source ready for <br class=\"br_mobile\">immediate integration (AAR\/SPM) <br class=\"br_mobile\">along with a dedicated activation license key.<\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                    <div class=\"process_step\" data-step=\"2\">\r\n                        <div class=\"process_step_top\">\r\n                            <span class=\"step\">STEP 03<\/span>\r\n                            <h4><span class=\"highlight-wrap bg06\"><span class=\"highlight-text\">Integration guide review &#038; verification<\/span><\/span><\/h4>\r\n                            <p>Connect the source code following the official integration guide and launch your service quickly.<\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n    <\/section>\r\n\r\n    <!-- ===== Section 6: FAQ ===== -->\r\n    <section class=\"repoto_faq\">\r\n        <div class=\"container\">\r\n            <div class=\"sdk_section_head\">\r\n                <h2>Frequently asked questions <br class=\"br_mobile\">(FAQ)<\/h2>\r\n            <\/div>\r\n            <div class=\"accordion_wrap\">\r\n                <ul>\r\n                    <li class=\"active\">\r\n                        <div class=\"accordion_btn\">How much development effort is needed to integrate with an existing web service or internal portal?<\/div>\r\n                        <div class=\"content\">The Airepoto SDK supports standard web APIs and dedicated bridge code. With no separate AI training or costly infrastructure required, integration typically completes in about a week when following the guide. That said, the total verification period may vary depending on your existing security network and database structure.<\/div>\r\n                    <\/li>\r\n                    <li>\r\n                        <div class=\"accordion_btn\">Our internal security policies for preventing data leaks are strict \u2014 can this be controlled?<\/div>\r\n                        <div class=\"content\">Yes, it can be fully controlled. All generated content and transcript data can be encrypted and stored on your internal controlled network or a dedicated hardware security storage server \u2014 without passing through the cloud \u2014 meeting enterprise financial compliance standards.<\/div>\r\n                    <\/li>\r\n                    <li>\r\n                        <div class=\"accordion_btn\">Will this also work well with external solutions other than Zoom or Teams?<\/div>\r\n                        <div class=\"content\">It smoothly supports integration with most widely used video conferencing platforms, including RSUPPORT&#8217;s own platform, RemoteMeeting, as well as Zoom, Teams, Meet, and Webex. Simply invite the BOT or share the meeting room link, and it starts working right away.<\/div>\r\n                    <\/li>\r\n                    <li>\r\n                        <div class=\"accordion_btn\">Can it understand our company&#8217;s specialized terms or confidential department codes?<\/div>\r\n                        <div class=\"content\">The built-in voice model already delivers high recognition accuracy, but you can fine-tune it further with the &#8216;bulk custom dictionary registration&#8217; feature. Pre-register terms using the provided Excel template (up to 100 entries) to maximize transcription accuracy.<\/div>\r\n                    <\/li>\r\n                    <li>\r\n                        <div class=\"accordion_btn\">Is there a risk of battery drain or forced shutdown during long recordings on the mobile app?<\/div>\r\n                        <div class=\"content\">Continuous recording is safely maintained without interruption for up to 4 hours. Even if the battery dies or the app closes unexpectedly, the device&#8217;s local sandbox backup and automatic recovery mechanism kick in, instantly restoring the audio data collected up to that point into a normal document.<\/div>\r\n                    <\/li>\r\n                <\/ul>\r\n            <\/div>\r\n        <\/div>\r\n    <\/section>\r\n\r\n    <!-- ===== Section 7: \ubb38\uc758\ud3fc ===== -->\r\n    <section class=\"dep_inquiry\" id=\"sdk_inquiry\">\r\n        <div class=\"container\">\r\n            <div class=\"dep_inquiry_head\">\r\n                <h2>Talk to us about adopting the Airepoto SDK today<\/h2>\r\n                <p class=\"sub_desc\">We&#8217;ll guide you to the right deployment approach for your business environment.<\/p>\r\n            <\/div>\r\n                    <div class=\"able-dib-front-wrapper \" \n             id=\"able-dib-form-261\"\n             data-custom-selector=\".btn_adv_inquiry_form\"\n             data-modal-id=\"\">\n                                    <form class=\"able-dib-form ui_form\" method=\"post\" enctype=\"multipart\/form-data\" novalidate data-transition=\"fade\">\n                <input type=\"hidden\" name=\"able_dib_form_id\" value=\"261\">\n                <input type=\"hidden\" name=\"able_dib_inquiry_category\" value=\"general\">\n                <input type=\"hidden\" name=\"able_dib_recaptcha_token\" value=\"\">\n                <input type=\"hidden\" name=\"able_dib_recaptcha_enabled\" value=\"0\">\n                <input type=\"hidden\" name=\"inquiry_page_url\" value=\"https:\/\/www.airepoto.com\/en\/wp-json\/wp\/v2\/pages\/255\">\n                <input type=\"hidden\" name=\"inquiry_page_title\" value=\"AIrepoto english\">\n                                <input type=\"hidden\" name=\"able_inquiry_type\" value=\"\">\n                                    <input type=\"hidden\" id=\"able_dib_nonce_261\" name=\"able_dib_nonce\" value=\"c4086e3dce\">\n                    <input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/en\/wp-json\/wp\/v2\/pages\/255\" \/>                \n                <!-- Honeypot for Anti-spam -->\n                <div class=\"able-dib-hp-field\" style=\"display:none !important; visibility:hidden !important; position:absolute; left:-9999px;\">\n                    <label for=\"able_dib_hp_261\">Leave this field empty<\/label>\n                    <input type=\"text\" name=\"_able_dib_hp\" id=\"able_dib_hp_261\" tabindex=\"-1\" autocomplete=\"off\">\n                <\/div>\n\n                                <div class=\"able-dib-fields-grid mode-inline\">\n                                                    <div class=\"able-dib-step-pane\" data-step=\"1\">\n                        <div class=\"step-fields-inner\">\n                                                    <div class=\"able-dib-field-group position-top  has-single-opt  type-text col-50 field-wrap\" \n                                 data-field-width=\"50\"\n                                 data-opt-count=\"0\"\n                                 data-dependency-child=\"company\" \n                                 data-parent-target=\"\"\n                                 data-parent-value=\"\">\n                                \n                                <div class=\"field-input-wrapper input-wrapper\">\n                                                                                <input type=\"text\" name=\"company\" id=\"able-f261-company\" class=\"form-input \" placeholder=\" \" required data-validation-message=\"Please enter your company name.\">\n                                                                                            <label for=\"able-f261-company\" class=\"floating-label\">Company Name<\/label>\n                                                                                                                                                                    <span class=\"error-message\" id=\"able-f261-company-error\"><\/span>\n                                                                    <\/div>\n                            <\/div>\n                                                    <div class=\"able-dib-field-group position-top  has-single-opt  type-text col-50 field-wrap\" \n                                 data-field-width=\"50\"\n                                 data-opt-count=\"0\"\n                                 data-dependency-child=\"name\" \n                                 data-parent-target=\"\"\n                                 data-parent-value=\"\">\n                                \n                                <div class=\"field-input-wrapper input-wrapper\">\n                                                                                <input type=\"text\" name=\"name\" id=\"able-f261-name\" class=\"form-input \" placeholder=\" \" required data-validation-message=\"Please enter your name.\" data-validation-rule=\"name\" data-validation-locale=\"en\" data-rule-validation-message=\"Please enter your name.\">\n                                                                                            <label for=\"able-f261-name\" class=\"floating-label\">Name<\/label>\n                                                                                                                                                                    <span class=\"error-message\" id=\"able-f261-name-error\"><\/span>\n                                                                    <\/div>\n                            <\/div>\n                                                    <div class=\"able-dib-field-group position-top  has-single-opt  type-email col-50 field-wrap\" \n                                 data-field-width=\"50\"\n                                 data-opt-count=\"0\"\n                                 data-dependency-child=\"email\" \n                                 data-parent-target=\"\"\n                                 data-parent-value=\"\">\n                                \n                                <div class=\"field-input-wrapper input-wrapper\">\n                                                                                <input type=\"email\" name=\"email\" id=\"able-f261-email\" class=\"form-input \" placeholder=\" \" required data-validation-message=\"Please enter your email address.\" data-validation-rule=\"email\" data-validation-locale=\"en\" data-rule-validation-message=\"Please enter your email address.\">\n                                                                                            <label for=\"able-f261-email\" class=\"floating-label\">Business Email<\/label>\n                                                                                                                                                                    <span class=\"error-message\" id=\"able-f261-email-error\"><\/span>\n                                                                    <\/div>\n                            <\/div>\n                                                    <div class=\"able-dib-field-group position-top  has-single-opt  type-tel col-50 field-wrap\" \n                                 data-field-width=\"50\"\n                                 data-opt-count=\"0\"\n                                 data-dependency-child=\"mobile\" \n                                 data-parent-target=\"\"\n                                 data-parent-value=\"\">\n                                \n                                <div class=\"field-input-wrapper input-wrapper\">\n                                                                                <input type=\"tel\" name=\"mobile\" id=\"able-f261-mobile\" class=\"form-input \" placeholder=\" \" required data-validation-message=\"Please enter your phone number.\" data-validation-rule=\"phone\" data-validation-locale=\"en\" data-rule-validation-message=\"Please enter your phone number.\">\n                                                                                            <label for=\"able-f261-mobile\" class=\"floating-label\">Phone Number<\/label>\n                                                                                                                                                                    <span class=\"error-message\" id=\"able-f261-mobile-error\"><\/span>\n                                                                    <\/div>\n                            <\/div>\n                                                    <div class=\"able-dib-field-group position-none  has-single-opt  type-select col-50 field-wrap\" \n                                 data-field-width=\"50\"\n                                 data-opt-count=\"0\"\n                                 data-dependency-child=\"company_size\" \n                                 data-parent-target=\"\"\n                                 data-parent-value=\"\">\n                                \n                                <div class=\"field-input-wrapper input-wrapper\">\n                                                                                                                                                                        <div class=\"able-dib-custom-select \" data-choice-field=\"company_size\">\n                                                <input type=\"hidden\" name=\"company_size\" id=\"able-f261-company_size\" class=\"able-dib-select-value\" value=\"\" data-placeholder=\"Estimated User Count\" required data-validation-message=\"Please select your estimated user count.\">\n                                                <button type=\"button\" class=\"able-dib-select-trigger\" aria-haspopup=\"listbox\">\n                                                    <span class=\"able-dib-select-label\">Estimated User Count<\/span>\n                                                <\/button>\n                                                <div class=\"able-dib-select-dropdown\" role=\"listbox\">\n                                                    <div class=\"able-dib-select-option is-placeholder\" role=\"option\" data-value=\"\" data-label=\"Estimated User Count\">Estimated User Count<\/div>\n                                                                                                            <div class=\"able-dib-select-option\" role=\"option\" data-value=\"Under 10\" data-label=\"Under 10\" data-parent-val=\"\">Under 10<\/div>\n                                                                                                            <div class=\"able-dib-select-option\" role=\"option\" data-value=\"10~50\" data-label=\"10~50\" data-parent-val=\"\">10~50<\/div>\n                                                                                                            <div class=\"able-dib-select-option\" role=\"option\" data-value=\"50~200\" data-label=\"50~200\" data-parent-val=\"\">50~200<\/div>\n                                                                                                            <div class=\"able-dib-select-option\" role=\"option\" data-value=\"200+\" data-label=\"200+\" data-parent-val=\"\">200+<\/div>\n                                                                                                    <\/div>\n                                                <span class=\"error-message\" id=\"able-f261-company_size-error\"><\/span>\n                                            <\/div>\n                                                                                                                        <span class=\"error-message\" id=\"able-f261-company_size-error\"><\/span>\n                                                                    <\/div>\n                            <\/div>\n                                                    <div class=\"able-dib-field-group position-none  has-single-opt  type-select col-50 field-wrap\" \n                                 data-field-width=\"50\"\n                                 data-opt-count=\"0\"\n                                 data-dependency-child=\"deployment_method\" \n                                 data-parent-target=\"\"\n                                 data-parent-value=\"\">\n                                \n                                <div class=\"field-input-wrapper input-wrapper\">\n                                                                                                                                                                        <div class=\"able-dib-custom-select \" data-choice-field=\"deployment_method\">\n                                                <input type=\"hidden\" name=\"deployment_method\" id=\"able-f261-deployment_method\" class=\"able-dib-select-value\" value=\"\" data-placeholder=\"Preferred Deployment\" required data-validation-message=\"Please select your preferred deployment method.\">\n                                                <button type=\"button\" class=\"able-dib-select-trigger\" aria-haspopup=\"listbox\">\n                                                    <span class=\"able-dib-select-label\">Preferred Deployment<\/span>\n                                                <\/button>\n                                                <div class=\"able-dib-select-dropdown\" role=\"listbox\">\n                                                    <div class=\"able-dib-select-option is-placeholder\" role=\"option\" data-value=\"\" data-label=\"Preferred Deployment\">Preferred Deployment<\/div>\n                                                                                                            <div class=\"able-dib-select-option\" role=\"option\" data-value=\"Web\/server integration\" data-label=\"Web\/server integration\" data-parent-val=\"\">Web\/server integration<\/div>\n                                                                                                            <div class=\"able-dib-select-option\" role=\"option\" data-value=\"Mobile app integration\" data-label=\"Mobile app integration\" data-parent-val=\"\">Mobile app integration<\/div>\n                                                                                                            <div class=\"able-dib-select-option\" role=\"option\" data-value=\"Hybrid environment deployment\" data-label=\"Hybrid environment deployment\" data-parent-val=\"\">Hybrid environment deployment<\/div>\n                                                                                                    <\/div>\n                                                <span class=\"error-message\" id=\"able-f261-deployment_method-error\"><\/span>\n                                            <\/div>\n                                                                                                                        <span class=\"error-message\" id=\"able-f261-deployment_method-error\"><\/span>\n                                                                    <\/div>\n                            <\/div>\n                                                    <div class=\"able-dib-field-group position-top height110 has-single-opt  type-textarea col-100 field-wrap\" \n                                 data-field-width=\"100\"\n                                 data-opt-count=\"0\"\n                                 data-dependency-child=\"content\" \n                                 data-parent-target=\"\"\n                                 data-parent-value=\"\">\n                                \n                                <div class=\"field-input-wrapper input-wrapper\">\n                                                                                <textarea name=\"content\" id=\"able-f261-content\" class=\"form-input height110\" placeholder=\" \" required rows=\"5\" data-validation-message=\"Please enter your inquiries or special requests.\"><\/textarea>\n                                                                                            <label for=\"able-f261-content\" class=\"floating-label\">Inquiry Details (Timeline, compliance requirements, or integration scope)<\/label>\n                                                                                                                                                                    <span class=\"error-message\" id=\"able-f261-content-error\"><\/span>\n                                                                    <\/div>\n                            <\/div>\n                                                    <div class=\"able-dib-field-group position-none pt10 has-single-opt layout-full-row type-checkbox col-100 field-wrap\" \n                                 data-field-width=\"100\"\n                                 data-opt-count=\"1\"\n                                 data-dependency-child=\"chkPrivacy\" \n                                 data-parent-target=\"\"\n                                 data-parent-value=\"\">\n                                \n                                <div class=\"field-input-wrapper input-wrapper\">\n                                                                                                                            <div class=\"able-dib-checkbox-group pt10\">\n                                                                                                    <label class=\"cb-label\" data-parent-val=\"\"><input type=\"checkbox\" name=\"chkPrivacy[]\" value=\"on\" required data-is-required=\"1\" data-validation-message=\"Please agree to the collection and use of personal information.\"> <i>[Required]<\/i> I am 14 years of age or older and agree to the <strong data-ui-modal=\"ui_modal_privacy\"> collection and use of personal information. <\/strong> <\/label>\n                                                                                            <\/div>\n                                            <span class=\"error-message\" id=\"able-f261-chkPrivacy-error\"><\/span>\n                                                                                                                <\/div>\n                            <\/div>\n                                                    <div class=\"able-dib-field-group position-top able_cta_btn has-single-opt  type-submit col-100 field-wrap\" \n                                 data-field-width=\"100\"\n                                 data-opt-count=\"0\"\n                                 data-dependency-child=\"submit_1387\" \n                                 data-parent-target=\"\"\n                                 data-parent-value=\"\">\n                                \n                                <div class=\"field-input-wrapper input-wrapper\">\n                                                                                <div class=\"able-dib-submit-field-wrapper able_cta_btn\">\n                                                 <button type=\"submit\" class=\"submit-button able_cta_btn\" id=\"sdk_inquiry\">\n                                                    Contact Us for Deployment &amp; Pricing                                                 <\/button>\n                                                                                            <\/div>\n                                                                                                                <\/div>\n                            <\/div>\n                                                <\/div> <!-- .step-fields-inner -->\n\n                                            <\/div> <!-- .able-dib-step-pane -->\n                                <\/div> <!-- .able-dib-fields-grid -->\n\n                                <div class=\"able-dib-response\" style=\"display:none; margin-top:20px; padding:20px; border-radius:8px; text-align:center; font-weight:600;\"><\/div>\n                <div class=\"able-dib-loading-overlay\" style=\"display:none;\">\n                    <div class=\"able-dib-spinner\"><\/div>\n                    <div class=\"able-dib-loading-text\">Registering your inquiry...<\/div>\n                <\/div>\n                                <\/form>\n        <\/div>\n                    <div class=\"able-dib-success-modal-overlay\" style=\"display:none;\">\n                <div class=\"able-dib-success-modal\">\n                    <div class=\"modal-heading\"><span class=\"modal-icon dashicons dashicons-yes-alt\" aria-hidden=\"true\"><\/span><h3 class=\"modal-title\">Submission Completed<\/h3><\/div>\n                    <div class=\"modal-message\"><\/div>\n                    <button type=\"button\" class=\"modal-confirm-btn\">\ud655\uc778<\/button>\n                <\/div>\n            <\/div>\n            \r\n            <p class=\"dep_inquiry_info\">A dedicated AI meeting minutes specialist will review your request and get back to you within 1 business day.<\/p>\r\n        <\/div>\r\n    <\/section>\r\n<\/div>\r\n\r\n<!--\uac1c\uc778\uc815\ubcf4 \ucc98\ub9ac\ubc29\uce68 -->\r\n<div class=\"ui_modal agree_modal\" id=\"ui_modal_privacy\" role=\"dialog\" aria-modal=\"true\">\r\n    <div class=\"ui_modal_dim\"><\/div>\r\n    <div class=\"ui_modal_layer\">\r\n        <div class=\"ui_modal_container\">\r\n            <button class=\"ui_modal_close\"><\/button>\r\n            <div class=\"ui_modal_header\">\r\n                <div class=\"tit\">Privacy Policy<\/div>\r\n            <\/div>\r\n            <div class=\"ui_modal_body\">\r\n                <div class=\"desc\">\r\n                    \u2022 Collected Data: (Required) Name, Company, Phone Number, Email Address<br>\r\n\u2022 Purpose of Collection &#038; Use: Review and response of inquiries and results<br>\r\n\u2022 Retention &#038; Use Period: Retained for 1 year after the inquiry review is completed<br><br>\r\n\r\n\u203b You have the right to refuse consent to the collection and use of personal information. However, if you refuse consent, you will not be able to submit your inquiry.<br>\r\n\u203b For more details, please refer to our Privacy Policy (<a href=\"https:\/\/www.rsupport.com\/en-us\/privacy\/\" target=\"_blank\" class=\"underline\" rel=\"noopener\">https:\/\/www.rsupport.com\/en-us\/privacy\/<\/a>).\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n<\/div>\r\n\r\n<!-- SDK \ud398\uc774\uc9c0 \uc804\uc6a9: \ud65c\uc6a9 \uc0ac\ub840 \uce74\ub4dc 640px \uc774\ud558 \uc2a4\uc640\uc774\ud504 \uc2ac\ub77c\uc774\ub354\uc6a9 Swiper \ub77c\uc774\ube0c\ub7ec\ub9ac -->\r\n<link rel=\"stylesheet\" href=\"\/wp-content\/themes\/ai-repoto\/assets\/css\/lib\/swiper.min.css\">\r\n<script src=\"\/wp-content\/themes\/ai-repoto\/assets\/js\/lib\/swiper.min.js\"><\/script>\r\n\r\n<script>\r\n\/\/ \uc6cc\ub4dc\ud504\ub808\uc2a4 \ub0b4 jQuery \ucda9\ub3cc \ubc29\uc9c0 \uaddc\uaca9(noConflict) \uc801\uc6a9\r\njQuery(document).ready(function($) {\r\n\r\n    \/* \u2500\u2500 SDK \ud398\uc774\uc9c0 \uc804\uc6a9: \ud1b5\uacc4 \uc22b\uc790 \ub864\ub9c1 \uce74\uc6b4\ud130 (lwCounter) \u2500\u2500\r\n       remotecall \ud14c\ub9c8 assets\/js\/main.js \/ assets\/css\/main_v2.css \uc758 lwCounter\ub97c \uadf8\ub300\ub85c \uc774\uc2dd *\/\r\n    function renderCounterItem(number, prefixTime = 0) {\r\n        let spinCount = 7 + prefixTime;\r\n        if (spinCount > 10) spinCount = 10;\r\n\r\n        let html = `<span class=\"digit-wrap\" data-value=\"${spinCount}\"><span class=\"digit-inner\">`;\r\n        let start = number + 11 - spinCount;\r\n        const numbers = [0,1,2,3,4,5,6,7,8,9];\r\n\r\n        html += `<span>&ndash;<\/span>`;\r\n\r\n        for (let i = 0; i < spinCount; i++) {\r\n            const idx = (i + start) % 10;\r\n            html += `<span>${numbers[idx]}<\/span>`;\r\n        }\r\n\r\n        html += `<\/span><\/span>`;\r\n        return html;\r\n    }\r\n\r\n    function initCounters($stats){\r\n        $stats.each(function(){\r\n            const $stat = $(this);\r\n            const text = $stat.text().trim();\r\n\r\n            const patt = \/(\\D+)?(\\d+)(\\D+)?(\\d+)?(\\D+)?\/;\r\n            let parts = patt.exec(text);\r\n\r\n            if (!parts) return;\r\n            parts = parts.slice(1).filter(v => v != null);\r\n\r\n            $stat.empty();\r\n\r\n            parts.forEach(part => {\r\n                if (isNaN(part)) {\r\n                    $stat.append(`<span>${part}<\/span>`);\r\n                } else {\r\n                    for (let i=0; i<part.length; i++) {\r\n                        $stat.append( renderCounterItem(parseInt(part[i], 10), i) );\r\n                    }\r\n                }\r\n            });\r\n        });\r\n    }\r\n\r\n    function startLwCounter($stats){\r\n        $stats.each(function(){\r\n            $(this).find(\".digit-wrap\").each(function(index){\r\n                const $wrap = $(this);\r\n                const spinCount = parseInt($wrap.data(\"value\"), 10);\r\n                const $inner = $wrap.find(\".digit-inner\");\r\n                const delay = index * 0.15;\r\n                const translateY = -(spinCount * 100) + \"%\";\r\n\r\n                $inner.css({\r\n                    \"transition-delay\": `${delay}s`,\r\n                    \"transform\": `translateY(${translateY})`\r\n                });\r\n\r\n                $wrap.addClass(\"active\");\r\n            });\r\n        });\r\n    }\r\n\r\n    const $sdkCounters  = $(\"#sdk_stats_counter .lwCounter\");\r\n    const $sdkCounterBox = $(\"#sdk_stats_counter\");\r\n\r\n    if ($sdkCounters.length) {\r\n        initCounters($sdkCounters);\r\n        $sdkCounters.addClass(\"ready\");\r\n\r\n        $(window).on(\"scroll.sdkCountUp\", function () {\r\n\r\n            if ($sdkCounterBox.hasClass(\"animated\")) return;\r\n\r\n            const top = $(window).scrollTop();\r\n            const bottom = top + $(window).height();\r\n            const elTop = $sdkCounterBox.offset().top;\r\n            const elBottom = elTop + $sdkCounterBox.outerHeight();\r\n\r\n            \/\/ \uc694\uc18c\uac00 view \uc548\uc5d0 \ub4e4\uc5b4\uc624\uba74 \uc2e4\ud589\r\n            if (bottom <= elTop || top >= elBottom) return;\r\n\r\n            startLwCounter($sdkCounters);\r\n            $sdkCounterBox.addClass(\"animated\");\r\n\r\n            \/\/ \uc2a4\ud06c\ub864 \uc774\ubca4\ud2b8 \ud574\uc81c (\uc131\ub2a5 \uac1c\uc120)\r\n            $(window).off(\"scroll.sdkCountUp\");\r\n        });\r\n        $(window).trigger(\"scroll.sdkCountUp\");\r\n    }\r\n\r\n    \/* \u2500\u2500 SDK \ud398\uc774\uc9c0 \uc804\uc6a9: \ud65c\uc6a9 \uc0ac\ub840 \uce74\ub4dc, 640px \uc774\ud558\uc5d0\uc11c \uc2a4\uc640\uc774\ud504 \uc2ac\ub77c\uc774\ub354(Swiper) \u2500\u2500 *\/\r\n    var usecaseGridEl = document.querySelector('.sdk_usecase_grid');\r\n    var usecaseSwiper = null;\r\n    var usecaseMq = window.matchMedia('(max-width: 640px)');\r\n\r\n    function applyUsecaseSlider() {\r\n        if (usecaseMq.matches) {\r\n            if (!usecaseSwiper) {\r\n                usecaseSwiper = new Swiper('.sdk_usecase_grid', {\r\n                    centeredSlides: true,\r\n                    spaceBetween: 12,\r\n                    speed: 400,\r\n                    pagination: {\r\n                        el: '.sdk_usecase_grid .swiper-pagination',\r\n                        clickable: true\r\n                    }\r\n                });\r\n            }\r\n        } else {\r\n            if (usecaseSwiper) {\r\n                usecaseSwiper.destroy(true, true);\r\n                usecaseSwiper = null;\r\n            }\r\n        }\r\n    }\r\n\r\n    if (usecaseGridEl) {\r\n        applyUsecaseSlider();\r\n        $(window).on('resize', applyUsecaseSlider);\r\n    }\r\n\r\n    \/* \u2500\u2500 SDK \ud398\uc774\uc9c0 \uc804\uc6a9: snackbar, hero ~ repoto_faq \uad6c\uac04\uc5d0\uc11c\ub9cc \ud45c\uc2dc \u2500\u2500\r\n       \uc2a4\ud06c\ub864 \uc804(hero \ub178\ucd9c \uc911): \uc228\uae40 \u2192 hero\ub97c \ubc97\uc5b4\ub098\uba74 \ub178\ucd9c \u2192 repoto_faq\uc5d0 \ub2ff\uac70\ub098\r\n       \uc774\ubbf8 \uc9c0\ub098\ucce4\uc73c\uba74 \ub2e4\uc2dc \uc228\uae40. \uc704\ub85c \uc2a4\ud06c\ub864\ud574 hero\uac00 \ub2e4\uc2dc \ubcf4\uc774\uba74 \ub2e4\uc2dc \uc228\uae40. *\/\r\n    if (typeof toggleSnackbar === 'function') {\r\n        $(window).off('scroll resize', toggleSnackbar);\r\n    }\r\n\r\n    var $sdkSnackbar = $('.snackbar');\r\n    var sdkHeroEl = document.querySelector('.sub_hero');\r\n    var sdkFaqEl = document.querySelector('.repoto_faq');\r\n\r\n    if (!sdkHeroEl) return;\r\n    if (!sdkFaqEl) return;\r\n    if (!$sdkSnackbar.length) return;\r\n\r\n    var sdkHeroVisible = true;\r\n    var sdkFaqReached = false;\r\n    var sdkSnackbarDismissed = false;\r\n\r\n    function updateSdkSnackbar() {\r\n        $sdkSnackbar.toggleClass('is-visible', !(sdkSnackbarDismissed || sdkHeroVisible || sdkFaqReached));\r\n    }\r\n\r\n    \/* ui.js\uc758 \uc804\uc5ed '.snackbar .next' \ud074\ub9ad \ud578\ub4e4\ub7ec(display:none \uace0\uc815)\ub294\r\n       \uc774 \ud398\uc774\uc9c0\uc758 \uc2a4\ud06c\ub864 \uae30\ubc18 is-visible \ud1a0\uae00\uacfc \ucda9\ub3cc\ud558\ubbc0\ub85c \ub36e\uc5b4\uc500 *\/\r\n    $sdkSnackbar.find('.next').off('click').on('click', function () {\r\n        sdkSnackbarDismissed = true;\r\n        updateSdkSnackbar();\r\n    });\r\n\r\n    new IntersectionObserver(function (entries) {\r\n        entries.forEach(function (entry) {\r\n            sdkHeroVisible = entry.isIntersecting;\r\n            updateSdkSnackbar();\r\n        });\r\n    }, { threshold: 0 }).observe(sdkHeroEl);\r\n\r\n    new IntersectionObserver(function (entries) {\r\n        entries.forEach(function (entry) {\r\n            sdkFaqReached = entry.isIntersecting || entry.boundingClientRect.top < 0;\r\n            updateSdkSnackbar();\r\n        });\r\n    }, { threshold: 0 }).observe(sdkFaqEl);\r\n\r\n});\r\n<\/script>\r\n\r\n<script>\r\n\/* ======================================\r\n\ud0ed\/\uc544\ucf54\ub514\uc5b8 (.feature_autotab, Vanilla JS)\r\n- \ub370\uc2a4\ud06c\ud1b1: \uc88c\uce21 \uc138\ub85c \ud504\ub85c\uadf8\ub808\uc2a4 \ubc14 + \uc6b0\uce21 \uacf5\ud1b5 \ube44\uc8fc\uc5bc \uce74\ub4dc \ud06c\ub85c\uc2a4\ud398\uc774\ub4dc\r\n- \ubaa8\ubc14\uc77c(<=640px): \ud56d\ubaa9 \ub0b4\ubd80\uc5d0 \uc774\ubbf8\uc9c0 + \ud558\ub2e8 \uac00\ub85c \ud504\ub85c\uadf8\ub808\uc2a4 \ubc14\uac00 \ud568\uaed8 \ud3bc\uccd0\uc9d0\r\n- data-interval \uc2dc\uac04\ub9c8\ub2e4 \uc790\ub3d9\uc73c\ub85c \ub2e4\uc74c \ud0ed\uc73c\ub85c \ud68c\uc804 (\ud074\ub9ad\uc73c\ub85c\ub3c4 \uc804\ud658 \uac00\ub2a5)\r\n- \ucef4\ud3ec\ub10c\ud2b8\uac00 \ud654\uba74 \uc911\uac04(\ub300\ub7b5 \uc911\uc559 40% \uc601\uc5ed)\uc5d0 \uc788\uc744 \ub54c\ub9cc \uc790\ub3d9 \ud68c\uc804 \ub3d9\uc791, \ud654\uba74 \ubc16\uc774\uba74 \uc815\uc9c0\r\n====================================== *\/\r\n(function () {\r\n    'use strict';\r\n\r\n    function initAutotab(root) {\r\n        var items = Array.prototype.slice.call(root.querySelectorAll('.feature_autotab_item'));\r\n        var visualItems = Array.prototype.slice.call(root.querySelectorAll('.feature_autotab_visual_item'));\r\n        var toggleBtn = root.querySelector('.feature_autotab_toggle');\r\n        if (!items.length) return;\r\n\r\n        var interval = parseInt(root.getAttribute('data-interval'), 10) || 10000;\r\n        var activeIndex = items.findIndex(function (item) { return item.classList.contains('is-active'); });\r\n        if (activeIndex < 0) activeIndex = 0;\r\n\r\n        var AUTOPLAY = true;\r\n        var elapsedMs = 0;\r\n        var lastFrameTime = null;\r\n        var isOffscreen = true;\r\n\r\n        function setProgress(item, ratio) {\r\n            item.style.setProperty('--progress', ratio);\r\n        }\r\n\r\n        function activate(index) {\r\n            items.forEach(function (item, i) {\r\n                item.classList.toggle('is-active', i === index);\r\n                setProgress(item, 0);\r\n            });\r\n            visualItems.forEach(function (item, i) {\r\n                item.classList.toggle('is-active', i === index);\r\n            });\r\n            activeIndex = index;\r\n            elapsedMs = 0;\r\n        }\r\n\r\n        function next() {\r\n            activate((activeIndex + 1) % items.length);\r\n        }\r\n\r\n        function tick(now) {\r\n            if (!AUTOPLAY || isOffscreen) {\r\n                lastFrameTime = null;\r\n                requestAnimationFrame(tick);\r\n                return;\r\n            }\r\n            if (lastFrameTime === null) lastFrameTime = now;\r\n            elapsedMs += now - lastFrameTime;\r\n            lastFrameTime = now;\r\n\r\n            var ratio = Math.min(elapsedMs \/ interval, 1);\r\n            setProgress(items[activeIndex], ratio);\r\n\r\n            if (elapsedMs >= interval) {\r\n                next();\r\n            }\r\n            requestAnimationFrame(tick);\r\n        }\r\n\r\n        items.forEach(function (item, index) {\r\n            var head = item.querySelector('.feature_autotab_head');\r\n            if (!head) return;\r\n            head.addEventListener('click', function () {\r\n                if (index === activeIndex) return;\r\n                activate(index);\r\n            });\r\n        });\r\n\r\n        if (toggleBtn) {\r\n            toggleBtn.addEventListener('click', function () {\r\n                AUTOPLAY = !AUTOPLAY;\r\n                toggleBtn.setAttribute('aria-pressed', String(!AUTOPLAY));\r\n                if (AUTOPLAY) lastFrameTime = null;\r\n            });\r\n        }\r\n\r\n        new IntersectionObserver(function (entries) {\r\n            entries.forEach(function (entry) {\r\n                isOffscreen = !entry.isIntersecting;\r\n                if (!isOffscreen) lastFrameTime = null;\r\n            });\r\n        }, { threshold: 0, rootMargin: '-40% 0px -40% 0px' }).observe(root);\r\n\r\n        activate(activeIndex);\r\n        requestAnimationFrame(tick);\r\n    }\r\n\r\n    function init() {\r\n        document.querySelectorAll('[data-autotab]').forEach(initAutotab);\r\n    }\r\n\r\n    if (document.readyState === 'loading') {\r\n        document.addEventListener('DOMContentLoaded', init);\r\n    } else {\r\n        init();\r\n    }\r\n})();\r\n<\/script>\r\n\r\n\r\n<script>\r\n\/* ======================================\r\nProcess Section: Timeline (scroll-linked, step\ubcc4 IntersectionObserver)\r\n- index.php(main.js initProcessTimeline)\ub97c \uadf8\ub300\ub85c \uc774\uc2dd, SDK \ub3c4\uc785 \uc808\ucc28 3\ub2e8\uacc4\uc6a9\uc73c\ub85c \ucd95\uc18c\r\n- 760px \uc774\ud558: step\ubcc4 \uc2a4\ud06c\ub864 \uc5f0\ub3d9 \/ 760px \ucd08\uacfc: \uc139\uc158 \ub178\ucd9c \uc911 \uc790\ub3d9 \uc7ac\uc0dd\r\n====================================== *\/\r\n(function initSdkProcessTimeline() {\r\n    'use strict';\r\n\r\n    var section  = document.getElementById('sdk_process_timeline');\r\n    if (!section) return;\r\n\r\n    var steps    = Array.from(section.querySelectorAll('.process_step[data-step]'));\r\n    var dotItems = Array.from(section.querySelectorAll('.tl_dot_item'));\r\n    var segEls   = Array.from(section.querySelectorAll('.tl_seg'));\r\n    var iconEl   = document.getElementById('sdk_tl_icon');\r\n    var iconImg  = document.getElementById('sdk_tl_icon_img');\r\n    if (!steps.length || !iconEl) return;\r\n\r\n    var TOTAL  = steps.length; \/\/ 3\r\n    var ICONS  = [\r\n        '\/wp-content\/uploads\/image\/sub\/ico_sdk_step01.webp',\r\n        '\/wp-content\/uploads\/image\/sub\/ico_sdk_step02.webp',\r\n        '\/wp-content\/uploads\/image\/sub\/ico_sdk_step03.webp',\r\n    ];\r\n    var DOT_POS      = [0, 33.33, 66.67]; \/\/ \ub3c4\ud2b8 \uc704\uce58 % \uae30\ubcf8\uac12(\uce21\uc815 \uc2e4\ud328 \uc2dc fallback)\r\n    var ICON_MOVE_MS = 700;             \/\/ \uc544\uc774\ucf58 \uc774\ub3d9 \ud2b8\ub79c\uc9c0\uc158 \uae38\uc774(.tl_icon transition:left\/top 0.7s\uc640 \ub3d9\uc77c)\r\n    var HIGHLIGHT_MS = 700;             \/\/ highlight \uc644\ub8cc \uc2dc\uac04 (\uc544\uc774\ucf58 \uc774\ub3d9\uacfc \ub3d9\uc77c)\r\n    var ICON_HIDE_AT_MS = Math.round(ICON_MOVE_MS * 0.66); \/\/ \uc774\ub3d9 \uad6c\uac04\uc758 2\/3 \uc9c0\uc810 \u2014 \uc774 \uc2dc\uc810\uc5d4 \uc644\uc804\ud788 \uc0ac\ub77c\uc838 \uc788\uc5b4\uc57c \ud568\r\n    var ICON_FADE_MS = 150; \/\/ \ud398\uc774\ub4dc \uc544\uc6c3\/\uc778 \uae38\uc774(.tl_icon opacity transition\uacfc \ub3d9\uc77c)\r\n\r\n    var mobileDotPos  = null; \/\/ \ubaa8\ubc14\uc77c \uc804\uc6a9: \uc2e4\uc81c step top \uc704\uce58(%)\r\n    var desktopDotPos = null; \/\/ \ub370\uc2a4\ud06c\ud1b1 \uc804\uc6a9: \uc2e4\uc81c tl_dot_item left \uc704\uce58(%)\r\n    var currentIconIndex = 0; \/\/ \uc544\uc774\ucf58\uc774 \ud604\uc7ac \uc704\uce58\ud55c(\ub610\ub294 \uc774\ub3d9 \uc911\uc778) dot \uc778\ub371\uc2a4 \u2014 resize \uc2dc \uc989\uc2dc \uc7ac\ubc30\uce58\uc6a9\r\n\r\n    function calcDesktopPositions() {\r\n        var outer = section.querySelector('.tl_track_outer');\r\n        if (!outer) return DOT_POS;\r\n        var outerRect = outer.getBoundingClientRect();\r\n        var outerW = outerRect.width;\r\n        if (!outerW) return DOT_POS;\r\n        return dotItems.map(function(d) {\r\n            var r = d.getBoundingClientRect();\r\n            return Math.max(0, (r.left - outerRect.left) \/ outerW * 100);\r\n        });\r\n    }\r\n\r\n    function calcMobilePositions() {\r\n        var track = section.querySelector('.tl_track');\r\n        if (!track) return DOT_POS;\r\n        var trackRect = track.getBoundingClientRect();\r\n        var trackH    = trackRect.height;\r\n        if (!trackH) return DOT_POS;\r\n\r\n        var positions = steps.map(function(s) {\r\n            return Math.max(0, (s.getBoundingClientRect().top - trackRect.top) \/ trackH * 100);\r\n        });\r\n\r\n        dotItems.forEach(function(d, i) {\r\n            if (i < positions.length) d.style.top = positions[i] + '%';\r\n        });\r\n\r\n        segEls.forEach(function(seg, i) {\r\n            seg.style.top = (positions[i] || 0) + '%';\r\n            var segH = steps[i].getBoundingClientRect().height \/ trackH * 100;\r\n            seg.style.setProperty('--seg-h', segH + '%');\r\n        });\r\n\r\n        var outer = section.querySelector('.tl_track_outer');\r\n        if (outer) {\r\n            var outerRect = outer.getBoundingClientRect();\r\n            var outerH    = outerRect.height || trackH;\r\n            return steps.map(function(s) {\r\n                return Math.max(0, (s.getBoundingClientRect().top - outerRect.top) \/ outerH * 100);\r\n            });\r\n        }\r\n\r\n        return positions;\r\n    }\r\n\r\n    function getHLLineRects(hl, caret) {\r\n        var range = document.createRange();\r\n        range.selectNodeContents(hl);\r\n        if (caret) range.setEndBefore(caret);\r\n        var all = Array.from(range.getClientRects()).filter(function (r) { return r.width > 1; });\r\n        var lines = [];\r\n        all.forEach(function (r) {\r\n            var last = lines[lines.length - 1];\r\n            if (last ? Math.abs(r.top - last.top) < 4 : false) {\r\n                last.right = Math.max(last.right, r.right);\r\n                last.width = last.right - last.left;\r\n            } else {\r\n                lines.push({ top: r.top, left: r.left, right: r.right, width: r.width, height: r.height });\r\n            }\r\n        });\r\n        return lines;\r\n    }\r\n\r\n    function activateStepHighlight(hw) {\r\n        if (!hw) return;\r\n        var caret = hw.querySelector('.caret');\r\n\r\n        Array.from(hw.querySelectorAll('.hl-line-overlay')).forEach(function(sp) { sp.remove(); });\r\n        hw.classList.remove('hl-multiline');\r\n        hw.classList.add('hw-reset');\r\n        hw.classList.remove('active');\r\n        void hw.offsetWidth;\r\n        hw.classList.remove('hw-reset');\r\n\r\n        var lines = getHLLineRects(hw, caret);\r\n\r\n        if (lines.length <= 1) {\r\n            hw.classList.add('active');\r\n            return;\r\n        }\r\n\r\n        var wrapRect  = lines[0];\r\n        var color     = getComputedStyle(hw, '::before').backgroundColor;\r\n        var perLineMs = HIGHLIGHT_MS \/ lines.length;\r\n\r\n        hw.classList.add('hl-multiline', 'active');\r\n\r\n        lines.forEach(function (line, i) {\r\n            var span = document.createElement('span');\r\n            span.className = 'hl-line-overlay';\r\n            span.style.cssText =\r\n                'position:absolute;' +\r\n                'left:'   + (line.left - wrapRect.left)                    + 'px;' +\r\n                'top:'    + (line.top  - wrapRect.top + line.height * 0.06) + 'px;' +\r\n                'width:'  + line.width                                      + 'px;' +\r\n                'height:' + (line.height * 0.88)                            + 'px;' +\r\n                'background:' + color + ';' +\r\n                'transform:scaleX(0);transform-origin:left center;' +\r\n                'transition:transform ' + (perLineMs \/ 1000) + 's cubic-bezier(0.22,1,0.36,1);' +\r\n                'z-index:0;pointer-events:none;';\r\n            hw.appendChild(span);\r\n            setTimeout(function () { span.style.transform = 'scaleX(1)'; }, i * perLineMs + 20);\r\n        });\r\n    }\r\n\r\n    function measurePositions() {\r\n        if (window.innerWidth <= 760) { \/\/ \uc774 \uc139\uc158\ub9cc \ube0c\ub808\uc774\ud06c\ud3ec\uc778\ud2b8 760\r\n            mobileDotPos = calcMobilePositions();\r\n        } else {\r\n            desktopDotPos = calcDesktopPositions();\r\n        }\r\n    }\r\n\r\n    function moveIconTo(i, instant) {\r\n        currentIconIndex = i;\r\n        var vert   = window.innerWidth <= 760;\r\n        var dotPos = vert ? (mobileDotPos || DOT_POS) : (desktopDotPos || DOT_POS);\r\n        var pos    = dotPos[i];\r\n        if (instant) iconEl.style.transition = 'none';\r\n        if (vert) {\r\n            iconEl.style.top  = pos + '%';\r\n            iconEl.style.left = '';\r\n        } else {\r\n            iconEl.style.left = pos + '%';\r\n            iconEl.style.top  = '';\r\n        }\r\n        if (instant) {\r\n            void iconEl.offsetWidth;\r\n            iconEl.style.transition = '';\r\n        }\r\n    }\r\n\r\n    function swapIconImage(i) {\r\n        var src = ICONS[i];\r\n        if (!src || iconImg.src.indexOf(src) !== -1) return;\r\n        setTimeout(function() {\r\n            iconEl.style.opacity = '0';\r\n        }, Math.max(0, ICON_HIDE_AT_MS - ICON_FADE_MS));\r\n        setTimeout(function() {\r\n            iconImg.src = src;\r\n            iconEl.style.opacity = '1';\r\n        }, ICON_MOVE_MS);\r\n    }\r\n\r\n    function activateStep(i) {\r\n        steps[i].classList.add('active');\r\n        activateStepHighlight(steps[i].querySelector('.highlight-wrap'));\r\n\r\n        if (i + 1 < TOTAL) {\r\n            moveIconTo(i + 1);\r\n            swapIconImage(i + 1);\r\n            segEls[i].classList.add('active');\r\n            setTimeout(function() { dotItems[i + 1].classList.add('active'); }, ICON_MOVE_MS);\r\n        } else if (window.innerWidth <= 760) {\r\n            currentIconIndex = TOTAL;\r\n            iconEl.style.top = '100%';\r\n            segEls[i].classList.add('active');\r\n        } else {\r\n            currentIconIndex = TOTAL;\r\n            iconEl.style.left = '100%';\r\n            segEls[i].classList.add('active');\r\n            setTimeout(function() { iconEl.style.opacity = '0'; }, ICON_MOVE_MS);\r\n        }\r\n\r\n        setTimeout(function() {\r\n            var caret = steps[i].querySelector('.caret');\r\n            if (caret) caret.classList.add('active');\r\n        }, HIGHLIGHT_MS);\r\n    }\r\n\r\n    steps.forEach(function(s) {\r\n        var hw = s.querySelector('.highlight-wrap');\r\n        if (hw) {\r\n            hw.classList.add('hw-reset');\r\n            hw.classList.remove('active');\r\n            void hw.offsetWidth;\r\n            hw.classList.remove('hw-reset');\r\n        }\r\n    });\r\n\r\n    function primeStart() {\r\n        moveIconTo(0, true);\r\n        iconEl.style.transition = 'none';\r\n        iconEl.style.opacity = '0';\r\n        void iconEl.offsetWidth;\r\n        iconEl.style.transition = '';\r\n        iconImg.src = ICONS[0];\r\n        iconImg.style.opacity = '1';\r\n        dotItems[0].classList.add('active');\r\n        requestAnimationFrame(function() { iconEl.style.opacity = '1'; });\r\n    }\r\n\r\n    function setupScrollLinked() {\r\n        steps.forEach(function(stepEl, i) {\r\n            var triggered = false;\r\n            var stepIO = new IntersectionObserver(function(entries) {\r\n                entries.forEach(function(entry) {\r\n                    if (!entry.isIntersecting) return;\r\n                    if (triggered) return;\r\n                    triggered = true;\r\n                    stepIO.disconnect();\r\n                    activateStep(i);\r\n                });\r\n            }, { threshold: 0, rootMargin: '0px 0px -40% 0px' });\r\n            stepIO.observe(stepEl);\r\n        });\r\n    }\r\n\r\n    var mainTimer = null, caretTimer = null, running = false, CARET_DUR = 700;\r\n\r\n    function resetAll() {\r\n        clearTimeout(mainTimer);\r\n        clearTimeout(caretTimer);\r\n        steps.forEach(function(s) {\r\n            var hw = s.querySelector('.highlight-wrap');\r\n            var ca = s.querySelector('.caret');\r\n            if (hw) {\r\n                Array.from(hw.querySelectorAll('.hl-line-overlay')).forEach(function(sp) { sp.remove(); });\r\n                hw.classList.remove('hl-multiline');\r\n                hw.classList.add('hw-reset');\r\n                hw.classList.remove('active');\r\n                void hw.offsetWidth;\r\n                hw.classList.remove('hw-reset');\r\n            }\r\n            if (ca) ca.classList.remove('active');\r\n        });\r\n        dotItems.forEach(function(d) { d.classList.remove('active'); });\r\n        segEls.forEach(function(sg) { sg.classList.remove('active'); });\r\n        steps.forEach(function(s) { s.classList.remove('active'); });\r\n    }\r\n\r\n    function doTransition(t) {\r\n        clearTimeout(caretTimer);\r\n        steps.forEach(function(s) {\r\n            var ca = s.querySelector('.caret');\r\n            if (ca) ca.classList.remove('active');\r\n        });\r\n\r\n        activateStep(t);\r\n\r\n        mainTimer = setTimeout(function() {\r\n            if (!running) return;\r\n            if (t + 1 < TOTAL) {\r\n                doTransition(t + 1);\r\n            } else {\r\n                mainTimer = setTimeout(function() {\r\n                    if (!running) return;\r\n                    resetAll();\r\n                    setTimeout(function() {\r\n                        if (!running) return;\r\n                        primeStart();\r\n                        mainTimer = setTimeout(function() { doTransition(0); }, 600);\r\n                    }, 100);\r\n                }, 2000);\r\n            }\r\n        }, HIGHLIGHT_MS + CARET_DUR);\r\n    }\r\n\r\n    function startAutoCycle() {\r\n        if (running) return;\r\n        running = true;\r\n        measurePositions();\r\n        resetAll();\r\n        primeStart();\r\n        mainTimer = setTimeout(function() { doTransition(0); }, 600);\r\n    }\r\n\r\n    function stopAutoCycle() {\r\n        running = false;\r\n        clearTimeout(mainTimer);\r\n        clearTimeout(caretTimer);\r\n    }\r\n\r\n    function setupAutoCycle() {\r\n        var sectionIO = new IntersectionObserver(function(entries) {\r\n            entries[0].isIntersecting ? startAutoCycle() : stopAutoCycle();\r\n        }, { threshold: 0.2 });\r\n        sectionIO.observe(section);\r\n    }\r\n\r\n    primeStart();\r\n    measurePositions();\r\n    if (window.innerWidth <= 760) {\r\n        setupScrollLinked();\r\n    } else {\r\n        setupAutoCycle();\r\n    }\r\n    if (window.innerWidth <= 760) {\r\n        if (document.fonts) {\r\n            if (document.fonts.status !== 'loaded') {\r\n                document.fonts.ready.then(measurePositions);\r\n            }\r\n        }\r\n    }\r\n\r\n    function repositionIconOnResize() {\r\n        measurePositions();\r\n        if (currentIconIndex >= TOTAL) {\r\n            var vert = window.innerWidth <= 760;\r\n            iconEl.style.transition = 'none';\r\n            if (vert) {\r\n                iconEl.style.top  = '100%';\r\n                iconEl.style.left = '';\r\n            } else {\r\n                iconEl.style.left = '100%';\r\n                iconEl.style.top  = '';\r\n            }\r\n            void iconEl.offsetWidth;\r\n            iconEl.style.transition = '';\r\n        } else {\r\n            moveIconTo(currentIconIndex, true);\r\n        }\r\n    }\r\n    window.addEventListener('resize', repositionIconOnResize, { passive: true });\r\n\r\n})();\r\n<\/script>","protected":false},"excerpt":{"rendered":"<p>Add custom AI meeting minutes to your web and app with the Airepoto SDK Use Airepoto through SDK \u2014 quickly deploy it into mobile apps, internal portals, video conferencing and consultation platforms. Contact Sales for SDK Adopting the SDK? Talk to us now Late Contact Us Now 100% Brand-customized UX 1-2weeks SDK setup time 99.9% [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-255","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.airepoto.com\/en\/wp-json\/wp\/v2\/pages\/255","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.airepoto.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.airepoto.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.airepoto.com\/en\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.airepoto.com\/en\/wp-json\/wp\/v2\/comments?post=255"}],"version-history":[{"count":2,"href":"https:\/\/www.airepoto.com\/en\/wp-json\/wp\/v2\/pages\/255\/revisions"}],"predecessor-version":[{"id":287,"href":"https:\/\/www.airepoto.com\/en\/wp-json\/wp\/v2\/pages\/255\/revisions\/287"}],"wp:attachment":[{"href":"https:\/\/www.airepoto.com\/en\/wp-json\/wp\/v2\/media?parent=255"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}