{"id":8819,"date":"2026-08-14T23:04:17","date_gmt":"2026-08-14T23:04:17","guid":{"rendered":"https:\/\/www.proaladdin.com\/?page_id=8819"},"modified":"2026-08-21T19:10:49","modified_gmt":"2026-08-21T19:10:49","slug":"%d8%aa%d8%b9%d9%84%d9%85","status":"publish","type":"page","link":"https:\/\/www.proaladdin.com\/ar\/%d8%aa%d8%b9%d9%84%d9%85\/","title":{"rendered":"\u062a\u0639\u0644\u0645"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"8819\" class=\"elementor elementor-8819\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-dea9e61 e-con-full elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-parent\" data-id=\"dea9e61\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-177fc13 elementor-widget elementor-widget-heading\" data-id=\"177fc13\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Learn<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-550b2f0 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-parent\" data-id=\"550b2f0\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8e8d528 elementor-widget elementor-widget-shortcode\" data-id=\"8e8d528\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><!-- =====================================================================\n  PROALADDIN \u2014 \"LEARN\" COURSES SECTION\n  Self-contained implementation for an Elementor \"HTML\" widget.\n\n  HOW THIS FILE IS ORGANISED (search these markers):\n    PART B \u2014 CSS             <style> ... <\/style>\n    PART A \u2014 HTML           <div class=\"proaladdin-learn\"> ... <\/div>\n    PART C \u2014 JAVASCRIPT      <script> ... <\/script>\n\n  CSS is placed BEFORE the HTML on purpose (not in the order the section\n  names suggest). An inline <style> block only blocks rendering of the\n  markup that comes AFTER it; anything before it paints unstyled first,\n  then snaps into place once the parser reaches the <style> tag. With the\n  HTML first, the hero buttons briefly appeared bare on a white page on\n  every load - most visible on the larger Arabic build. Putting CSS\n  first means nothing paints until the whole page is already styled.\n\n  Paste this ENTIRE file into a single Elementor \"HTML\" widget.\n  Everything is scoped under .proaladdin-learn so it cannot leak into\n  the rest of the WordPress site (header, footer, other widgets, etc).\n\n  FUTURE WORDPRESS MIGRATION\n  -----------------------------------------------------------------\n  All course content lives in ONE array: `PA_COURSES` (see PART C,\n  \"STEP 1\"). Every field is commented with where it will eventually\n  come from once this is rebuilt as WP + ACF + a Course CPT + CF7.\n  Nothing else in the HTML\/CSS needs to change \u2014 the render functions\n  read from that single array.\n===================================================================== -->\n\n<!-- =====================================================================\n  PART B \u2014 CSS\n  All rules are scoped under .proaladdin-learn so nothing here can\n  affect the rest of the WordPress theme (header, footer, other\n  widgets). No bare element selectors are used outside that scope.\n===================================================================== -->\n<style>\n\n  \/* FONTS: intentionally no @import \/ <link> here, same reasoning as\n     the English build \u2014 no second font download, no render-blocking\n     request. Inter\/Inter Tight don't cover Arabic glyphs at all, so\n     this stack leads with common Arabic web fonts the WordPress site\n     may already load (IBM Plex Sans Arabic, Cairo, Tajawal), then\n     falls back to Tahoma\/Segoe UI\/Arial \u2014 every OS ships one of these\n     with solid Arabic coverage, so text stays fully legible either\n     way. Swap the first family in if the real site standardizes on a\n     specific Arabic webfont. *\/\n\n  \/* ---------------------------------------------------------------\n     TOKENS \u2014 design system, scoped to the widget root\n  --------------------------------------------------------------- *\/\n  .proaladdin-learn {\n    --pa-primary: #0F0F7B;\n    --pa-primary-dark: #0A0A56;\n    --pa-primary-mid: #3A3AA8;\n    --pa-primary-tint: #EEEEFB;\n\n    --pa-ink: #14142B;\n    --pa-ink-soft: #4B4B63;\n    --pa-ink-faint: #86869C;\n\n    --pa-bg: #FFFFFF;\n    --pa-bg-soft: #F7F8FC;\n    --pa-border: #E4E4F0;\n    --pa-border-soft: #ECEDF6;\n\n    --pa-success: #1E9E6B;\n    --pa-danger: #C0364A;\n    --pa-star: #F5A623;\n\n    --pa-radius-sm: 10px;\n    --pa-radius-md: 16px;\n    --pa-radius-lg: 26px;\n    --pa-radius-pill: 999px;\n\n    --pa-shadow-sm: 0 1px 2px rgba(15,15,123,0.06), 0 1px 1px rgba(15,15,123,0.04);\n    --pa-shadow-md: 0 12px 28px rgba(15,15,123,0.10);\n    --pa-shadow-lg: 0 30px 70px rgba(13,13,60,0.22);\n\n    --pa-font-display: 'IBM Plex Sans Arabic', 'Cairo', 'Tajawal', 'Segoe UI', Tahoma, Arial, sans-serif;\n    --pa-font-body: 'IBM Plex Sans Arabic', 'Tajawal', 'Segoe UI', Tahoma, Arial, sans-serif;\n\n    --pa-max-width: 1240px;\n    --pa-gap: 24px;\n\n    --pa-gradient-brand: linear-gradient(120deg, #93C5FD 0%, #818CF8 45%, #D8B4FE 100%);\n    --pa-gradient-brand-soft: linear-gradient(120deg, rgba(147,197,253,0.28) 0%, rgba(129,140,248,0.30) 45%, rgba(216,180,254,0.24) 100%);\n\n    \/* category cover gradients \u2014 used on course card visuals *\/\n    --pa-cover-software-testing: linear-gradient(150deg, #34349A 0%, #6A6ADB 55%, #9AA3F2 100%);\n    --pa-cover-artificial-intelligence: linear-gradient(150deg, #2C1F80 0%, #6B46C1 55%, #B794F4 100%);\n    --pa-cover-programming: linear-gradient(150deg, #10186B 0%, #2F5DD0 55%, #6FA8F5 100%);\n    --pa-cover-data-science: linear-gradient(150deg, #0F0F7B 0%, #5B36B8 55%, #9F7CE8 100%);\n    --pa-cover-career-development: linear-gradient(150deg, #34208A 0%, #7A3FC9 55%, #4FA8E8 100%);\n    --pa-cover-default: linear-gradient(150deg, #14146B 0%, #5555C7 100%);\n\n    background: var(--pa-bg);\n    color: var(--pa-ink);\n    font-family: var(--pa-font-body);\n    font-size: 16px;\n    line-height: 1.65;\n    -webkit-font-smoothing: antialiased;\n    overflow-x: hidden;\n  }\n\n  .proaladdin-learn, .proaladdin-learn *, .proaladdin-learn *::before, .proaladdin-learn *::after {\n    box-sizing: border-box;\n  }\n\n  .proaladdin-learn img { max-width: 100%; display: block; }\n\n  .proaladdin-learn :focus-visible {\n    outline: 2px solid var(--pa-primary);\n    outline-offset: 2px;\n    border-radius: 4px;\n  }\n\n  .proaladdin-learn .pa-container {\n    max-width: var(--pa-max-width);\n    margin: 0 auto;\n    padding: 0 32px;\n  }\n\n  .proaladdin-learn .pa-noscript {\n    background: var(--pa-primary-tint);\n    color: var(--pa-primary-dark);\n    text-align: center;\n    padding: 14px 20px;\n    font-family: var(--pa-font-body);\n    font-size: 15px;\n  }\n\n  \/* ---------------------------------------------------------------\n     BUTTONS\n  --------------------------------------------------------------- *\/\n  .proaladdin-learn .pa-btn {\n    font-family: var(--pa-font-display);\n    font-weight: 600;\n    font-size: 16px;\n    line-height: 1;\n    border-radius: var(--pa-radius-pill);\n    padding: 16px 30px;\n    border: 1.5px solid transparent;\n    cursor: pointer;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 8px;\n    transition: transform 0.18s ease, box-shadow 0.18s ease, background 0.18s ease, color 0.18s ease, border-color 0.18s ease;\n    -webkit-tap-highlight-color: transparent;\n    white-space: nowrap;\n  }\n  .proaladdin-learn .pa-btn--primary {\n    background: linear-gradient(180deg, var(--pa-primary) 0%, var(--pa-primary-dark) 100%);\n    color: #FFFFFF;\n    box-shadow: var(--pa-shadow-sm);\n  }\n  .proaladdin-learn .pa-btn--primary:hover {\n    transform: translateY(-2px);\n    box-shadow: 0 14px 30px rgba(15,15,123,0.28);\n  }\n  .proaladdin-learn .pa-btn--primary:active { transform: translateY(0); }\n\n  .proaladdin-learn .pa-btn--light {\n    background: #FFFFFF;\n    color: var(--pa-primary);\n  }\n  .proaladdin-learn .pa-btn--light:hover { box-shadow: 0 14px 30px rgba(15,15,123,0.18); }\n\n  .proaladdin-learn .pa-btn--secondary {\n    background: transparent;\n    color: var(--pa-primary);\n    border-color: rgba(15,15,123,0.28);\n  }\n  .proaladdin-learn .pa-btn--secondary:hover {\n    border-color: var(--pa-primary);\n    background: var(--pa-primary-tint);\n    transform: translateY(-2px);\n  }\n\n  .proaladdin-learn .pa-btn--outline {\n    background: #FFFFFF;\n    color: var(--pa-primary);\n    border-color: var(--pa-border);\n  }\n  .proaladdin-learn .pa-btn--outline:hover {\n    border-color: var(--pa-primary);\n    box-shadow: var(--pa-shadow-sm);\n  }\n\n  .proaladdin-learn .pa-btn--block { width: 100%; margin-top: 6px; }\n  .proaladdin-learn .pa-btn:disabled { opacity: 0.55; cursor: not-allowed; transform: none !important; }\n\n  .proaladdin-learn .pa-form-submit-error {\n    margin: 12px 0 0;\n    padding: 12px 14px;\n    background: #FDF1F2;\n    border: 1px solid rgba(192,54,74,0.25);\n    border-radius: var(--pa-radius-sm);\n    color: var(--pa-danger);\n    font-size: 13.5px;\n    line-height: 1.5;\n  }\n  .proaladdin-learn .pa-form-submit-error a { color: var(--pa-danger); font-weight: 600; }\n\n  \/* ---------------------------------------------------------------\n     HERO\n  --------------------------------------------------------------- *\/\n  .proaladdin-learn .pa-hero {\n    position: relative;\n    overflow: hidden;\n    min-height: 520px;\n    display: flex;\n    align-items: center;\n    background: #FFFFFF;\n    padding: 108px 0 76px;\n  }\n\n  \/* Single atmospheric gradient wash \u2014 the same restrained blue\/purple\n     language used elsewhere on the ProAladdin site, applied once as a\n     pseudo-element rather than as several animated\/blurred shapes.\n     One paint layer, no JS, no extra DOM nodes, animation-free. *\/\n  .proaladdin-learn .pa-hero::before {\n    content: \"\";\n    position: absolute;\n    inset: -20% -10%;\n    z-index: 0;\n    pointer-events: none;\n    \/* Mirrored from the English build: same colors\/subtlety, but the\n       radial highlight and diagonal flow are flipped horizontally\n       (22% instead of 78%; 240deg instead of 120deg) so the brighter\n       area sits opposite the now-right-aligned hero text, matching\n       the original LTR composition rather than just copying it as-is. *\/\n    background:\n      radial-gradient(circle at 22% 30%, rgba(255,255,255,0.6) 0%, rgba(255,255,255,0) 45%),\n      linear-gradient(240deg,\n        rgba(255,255,255,0) 15%,\n        rgba(147,197,253,0.30) 38%,\n        rgba(129,140,248,0.38) 55%,\n        rgba(216,180,254,0.30) 74%,\n        rgba(255,255,255,0) 92%);\n    filter: blur(30px);\n    \/* Fade the gradient vertically so it naturally disappears into the\n       white page at the top and bottom. *\/\n    -webkit-mask-image: linear-gradient(\n      to bottom,\n      transparent 0%,\n      rgba(0,0,0,0.12) 10%,\n      #000000 25%,\n      #000000 75%,\n      rgba(0,0,0,0.12) 90%,\n      transparent 100%\n    );\n    mask-image: linear-gradient(\n      to bottom,\n      transparent 0%,\n      rgba(0,0,0,0.12) 10%,\n      #000000 25%,\n      #000000 75%,\n      rgba(0,0,0,0.12) 90%,\n      transparent 100%\n    );\n  }\n\n  .proaladdin-learn .pa-hero-content {\n    position: relative;\n    z-index: 1;\n    width: 100%;\n    max-width: var(--pa-max-width);\n    margin-inline: auto;\n    text-align: start;\n  }\n\n  .proaladdin-learn .pa-hero-content > * {\n    max-width: 640px;\n  }\n\n  .proaladdin-learn .pa-hero-title {\n    font-family: var(--pa-font-display);\n    font-weight: 600;\n    font-size: clamp(36px, 6vw, 64px);\n    line-height: 1.2;\n    color: var(--pa-primary);\n    margin: 0 0 20px;\n  }\n\n  .proaladdin-learn .pa-hero-subtitle {\n    font-family: var(--pa-font-body);\n    font-weight: 400;\n    font-size: clamp(17px, 2.4vw, 20px);\n    line-height: 1.55;\n    color: var(--pa-ink-soft);\n    margin: 0 0 36px;\n    max-width: 520px;\n  }\n\n  .proaladdin-learn .pa-hero-actions {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 14px;\n  }\n\n  \/* ---------------------------------------------------------------\n     SECTION HEADS (shared)\n  --------------------------------------------------------------- *\/\n  .proaladdin-learn .pa-section-head {\n    text-align: center;\n    max-width: 640px;\n    margin: 0 auto 40px;\n  }\n  .proaladdin-learn .pa-section-title {\n    font-family: var(--pa-font-display);\n    font-weight: 700;\n    font-size: clamp(28px, 4.4vw, 48px);\n    line-height: 1.08;\n    color: var(--pa-ink);\n    margin: 0 0 14px;\n  }\n  .proaladdin-learn .pa-section-subtitle {\n    font-family: var(--pa-font-body);\n    font-size: clamp(16px, 2vw, 18px);\n    color: var(--pa-ink-soft);\n    margin: 0;\n  }\n\n  \/* ---------------------------------------------------------------\n     DISCOVERY \u2014 search \/ filters \/ sort\n  --------------------------------------------------------------- *\/\n  .proaladdin-learn .pa-discovery {\n    padding: 88px 0 40px;\n  }\n\n  .proaladdin-learn .pa-search-row {\n    display: flex;\n    justify-content: center;\n    margin-bottom: 28px;\n  }\n  .proaladdin-learn .pa-search-wrap {\n    position: relative;\n    width: 100%;\n    max-width: 560px;\n    display: flex;\n    align-items: center;\n  }\n  .proaladdin-learn .pa-search-icon {\n    position: absolute;\n    inset-inline-start: 20px;\n    color: var(--pa-ink-faint);\n    pointer-events: none;\n  }\n  .proaladdin-learn .pa-search-input {\n    width: 100%;\n    font-family: var(--pa-font-body);\n    font-size: 16px;\n    color: var(--pa-ink);\n    background: #FFFFFF;\n    border: 1.5px solid var(--pa-border);\n    border-radius: var(--pa-radius-pill);\n    padding-block: 16px;\n    padding-inline-start: 52px;\n    padding-inline-end: 20px;\n    transition: border-color 0.18s ease, box-shadow 0.18s ease;\n  }\n  .proaladdin-learn .pa-search-input::placeholder { color: var(--pa-ink-faint); }\n  .proaladdin-learn .pa-search-input:focus {\n    outline: none;\n    border-color: var(--pa-primary);\n    box-shadow: 0 0 0 4px rgba(15,15,123,0.10);\n  }\n\n  \/* Category \/ sort \/ currency share one desktop\/tablet control row.\n     The category area is the only part allowed to scroll internally. *\/\n  .proaladdin-learn .pa-controls-row {\n    position: relative;\n    display: flex;\n    align-items: center;\n    gap: 14px;\n    flex-wrap: nowrap;\n    min-width: 0;\n  }\n\n  .proaladdin-learn .pa-category-selector {\n    position: relative;\n    flex: 0 0 auto;\n    z-index: 30;\n  }\n\n  .proaladdin-learn .pa-category-more {\n    display: inline-flex;\n    align-items: center;\n    gap: 10px;\n    min-height: 46px;\n    padding: 0 16px;\n    border: 1px solid #E1E3EE;\n    border-radius: 13px;\n    background: #FFFFFF;\n    color: var(--pa-primary);\n    font-family: var(--pa-font-body);\n    font-size: 15px;\n    font-weight: 500;\n    cursor: pointer;\n    white-space: nowrap;\n    box-shadow: 0 1px 2px rgba(15,15,123,0.03);\n    transition: border-color .18s ease, background .18s ease, box-shadow .18s ease;\n  }\n  .proaladdin-learn .pa-category-more:hover,\n  .proaladdin-learn .pa-category-more[aria-expanded=\"true\"] {\n    border-color: rgba(15,15,123,.22);\n    background: #F8F8FD;\n    box-shadow: 0 4px 14px rgba(15,15,123,.06);\n  }\n  .proaladdin-learn .pa-category-trigger-icon { flex: 0 0 auto; }\n  .proaladdin-learn .pa-category-trigger-chevron {\n    color: #8C8EA2;\n    transition: transform .18s ease;\n  }\n  .proaladdin-learn .pa-category-more[aria-expanded=\"true\"] .pa-category-trigger-chevron {\n    transform: rotate(180deg);\n  }\n\n  .proaladdin-learn .pa-popular-label {\n    flex: 0 0 auto;\n    min-width: 0;\n    color: #8D8FA3;\n    font-family: var(--pa-font-body);\n    font-size: 11.5px;\n    font-weight: 700;\n  }\n\n  \/* Popular category chips form their own horizontal scroll viewport. *\/\n  .proaladdin-learn .pa-filters {\n    display: flex;\n    align-items: center;\n    flex: 1 1 0%;\n    min-width: 0;\n    max-width: 100%;\n    gap: 9px;\n    flex-wrap: nowrap;\n    overflow-x: auto;\n    overflow-y: hidden;\n    overscroll-behavior-x: contain;\n    -webkit-overflow-scrolling: touch;\n    touch-action: pan-x;\n    scrollbar-width: none;\n    padding: 3px 2px;\n    cursor: grab;\n  }\n  .proaladdin-learn .pa-filters:active { cursor: grabbing; }\n  .proaladdin-learn .pa-filters.pa-is-dragging { user-select: none; cursor: grabbing; }\n  .proaladdin-learn .pa-filters::-webkit-scrollbar { display: none; }\n\n  .proaladdin-learn .pa-chip {\n    flex: 0 0 auto;\n    font-family: var(--pa-font-body);\n    font-weight: 500;\n    font-size: 14px;\n    color: #25284A;\n    background: #FFFFFF;\n    border: 1px solid #DEE1EC;\n    border-radius: var(--pa-radius-pill);\n    padding: 9px 16px;\n    min-height: 40px;\n    cursor: pointer;\n    transition: background .18s ease, color .18s ease, border-color .18s ease, transform .12s ease;\n    white-space: nowrap;\n  }\n  .proaladdin-learn .pa-chip:hover {\n    border-color: rgba(15,15,123,.28);\n    transform: translateY(-1px);\n  }\n  .proaladdin-learn .pa-chip[aria-pressed=\"true\"] {\n    background: var(--pa-primary);\n    border-color: var(--pa-primary);\n    color: #FFFFFF;\n  }\n\n  .proaladdin-learn .pa-category-more-inline {\n    flex: 0 0 auto;\n    border: 0;\n    background: transparent;\n    color: var(--pa-primary);\n    font-family: var(--pa-font-body);\n    font-size: 14px;\n    font-weight: 600;\n    padding: 9px 8px;\n    cursor: pointer;\n    white-space: nowrap;\n  }\n  .proaladdin-learn .pa-category-more-inline:hover { text-decoration: underline; }\n\n  .proaladdin-learn .pa-category-popover {\n    position: absolute;\n    top: calc(100% + 10px);\n    inset-inline-start: 0;\n    width: 380px;\n    max-width: calc(100vw - 32px);\n    max-height: min(520px, calc(100vh - 110px));\n    padding: 20px 16px 14px;\n    background: rgba(255,255,255,.98);\n    border: 1px solid #E2E4EF;\n    border-radius: 16px;\n    box-shadow: 0 18px 45px rgba(25,27,70,.14);\n    overflow: hidden;\n  }\n  .proaladdin-learn .pa-category-popover[hidden] { display: none; }\n\n  .proaladdin-learn .pa-category-popover-head {\n    display: flex;\n    align-items: flex-start;\n    justify-content: space-between;\n    gap: 12px;\n    margin-bottom: 13px;\n  }\n  .proaladdin-learn .pa-category-popover-head > div {\n    display: flex;\n    flex-direction: column;\n    gap: 4px;\n  }\n  .proaladdin-learn .pa-category-popover-title {\n    font-family: var(--pa-font-display);\n    font-size: 16px;\n    line-height: 1.2;\n    color: #25263E;\n  }\n  .proaladdin-learn .pa-category-popover-subtitle {\n    font-size: 12px;\n    color: #8B8DA1;\n  }\n  .proaladdin-learn .pa-category-popover-close {\n    width: 34px;\n    height: 34px;\n    border: 0;\n    border-radius: 50%;\n    background: #F4F5F9;\n    color: #25263E;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    cursor: pointer;\n    flex: 0 0 auto;\n  }\n  .proaladdin-learn .pa-category-popover-close:hover { background: #ECEEF5; }\n\n  .proaladdin-learn .pa-category-search-wrap {\n    position: relative;\n    display: flex;\n    align-items: center;\n    margin-bottom: 9px;\n  }\n  .proaladdin-learn .pa-category-search-wrap > svg {\n    position: absolute;\n    inset-inline-start: 13px;\n    color: #85889D;\n    pointer-events: none;\n  }\n  .proaladdin-learn #paCategorySearch {\n    width: 100%;\n    min-height: 44px;\n    padding-block: 10px;\n    padding-inline-start: 38px;\n    padding-inline-end: 12px;\n    border: 1px solid #DDE0EC;\n    border-radius: 11px;\n    background: #FFFFFF;\n    color: var(--pa-ink);\n    font-family: var(--pa-font-body);\n    font-size: 14px;\n  }\n  .proaladdin-learn #paCategorySearch:focus {\n    outline: none;\n    border-color: rgba(15,15,123,.34);\n    box-shadow: 0 0 0 3px rgba(15,15,123,.06);\n  }\n\n  .proaladdin-learn .pa-category-actions {\n    display: flex;\n    justify-content: flex-end;\n    gap: 18px;\n    margin: 0 2px 8px;\n  }\n  .proaladdin-learn .pa-category-action {\n    border: 0;\n    padding: 5px 0;\n    background: transparent;\n    color: var(--pa-primary);\n    font-family: var(--pa-font-body);\n    font-size: 12px;\n    font-weight: 700;\n    cursor: pointer;\n  }\n\n  .proaladdin-learn .pa-category-list {\n    max-height: 290px;\n    overflow-y: auto;\n    overscroll-behavior: contain;\n    padding: 0 2px;\n    scrollbar-width: thin;\n  }\n  .proaladdin-learn .pa-category-option {\n    width: 100%;\n    min-height: 43px;\n    display: flex;\n    align-items: center;\n    gap: 10px;\n    padding: 7px 9px;\n    border: 0;\n    border-radius: 9px;\n    background: transparent;\n    color: #686A7F;\n    font-family: var(--pa-font-body);\n    font-size: 14px;\n    text-align: start;\n    cursor: pointer;\n  }\n  .proaladdin-learn .pa-category-option:hover {\n    background: #F7F7FC;\n    color: #25263E;\n  }\n  .proaladdin-learn .pa-category-option[aria-pressed=\"true\"] {\n    background: #EEEEFA;\n    color: var(--pa-primary);\n    font-weight: 700;\n  }\n  .proaladdin-learn .pa-category-check {\n    width: 20px;\n    height: 20px;\n    border: 1px solid #DEE1EC;\n    border-radius: 6px;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    flex: 0 0 auto;\n    background: #FFFFFF;\n    color: #FFFFFF;\n    font-size: 12px;\n    font-weight: 700;\n  }\n  .proaladdin-learn .pa-category-option[aria-pressed=\"true\"] .pa-category-check {\n    border-color: var(--pa-primary);\n    background: var(--pa-primary);\n  }\n\n  .proaladdin-learn .pa-category-popover-footer {\n    display: flex;\n    justify-content: flex-end;\n    padding-top: 10px;\n    margin-top: 8px;\n    border-top: 1px solid var(--pa-border-soft);\n  }\n  .proaladdin-learn .pa-category-done {\n    padding: 9px 18px;\n    font-size: 13px;\n  }\n\n  .proaladdin-learn .pa-controls-right {\n    display: flex;\n    align-items: center;\n    gap: 20px;\n    flex: 0 0 auto;\n    flex-wrap: nowrap;\n  }\n\n  .proaladdin-learn .pa-sort-wrap {\n    display: flex;\n    align-items: center;\n    gap: 10px;\n    flex: 0 0 auto;\n  }\n  .proaladdin-learn .pa-sort-label {\n    font-size: 14.5px;\n    color: var(--pa-ink-soft);\n    white-space: nowrap;\n  }\n  .proaladdin-learn .pa-select-shell {\n    position: relative;\n    display: inline-flex;\n    align-items: center;\n  }\n  .proaladdin-learn .pa-sort-select {\n    appearance: none;\n    -webkit-appearance: none;\n    font-family: var(--pa-font-body);\n    font-size: 14.5px;\n    color: var(--pa-ink);\n    background: #FFFFFF;\n    border: 1.5px solid var(--pa-border);\n    border-radius: var(--pa-radius-pill);\n    padding-block: 10px;\n    padding-inline-start: 18px;\n    padding-inline-end: 40px;\n    cursor: pointer;\n    transition: border-color 0.18s ease;\n  }\n  .proaladdin-learn .pa-sort-select:focus { outline: none; border-color: var(--pa-primary); }\n  .proaladdin-learn .pa-select-chevron {\n    position: absolute;\n    inset-inline-end: 16px;\n    color: var(--pa-ink-faint);\n    pointer-events: none;\n  }\n\n  \/* ---------------------------------------------------------------\n     COURSE GRID\n  --------------------------------------------------------------- *\/\n  .proaladdin-learn .pa-grid-section { padding: 44px 0 100px; }\n\n  .proaladdin-learn .pa-results-count {\n    font-size: 14.5px;\n    color: var(--pa-ink-faint);\n    margin: 0 0 20px;\n  }\n\n  .proaladdin-learn .pa-grid {\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: var(--pa-gap);\n    \/* layout only, not paint: paint containment forces a hard clip at this\n       element's own edge, and .pa-card:hover lifts a card 6px upward on\n       hover (transform: translateY(-6px)) - on the first row, with no grid\n       row above to absorb that shift, the clip boundary sliced the top off\n       the card and its image. Layout containment keeps the isolation this\n       was added for (so renderGrid() rebuilding the grid on every search\/\n       filter\/sort change does not trigger a reflow of the rest of the\n       page) without clipping anything. *\/\n    contain: layout;\n  }\n\n  .proaladdin-learn .pa-card {\n    display: flex;\n    flex-direction: column;\n    background: #FFFFFF;\n    border: 1px solid var(--pa-border-soft);\n    border-radius: var(--pa-radius-lg);\n    overflow: hidden;\n    text-align: start;\n    cursor: pointer;\n    box-shadow: var(--pa-shadow-sm);\n    transition: transform 0.22s ease, box-shadow 0.22s ease, border-color 0.22s ease;\n    height: 100%;\n  }\n  .proaladdin-learn .pa-card:hover,\n  .proaladdin-learn .pa-card:focus-visible {\n    transform: translateY(-6px);\n    box-shadow: 0 10px 24px rgba(15,15,123,0.08);\n    border-color: transparent;\n  }\n  .proaladdin-learn .pa-card:hover .pa-card-cover,\n  .proaladdin-learn .pa-card:focus-visible .pa-card-cover {\n    transform: scale(1.045);\n  }\n\n  .proaladdin-learn .pa-card-cover-wrap {\n    position: relative;\n    overflow: hidden;\n    aspect-ratio: 16 \/ 10;\n  }\n  .proaladdin-learn .pa-card-cover {\n    position: absolute;\n    inset: 0;\n    transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1);\n  }\n  .proaladdin-learn .pa-card-image {\n    position: absolute;\n    inset: 0;\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    display: block;\n  }\n  .proaladdin-learn .pa-card-cover::before {\n    content: \"\";\n    position: absolute;\n    width: 220px; height: 220px;\n    border-radius: 50%;\n    inset-inline-end: -60px; top: -70px;\n    background: radial-gradient(circle, rgba(255,255,255,0.28) 0%, rgba(255,255,255,0) 70%);\n  }\n  .proaladdin-learn .pa-card-cover::after {\n    content: \"\";\n    position: absolute;\n    width: 160px; height: 160px;\n    border-radius: 50%;\n    inset-inline-start: -50px; bottom: -60px;\n    background: radial-gradient(circle, rgba(255,255,255,0.16) 0%, rgba(255,255,255,0) 70%);\n  }\n  .proaladdin-learn .pa-card-mark {\n    position: absolute;\n    inset-inline-start: 20px; bottom: 18px;\n    font-family: var(--pa-font-display);\n    font-weight: 600;\n    font-size: 15px;\n    color: rgba(255,255,255,0.92);\n  }\n  .proaladdin-learn .pa-card-featured {\n    position: absolute;\n    top: 14px; inset-inline-end: 14px;\n    background: rgba(255,255,255,0.92);\n    color: var(--pa-primary);\n    font-family: var(--pa-font-body);\n    font-weight: 600;\n    font-size: 12px;\n    padding: 6px 12px;\n    border-radius: var(--pa-radius-pill);\n  }\n\n  .proaladdin-learn .pa-card-body {\n    display: flex;\n    flex-direction: column;\n    flex: 1;\n    padding: 22px 22px 24px;\n  }\n\n  .proaladdin-learn .pa-card-category {\n    font-family: var(--pa-font-body);\n    font-weight: 600;\n    font-size: 13px;\n    color: var(--pa-primary);\n    margin: 0 0 10px;\n  }\n\n  .proaladdin-learn .pa-card-title {\n    font-family: var(--pa-font-display);\n    font-weight: 600;\n    font-size: 21px;\n    line-height: 1.28;\n    color: var(--pa-ink);\n    margin: 0 0 10px;\n  }\n\n  .proaladdin-learn .pa-card-desc {\n    font-size: 15px;\n    line-height: 1.55;\n    color: var(--pa-ink-soft);\n    margin: 0 0 18px;\n    display: -webkit-box;\n    -webkit-line-clamp: 2;\n    -webkit-box-orient: vertical;\n    overflow: hidden;\n  }\n\n  .proaladdin-learn .pa-card-instructor {\n    display: flex;\n    align-items: center;\n    gap: 10px;\n    margin-bottom: 16px;\n  }\n  .proaladdin-learn .pa-avatar {\n    width: 28px; height: 28px;\n    border-radius: 50%;\n    background: var(--pa-primary-tint);\n    color: var(--pa-primary);\n    font-family: var(--pa-font-display);\n    font-weight: 600;\n    font-size: 12px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    flex-shrink: 0;\n  }\n  .proaladdin-learn .pa-card-instructor-name {\n    font-size: 14px;\n    color: var(--pa-ink-soft);\n  }\n\n  .proaladdin-learn .pa-card-meta {\n    display: flex;\n    align-items: center;\n    gap: 10px;\n    font-size: 13.5px;\n    color: var(--pa-ink-faint);\n    margin-bottom: 14px;\n  }\n  .proaladdin-learn .pa-card-meta-dot { opacity: 0.6; }\n\n  .proaladdin-learn .pa-card-rating {\n    display: flex;\n    align-items: center;\n    gap: 6px;\n    font-size: 13.5px;\n    color: var(--pa-ink-soft);\n    margin-bottom: 18px;\n  }\n  .proaladdin-learn .pa-card-rating svg { color: var(--pa-star); }\n  .proaladdin-learn .pa-card-rating .pa-rating-count { color: var(--pa-ink-faint); }\n\n  .proaladdin-learn .pa-card-footer {\n    margin-top: auto;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    padding-top: 16px;\n    border-top: 1px solid var(--pa-border-soft);\n  }\n\n  .proaladdin-learn .pa-card-price {\n    font-family: var(--pa-font-display);\n    font-weight: 700;\n    font-size: 19px;\n    color: var(--pa-primary);\n  }\n  .proaladdin-learn .pa-card-price-currency {\n    font-size: 13px;\n    font-weight: 600;\n    margin-inline-end: 2px;\n    color: var(--pa-ink-faint);\n  }\n\n  .proaladdin-learn .pa-card-cta {\n    font-family: var(--pa-font-body);\n    font-weight: 600;\n    font-size: 14px;\n    color: var(--pa-primary);\n    display: inline-flex;\n    align-items: center;\n    gap: 6px;\n  }\n  .proaladdin-learn .pa-card:hover .pa-card-cta,\n  .proaladdin-learn .pa-card:focus-visible .pa-card-cta { text-decoration: underline; }\n\n  \/* A course with no price (course.price <= 0) swaps the normal price + \"View\n     Course\" footer for a single full-width CTA that jumps straight to the\n     enrollment form, and the modal\/single-course page hide the price rather\n     than showing \"$0\". *\/\n  .proaladdin-learn .pa-card-footer--contact { justify-content: center; }\n  .proaladdin-learn .pa-card-contact-btn {\n    width: 100%;\n    border: 1.5px solid var(--pa-primary);\n    background: var(--pa-primary-tint);\n    color: var(--pa-primary);\n    font-family: var(--pa-font-body);\n    font-weight: 600;\n    font-size: 13.5px;\n    padding: 9px 14px;\n    border-radius: var(--pa-radius-pill);\n    cursor: pointer;\n    transition: background 0.18s ease, color 0.18s ease;\n  }\n  .proaladdin-learn .pa-card-contact-btn:hover,\n  .proaladdin-learn .pa-card-contact-btn:focus-visible {\n    background: var(--pa-primary);\n    color: #FFFFFF;\n  }\n  .proaladdin-learn .pa-detail-footer-price--contact {\n    font-family: var(--pa-font-body);\n    font-weight: 600;\n    font-size: 15px;\n    color: var(--pa-ink-soft);\n  }\n\n  \/* ---------------------------------------------------------------\n     EMPTY STATE\n  --------------------------------------------------------------- *\/\n  .proaladdin-learn .pa-empty {\n    text-align: center;\n    padding: 80px 20px;\n    max-width: 420px;\n    margin: 0 auto;\n  }\n  .proaladdin-learn .pa-empty-icon {\n    width: 76px; height: 76px;\n    border-radius: 50%;\n    background: var(--pa-bg-soft);\n    color: var(--pa-primary);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    margin: 0 auto 22px;\n  }\n  .proaladdin-learn .pa-empty-title {\n    font-family: var(--pa-font-display);\n    font-weight: 700;\n    font-size: 22px;\n    margin: 0 0 8px;\n  }\n  .proaladdin-learn .pa-empty-text {\n    color: var(--pa-ink-soft);\n    margin: 0 0 26px;\n  }\n\n  \/* ---------------------------------------------------------------\n     CTA SECTION\n  --------------------------------------------------------------- *\/\n  .proaladdin-learn .pa-cta {\n    position: relative;\n    overflow: hidden;\n    background: var(--pa-primary);\n    background-image:\n      radial-gradient(circle at 15% 20%, rgba(147,197,253,0.35) 0%, rgba(147,197,253,0) 55%),\n      radial-gradient(circle at 85% 80%, rgba(216,180,254,0.30) 0%, rgba(216,180,254,0) 55%),\n      linear-gradient(135deg, var(--pa-primary) 0%, var(--pa-primary-dark) 100%);\n    padding: 90px 0;\n  }\n  .proaladdin-learn .pa-cta-inner {\n    text-align: center;\n    max-width: 560px;\n  }\n  .proaladdin-learn .pa-cta-title {\n    font-family: var(--pa-font-display);\n    font-weight: 700;\n    font-size: clamp(28px, 4vw, 42px);\n    color: #FFFFFF;\n    margin: 0 0 14px;\n  }\n  .proaladdin-learn .pa-cta-text {\n    font-size: 18px;\n    color: rgba(255,255,255,0.82);\n    margin: 0 0 32px;\n  }\n\n  \/* ---------------------------------------------------------------\n     MODALS (shared)\n  --------------------------------------------------------------- *\/\n  .proaladdin-learn .pa-modal-overlay {\n    position: fixed;\n    inset: 0;\n    z-index: 999999;\n    \/* rgba() tint is the real, always-on fallback; blur is a bonus\n       only added where the browser and screen size can afford it. *\/\n    background: rgba(14,14,42,0.6);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    padding: 32px 20px;\n    animation: pa-fade-in 0.15s ease;\n  }\n  .proaladdin-learn .pa-modal-overlay[hidden] { display: none; }\n  @media (min-width: 768px) {\n    @supports (backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px)) {\n      .proaladdin-learn .pa-modal-overlay {\n        background: rgba(14,14,42,0.5);\n        -webkit-backdrop-filter: blur(3px);\n        backdrop-filter: blur(3px);\n      }\n    }\n  }\n\n  @keyframes pa-fade-in { from { opacity: 0; } to { opacity: 1; } }\n  @keyframes pa-rise-in {\n    from { opacity: 0; transform: translateY(18px) scale(0.98); }\n    to { opacity: 1; transform: translateY(0) scale(1); }\n  }\n\n  .proaladdin-learn .pa-modal {\n    position: relative;\n    background: #FFFFFF;\n    border-radius: var(--pa-radius-lg);\n    width: 100%;\n    max-height: calc(100vh - 64px);\n    overflow: hidden;\n    display: flex;\n    flex-direction: column;\n    box-shadow: var(--pa-shadow-lg);\n    animation: pa-rise-in 0.28s cubic-bezier(0.22, 1, 0.36, 1);\n  }\n  .proaladdin-learn .pa-modal--course { max-width: 780px; }\n  .proaladdin-learn .pa-modal--enroll { max-width: 560px; }\n\n  .proaladdin-learn .pa-modal-close {\n    position: absolute;\n    top: 18px; inset-inline-end: 18px;\n    z-index: 2;\n    width: 40px; height: 40px;\n    border-radius: 50%;\n    border: none;\n    background: rgba(20,20,43,0.06);\n    color: var(--pa-ink);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    cursor: pointer;\n    transition: background 0.18s ease, transform 0.18s ease;\n  }\n  .proaladdin-learn .pa-modal-close:hover { background: rgba(20,20,43,0.12); transform: rotate(90deg); }\n\n  .proaladdin-learn .pa-modal-body {\n    overflow-y: auto;\n    padding: 44px 40px 32px;\n  }\n\n  .proaladdin-learn .pa-modal-eyebrow {\n    font-family: var(--pa-font-body);\n    font-weight: 600;\n    font-size: 13.5px;\n    color: var(--pa-primary);\n    margin: 0 0 10px;\n  }\n  .proaladdin-learn .pa-modal-title {\n    font-family: var(--pa-font-display);\n    font-weight: 700;\n    font-size: clamp(24px, 3.4vw, 32px);\n    line-height: 1.18;\n    color: var(--pa-ink);\n    margin: 0 0 10px;\n  }\n  .proaladdin-learn .pa-modal-lede {\n    color: var(--pa-ink-soft);\n    font-size: 16px;\n    margin: 0 0 28px;\n  }\n\n  \/* ---- Course detail modal content ---- *\/\n  .proaladdin-learn .pa-detail-meta {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 8px 18px;\n    font-size: 14.5px;\n    color: var(--pa-ink-soft);\n    margin-bottom: 22px;\n  }\n  .proaladdin-learn .pa-detail-meta strong { color: var(--pa-ink); font-weight: 600; }\n\n  .proaladdin-learn .pa-detail-price-row {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    background: var(--pa-bg-soft);\n    border-radius: var(--pa-radius-md);\n    padding: 18px 22px;\n    margin-bottom: 30px;\n    flex-wrap: wrap;\n    gap: 12px;\n  }\n  .proaladdin-learn .pa-detail-price {\n    font-family: var(--pa-font-display);\n    font-weight: 700;\n    font-size: 26px;\n    color: var(--pa-primary);\n  }\n  .proaladdin-learn .pa-detail-price-sub {\n    font-size: 13px;\n    color: var(--pa-ink-faint);\n    display: block;\n    margin-top: 2px;\n    font-family: var(--pa-font-body);\n    font-weight: 400;\n  }\n\n  \/* ---- Course preview video ----\n     One responsive 16:9 frame for both embed types (YouTube iframe and a\n     self-hosted media file), so the modal layout is identical either way and\n     nothing shifts while the embed loads. Direction-agnostic, so it needs\n     no RTL handling. *\/\n  .proaladdin-learn .pa-detail-video {\n    position: relative;\n    width: 100%;\n    aspect-ratio: 16 \/ 9;\n    margin-bottom: 30px;\n    border-radius: var(--pa-radius-md);\n    overflow: hidden;\n    background: #0B0B2A;\n    box-shadow: var(--pa-shadow-sm);\n  }\n  .proaladdin-learn .pa-video-frame {\n    position: absolute;\n    inset: 0;\n    width: 100%;\n    height: 100%;\n    border: 0;\n    display: block;\n  }\n  .proaladdin-learn video.pa-video-frame {\n    object-fit: cover;\n    background: #000000;\n  }\n\n  .proaladdin-learn .pa-detail-section { margin-bottom: 34px; }\n  .proaladdin-learn .pa-detail-section:last-child { margin-bottom: 8px; }\n  .proaladdin-learn .pa-detail-heading {\n    font-family: var(--pa-font-display);\n    font-weight: 700;\n    font-size: 19px;\n    color: var(--pa-ink);\n    margin: 0 0 16px;\n  }\n  .proaladdin-learn .pa-detail-desc { color: var(--pa-ink-soft); font-size: 16px; line-height: 1.65; margin: 0; }\n\n  .proaladdin-learn .pa-outcomes-grid {\n    list-style: none;\n    margin: 0; padding: 0;\n    display: grid;\n    grid-template-columns: repeat(2, 1fr);\n    gap: 12px 20px;\n  }\n  .proaladdin-learn .pa-outcomes-grid li {\n    display: flex;\n    gap: 10px;\n    font-size: 15px;\n    color: var(--pa-ink-soft);\n    line-height: 1.45;\n  }\n  .proaladdin-learn .pa-outcomes-grid svg { flex-shrink: 0; margin-top: 2px; color: var(--pa-success); }\n\n  .proaladdin-learn .pa-list-plain { margin: 0; padding: 0; list-style: none; }\n  .proaladdin-learn .pa-list-plain li {\n    position: relative;\n    padding-inline-start: 20px;\n    font-size: 15px;\n    color: var(--pa-ink-soft);\n    line-height: 1.6;\n    margin-bottom: 10px;\n  }\n  .proaladdin-learn .pa-list-plain li::before {\n    content: \"\";\n    position: absolute;\n    inset-inline-start: 0; top: 9px;\n    width: 6px; height: 6px;\n    border-radius: 50%;\n    background: var(--pa-primary);\n  }\n\n  \/* accordion (native <details>\/<summary>) *\/\n  .proaladdin-learn .pa-accordion { border-top: 1px solid var(--pa-border-soft); }\n  .proaladdin-learn .pa-accordion-item {\n    border-bottom: 1px solid var(--pa-border-soft);\n  }\n  .proaladdin-learn .pa-accordion-item summary {\n    list-style: none;\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 14px;\n    padding: 16px 2px;\n    font-family: var(--pa-font-display);\n    font-weight: 600;\n    font-size: 15.5px;\n    color: var(--pa-ink);\n  }\n  .proaladdin-learn .pa-accordion-item summary::-webkit-details-marker { display: none; }\n  .proaladdin-learn .pa-accordion-chevron {\n    flex-shrink: 0;\n    color: var(--pa-ink-faint);\n    transition: transform 0.2s ease;\n  }\n  .proaladdin-learn .pa-accordion-item[open] .pa-accordion-chevron { transform: rotate(180deg); color: var(--pa-primary); }\n  .proaladdin-learn .pa-accordion-panel {\n    padding: 0 2px 18px;\n    color: var(--pa-ink-soft);\n    font-size: 14.5px;\n  }\n  .proaladdin-learn .pa-accordion-panel ul { margin: 0; padding: 0; list-style: none; }\n  .proaladdin-learn .pa-accordion-panel li {\n    padding-block: 7px;\n    padding-inline-start: 22px;\n    position: relative;\n  }\n  .proaladdin-learn .pa-accordion-panel li::before {\n    content: \"\";\n    position: absolute;\n    inset-inline-start: 2px; top: 15px;\n    width: 5px; height: 5px;\n    border-radius: 50%;\n    background: var(--pa-primary-mid);\n  }\n  .proaladdin-learn .pa-accordion-panel p { margin: 0 0 10px; }\n\n  .proaladdin-learn .pa-instructor-card {\n    display: flex;\n    gap: 16px;\n    align-items: flex-start;\n    background: var(--pa-bg-soft);\n    border-radius: var(--pa-radius-md);\n    padding: 20px;\n  }\n  .proaladdin-learn .pa-instructor-avatar {\n    width: 52px; height: 52px;\n    border-radius: 50%;\n    background: linear-gradient(150deg, var(--pa-primary) 0%, #818CF8 100%);\n    color: #fff;\n    font-family: var(--pa-font-display);\n    font-weight: 600;\n    font-size: 18px;\n    flex-shrink: 0;\n    display: flex; align-items: center; justify-content: center;\n  }\n  .proaladdin-learn .pa-instructor-name { font-family: var(--pa-font-display); font-weight: 600; font-size: 16px; color: var(--pa-ink); margin: 0 0 2px; }\n  .proaladdin-learn .pa-instructor-title { font-size: 13.5px; color: var(--pa-primary); margin: 0 0 8px; }\n  .proaladdin-learn .pa-instructor-bio { font-size: 14.5px; color: var(--pa-ink-soft); margin: 0; line-height: 1.55; }\n\n  .proaladdin-learn .pa-testimonials { display: flex; flex-direction: column; gap: 14px; }\n  .proaladdin-learn .pa-testimonial {\n    border: 1px solid var(--pa-border-soft);\n    border-radius: var(--pa-radius-md);\n    padding: 18px 20px;\n  }\n  .proaladdin-learn .pa-testimonial-quote { font-size: 15px; color: var(--pa-ink); margin: 0 0 10px; line-height: 1.55; }\n  .proaladdin-learn .pa-testimonial-author { font-size: 13.5px; color: var(--pa-ink-faint); }\n  .proaladdin-learn .pa-testimonial-author strong { color: var(--pa-ink-soft); font-weight: 600; }\n\n  .proaladdin-learn .pa-detail-footer {\n    position: sticky;\n    bottom: -32px;\n    margin: 0 -40px -32px;\n    padding: 18px 40px;\n    background: #FFFFFF;\n    border-top: 1px solid var(--pa-border-soft);\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 16px;\n    flex-wrap: wrap;\n  }\n  .proaladdin-learn .pa-detail-footer-price { font-family: var(--pa-font-display); font-weight: 700; font-size: 20px; color: var(--pa-primary); }\n\n  \/* ---- Enrollment form ---- *\/\n  .proaladdin-learn .pa-form-row { margin-bottom: 18px; }\n  .proaladdin-learn .pa-form-row--split { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }\n\n  .proaladdin-learn .pa-field { display: flex; flex-direction: column; gap: 7px; }\n  .proaladdin-learn .pa-field-label { font-size: 14px; font-weight: 600; color: var(--pa-ink); }\n  .proaladdin-learn .pa-required { color: var(--pa-danger); }\n\n  .proaladdin-learn .pa-input {\n    font-family: var(--pa-font-body);\n    font-size: 15px;\n    color: var(--pa-ink);\n    background: #FFFFFF;\n    border: 1.5px solid var(--pa-border);\n    border-radius: var(--pa-radius-sm);\n    padding: 13px 15px;\n    width: 100%;\n    transition: border-color 0.18s ease, box-shadow 0.18s ease;\n  }\n  .proaladdin-learn .pa-input:focus {\n    outline: none;\n    border-color: var(--pa-primary);\n    box-shadow: 0 0 0 4px rgba(15,15,123,0.10);\n  }\n  .proaladdin-learn .pa-input--select { appearance: none; -webkit-appearance: none; cursor: pointer; background-image: none; }\n  .proaladdin-learn .pa-textarea { resize: vertical; min-height: 90px; }\n\n  .proaladdin-learn .pa-field.pa-invalid .pa-input { border-color: var(--pa-danger); }\n  .proaladdin-learn .pa-field-error {\n    display: none;\n    font-size: 13px;\n    color: var(--pa-danger);\n    margin-top: 2px;\n  }\n  .proaladdin-learn .pa-field.pa-invalid .pa-field-error,\n  .proaladdin-learn .pa-form-row.pa-invalid .pa-field-error { display: block; }\n\n  .proaladdin-learn .pa-checkbox-field {\n    display: flex;\n    align-items: flex-start;\n    gap: 10px;\n    cursor: pointer;\n    font-size: 14.5px;\n    color: var(--pa-ink-soft);\n    line-height: 1.5;\n  }\n  .proaladdin-learn .pa-checkbox-field input { position: absolute; opacity: 0; width: 1px; height: 1px; }\n  .proaladdin-learn .pa-checkbox-box {\n    flex-shrink: 0;\n    width: 20px; height: 20px;\n    border-radius: 6px;\n    border: 1.5px solid var(--pa-border);\n    margin-top: 1px;\n    position: relative;\n    transition: background 0.15s ease, border-color 0.15s ease;\n  }\n  .proaladdin-learn .pa-checkbox-field input:checked + .pa-checkbox-box {\n    background: var(--pa-primary);\n    border-color: var(--pa-primary);\n  }\n  .proaladdin-learn .pa-checkbox-field input:checked + .pa-checkbox-box::after {\n    content: \"\";\n    position: absolute;\n    inset-inline-start: 6px; top: 2px;\n    width: 5px; height: 10px;\n    border: solid #fff;\n    border-width: 0 2px 2px 0;\n    transform: rotate(40deg);\n  }\n  .proaladdin-learn .pa-checkbox-field input:focus-visible + .pa-checkbox-box {\n    outline: 2px solid var(--pa-primary);\n    outline-offset: 2px;\n  }\n\n  \/* ---- Success state ---- *\/\n  .proaladdin-learn .pa-success { text-align: center; padding: 20px 0 8px; }\n  .proaladdin-learn .pa-success-icon {\n    width: 64px; height: 64px;\n    border-radius: 50%;\n    background: rgba(30,158,107,0.10);\n    color: var(--pa-success);\n    display: flex; align-items: center; justify-content: center;\n    margin: 0 auto 20px;\n  }\n  .proaladdin-learn .pa-success .pa-modal-title { text-align: center; }\n  .proaladdin-learn .pa-success-text { color: var(--pa-ink-soft); font-size: 15.5px; line-height: 1.6; margin: 0 0 28px; }\n\n  \/* ---------------------------------------------------------------\n     RESPONSIVE\n  --------------------------------------------------------------- *\/\n  @media (max-width: 1199px) {\n    .proaladdin-learn .pa-grid { grid-template-columns: repeat(2, 1fr); }\n    .proaladdin-learn .pa-container { padding: 0 24px; }\n  }\n\n  @media (max-width: 900px) {\n    .proaladdin-learn .pa-hero { min-height: 460px; padding: 92px 0 56px; }\n    .proaladdin-learn .pa-outcomes-grid { grid-template-columns: 1fr; }\n  }\n\n  @media (max-width: 767px) {\n    .proaladdin-learn .pa-container { padding: 0 20px; }\n    .proaladdin-learn .pa-hero { min-height: 420px; padding: 84px 0 48px; text-align: start; }\n    .proaladdin-learn .pa-hero::before { filter: blur(24px); inset: -10% -10%; }\n    .proaladdin-learn .pa-hero-title { font-size: clamp(34px, 8vw, 42px); line-height: 1.15; }\n    .proaladdin-learn .pa-hero-subtitle { font-size: 16px; }\n    .proaladdin-learn .pa-hero-actions { flex-direction: column; align-items: stretch; gap: 12px; }\n    .proaladdin-learn .pa-hero-actions .pa-btn { width: 100%; min-height: 48px; }\n\n    .proaladdin-learn .pa-discovery { padding: 64px 0 32px; }\n    .proaladdin-learn .pa-grid-section { padding: 32px 0 72px; }\n\n    .proaladdin-learn .pa-search-wrap { max-width: 100%; }\n\n    \/* Stage 1 mobile category selector: compact trigger + bottom sheet. *\/\n    .proaladdin-learn .pa-filters { display: none; }\n    .proaladdin-learn .pa-filters-control { width: 100%; }\n    .proaladdin-learn .pa-category-selector { flex: 1 1 auto; min-width: 0; }\n    .proaladdin-learn .pa-category-more { width: 100%; min-width: 0; justify-content: flex-start; }\n    .proaladdin-learn .pa-category-more::after { display: none; }\n    .proaladdin-learn .pa-category-more[hidden] { display: inline-flex; }\n    .proaladdin-learn .pa-category-trigger-label { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n    .proaladdin-learn .pa-category-popover {\n      position: fixed;\n      top: auto;\n      inset-inline-start: 12px;\n      inset-inline-end: 12px;\n      bottom: 12px;\n      width: auto;\n      max-height: min(70vh, 520px);\n      z-index: 999999;\n    }\n    .proaladdin-learn .pa-category-list { max-height: min(50vh, 330px); }\n\n    .proaladdin-learn .pa-controls-row {\n      gap: 8px;\n      overflow: visible;\n    }\n    .proaladdin-learn .pa-popular-label { display: none; }\n    .proaladdin-learn .pa-filters { display: none; }\n    .proaladdin-learn .pa-category-more {\n      min-height: 42px;\n      padding: 0 11px;\n      gap: 7px;\n      font-size: 13px;\n    }\n    .proaladdin-learn .pa-category-trigger-icon { width: 15px; height: 15px; }\n    .proaladdin-learn .pa-category-popover {\n      position: fixed;\n      top: auto;\n      inset-inline-start: 12px;\n      inset-inline-end: 12px;\n      bottom: 12px;\n      width: auto;\n      max-width: none;\n      max-height: min(72vh, 560px);\n      z-index: 999999;\n    }\n    .proaladdin-learn .pa-category-list { max-height: min(48vh, 330px); }\n\n    .proaladdin-learn .pa-controls-right {\n      display: flex;\n      flex: 0 0 auto;\n      align-items: center;\n      gap: 6px;\n      flex: 0 0 auto;\n      min-width: 0;\n    }\n    .proaladdin-learn .pa-sort-wrap {\n      gap: 0;\n    }\n    .proaladdin-learn .pa-sort-label { display: none; }\n    .proaladdin-learn .pa-sort-select {\n      min-height: 42px;\n      padding-block: 9px;\n      padding-inline-start: 10px;\n      padding-inline-end: 30px;\n      font-size: 12.5px;\n      width: 82px;\n      max-width: 82px;\n    }\n    .proaladdin-learn .pa-select-chevron { inset-inline-end: 10px; width: 11px; }\n\n    .proaladdin-learn .pa-grid { grid-template-columns: 1fr; }\n\n    .proaladdin-learn .pa-cta { padding: 64px 0; }\n\n    .proaladdin-learn .pa-modal-overlay { padding: 0; align-items: flex-end; }\n    .proaladdin-learn .pa-modal { max-width: 100% !important; max-height: 92vh; border-radius: 22px 22px 0 0; }\n    .proaladdin-learn .pa-modal-body { padding: 40px 22px 24px; }\n    .proaladdin-learn .pa-detail-footer { margin: 0 -22px -24px; padding: 16px 22px; bottom: -24px; }\n    .proaladdin-learn .pa-form-row--split { grid-template-columns: 1fr; gap: 18px; }\n  }\n\n  @media (max-width: 359px) {\n    .proaladdin-learn .pa-controls-row { gap: 5px; }\n    .proaladdin-learn .pa-category-more { min-height: 40px; padding: 0 9px; }\n    .proaladdin-learn .pa-category-trigger-icon { width: 14px; height: 14px; }\n    .proaladdin-learn .pa-category-trigger-label { font-size: 12px; }\n    .proaladdin-learn .pa-sort-select { width: 72px; max-width: 72px; padding-inline-start: 7px; padding-inline-end: 24px; font-size: 11.5px; }\n  }\n\n  @media (max-width: 400px) {\n    .proaladdin-learn .pa-hero-title { font-size: 34px; }\n    .proaladdin-learn .pa-card-body { padding: 18px 18px 20px; }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .proaladdin-learn * {\n      animation-duration: 0.001ms !important;\n      animation-iteration-count: 1 !important;\n      transition-duration: 0.001ms !important;\n    }\n  }\n\n<\/style>\n<!-- ===================== END PART B \u2014 CSS ===================== -->\n\n<!-- =====================================================================\n  PART A \u2014 HTML\n===================================================================== -->\n<!--\n  LANGUAGE NOTE: this is the ARABIC build of the Learn page (maps to a\n  future \/ar\/learn\/ page). It mirrors \/en\/learn\/ \u2014 same class names,\n  IDs and structure \u2014 but is a genuine localization, not a translated\n  copy: dir=\"rtl\"\/lang=\"ar\", an Arabic font stack, mirrored icons and\n  positioning (via CSS logical properties), Arabic course content\n  (including instructor names in Arabic script, not transliterated\n  English names), a reordered\/relabeled currency list, and locale-aware\n  number and sort handling in Part C. Keeping English and Arabic as two\n  independent files (rather than one file with a runtime switcher)\n  means each page only ships the copy and layout logic it needs.\n-->\n<div class=\"proaladdin-learn\" id=\"proaladdinLearn\" dir=\"rtl\" lang=\"ar\">\n\n  <noscript>\n    <div class=\"pa-noscript\">\n      \u064a\u0631\u062c\u0649 \u062a\u0641\u0639\u064a\u0644 JavaScript \u0641\u064a \u0645\u062a\u0635\u0641\u062d\u0643 \u0644\u062a\u0635\u0641\u062d \u0648\u0627\u0644\u0628\u062d\u062b \u0641\u064a \u062f\u0648\u0631\u0627\u062a ProAladdin.\n    <\/div>\n  <\/noscript>\n\n  <!-- ============================= HERO ============================= -->\n  <section class=\"pa-hero\" aria-label=\"\u062a\u0639\u0644\u0651\u0645 \u0645\u0639 ProAladdin\">\n    <!-- Decoration is a single CSS gradient wash on ::before (see PART B),\n         the same atmospheric blue\/purple language used site-wide \u2014 no\n         floating shapes, no extra SVG, no extra DOM nodes to paint. -->\n    <div class=\"pa-container pa-hero-content\">\n      <h1 class=\"pa-hero-title\">\u062a\u0639\u0644\u0651\u0645. \u0627\u0650\u0628\u0646\u0650. \u062a\u0637\u0648\u0651\u0631.<\/h1>\n      <p class=\"pa-hero-subtitle\">\u062f\u0648\u0631\u0627\u062a \u0639\u0645\u0644\u064a\u0629 \u0645\u0635\u0645\u0645\u0629 \u0644\u0645\u0633\u0627\u0639\u062f\u062a\u0643 \u0639\u0644\u0649 \u0627\u0643\u062a\u0633\u0627\u0628 \u0645\u0647\u0627\u0631\u0627\u062a \u062d\u0642\u064a\u0642\u064a\u0629 \u062a\u062e\u062f\u0645 \u0645\u0633\u064a\u0631\u062a\u0643 \u0627\u0644\u0645\u0647\u0646\u064a\u0629.<\/p>\n      <div class=\"pa-hero-actions\">\n        <button type=\"button\" class=\"pa-btn pa-btn--primary\" data-pa-scroll-to=\"#paCourseGridSection\">\n          \u0627\u0633\u062a\u0643\u0634\u0641 \u0627\u0644\u062f\u0648\u0631\u0627\u062a\n        <\/button>\n        <button type=\"button\" class=\"pa-btn pa-btn--secondary\" data-pa-open-enroll>\n          \u0633\u062c\u0651\u0644 \u0643\u0637\u0627\u0644\u0628\n        <\/button>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ========================= COURSE DISCOVERY ========================= -->\n  <section class=\"pa-discovery\" id=\"paDiscoverySection\" aria-labelledby=\"paDiscoveryTitle\">\n    <div class=\"pa-container\">\n      <div class=\"pa-section-head\">\n        <h2 class=\"pa-section-title\" id=\"paDiscoveryTitle\">\u0627\u0633\u062a\u0643\u0634\u0641 \u062f\u0648\u0631\u0627\u062a\u0646\u0627<\/h2>\n        <p class=\"pa-section-subtitle\">\u0627\u062e\u062a\u0631 \u0645\u0646 \u0628\u064a\u0646 \u062f\u0648\u0631\u0627\u062a \u0639\u0645\u0644\u064a\u0629 \u062a\u0631\u0643\u0651\u0632 \u0639\u0644\u0649 \u0627\u062d\u062a\u064a\u0627\u062c\u0627\u062a \u0633\u0648\u0642 \u0627\u0644\u0639\u0645\u0644 \u0644\u062a\u0637\u0648\u064a\u0631 \u0645\u0647\u0627\u0631\u0627\u062a\u0643.<\/p>\n      <\/div>\n\n      <div class=\"pa-search-row\">\n        <label class=\"pa-search-wrap\" for=\"paSearchInput\">\n          <svg class=\"pa-search-icon\" width=\"20\" height=\"20\" viewbox=\"0 0 20 20\" fill=\"none\" aria-hidden=\"true\">\n            <circle cx=\"9\" cy=\"9\" r=\"6.25\" stroke=\"currentColor\" stroke-width=\"1.6\"\/>\n            <line x1=\"13.6\" y1=\"13.6\" x2=\"18\" y2=\"18\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\"\/>\n          <\/svg>\n          <input\n            type=\"search\"\n            id=\"paSearchInput\"\n            class=\"pa-search-input\"\n            placeholder=\"\u0627\u0628\u062d\u062b \u0639\u0646 \u062f\u0648\u0631\u0629...\"\n            autocomplete=\"off\"\n          \/>\n        <\/label>\n      <\/div>\n\n      <div class=\"pa-controls-row\">\n        <div class=\"pa-category-selector\">\n          <button\n            type=\"button\"\n            class=\"pa-category-more\"\n            id=\"paCategoryMore\"\n            aria-expanded=\"false\"\n            aria-haspopup=\"dialog\"\n            aria-controls=\"paCategoryPopover\"\n          >\n            <svg class=\"pa-category-trigger-icon\" width=\"16\" height=\"16\" viewbox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n              <path d=\"M2 3.25H14M4 8H12M6 12.75H10\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"\/>\n            <\/svg>\n            <span class=\"pa-category-trigger-label\">\u0627\u0644\u062a\u0635\u0646\u064a\u0641\u0627\u062a<\/span>\n            <svg class=\"pa-category-trigger-chevron\" width=\"11\" height=\"7\" viewbox=\"0 0 11 7\" fill=\"none\" aria-hidden=\"true\">\n              <path d=\"M1 1L5.5 5.5L10 1\" stroke=\"currentColor\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n            <\/svg>\n          <\/button>\n\n          <div class=\"pa-category-popover\" id=\"paCategoryPopover\" hidden role=\"dialog\" aria-label=\"\u0627\u062e\u062a\u0631 \u062a\u0635\u0646\u064a\u0641\u0627\u062a \u0627\u0644\u062f\u0648\u0631\u0627\u062a\">\n            <div class=\"pa-category-popover-head\">\n              <div>\n                <strong class=\"pa-category-popover-title\">\u0627\u062e\u062a\u0631 \u0627\u0644\u062a\u0635\u0646\u064a\u0641\u0627\u062a<\/strong>\n                <span class=\"pa-category-popover-subtitle\">\u064a\u0645\u0643\u0646\u0643 \u0627\u062e\u062a\u064a\u0627\u0631 \u0623\u0643\u062b\u0631 \u0645\u0646 \u062a\u0635\u0646\u064a\u0641<\/span>\n              <\/div>\n              <button type=\"button\" class=\"pa-category-popover-close\" id=\"paCategoryPopoverClose\" aria-label=\"\u0625\u063a\u0644\u0627\u0642 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u062a\u0635\u0646\u064a\u0641\u0627\u062a\">\n                <svg width=\"16\" height=\"16\" viewbox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n                  <line x1=\"2\" y1=\"2\" x2=\"14\" y2=\"14\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\"\/>\n                  <line x1=\"14\" y1=\"2\" x2=\"2\" y2=\"14\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\"\/>\n                <\/svg>\n              <\/button>\n            <\/div>\n\n            <label class=\"pa-category-search-wrap\" for=\"paCategorySearch\">\n              <svg width=\"17\" height=\"17\" viewbox=\"0 0 20 20\" fill=\"none\" aria-hidden=\"true\">\n                <circle cx=\"9\" cy=\"9\" r=\"6.25\" stroke=\"currentColor\" stroke-width=\"1.6\"\/>\n                <line x1=\"13.6\" y1=\"13.6\" x2=\"18\" y2=\"18\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\"\/>\n              <\/svg>\n              <input type=\"search\" id=\"paCategorySearch\" placeholder=\"\u0627\u0628\u062d\u062b \u0641\u064a \u0627\u0644\u062a\u0635\u0646\u064a\u0641\u0627\u062a...\" autocomplete=\"off\" \/>\n            <\/label>\n\n            <div class=\"pa-category-actions\">\n              <button type=\"button\" class=\"pa-category-action\" id=\"paCategorySelectAll\">\u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0643\u0644<\/button>\n              <button type=\"button\" class=\"pa-category-action\" id=\"paCategoryClear\">\u0645\u0633\u062d<\/button>\n            <\/div>\n\n            <div class=\"pa-category-list\" id=\"paCategoryList\" role=\"listbox\" aria-label=\"\u062a\u0635\u0646\u064a\u0641\u0627\u062a \u0627\u0644\u062f\u0648\u0631\u0627\u062a\" aria-multiselectable=\"true\"><\/div>\n\n            <div class=\"pa-category-popover-footer\">\n              <button type=\"button\" class=\"pa-btn pa-btn--primary pa-category-done\" id=\"paCategoryDone\">\u062a\u0645<\/button>\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"pa-popular-label\" aria-hidden=\"true\">\u0627\u0644\u0623\u0643\u062b\u0631 \u0637\u0644\u0628\u064b\u0627<\/div>\n\n        <div class=\"pa-filters\" id=\"paFilters\" role=\"group\" aria-label=\"\u0623\u0634\u0647\u0631 \u062a\u0635\u0646\u064a\u0641\u0627\u062a \u0627\u0644\u062f\u0648\u0631\u0627\u062a\">\n          <!-- Popular category chips and a dynamic \"+ X more\" control are injected by JS. -->\n        <\/div>\n\n        <div class=\"pa-controls-right\">\n          <div class=\"pa-sort-wrap\">\n            <label for=\"paCurrencySelect\" class=\"pa-sort-label\">\u0627\u0644\u0639\u0645\u0644\u0629<\/label>\n            <div class=\"pa-select-shell\">\n              <!-- Prices are stored once in USD on each course (see\n                   PA_COURSES). This only changes how they're displayed;\n                   see PA_CURRENCIES \/ formatPrice() in Part C. Order and\n                   default are localized: EGP first for the primary\n                   Egyptian\/Arabic audience, Gulf currencies next, USD\n                   last as the international reference. -->\n              <select id=\"paCurrencySelect\" class=\"pa-sort-select\" aria-label=\"\u0639\u0631\u0636 \u0627\u0644\u0623\u0633\u0639\u0627\u0631 \u0628\u0639\u0645\u0644\u0629\">\n                <option value=\"EGP\">\u062c\u0646\u064a\u0647 \u0645\u0635\u0631\u064a (\u062c.\u0645)<\/option>\n                <option value=\"SAR\">\u0631\u064a\u0627\u0644 \u0633\u0639\u0648\u062f\u064a (\ufdfc)<\/option>\n                <option value=\"AED\">\u062f\u0631\u0647\u0645 \u0625\u0645\u0627\u0631\u0627\u062a\u064a (\u062f.\u0625)<\/option>\n                <option value=\"OMR\">\u0631\u064a\u0627\u0644 \u0639\u0645\u0627\u0646\u064a (\u0631.\u0639.)<\/option>\n                <option value=\"USD\">\u062f\u0648\u0644\u0627\u0631 \u0623\u0645\u0631\u064a\u0643\u064a ($)<\/option>\n              <\/select>\n              <svg class=\"pa-select-chevron\" width=\"14\" height=\"9\" viewbox=\"0 0 14 9\" fill=\"none\" aria-hidden=\"true\">\n                <path d=\"M1 1.5L7 7.5L13 1.5\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n              <\/svg>\n            <\/div>\n          <\/div>\n\n          <div class=\"pa-sort-wrap\">\n            <label for=\"paSortSelect\" class=\"pa-sort-label\">\u0627\u0644\u062a\u0631\u062a\u064a\u0628<\/label>\n            <div class=\"pa-select-shell\">\n              <select id=\"paSortSelect\" class=\"pa-sort-select\" aria-label=\"\u062a\u0631\u062a\u064a\u0628 \u0627\u0644\u062f\u0648\u0631\u0627\u062a\">\n                <option value=\"newest\">\u0627\u0644\u0623\u062d\u062f\u062b<\/option>\n                <option value=\"price-asc\">\u0627\u0644\u0633\u0639\u0631: \u0645\u0646 \u0627\u0644\u0623\u0642\u0644 \u0625\u0644\u0649 \u0627\u0644\u0623\u0639\u0644\u0649<\/option>\n                <option value=\"price-desc\">\u0627\u0644\u0633\u0639\u0631: \u0645\u0646 \u0627\u0644\u0623\u0639\u0644\u0649 \u0625\u0644\u0649 \u0627\u0644\u0623\u0642\u0644<\/option>\n                <option value=\"name-asc\">\u0627\u0633\u0645 \u0627\u0644\u062f\u0648\u0631\u0629: \u0623-\u064a<\/option>\n                <option value=\"popularity\">\u0627\u0644\u0623\u0643\u062b\u0631 \u0625\u0642\u0628\u0627\u0644\u064b\u0627<\/option>\n              <\/select>\n              <svg class=\"pa-select-chevron\" width=\"14\" height=\"9\" viewbox=\"0 0 14 9\" fill=\"none\" aria-hidden=\"true\">\n                <path d=\"M1 1.5L7 7.5L13 1.5\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n              <\/svg>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ============================ COURSE GRID ============================ -->\n  <section class=\"pa-grid-section\" id=\"paCourseGridSection\" aria-label=\"\u0646\u062a\u0627\u0626\u062c \u0627\u0644\u062f\u0648\u0631\u0627\u062a\">\n    <div class=\"pa-container\">\n      <p class=\"pa-results-count\" id=\"paResultsCount\" aria-live=\"polite\"><\/p>\n\n      <div class=\"pa-grid\" id=\"paGrid\">\n        <!-- Course cards injected by JS (see renderCourses) -->\n      <\/div>\n\n      <div class=\"pa-empty\" id=\"paEmpty\" hidden>\n        <div class=\"pa-empty-icon\" aria-hidden=\"true\">\n          <svg width=\"40\" height=\"40\" viewbox=\"0 0 40 40\" fill=\"none\">\n            <circle cx=\"17\" cy=\"17\" r=\"12\" stroke=\"currentColor\" stroke-width=\"2\"\/>\n            <line x1=\"26\" y1=\"26\" x2=\"35\" y2=\"35\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\/>\n          <\/svg>\n        <\/div>\n        <h3 class=\"pa-empty-title\">\u0644\u0645 \u064a\u062a\u0645 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u062f\u0648\u0631\u0627\u062a<\/h3>\n        <p class=\"pa-empty-text\">\u062c\u0631\u0651\u0628 \u062a\u0639\u062f\u064a\u0644 \u0643\u0644\u0645\u0629 \u0627\u0644\u0628\u062d\u062b \u0623\u0648 \u0627\u0644\u0641\u0644\u0627\u062a\u0631 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u0629.<\/p>\n        <button type=\"button\" class=\"pa-btn pa-btn--outline\" id=\"paClearFilters\">\u0645\u0633\u062d \u0627\u0644\u0641\u0644\u0627\u062a\u0631<\/button>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- =============================== CTA ===============================\n       DISABLED: the closing call-to-action is intentionally switched off.\n       It is preserved in the PHP comment below rather than an HTML comment,\n       so it is not sent to the browser at all. To bring it back, delete the\n       '' line around it.\n       The .pa-cta styles are left in the stylesheet so it still renders\n       correctly if re-enabled.\n  -->\n\n  <!-- ===================== COURSE DETAILS MODAL ===================== -->\n  <div class=\"pa-modal-overlay\" id=\"paCourseModalOverlay\" hidden>\n    <div\n      class=\"pa-modal pa-modal--course\"\n      id=\"paCourseModal\"\n      role=\"dialog\"\n      aria-modal=\"true\"\n      aria-labelledby=\"paCourseModalTitle\"\n      tabindex=\"-1\"\n    >\n      <button type=\"button\" class=\"pa-modal-close\" id=\"paCourseModalClose\" aria-label=\"\u0625\u063a\u0644\u0627\u0642 \u062a\u0641\u0627\u0635\u064a\u0644 \u0627\u0644\u062f\u0648\u0631\u0629\">\n        <svg width=\"18\" height=\"18\" viewbox=\"0 0 18 18\" fill=\"none\" aria-hidden=\"true\">\n          <line x1=\"1.5\" y1=\"1.5\" x2=\"16.5\" y2=\"16.5\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\"\/>\n          <line x1=\"16.5\" y1=\"1.5\" x2=\"1.5\" y2=\"16.5\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\"\/>\n        <\/svg>\n      <\/button>\n      <div class=\"pa-modal-body\" id=\"paCourseModalBody\">\n        <!-- Course details injected by JS (see renderCourseModal) -->\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- ===================== ENROLLMENT FORM MODAL ===================== -->\n  <div class=\"pa-modal-overlay\" id=\"paEnrollModalOverlay\" hidden>\n    <div\n      class=\"pa-modal pa-modal--enroll\"\n      id=\"paEnrollModal\"\n      role=\"dialog\"\n      aria-modal=\"true\"\n      aria-labelledby=\"paEnrollModalTitle\"\n      tabindex=\"-1\"\n    >\n      <button type=\"button\" class=\"pa-modal-close\" id=\"paEnrollModalClose\" aria-label=\"\u0625\u063a\u0644\u0627\u0642 \u0646\u0645\u0648\u0630\u062c \u0627\u0644\u062a\u0633\u062c\u064a\u0644\">\n        <svg width=\"18\" height=\"18\" viewbox=\"0 0 18 18\" fill=\"none\" aria-hidden=\"true\">\n          <line x1=\"1.5\" y1=\"1.5\" x2=\"16.5\" y2=\"16.5\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\"\/>\n          <line x1=\"16.5\" y1=\"1.5\" x2=\"1.5\" y2=\"16.5\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\"\/>\n        <\/svg>\n      <\/button>\n\n      <div class=\"pa-modal-body\">\n\n        <!-- ---- Enrollment form (visible by default) ----\n             NOTE FOR MIGRATION: This <form> is the piece that gets\n             replaced by a Contact Form 7 shortcode. Field `name`\n             attributes below intentionally mirror sensible CF7 field\n             names ([text* full-name] etc.) to make that swap simple. -->\n        <div id=\"paEnrollFormWrap\">\n          <p class=\"pa-modal-eyebrow\">\u0627\u0644\u062a\u0633\u062c\u064a\u0644<\/p>\n          <h2 class=\"pa-modal-title\" id=\"paEnrollModalTitle\">\u0637\u0644\u0628 \u0627\u0644\u062a\u0633\u062c\u064a\u0644<\/h2>\n          <p class=\"pa-modal-lede\">\u0623\u062f\u062e\u0644 \u0628\u064a\u0627\u0646\u0627\u062a\u0643 \u0648\u0633\u064a\u062a\u0648\u0627\u0635\u0644 \u0645\u0639\u0643 \u0641\u0631\u064a\u0642\u0646\u0627 \u0644\u0634\u0631\u062d \u0627\u0644\u062e\u0637\u0648\u0627\u062a \u0627\u0644\u062a\u0627\u0644\u064a\u0629 \u0648\u062a\u0641\u0627\u0635\u064a\u0644 \u0627\u0644\u062f\u0641\u0639.<\/p>\n\n          <form id=\"paEnrollForm\" class=\"pa-form\" novalidate>\n            <div class=\"pa-form-row\">\n              <label class=\"pa-field\" for=\"paFieldName\">\n                <span class=\"pa-field-label\">\u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0643\u0627\u0645\u0644 <span class=\"pa-required\">*<\/span><\/span>\n                <input type=\"text\" id=\"paFieldName\" name=\"full-name\" class=\"pa-input\" required autocomplete=\"name\">\n                <span class=\"pa-field-error\" data-error-for=\"paFieldName\">\u064a\u0631\u062c\u0649 \u0625\u062f\u062e\u0627\u0644 \u0627\u0633\u0645\u0643 \u0627\u0644\u0643\u0627\u0645\u0644.<\/span>\n              <\/label>\n            <\/div>\n\n            <div class=\"pa-form-row pa-form-row--split\">\n              <label class=\"pa-field\" for=\"paFieldEmail\">\n                <span class=\"pa-field-label\">\u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a <span class=\"pa-required\">*<\/span><\/span>\n                <input type=\"email\" id=\"paFieldEmail\" name=\"email\" class=\"pa-input\" required autocomplete=\"email\">\n                <span class=\"pa-field-error\" data-error-for=\"paFieldEmail\">\u064a\u0631\u062c\u0649 \u0625\u062f\u062e\u0627\u0644 \u0628\u0631\u064a\u062f \u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a \u0635\u062d\u064a\u062d.<\/span>\n              <\/label>\n\n              <label class=\"pa-field\" for=\"paFieldPhone\">\n                <span class=\"pa-field-label\">\u0631\u0642\u0645 \u0627\u0644\u0648\u0627\u062a\u0633\u0627\u0628 <span class=\"pa-required\">*<\/span><\/span>\n                <input type=\"tel\" id=\"paFieldPhone\" name=\"phone\" class=\"pa-input\" required autocomplete=\"tel\">\n                <span class=\"pa-field-error\" data-error-for=\"paFieldPhone\">\u064a\u0631\u062c\u0649 \u0625\u062f\u062e\u0627\u0644 \u0631\u0642\u0645 \u0648\u0627\u062a\u0633\u0627\u0628 \u0635\u062d\u064a\u062d.<\/span>\n              <\/label>\n            <\/div>\n\n            <div class=\"pa-form-row pa-form-row--split\">\n              <label class=\"pa-field\" for=\"paFieldCourse\">\n                <span class=\"pa-field-label\">\u0627\u0644\u062f\u0648\u0631\u0629 <span class=\"pa-required\">*<\/span><\/span>\n                <select id=\"paFieldCourse\" name=\"course\" class=\"pa-input pa-input--select\" required>\n                  <!-- Options injected by JS from PA_COURSES, pre-selected when opened from a course -->\n                <\/select>\n                <span class=\"pa-field-error\" data-error-for=\"paFieldCourse\">\u064a\u0631\u062c\u0649 \u0627\u062e\u062a\u064a\u0627\u0631 \u0627\u0644\u062f\u0648\u0631\u0629.<\/span>\n              <\/label>\n\n              <label class=\"pa-field\" for=\"paFieldBatch\">\n                <span class=\"pa-field-label\">\u0627\u0644\u062f\u0641\u0639\u0629 \u0627\u0644\u0645\u0641\u0636\u0651\u0644\u0629<\/span>\n                <select id=\"paFieldBatch\" name=\"batch\" class=\"pa-input pa-input--select\">\n                  <option value=\"\u0627\u0644\u062f\u0641\u0639\u0629 \u0627\u0644\u0642\u0627\u062f\u0645\u0629\">\u0627\u0644\u062f\u0641\u0639\u0629 \u0627\u0644\u0642\u0627\u062f\u0645\u0629<\/option>\n                  <option value=\"\u062f\u0641\u0639\u0629 \u0646\u0647\u0627\u064a\u0629 \u0627\u0644\u0623\u0633\u0628\u0648\u0639\">\u062f\u0641\u0639\u0629 \u0646\u0647\u0627\u064a\u0629 \u0627\u0644\u0623\u0633\u0628\u0648\u0639<\/option>\n                  <option value=\"\u0627\u0644\u062f\u0641\u0639\u0629 \u0627\u0644\u0645\u0633\u0627\u0626\u064a\u0629\">\u0627\u0644\u062f\u0641\u0639\u0629 \u0627\u0644\u0645\u0633\u0627\u0626\u064a\u0629<\/option>\n                <\/select>\n              <\/label>\n            <\/div>\n\n            <div class=\"pa-form-row\">\n              <label class=\"pa-field\" for=\"paFieldRole\">\n                <span class=\"pa-field-label\">\u0627\u0644\u0648\u0638\u064a\u0641\u0629 \/ \u0627\u0644\u0645\u062c\u0627\u0644 \u0627\u0644\u062d\u0627\u0644\u064a<\/span>\n                <input type=\"text\" id=\"paFieldRole\" name=\"occupation\" class=\"pa-input\" autocomplete=\"organization-title\">\n              <\/label>\n            <\/div>\n\n            <div class=\"pa-form-row\">\n              <label class=\"pa-field\" for=\"paFieldMessage\">\n                <span class=\"pa-field-label\">\u0631\u0633\u0627\u0644\u062a\u0643<\/span>\n                <textarea id=\"paFieldMessage\" name=\"message\" class=\"pa-input pa-textarea\" rows=\"4\"><\/textarea>\n              <\/label>\n            <\/div>\n\n            <div class=\"pa-form-row\">\n              <label class=\"pa-checkbox-field\" for=\"paFieldConsent\">\n                <input type=\"checkbox\" id=\"paFieldConsent\" name=\"consent\" required>\n                <span class=\"pa-checkbox-box\" aria-hidden=\"true\"><\/span>\n                <span class=\"pa-checkbox-label\">\u0623\u0648\u0627\u0641\u0642 \u0639\u0644\u0649 \u0623\u0646 \u064a\u062a\u0648\u0627\u0635\u0644 \u0645\u0639\u064a \u0641\u0631\u064a\u0642 ProAladdin \u0628\u062e\u0635\u0648\u0635 \u0647\u0630\u0647 \u0627\u0644\u062f\u0648\u0631\u0629.<\/span>\n              <\/label>\n              <span class=\"pa-field-error\" data-error-for=\"paFieldConsent\">\u064a\u0631\u062c\u0649 \u062a\u0623\u0643\u064a\u062f \u0645\u0648\u0627\u0641\u0642\u062a\u0643 \u0639\u0644\u0649 \u0627\u0644\u062a\u0648\u0627\u0635\u0644 \u0645\u0639\u0643.<\/span>\n            <\/div>\n\n            <button type=\"submit\" class=\"pa-btn pa-btn--primary pa-btn--block\" id=\"paEnrollSubmitBtn\">\u0625\u0631\u0633\u0627\u0644 \u0637\u0644\u0628 \u0627\u0644\u062a\u0633\u062c\u064a\u0644<\/button>\n            <p class=\"pa-form-submit-error\" id=\"paEnrollSubmitError\" hidden>\n              \u0639\u0630\u0631\u064b\u0627\u060c \u062a\u0639\u0630\u0651\u0631 \u0625\u0631\u0633\u0627\u0644 \u0637\u0644\u0628\u0643. \u064a\u0631\u062c\u0649 \u0627\u0644\u0645\u062d\u0627\u0648\u0644\u0629 \u0645\u0631\u0629 \u0623\u062e\u0631\u0649\u060c \u0623\u0648 \u0645\u0631\u0627\u0633\u0644\u062a\u0646\u0627 \u0645\u0628\u0627\u0634\u0631\u0629 \u0639\u0644\u0649\n              <a href=\"mailto:LearnAtProaladdin@protonmail.com\">LearnAtProaladdin@protonmail.com<\/a>.\n            <\/p>\n          <input type=\"hidden\" name=\"trp-form-language\" value=\"ar\"\/><\/form>\n        <\/div>\n\n        <!-- ---- Success state (hidden until submit) ---- -->\n        <div id=\"paEnrollSuccessWrap\" hidden>\n          <div class=\"pa-success\">\n            <div class=\"pa-success-icon\" aria-hidden=\"true\">\n              <svg width=\"30\" height=\"30\" viewbox=\"0 0 30 30\" fill=\"none\">\n                <circle cx=\"15\" cy=\"15\" r=\"14\" stroke=\"currentColor\" stroke-width=\"1.6\"\/>\n                <path d=\"M9 15.5L13 19.5L21 10.5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n              <\/svg>\n            <\/div>\n            <h2 class=\"pa-modal-title\">\u062a\u0645 \u0627\u0633\u062a\u0644\u0627\u0645 \u0637\u0644\u0628 \u0627\u0644\u062a\u0633\u062c\u064a\u0644<\/h2>\n            <p class=\"pa-success-text\">\u0634\u0643\u0631\u064b\u0627 \u0644\u0627\u0647\u062a\u0645\u0627\u0645\u0643. \u0633\u064a\u0631\u0627\u062c\u0639 \u0641\u0631\u064a\u0642\u0646\u0627 \u0637\u0644\u0628\u0643 \u0648\u0633\u064a\u062a\u0648\u0627\u0635\u0644 \u0645\u0639\u0643 \u0642\u0631\u064a\u0628\u064b\u0627 \u0644\u062a\u0648\u0636\u064a\u062d \u0627\u0644\u062e\u0637\u0648\u0627\u062a \u0627\u0644\u062a\u0627\u0644\u064a\u0629 \u0648\u062a\u0641\u0627\u0635\u064a\u0644 \u0627\u0644\u062f\u0641\u0639.<\/p>\n            <button type=\"button\" class=\"pa-btn pa-btn--primary\" id=\"paBackToCourses\">\u0627\u0644\u0639\u0648\u062f\u0629 \u0625\u0644\u0649 \u0627\u0644\u062f\u0648\u0631\u0627\u062a<\/button>\n          <\/div>\n        <\/div>\n\n      <\/div>\n    <\/div>\n  <\/div>\n\n<\/div>\n<!-- ===================== END PART A \u2014 HTML ===================== -->\n\n\n<!-- =====================================================================\n  PART C \u2014 JAVASCRIPT\n  Vanilla JS. No dependencies. Everything is namespaced (`pa*`) and\n  scoped to the #proaladdinLearn root so it cannot collide with other\n  scripts on the WordPress site.\n===================================================================== -->\n<script>\n(function () {\n  'use strict';\n\n  var root = document.getElementById('proaladdinLearn');\n  if (!root) return;\n\n  \/* ================================================================\n     STEP 1 \u2014 COURSE DATA (\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u062f\u0648\u0631\u0627\u062a)\n     ----------------------------------------------------------------\n     This is the ONLY place course content lives. Every render\n     function below reads from this array. When this becomes a real\n     WordPress build, this array is replaced with data generated\n     from a PHP loop over a \"Course\" Custom Post Type \u2014 the field\n     names are deliberately close to sensible ACF field names so the\n     mapping is close to 1:1. See inline notes on each field.\n\n     ARABIC BUILD NOTE: `categorySlug` is a new, stable ASCII field\n     (software-testing, artificial-intelligence, ...) used only to\n     pick the card's CSS gradient (see --pa-cover-* variables and\n     courseCardHTML in STEP 7). The English build derived this by\n     slugifying `category` on the fly, but that only works for Latin\n     text \u2014 slugifying an Arabic category name strips every character\n     and silently falls back to one generic gradient for every card.\n     Keeping an explicit slug decouples the visual from the display\n     text entirely, which is more correct in ANY language, not just\n     Arabic. Dev-facing code comments stay in English throughout, same\n     as the rest of the codebase.\n  ================================================================ *\/\n  \/* Injected from the Course posts in wp-admin (see includes\/render.php).\n     Edit courses under Courses in the admin menu - not in this file. *\/\n  var PA_COURSES = [{\"id\":9000,\"slug\":\"generative-ai-for-professionals-ar\",\"permalink\":\"https:\\\/\\\/www.proaladdin.com\\\/ar\\\/courses\\\/generative-ai-for-professionals-ar\\\/\",\"title\":\"\\u0645\\u0642\\u062f\\u0645\\u0629 \\u0641\\u064a \\u0623\\u0633\\u0627\\u0633\\u064a\\u0627\\u062a \\u0639\\u0644\\u0648\\u0645 \\u0627\\u0644\\u062d\\u0627\\u0633\\u0628\",\"category\":\"\\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629\",\"categorySlug\":\"artificial-intelligence\",\"shortDescription\":\"\\u0637\\u0648\\u0651\\u0631 \\u0645\\u0647\\u0627\\u0631\\u0627\\u062a\\u0643 \\u0641\\u064a \\u0627\\u0644\\u0643\\u0645\\u0628\\u064a\\u0648\\u062a\\u0631 \\u0648\\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629 \\u0648\\u062d\\u0644 \\u0627\\u0644\\u0645\\u0634\\u0643\\u0644\\u0627\\u062a \\u0648\\u0627\\u0644\\u0630\\u0643\\u0627\\u0621 \\u0627\\u0644\\u0627\\u0635\\u0637\\u0646\\u0627\\u0639\\u064a \\u0648\\u0627\\u0644\\u0645\\u0647\\u0627\\u0631\\u0627\\u062a \\u0627\\u0644\\u0631\\u0642\\u0645\\u064a\\u0629 \\u0645\\u0646 \\u062e\\u0644\\u0627\\u0644 \\u0627\\u0644\\u062a\\u0639\\u0644\\u0645 \\u0627\\u0644\\u0639\\u0645\\u0644\\u064a\",\"description\":\"\\u062a\\u0645 \\u062a\\u0635\\u0645\\u064a\\u0645 \\u0627\\u0644\\u0645\\u0633\\u062a\\u0648\\u0649 \\u0627\\u0644\\u0623\\u0648\\u0644 \\u0644\\u062a\\u0632\\u0648\\u064a\\u062f \\u0627\\u0644\\u0637\\u0644\\u0627\\u0628 \\u0628\\u0623\\u0633\\u0627\\u0633 \\u0642\\u0648\\u064a \\u0641\\u064a \\u0645\\u0647\\u0627\\u0631\\u0627\\u062a \\u0627\\u0633\\u062a\\u062e\\u062f\\u0627\\u0645 \\u0627\\u0644\\u062d\\u0627\\u0633\\u0628\\u060c \\u0648\\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629\\u060c \\u0648\\u0627\\u0644\\u062a\\u0641\\u0643\\u064a\\u0631 \\u0627\\u0644\\u062d\\u0627\\u0633\\u0648\\u0628\\u064a\\u060c \\u0648\\u062d\\u0644 \\u0627\\u0644\\u0645\\u0634\\u0643\\u0644\\u0627\\u062a\\u060c \\u0648\\u0627\\u0644\\u0645\\u0647\\u0627\\u0631\\u0627\\u062a \\u0627\\u0644\\u0631\\u0642\\u0645\\u064a\\u0629.\\n\\u064a\\u0628\\u062f\\u0623 \\u0627\\u0644\\u0637\\u0644\\u0627\\u0628 \\u0628\\u062a\\u0639\\u0644\\u0645 \\u0623\\u0633\\u0627\\u0633\\u064a\\u0627\\u062a \\u0623\\u062c\\u0647\\u0632\\u0629 \\u0627\\u0644\\u0643\\u0645\\u0628\\u064a\\u0648\\u062a\\u0631 \\u0648\\u0627\\u0644\\u062a\\u0643\\u0646\\u0648\\u0644\\u0648\\u062c\\u064a\\u0627 \\u0627\\u0644\\u0631\\u0642\\u0645\\u064a\\u0629\\u060c \\u062b\\u0645 \\u064a\\u062a\\u0639\\u0631\\u0641\\u0648\\u0646 \\u0639\\u0644\\u0649 \\u0645\\u0641\\u0627\\u0647\\u064a\\u0645 \\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629 \\u0648\\u0627\\u0644\\u0641\\u0631\\u0642 \\u0628\\u064a\\u0646 \\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629 \\u0627\\u0644\\u0646\\u0635\\u064a\\u0629 \\u0648\\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629 \\u0627\\u0644\\u0642\\u0627\\u0626\\u0645\\u0629 \\u0639\\u0644\\u0649 \\u0627\\u0644\\u0643\\u062a\\u0644.\\n\\u062e\\u0644\\u0627\\u0644 \\u0627\\u0644\\u062f\\u0648\\u0631\\u0629\\u060c \\u064a\\u062a\\u062f\\u0631\\u0628 \\u0627\\u0644\\u0637\\u0644\\u0627\\u0628 \\u0639\\u0644\\u0649 \\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629 \\u0648\\u062d\\u0644 \\u0627\\u0644\\u0645\\u0634\\u0643\\u0644\\u0627\\u062a \\u0628\\u0627\\u0633\\u062a\\u062e\\u062f\\u0627\\u0645 \\u0628\\u064a\\u0626\\u0627\\u062a \\u0645\\u062e\\u062a\\u0644\\u0641\\u0629 \\u0644\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629 \\u0627\\u0644\\u0645\\u0631\\u0626\\u064a\\u0629\\u060c \\u0628\\u0645\\u0627 \\u0641\\u064a \\u0630\\u0644\\u0643 Scratch \\u0648Blockly \\u0648MIT App Inventor \\u0648PictoBlox \\u0648RoboMind.\\n\\u064a\\u0633\\u062a\\u062e\\u062f\\u0645 \\u0627\\u0644\\u0637\\u0644\\u0627\\u0628 \\u0647\\u0630\\u0647 \\u0627\\u0644\\u0623\\u062f\\u0648\\u0627\\u062a \\u0644\\u0625\\u0646\\u0634\\u0627\\u0621 \\u0645\\u0634\\u0627\\u0631\\u064a\\u0639 \\u062a\\u0641\\u0627\\u0639\\u0644\\u064a\\u0629 \\u0648\\u062a\\u0637\\u0628\\u064a\\u0642\\u0627\\u062a \\u0628\\u0633\\u064a\\u0637\\u0629 \\u0644\\u0644\\u0647\\u0648\\u0627\\u062a\\u0641 \\u0627\\u0644\\u0645\\u062d\\u0645\\u0648\\u0644\\u0629\\u060c \\u0648\\u062d\\u0644 \\u062a\\u062d\\u062f\\u064a\\u0627\\u062a \\u0628\\u0631\\u0645\\u062c\\u064a\\u0629. \\u0643\\u0645\\u0627 \\u064a\\u0637\\u0648\\u0631\\u0648\\u0646 \\u0645\\u0647\\u0627\\u0631\\u0627\\u062a \\u0631\\u0642\\u0645\\u064a\\u0629 \\u0639\\u0645\\u0644\\u064a\\u0629 \\u0645\\u0646 \\u062e\\u0644\\u0627\\u0644 \\u0627\\u0644\\u062a\\u0639\\u0631\\u0641 \\u0639\\u0644\\u0649 \\u0643\\u064a\\u0641\\u064a\\u0629 \\u0639\\u0645\\u0644 \\u0627\\u0644\\u0625\\u0646\\u062a\\u0631\\u0646\\u062a \\u0648\\u0627\\u0633\\u062a\\u062e\\u062f\\u0627\\u0645 Microsoft Office \\u0639\\u0628\\u0631 \\u0627\\u0644\\u0625\\u0646\\u062a\\u0631\\u0646\\u062a.\\n\\u062a\\u0639\\u062a\\u0645\\u062f \\u0627\\u0644\\u062f\\u0648\\u0631\\u0629 \\u0639\\u0644\\u0649 \\u0623\\u0633\\u0644\\u0648\\u0628 \\u062a\\u0639\\u0644\\u0645 \\u0639\\u0645\\u0644\\u064a \\u0642\\u0627\\u0626\\u0645 \\u0639\\u0644\\u0649 \\u0627\\u0644\\u0645\\u0634\\u0627\\u0631\\u064a\\u0639\\u060c \\u0645\\u0645\\u0627 \\u064a\\u062a\\u064a\\u062d \\u0644\\u0644\\u0637\\u0644\\u0627\\u0628 \\u062a\\u0639\\u0644\\u0645 \\u0627\\u0644\\u0645\\u0641\\u0627\\u0647\\u064a\\u0645 \\u0648\\u0627\\u0644\\u062a\\u062f\\u0631\\u0628 \\u0639\\u0644\\u064a\\u0647\\u0627 \\u0648\\u062d\\u0644 \\u0627\\u0644\\u0645\\u0634\\u0643\\u0644\\u0627\\u062a \\u0648\\u062a\\u0637\\u0628\\u064a\\u0642 \\u0645\\u0627 \\u062a\\u0639\\u0644\\u0645\\u0648\\u0647 \\u0645\\u0646 \\u062e\\u0644\\u0627\\u0644 \\u0645\\u0634\\u0627\\u0631\\u064a\\u0639 \\u0639\\u0645\\u0644\\u064a\\u0629.\",\"instructor\":\"\\u0639\\u0628\\u062f \\u0627\\u0644\\u0631\\u062d\\u064a\\u0645 \\u0627\\u0644\\u0646\\u0627\\u062c\\u062d \\u0645\\u062d\\u0645\\u062f\",\"instructorTitle\":\"\\u0645\\u062f\\u0631\\u0628 \\u0639\\u0644\\u0648\\u0645 \\u0627\\u0644\\u062d\\u0627\\u0633\\u0628 \\u0648\\u0645\\u0633\\u0627\\u0639\\u062f \\u062a\\u062f\\u0631\\u064a\\u0633\",\"instructorBio\":\"\\u064a\\u062a\\u0645\\u062a\\u0639 \\u0639\\u0628\\u062f \\u0627\\u0644\\u0631\\u062d\\u064a\\u0645 \\u0628\\u062e\\u0628\\u0631\\u0629 \\u0641\\u064a \\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629 \\u0648\\u0639\\u0644\\u0648\\u0645 \\u0627\\u0644\\u062d\\u0627\\u0633\\u0628 \\u0648\\u062a\\u0639\\u0644\\u064a\\u0645 \\u0627\\u0644\\u062a\\u0643\\u0646\\u0648\\u0644\\u0648\\u062c\\u064a\\u0627.\\r\\n\\r\\n\\u0648\\u064a\\u0631\\u0643\\u0632 \\u0639\\u0644\\u0649 \\u062a\\u0642\\u062f\\u064a\\u0645 \\u062a\\u062c\\u0627\\u0631\\u0628 \\u062a\\u0639\\u0644\\u064a\\u0645\\u064a\\u0629 \\u0639\\u0645\\u0644\\u064a\\u0629 \\u0648\\u062a\\u0641\\u0627\\u0639\\u0644\\u064a\\u0629 \\u0648\\u0642\\u0627\\u0626\\u0645\\u0629 \\u0639\\u0644\\u0649 \\u0627\\u0644\\u0645\\u0634\\u0627\\u0631\\u064a\\u0639\\u060c \\u062a\\u0633\\u0627\\u0639\\u062f \\u0627\\u0644\\u0637\\u0644\\u0627\\u0628 \\u0639\\u0644\\u0649 \\u062a\\u0637\\u0648\\u064a\\u0631 \\u0645\\u0647\\u0627\\u0631\\u0627\\u062a \\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629 \\u0648\\u0627\\u0644\\u062a\\u0641\\u0643\\u064a\\u0631 \\u0627\\u0644\\u062d\\u0627\\u0633\\u0648\\u0628\\u064a \\u0648\\u062d\\u0644 \\u0627\\u0644\\u0645\\u0634\\u0643\\u0644\\u0627\\u062a \\u0648\\u0627\\u0644\\u0625\\u0628\\u062f\\u0627\\u0639.\",\"price\":200,\"currency\":\"USD\",\"duration\":\"20 \\u0627\\u0633\\u0628\\u0648\\u0639\",\"level\":\"\\u0627\\u0644\\u0645\\u0633\\u062a\\u0648\\u0649 \\u0627\\u0644\\u0623\\u0648\\u0644 \\u2013 \\u0627\\u0644\\u0645\\u0631\\u062d\\u0644\\u0629 \\u0627\\u0644\\u062a\\u0623\\u0633\\u064a\\u0633\\u064a\\u0629\",\"rating\":4.8,\"students\":9,\"image\":\"\",\"previewVideo\":\"https:\\\/\\\/youtu.be\\\/jlt4H3Lp8SY\",\"previewPoster\":\"\",\"featured\":true,\"date\":\"2026-07-01\",\"learningOutcomes\":[\"\\u0641\\u0647\\u0645 \\u0627\\u0644\\u0645\\u0641\\u0627\\u0647\\u064a\\u0645 \\u0627\\u0644\\u0623\\u0633\\u0627\\u0633\\u064a\\u0629 \\u0644\\u0623\\u062c\\u0647\\u0632\\u0629 \\u0627\\u0644\\u0643\\u0645\\u0628\\u064a\\u0648\\u062a\\u0631 \\u0648\\u0627\\u0644\\u062a\\u0643\\u0646\\u0648\\u0644\\u0648\\u062c\\u064a\\u0627 \\u0627\\u0644\\u0631\\u0642\\u0645\\u064a\\u0629.\",\"\\u0627\\u0644\\u062a\\u0639\\u0631\\u0641 \\u0639\\u0644\\u0649 \\u0627\\u0644\\u0645\\u0643\\u0648\\u0646\\u0627\\u062a \\u0627\\u0644\\u0631\\u0626\\u064a\\u0633\\u064a\\u0629 \\u0644\\u0644\\u0643\\u0645\\u0628\\u064a\\u0648\\u062a\\u0631 \\u0648\\u0648\\u0638\\u0627\\u0626\\u0641\\u0647\\u0627.\",\"\\u0641\\u0647\\u0645 \\u0645\\u0627\\u0647\\u064a\\u0629 \\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629 \\u0648\\u0643\\u064a\\u0641 \\u062a\\u0639\\u0645\\u0644 \\u0627\\u0644\\u0628\\u0631\\u0627\\u0645\\u062c.\",\"\\u062a\\u0648\\u0636\\u064a\\u062d \\u0627\\u0644\\u0641\\u0631\\u0642 \\u0628\\u064a\\u0646 \\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629 \\u0627\\u0644\\u0646\\u0635\\u064a\\u0629 \\u0648\\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629 \\u0627\\u0644\\u0642\\u0627\\u0626\\u0645\\u0629 \\u0639\\u0644\\u0649 \\u0627\\u0644\\u0643\\u062a\\u0644.\",\"\\u062a\\u0639\\u0644\\u0645 \\u0645\\u0641\\u0627\\u0647\\u064a\\u0645 \\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629 \\u0627\\u0644\\u0623\\u0633\\u0627\\u0633\\u064a\\u0629: \\u0627\\u0644\\u062a\\u0633\\u0644\\u0633\\u0644\\u060c \\u0648\\u0627\\u0644\\u0623\\u062d\\u062f\\u0627\\u062b\\u060c \\u0648\\u0627\\u0644\\u0634\\u0631\\u0648\\u0637\\u060c \\u0648\\u0627\\u0644\\u062d\\u0644\\u0642\\u0627\\u062a\\u060c \\u0648\\u0627\\u0644\\u0645\\u062a\\u063a\\u064a\\u0631\\u0627\\u062a.\",\"\\u062a\\u0637\\u0648\\u064a\\u0631 \\u0645\\u0647\\u0627\\u0631\\u0627\\u062a \\u0627\\u0644\\u062a\\u0641\\u0643\\u064a\\u0631 \\u0627\\u0644\\u062d\\u0627\\u0633\\u0648\\u0628\\u064a \\u0648\\u062d\\u0644 \\u0627\\u0644\\u0645\\u0634\\u0643\\u0644\\u0627\\u062a.\",\"\\u062a\\u0635\\u0645\\u064a\\u0645 \\u062e\\u0648\\u0627\\u0631\\u0632\\u0645\\u064a\\u0627\\u062a \\u0628\\u0633\\u064a\\u0637\\u0629 \\u0648\\u062d\\u0644\\u0648\\u0644 \\u0645\\u0646\\u0637\\u0642\\u064a\\u0629.\",\"\\u0645\\u0645\\u0627\\u0631\\u0633\\u0629 \\u0645\\u0646\\u0637\\u0642 \\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629 \\u0648\\u0628\\u0646\\u0627\\u0621 \\u0627\\u0644\\u062e\\u0648\\u0627\\u0631\\u0632\\u0645\\u064a\\u0627\\u062a \\u0628\\u0627\\u0633\\u062a\\u062e\\u062f\\u0627\\u0645 Blockly \\u0648Scratch.\",\"\\u0625\\u0646\\u0634\\u0627\\u0621 \\u062a\\u0637\\u0628\\u064a\\u0642\\u0627\\u062a \\u0628\\u0633\\u064a\\u0637\\u0629 \\u0644\\u0644\\u0647\\u0648\\u0627\\u062a\\u0641 \\u0627\\u0644\\u0645\\u062d\\u0645\\u0648\\u0644\\u0629 \\u0628\\u0627\\u0633\\u062a\\u062e\\u062f\\u0627\\u0645 MIT App Inventor.\",\"\\u062a\\u0637\\u0648\\u064a\\u0631 \\u0645\\u0634\\u0627\\u0631\\u064a\\u0639 \\u062a\\u0641\\u0627\\u0639\\u0644\\u064a\\u0629 \\u0628\\u0627\\u0633\\u062a\\u062e\\u062f\\u0627\\u0645 PictoBlox.\",\"\\u0645\\u0645\\u0627\\u0631\\u0633\\u0629 \\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629 \\u0648\\u062d\\u0644 \\u0627\\u0644\\u0645\\u0634\\u0643\\u0644\\u0627\\u062a \\u0628\\u0627\\u0633\\u062a\\u062e\\u062f\\u0627\\u0645 RoboMind.\",\"\\u0641\\u0647\\u0645 \\u0627\\u0644\\u0645\\u0641\\u0627\\u0647\\u064a\\u0645 \\u0627\\u0644\\u0623\\u0633\\u0627\\u0633\\u064a\\u0629 \\u0644\\u0643\\u064a\\u0641\\u064a\\u0629 \\u0639\\u0645\\u0644 \\u0627\\u0644\\u0625\\u0646\\u062a\\u0631\\u0646\\u062a.\",\"\\u062a\\u0637\\u0648\\u064a\\u0631 \\u0645\\u0647\\u0627\\u0631\\u0627\\u062a \\u0639\\u0645\\u0644\\u064a\\u0629 \\u0641\\u064a \\u0627\\u0644\\u0625\\u0646\\u062a\\u0627\\u062c\\u064a\\u0629 \\u0648\\u0627\\u0644\\u062a\\u0639\\u0627\\u0648\\u0646 \\u0627\\u0644\\u0631\\u0642\\u0645\\u064a.\",\"\\u0627\\u0633\\u062a\\u062e\\u062f\\u0627\\u0645 Microsoft Word \\u0648PowerPoint \\u0648Excel \\u0639\\u0628\\u0631 \\u0627\\u0644\\u0625\\u0646\\u062a\\u0631\\u0646\\u062a.\",\"\\u062a\\u0637\\u0628\\u064a\\u0642 \\u0627\\u0644\\u0645\\u0639\\u0631\\u0641\\u0629 \\u0645\\u0646 \\u062e\\u0644\\u0627\\u0644 \\u0627\\u0644\\u0623\\u0646\\u0634\\u0637\\u0629 \\u0627\\u0644\\u0639\\u0645\\u0644\\u064a\\u0629 \\u0648\\u0627\\u0644\\u062a\\u062d\\u062f\\u064a\\u0627\\u062a \\u0648\\u0627\\u0644\\u0645\\u0634\\u0627\\u0631\\u064a\\u0639.\",\"\\u0628\\u0646\\u0627\\u0621 \\u0627\\u0644\\u0623\\u0633\\u0627\\u0633 \\u0627\\u0644\\u0644\\u0627\\u0632\\u0645 \\u0644\\u0627\\u0633\\u062a\\u0643\\u0634\\u0627\\u0641 \\u0645\\u062c\\u0627\\u0644\\u0627\\u062a \\u0627\\u0644\\u062a\\u0643\\u0646\\u0648\\u0644\\u0648\\u062c\\u064a\\u0627 \\u0627\\u0644\\u0645\\u062e\\u062a\\u0644\\u0641\\u0629 \\u0641\\u064a \\u0627\\u0644\\u0645\\u0633\\u062a\\u0648\\u0649 \\u0627\\u0644\\u062b\\u0627\\u0646\\u064a.\"],\"whoFor\":[\"\\u0627\\u0644\\u0637\\u0644\\u0627\\u0628 \\u0645\\u0646 \\u0633\\u0646 9 \\u0625\\u0644\\u0649 15 \\u0639\\u0627\\u0645\\u064b\\u0627 \\u0627\\u0644\\u0645\\u0647\\u062a\\u0645\\u0648\\u0646 \\u0628\\u0623\\u062c\\u0647\\u0632\\u0629 \\u0627\\u0644\\u0643\\u0645\\u0628\\u064a\\u0648\\u062a\\u0631 \\u0648\\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629 \\u0648\\u0627\\u0644\\u062a\\u0643\\u0646\\u0648\\u0644\\u0648\\u062c\\u064a\\u0627.\",\"\\u0627\\u0644\\u0637\\u0644\\u0627\\u0628 \\u0627\\u0644\\u0630\\u064a\\u0646 \\u064a\\u0628\\u062f\\u0624\\u0648\\u0646 \\u0631\\u062d\\u0644\\u062a\\u0647\\u0645 \\u0641\\u064a \\u0645\\u062c\\u0627\\u0644 \\u0627\\u0644\\u062a\\u0643\\u0646\\u0648\\u0644\\u0648\\u062c\\u064a\\u0627.\",\"\\u0627\\u0644\\u0637\\u0644\\u0627\\u0628 \\u0627\\u0644\\u0630\\u064a\\u0646 \\u064a\\u0631\\u063a\\u0628\\u0648\\u0646 \\u0641\\u064a \\u0641\\u0647\\u0645 \\u0623\\u0633\\u0627\\u0633\\u064a\\u0627\\u062a \\u0623\\u062c\\u0647\\u0632\\u0629 \\u0627\\u0644\\u0643\\u0645\\u0628\\u064a\\u0648\\u062a\\u0631 \\u0648\\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629.\",\"\\u0627\\u0644\\u0637\\u0644\\u0627\\u0628 \\u0627\\u0644\\u0630\\u064a\\u0646 \\u064a\\u0631\\u063a\\u0628\\u0648\\u0646 \\u0641\\u064a \\u062a\\u0639\\u0644\\u0645 \\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629 \\u0645\\u0646 \\u062e\\u0644\\u0627\\u0644 \\u0628\\u064a\\u0626\\u0627\\u062a \\u0645\\u0631\\u0626\\u064a\\u0629 \\u0648\\u062a\\u0641\\u0627\\u0639\\u0644\\u064a\\u0629.\",\"\\u0627\\u0644\\u0637\\u0644\\u0627\\u0628 \\u0627\\u0644\\u0645\\u0647\\u062a\\u0645\\u0648\\u0646 \\u0628\\u0625\\u0646\\u0634\\u0627\\u0621 \\u062a\\u0637\\u0628\\u064a\\u0642\\u0627\\u062a \\u0628\\u0633\\u064a\\u0637\\u0629 \\u0648\\u0645\\u0634\\u0627\\u0631\\u064a\\u0639 \\u062a\\u0641\\u0627\\u0639\\u0644\\u064a\\u0629.\",\"\\u0627\\u0644\\u0637\\u0644\\u0627\\u0628 \\u0627\\u0644\\u0630\\u064a\\u0646 \\u064a\\u0631\\u063a\\u0628\\u0648\\u0646 \\u0641\\u064a \\u062a\\u0637\\u0648\\u064a\\u0631 \\u0645\\u0647\\u0627\\u0631\\u0627\\u062a \\u062d\\u0644 \\u0627\\u0644\\u0645\\u0634\\u0643\\u0644\\u0627\\u062a \\u0648\\u0627\\u0644\\u062a\\u0641\\u0643\\u064a\\u0631 \\u0627\\u0644\\u062d\\u0627\\u0633\\u0648\\u0628\\u064a.\",\"\\u0627\\u0644\\u0637\\u0644\\u0627\\u0628 \\u0627\\u0644\\u0630\\u064a\\u0646 \\u064a\\u0631\\u063a\\u0628\\u0648\\u0646 \\u0641\\u064a \\u062a\\u062d\\u0633\\u064a\\u0646 \\u0645\\u0647\\u0627\\u0631\\u0627\\u062a\\u0647\\u0645 \\u0641\\u064a \\u0627\\u0644\\u0625\\u0646\\u062a\\u0627\\u062c\\u064a\\u0629 \\u0627\\u0644\\u0631\\u0642\\u0645\\u064a\\u0629.\"],\"prerequisites\":[\"\\u0644\\u0627 \\u064a\\u0634\\u062a\\u0631\\u0637 \\u0648\\u062c\\u0648\\u062f \\u062e\\u0628\\u0631\\u0629 \\u0633\\u0627\\u0628\\u0642\\u0629 \\u0641\\u064a \\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629.\",\"\\u0645\\u0647\\u0627\\u0631\\u0627\\u062a \\u0623\\u0633\\u0627\\u0633\\u064a\\u0629 \\u0641\\u064a \\u0627\\u0633\\u062a\\u062e\\u062f\\u0627\\u0645 \\u0627\\u0644\\u0643\\u0645\\u0628\\u064a\\u0648\\u062a\\u0631.\",\"\\u0645\\u0647\\u0627\\u0631\\u0627\\u062a \\u0623\\u0633\\u0627\\u0633\\u064a\\u0629 \\u0641\\u064a \\u0627\\u0644\\u0642\\u0631\\u0627\\u0621\\u0629 \\u0648\\u0627\\u0644\\u062a\\u0648\\u0627\\u0635\\u0644.\",\"\\u0627\\u0644\\u0642\\u062f\\u0631\\u0629 \\u0639\\u0644\\u0649 \\u0627\\u062a\\u0628\\u0627\\u0639 \\u0627\\u0644\\u062a\\u0639\\u0644\\u064a\\u0645\\u0627\\u062a.\",\"\\u0627\\u0644\\u0627\\u0647\\u062a\\u0645\\u0627\\u0645 \\u0628\\u0627\\u0644\\u062a\\u0643\\u0646\\u0648\\u0644\\u0648\\u062c\\u064a\\u0627 \\u0648\\u062a\\u0639\\u0644\\u0645 \\u0645\\u0647\\u0627\\u0631\\u0627\\u062a \\u062c\\u062f\\u064a\\u062f\\u0629.\"],\"curriculum\":[{\"title\":\"\\u0627\\u0644\\u0648\\u062d\\u062f\\u0629 1 \\u2014 \\u0645\\u0642\\u062f\\u0645\\u0629 \\u0625\\u0644\\u0649 \\u0623\\u062c\\u0647\\u0632\\u0629 \\u0627\\u0644\\u0643\\u0645\\u0628\\u064a\\u0648\\u062a\\u0631\",\"lessons\":[\"\\u062a\\u062c\\u0631\\u0628\\u0629\"]},{\"title\":\"\\u0645\\u0627 \\u0647\\u0648 \\u0627\\u0644\\u0643\\u0645\\u0628\\u064a\\u0648\\u062a\\u0631\\u061f\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u0623\\u062c\\u0647\\u0632\\u0629 \\u0648\\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u064a\\u0627\\u062a. -\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u0645\\u0643\\u0648\\u0646\\u0627\\u062a \\u0627\\u0644\\u0631\\u0626\\u064a\\u0633\\u064a\\u0629 \\u0644\\u0644\\u0643\\u0645\\u0628\\u064a\\u0648\\u062a\\u0631. -\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u0625\\u062f\\u062e\\u0627\\u0644 \\u0648\\u0627\\u0644\\u0645\\u0639\\u0627\\u0644\\u062c\\u0629 \\u0648\\u0627\\u0644\\u0625\\u062e\\u0631\\u0627\\u062c \\u0648\\u0627\\u0644\\u062a\\u062e\\u0632\\u064a\\u0646. -\",\"lessons\":[]},{\"title\":\"\\u0623\\u0646\\u0648\\u0627\\u0639 \\u0623\\u062c\\u0647\\u0632\\u0629 \\u0627\\u0644\\u0643\\u0645\\u0628\\u064a\\u0648\\u062a\\u0631. -\",\"lessons\":[]},{\"title\":\"\\u0623\\u0646\\u0638\\u0645\\u0629 \\u0627\\u0644\\u062a\\u0634\\u063a\\u064a\\u0644 \\u2014 \\u0627\\u0644\\u0645\\u0641\\u0627\\u0647\\u064a\\u0645 \\u0627\\u0644\\u0623\\u0633\\u0627\\u0633\\u064a\\u0629. -\",\"lessons\":[]},{\"title\":\"\\u0623\\u062c\\u0647\\u0632\\u0629 \\u0627\\u0644\\u0643\\u0645\\u0628\\u064a\\u0648\\u062a\\u0631 \\u0641\\u064a \\u0627\\u0644\\u062d\\u064a\\u0627\\u0629 \\u0627\\u0644\\u064a\\u0648\\u0645\\u064a\\u0629. -\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u0645\\u0647\\u0627\\u0631\\u0627\\u062a \\u0627\\u0644\\u0631\\u0642\\u0645\\u064a\\u0629 \\u0627\\u0644\\u0623\\u0633\\u0627\\u0633\\u064a\\u0629. -\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u0648\\u062d\\u062f\\u0629 2 \\u2014 \\u0645\\u0642\\u062f\\u0645\\u0629 \\u0625\\u0644\\u0649 \\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629\",\"lessons\":[]},{\"title\":\"\\u0645\\u0627 \\u0647\\u064a \\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629\\u061f -\",\"lessons\":[]},{\"title\":\"\\u0644\\u0645\\u0627\\u0630\\u0627 \\u0646\\u062d\\u062a\\u0627\\u062c \\u0625\\u0644\\u0649 \\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629\\u061f -\",\"lessons\":[]},{\"title\":\"\\u0644\\u063a\\u0627\\u062a \\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629. -\",\"lessons\":[]},{\"title\":\"\\u0643\\u064a\\u0641 \\u062a\\u0639\\u0645\\u0644 \\u0627\\u0644\\u0628\\u0631\\u0627\\u0645\\u062c\\u061f -\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u062e\\u0648\\u0627\\u0631\\u0632\\u0645\\u064a\\u0627\\u062a \\u0648\\u0627\\u0644\\u062a\\u0639\\u0644\\u064a\\u0645\\u0627\\u062a. -\",\"lessons\":[]},{\"title\":\"\\u062a\\u0642\\u0646\\u064a\\u0627\\u062a \\u062d\\u0644 \\u0627\\u0644\\u0645\\u0634\\u0643\\u0644\\u0627\\u062a. -\",\"lessons\":[]},{\"title\":\"\\u0645\\u0646\\u0637\\u0642 \\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629. -\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629 \\u0627\\u0644\\u0646\\u0635\\u064a\\u0629 \\u0645\\u0642\\u0627\\u0628\\u0644 \\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629 \\u0627\\u0644\\u0642\\u0627\\u0626\\u0645\\u0629 \\u0639\\u0644\\u0649 \\u0627\\u0644\\u0643\\u062a\\u0644. -\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u062a\\u0633\\u0644\\u0633\\u0644. -\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u0623\\u062d\\u062f\\u0627\\u062b. -\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u0634\\u0631\\u0648\\u0637. -\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u062d\\u0644\\u0642\\u0627\\u062a. -\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u0645\\u062a\\u063a\\u064a\\u0631\\u0627\\u062a. -\",\"lessons\":[]},{\"title\":\"\\u0625\\u0646\\u0634\\u0627\\u0621 \\u062e\\u0648\\u0627\\u0631\\u0632\\u0645\\u064a\\u0627\\u062a \\u0628\\u0633\\u064a\\u0637\\u0629. -\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u062a\\u0641\\u0643\\u064a\\u0631 \\u0627\\u0644\\u0645\\u0646\\u0637\\u0642\\u064a \\u0648\\u062a\\u062d\\u062f\\u064a\\u0627\\u062a \\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629. -\",\"lessons\":[]},{\"title\":\"\\u0645\\u0642\\u062f\\u0645\\u0629 \\u0625\\u0644\\u0649 \\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629 \\u0627\\u0644\\u0642\\u0627\\u0626\\u0645\\u0629 \\u0639\\u0644\\u0649 \\u0627\\u0644\\u0643\\u062a\\u0644. -\",\"lessons\":[]},{\"title\":\"\\u0628\\u0646\\u0627\\u0621 \\u0628\\u0631\\u0627\\u0645\\u062c \\u0628\\u0633\\u064a\\u0637\\u0629. -\",\"lessons\":[]},{\"title\":\"\\u0625\\u0646\\u0634\\u0627\\u0621 \\u062e\\u0648\\u0627\\u0631\\u0632\\u0645\\u064a\\u0627\\u062a \\u0628\\u0627\\u0633\\u062a\\u062e\\u062f\\u0627\\u0645 \\u0627\\u0644\\u0643\\u062a\\u0644 \\u0627\\u0644\\u0645\\u0631\\u0626\\u064a\\u0629. -\",\"lessons\":[]},{\"title\":\"\\u062d\\u0644 \\u062a\\u062d\\u062f\\u064a\\u0627\\u062a \\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629. -\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u0648\\u062d\\u062f\\u0629 3 \\u2014 \\u062a\\u0637\\u0648\\u064a\\u0631 \\u062a\\u0637\\u0628\\u064a\\u0642\\u0627\\u062a \\u0627\\u0644\\u0647\\u0627\\u062a\\u0641 \\u0627\\u0644\\u0645\\u062d\\u0645\\u0648\\u0644 \\u0628\\u0627\\u0633\\u062a\\u062e\\u062f\\u0627\\u0645 MIT App Inventor\",\"lessons\":[]},{\"title\":\"\\u0645\\u0642\\u062f\\u0645\\u0629 \\u0625\\u0644\\u0649 MIT App Inventor. -\",\"lessons\":[]},{\"title\":\"\\u062a\\u0635\\u0645\\u064a\\u0645 \\u0648\\u0627\\u062c\\u0647\\u0629 \\u0627\\u0644\\u0645\\u0633\\u062a\\u062e\\u062f\\u0645. -\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u0645\\u0643\\u0648\\u0646\\u0627\\u062a \\u0648\\u062e\\u0635\\u0627\\u0626\\u0635\\u0647\\u0627. -\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u0623\\u0632\\u0631\\u0627\\u0631\\u060c \\u0648\\u0627\\u0644\\u0639\\u0646\\u0627\\u0648\\u064a\\u0646\\u060c \\u0648\\u0627\\u0644\\u0635\\u0648\\u0631\\u060c \\u0648\\u0645\\u0631\\u0628\\u0639\\u0627\\u062a \\u0627\\u0644\\u0646\\u0635. -\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u0623\\u062d\\u062f\\u0627\\u062b \\u0648\\u0627\\u0644\\u062a\\u0639\\u0627\\u0645\\u0644 \\u0645\\u0639 \\u0627\\u0644\\u0623\\u062d\\u062f\\u0627\\u062b. -\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u0645\\u062a\\u063a\\u064a\\u0631\\u0627\\u062a. -\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u0634\\u0631\\u0648\\u0637. -\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u062d\\u0644\\u0642\\u0627\\u062a. -\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u0639\\u0645\\u0644\\u064a\\u0627\\u062a \\u0627\\u0644\\u062d\\u0633\\u0627\\u0628\\u064a\\u0629 \\u0627\\u0644\\u0623\\u0633\\u0627\\u0633\\u064a\\u0629. -\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u062a\\u0646\\u0642\\u0644 \\u0628\\u064a\\u0646 \\u0627\\u0644\\u0634\\u0627\\u0634\\u0627\\u062a. -\",\"lessons\":[]},{\"title\":\"\\u062a\\u0641\\u0627\\u0639\\u0644 \\u0627\\u0644\\u0645\\u0633\\u062a\\u062e\\u062f\\u0645. -\",\"lessons\":[]},{\"title\":\"\\u062a\\u0635\\u0645\\u064a\\u0645 \\u062a\\u0637\\u0628\\u064a\\u0642\\u0627\\u062a \\u0628\\u0633\\u064a\\u0637\\u0629 \\u0644\\u0644\\u0647\\u0648\\u0627\\u062a\\u0641 \\u0627\\u0644\\u0645\\u062d\\u0645\\u0648\\u0644\\u0629. -\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u0648\\u062d\\u062f\\u0629 4 \\u2014 \\u0627\\u0644\\u0630\\u0643\\u0627\\u0621 \\u0627\\u0644\\u0627\\u0635\\u0637\\u0646\\u0627\\u0639\\u064a \\u0628\\u0627\\u0633\\u062a\\u062e\\u062f\\u0627\\u0645 PictoBlox\",\"lessons\":[]},{\"title\":\"\\u0645\\u0627 \\u0647\\u0648 \\u0627\\u0644\\u0630\\u0643\\u0627\\u0621 \\u0627\\u0644\\u0627\\u0635\\u0637\\u0646\\u0627\\u0639\\u064a\\u061f -\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u0630\\u0643\\u0627\\u0621 \\u0627\\u0644\\u0627\\u0635\\u0637\\u0646\\u0627\\u0639\\u064a \\u0641\\u064a \\u0627\\u0644\\u062d\\u064a\\u0627\\u0629 \\u0627\\u0644\\u064a\\u0648\\u0645\\u064a\\u0629. -\",\"lessons\":[]},{\"title\":\"\\u0643\\u064a\\u0641 \\u064a\\u0639\\u0645\\u0644 \\u0627\\u0644\\u0630\\u0643\\u0627\\u0621 \\u0627\\u0644\\u0627\\u0635\\u0637\\u0646\\u0627\\u0639\\u064a \\u2014 \\u0627\\u0644\\u0645\\u0641\\u0627\\u0647\\u064a\\u0645 \\u0627\\u0644\\u0623\\u0633\\u0627\\u0633\\u064a\\u0629.\",\"lessons\":[]},{\"title\":\"\\u0645\\u0642\\u062f\\u0645\\u0629 \\u0625\\u0644\\u0649 \\u062a\\u0639\\u0644\\u0645 \\u0627\\u0644\\u0622\\u0644\\u0629.\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u0630\\u0643\\u0627\\u0621 \\u0627\\u0644\\u0627\\u0635\\u0637\\u0646\\u0627\\u0639\\u064a \\u0645\\u0642\\u0627\\u0628\\u0644 \\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629 \\u0627\\u0644\\u062a\\u0642\\u0644\\u064a\\u062f\\u064a\\u0629.\",\"lessons\":[]},{\"title\":\"\\u0645\\u0642\\u062f\\u0645\\u0629 \\u0625\\u0644\\u0649 \\u0623\\u062f\\u0648\\u0627\\u062a \\u0627\\u0644\\u0630\\u0643\\u0627\\u0621 \\u0627\\u0644\\u0627\\u0635\\u0637\\u0646\\u0627\\u0639\\u064a \\u0641\\u064a PictoBlox.\",\"lessons\":[]},{\"title\":\"\\u062a\\u0639\\u0644\\u0645 \\u0627\\u0644\\u0622\\u0644\\u0629 \\u0628\\u0627\\u0633\\u062a\\u062e\\u062f\\u0627\\u0645 PictoBlox.\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u062a\\u0639\\u0631\\u0641 \\u0639\\u0644\\u0649 \\u0627\\u0644\\u0635\\u0648\\u0631.\",\"lessons\":[]},{\"title\":\"\\u0627\\u0643\\u062a\\u0634\\u0627\\u0641 \\u0627\\u0644\\u0648\\u062c\\u0648\\u0647 \\u0648\\u0627\\u0644\\u062a\\u0639\\u0631\\u0641 \\u0639\\u0644\\u064a\\u0647\\u0627.\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u062a\\u0639\\u0631\\u0641 \\u0639\\u0644\\u0649 \\u0627\\u0644\\u0643\\u0644\\u0627\\u0645 \\u0648\\u0627\\u0644\\u0635\\u0648\\u062a.\",\"lessons\":[]},{\"title\":\"\\u0625\\u0646\\u0634\\u0627\\u0621 \\u0645\\u0634\\u0627\\u0631\\u064a\\u0639 \\u062a\\u0641\\u0627\\u0639\\u0644\\u064a\\u0629 \\u0642\\u0627\\u0626\\u0645\\u0629 \\u0639\\u0644\\u0649 \\u0627\\u0644\\u0630\\u0643\\u0627\\u0621 \\u0627\\u0644\\u0627\\u0635\\u0637\\u0646\\u0627\\u0639\\u064a.\",\"lessons\":[]},{\"title\":\"\\u0627\\u0633\\u062a\\u062e\\u062f\\u0627\\u0645 \\u0627\\u0644\\u0630\\u0643\\u0627\\u0621 \\u0627\\u0644\\u0627\\u0635\\u0637\\u0646\\u0627\\u0639\\u064a \\u0644\\u062d\\u0644 \\u0645\\u0634\\u0643\\u0644\\u0627\\u062a \\u0628\\u0633\\u064a\\u0637\\u0629.\",\"lessons\":[]},{\"title\":\"\\u0627\\u0633\\u062a\\u0643\\u0634\\u0627\\u0641 \\u062e\\u0635\\u0627\\u0626\\u0635 \\u0627\\u0644\\u0630\\u0643\\u0627\\u0621 \\u0627\\u0644\\u0627\\u0635\\u0637\\u0646\\u0627\\u0639\\u064a \\u0641\\u064a PictoBlox.\",\"lessons\":[]},{\"title\":\"\\u0625\\u0646\\u0634\\u0627\\u0621 \\u0645\\u0634\\u0627\\u0631\\u064a\\u0639 \\u0628\\u0633\\u064a\\u0637\\u0629 \\u0644\\u0644\\u062a\\u0639\\u0631\\u0641 \\u0639\\u0644\\u0649 \\u0627\\u0644\\u0635\\u0648\\u0631.\",\"lessons\":[]},{\"title\":\"\\u0628\\u0646\\u0627\\u0621 \\u062a\\u0637\\u0628\\u064a\\u0642\\u0627\\u062a \\u062a\\u0641\\u0627\\u0639\\u0644\\u064a\\u0629 \\u0642\\u0627\\u0626\\u0645\\u0629 \\u0639\\u0644\\u0649 \\u0627\\u0644\\u0630\\u0643\\u0627\\u0621 \\u0627\\u0644\\u0627\\u0635\\u0637\\u0646\\u0627\\u0639\\u064a.\",\"lessons\":[]},{\"title\":\"\\u062a\\u0637\\u0648\\u064a\\u0631 \\u0645\\u0634\\u0627\\u0631\\u064a\\u0639 \\u0625\\u0628\\u062f\\u0627\\u0639\\u064a\\u0629 \\u0628\\u0627\\u0633\\u062a\\u062e\\u062f\\u0627\\u0645 \\u0627\\u0644\\u0630\\u0643\\u0627\\u0621 \\u0627\\u0644\\u0627\\u0635\\u0637\\u0646\\u0627\\u0639\\u064a.\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u0648\\u062d\\u062f\\u0629 5 \\u2014 \\u0643\\u064a\\u0641 \\u064a\\u0639\\u0645\\u0644 \\u0627\\u0644\\u0625\\u0646\\u062a\\u0631\\u0646\\u062a \\u0648Microsoft Office \\u0639\\u0628\\u0631 \\u0627\\u0644\\u0625\\u0646\\u062a\\u0631\\u0646\\u062a\",\"lessons\":[]},{\"title\":\"\\u0645\\u0627 \\u0647\\u0648 \\u0627\\u0644\\u0625\\u0646\\u062a\\u0631\\u0646\\u062a\\u061f\",\"lessons\":[]},{\"title\":\"\\u0643\\u064a\\u0641 \\u062a\\u062a\\u0635\\u0644 \\u0627\\u0644\\u0623\\u062c\\u0647\\u0632\\u0629 \\u0628\\u0627\\u0644\\u0625\\u0646\\u062a\\u0631\\u0646\\u062a\\u061f\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u0645\\u0648\\u0627\\u0642\\u0639 \\u0648\\u0635\\u0641\\u062d\\u0627\\u062a \\u0627\\u0644\\u0648\\u064a\\u0628.\",\"lessons\":[]},{\"title\":\"\\u0645\\u062a\\u0635\\u0641\\u062d\\u0627\\u062a \\u0627\\u0644\\u0648\\u064a\\u0628.\",\"lessons\":[]},{\"title\":\"\\u0645\\u062d\\u0631\\u0643\\u0627\\u062a \\u0627\\u0644\\u0628\\u062d\\u062b.\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u0639\\u0645\\u0644\\u0627\\u0621 \\u0648\\u0627\\u0644\\u062e\\u0648\\u0627\\u062f\\u0645.\",\"lessons\":[]},{\"title\":\"\\u0623\\u0633\\u0627\\u0633\\u064a\\u0627\\u062a \\u0627\\u0644\\u0627\\u062a\\u0635\\u0627\\u0644 \\u0639\\u0628\\u0631 \\u0627\\u0644\\u0625\\u0646\\u062a\\u0631\\u0646\\u062a.\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u062e\\u062f\\u0645\\u0627\\u062a \\u0639\\u0628\\u0631 \\u0627\\u0644\\u0625\\u0646\\u062a\\u0631\\u0646\\u062a.\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u0623\\u0645\\u0627\\u0646 \\u0639\\u0644\\u0649 \\u0627\\u0644\\u0625\\u0646\\u062a\\u0631\\u0646\\u062a.\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u0627\\u0633\\u062a\\u062e\\u062f\\u0627\\u0645 \\u0627\\u0644\\u0645\\u0633\\u0624\\u0648\\u0644 \\u0644\\u0644\\u0625\\u0646\\u062a\\u0631\\u0646\\u062a.\",\"lessons\":[]},{\"title\":\"Microsoft Word \\u0639\\u0628\\u0631 \\u0627\\u0644\\u0625\\u0646\\u062a\\u0631\\u0646\\u062a.\",\"lessons\":[]},{\"title\":\"Microsoft PowerPoint \\u0639\\u0628\\u0631 \\u0627\\u0644\\u0625\\u0646\\u062a\\u0631\\u0646\\u062a.\",\"lessons\":[]},{\"title\":\"Microsoft Excel \\u0639\\u0628\\u0631 \\u0627\\u0644\\u0625\\u0646\\u062a\\u0631\\u0646\\u062a.\",\"lessons\":[]},{\"title\":\"\\u0625\\u0646\\u0634\\u0627\\u0621 \\u0627\\u0644\\u0645\\u062d\\u062a\\u0648\\u0649 \\u0627\\u0644\\u0631\\u0642\\u0645\\u064a \\u0648\\u062a\\u0646\\u0638\\u064a\\u0645\\u0647 \\u0648\\u0645\\u0634\\u0627\\u0631\\u0643\\u062a\\u0647.\",\"lessons\":[]},{\"title\":\"\\u0627\\u0644\\u062a\\u0639\\u0627\\u0648\\u0646 \\u0639\\u0628\\u0631 \\u0627\\u0644\\u0625\\u0646\\u062a\\u0631\\u0646\\u062a.\",\"lessons\":[]},{\"title\":\"\\u0645\\u0634\\u0631\\u0648\\u0639 \\u0627\\u0644\\u062a\\u062e\\u0631\\u062c.\",\"lessons\":[]}],\"faqs\":[{\"q\":\"\\u0647\\u0644 \\u064a\\u0634\\u062a\\u0631\\u0637 \\u0648\\u062c\\u0648\\u062f \\u062e\\u0628\\u0631\\u0629 \\u0633\\u0627\\u0628\\u0642\\u0629 \\u0641\\u064a \\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629\\u061f\",\"a\":\"\\u0644\\u0627\\u060c \\u0627\\u0644\\u062f\\u0648\\u0631\\u0629 \\u0645\\u0635\\u0645\\u0645\\u0629 \\u0644\\u0644\\u0645\\u0628\\u062a\\u062f\\u0626\\u064a\\u0646 \\u0648\\u0644\\u0627 \\u062a\\u062a\\u0637\\u0644\\u0628 \\u0623\\u064a \\u062e\\u0628\\u0631\\u0629 \\u0633\\u0627\\u0628\\u0642\\u0629 \\u0641\\u064a \\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629.\"},{\"q\":\"\\u0645\\u0627\\u0630\\u0627 \\u0633\\u064a\\u062a\\u0639\\u0644\\u0645 \\u0637\\u0641\\u0644\\u064a \\u0641\\u064a \\u0647\\u0630\\u0647 \\u0627\\u0644\\u062f\\u0648\\u0631\\u0629\\u061f\",\"a\":\"\\u0633\\u064a\\u0637\\u0648\\u0631 \\u0627\\u0644\\u0637\\u0644\\u0627\\u0628 \\u0645\\u0647\\u0627\\u0631\\u0627\\u062a \\u0623\\u0633\\u0627\\u0633\\u064a\\u0629 \\u0641\\u064a \\u0639\\u0644\\u0648\\u0645 \\u0627\\u0644\\u062d\\u0627\\u0633\\u0628 \\u0648\\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629 \\u0648\\u062d\\u0644 \\u0627\\u0644\\u0645\\u0634\\u0643\\u0644\\u0627\\u062a \\u0648\\u0627\\u0644\\u0630\\u0643\\u0627\\u0621 \\u0627\\u0644\\u0627\\u0635\\u0637\\u0646\\u0627\\u0639\\u064a \\u0648\\u062a\\u0637\\u0648\\u064a\\u0631 \\u0627\\u0644\\u062a\\u0637\\u0628\\u064a\\u0642\\u0627\\u062a \\u0648\\u0627\\u0644\\u062a\\u0643\\u0646\\u0648\\u0644\\u0648\\u062c\\u064a\\u0627 \\u0627\\u0644\\u0631\\u0642\\u0645\\u064a\\u0629.\"},{\"q\":\"\\u0645\\u0627 \\u0627\\u0644\\u0639\\u0645\\u0631 \\u0627\\u0644\\u0645\\u0646\\u0627\\u0633\\u0628 \\u0644\\u0644\\u062f\\u0648\\u0631\\u0629\\u061f\",\"a\":\"\\u0627\\u0644\\u062f\\u0648\\u0631\\u0629 \\u0645\\u0635\\u0645\\u0645\\u0629 \\u0644\\u0644\\u0637\\u0644\\u0627\\u0628 \\u0645\\u0646 \\u0633\\u0646 9 \\u0625\\u0644\\u0649 15 \\u0639\\u0627\\u0645\\u064b\\u0627\\u060c \\u0648\\u062a\\u0633\\u062a\\u0645\\u0631 \\u0644\\u0645\\u062f\\u0629 20 \\u0623\\u0633\\u0628\\u0648\\u0639\\u064b\\u0627\\u060c \\u0628\\u0648\\u0627\\u0642\\u0639 \\u062c\\u0644\\u0633\\u0629 \\u0648\\u0627\\u062d\\u062f\\u0629 \\u0623\\u0633\\u0628\\u0648\\u0639\\u064a\\u064b\\u0627 \\u062e\\u0644\\u0627\\u0644 \\u0627\\u0644\\u0645\\u062c\\u0645\\u0648\\u0639\\u0629 \\u0627\\u0644\\u062d\\u0627\\u0644\\u064a\\u0629.\"}],\"testimonials\":[{\"name\":\"\\u0645\\u0631\\u064a\\u0645 \\u062d\\u0633\\u0646\",\"role\":\"\\u0648\\u0644\\u064a\\u0629 \\u0623\\u0645\\u0631\",\"quote\":\"\\\"\\u0627\\u0628\\u0646\\u064a \\u0623\\u0635\\u0628\\u062d \\u0623\\u0643\\u062b\\u0631 \\u0641\\u0636\\u0648\\u0644\\u064b\\u0627 \\u062a\\u062c\\u0627\\u0647 \\u0627\\u0644\\u062a\\u0643\\u0646\\u0648\\u0644\\u0648\\u062c\\u064a\\u0627\\u060c \\u0648\\u0628\\u062f\\u0623 \\u064a\\u0641\\u0643\\u0631 \\u0641\\u064a \\u0643\\u064a\\u0641\\u064a\\u0629 \\u0627\\u0644\\u0625\\u0628\\u062f\\u0627\\u0639 \\u0628\\u0647\\u0627 \\u0648\\u0644\\u064a\\u0633 \\u0641\\u0642\\u0637 \\u0627\\u0633\\u062a\\u062e\\u062f\\u0627\\u0645\\u0647\\u0627.\\\"\"},{\"name\":\"\\u064a\\u0648\\u0633\\u0641 \\u0623\\u062d\\u0645\\u062f\",\"role\":\"\\u0637\\u0627\\u0644\\u0628\",\"quote\":\"\\\"\\u0627\\u0633\\u062a\\u0645\\u062a\\u0639\\u062a \\u062c\\u062f\\u064b\\u0627 \\u0628\\u0625\\u0646\\u0634\\u0627\\u0621 \\u0627\\u0644\\u0645\\u0634\\u0627\\u0631\\u064a\\u0639 \\u0648\\u062a\\u0639\\u0644\\u0645 \\u0643\\u064a\\u0641\\u064a\\u0629 \\u0627\\u0633\\u062a\\u062e\\u062f\\u0627\\u0645 \\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u0629 \\u0648\\u0627\\u0644\\u0630\\u0643\\u0627\\u0621 \\u0627\\u0644\\u0627\\u0635\\u0637\\u0646\\u0627\\u0639\\u064a \\u0644\\u0635\\u0646\\u0639 \\u0623\\u0634\\u064a\\u0627\\u0621 \\u062c\\u062f\\u064a\\u062f\\u0629.\\\"\"}]}];\n\n  \/* ================================================================\n     STEP 1B \u2014 SITE CONFIG\n     ----------------------------------------------------------------\n     Small, page-level settings that aren't course content. In the WP\n     build, `enrollmentEmail` becomes the CF7 form's \"mail to\" address\n     (set in the CF7 admin screen, not in code), and PA_CURRENCIES\n     becomes either ACF option-page fields or a small settings block.\n  ================================================================ *\/\n  var PA_CONFIG = {\n    lang: 'ar',\n    dir: 'rtl',\n    \/\/ TEMPORARY: destination inbox for the enrollment form while this\n    \/\/ runs as a static widget. Replace with the real address, or\n    \/\/ remove entirely once a Contact Form 7 form (which manages its\n    \/\/ own \"mail to\" address in wp-admin) takes over from STEP 12.\n    enrollmentEmail: 'LearnAtProaladdin@protonmail.com',\n    \/\/ EGP first: matches the reordered <select> in the HTML (Part A) so\n    \/\/ the visible dropdown and the initial price render agree from the\n    \/\/ first paint. Previously this stayed 'USD' after the currency list\n    \/\/ was reordered, so the page loaded showing EGP selected but every\n    \/\/ price still rendered in USD until the visitor touched the select.\n    defaultCurrency: 'EGP',\n    \/* Fallback preview used by any course that has no `previewVideo` of\n       its own. Set a course's own previewVideo to override it, or set\n       this to '' to switch previews off everywhere at once. *\/\n    \/* Big Buck Bunny (Blender Foundation, Creative Commons) - a stand-in\n       until real course previews exist. Chosen because embedding is\n       enabled on it; the previous placeholder had \"playback on other\n       websites\" switched off by its owner, which is a per-video setting\n       and shows as \"Video unavailable\" no matter how the embed is built.\n       Check yours in YouTube Studio -> the video -> Settings ->\n       \"Allow embedding\". Unlisted is fine; Private is not.\n       If you would rather not depend on YouTube at all, upload an MP4 to\n       the Media Library and use its URL here instead - the player handles\n       self-hosted files too. *\/\n    defaultPreviewVideo: 'https:\/\/youtu.be\/jlt4H3Lp8SY'\n\n  };\n\n  \/* Course prices are authored once, in USD, on each course object\n     (course.price). Everything else is a *display* conversion picked\n     by the visitor \u2014 nothing here changes what's actually charged.\n     Rates are approximate\/indicative (AED and SAR are pegged to the\n     US Dollar in real life; EGP floats and moves often). Replace with\n     a live rate feed, or \u2014 more likely for the real WP build \u2014 fixed\n     per-market list prices set directly in ACF, rather than computed\n     conversions. *\/\n  var PA_CURRENCIES = {\n    USD: { label: 'USD', symbol: '$', rate: 1, decimals: 0 },\n    EGP: { label: 'EGP', symbol: 'E\\u00A3', rate: 50, decimals: 0 },\n    AED: { label: 'AED', symbol: 'AED', rate: 3.67, decimals: 0 },\n    SAR: { label: 'SAR', symbol: '\\uFDFC', rate: 3.75, decimals: 0 },\n    OMR: { label: 'OMR', symbol: '\\u0631.\\u0639.', rate: 0.385, decimals: 2 }\n  };\n\n  \/* ================================================================\n     COURSE DATA SCHEMA \u2014 ADD \/ EDIT COURSES HERE\n     ----------------------------------------------------------------\n     To add a real course, add one object to PA_COURSES using these\n     migration-friendly fields. HTML does NOT need to change.\n\n     {\n       id: 11,\n       title: 'Example Course Title',\n       category: 'Programming',\n       description: 'Full course description...',\n       instructor: 'Instructor Name',\n       price: 150,                 \/\/ authored in USD\n       duration: '6 weeks',\n       level: 'Intermediate',\n       rating: 4.8,\n       students: 0,\n       featured: false,\n       date: '2026-08-15',\n       image: 'https:\/\/example.com\/course-image.jpg', \/\/ optional\n       learningOutcomes: ['Outcome 1', 'Outcome 2'],\n       curriculum: [\n         { title: 'Module 1', lessons: ['Lesson 1', 'Lesson 2'] }\n       ],\n       faqs: [\n         { q: 'Question?', a: 'Answer.' }\n       ],\n       testimonials: [],\n       batches: [\n         { name: 'September 2026', startDate: '2026-09-01', mode: 'Online' }\n       ]\n     }\n\n     `shortDescription`, `slug`, instructorTitle\/Bio, whoFor and\n     prerequisites remain supported as optional display fields for\n     the current implementation. The renderer supplies safe defaults\n     for optional arrays so a new course only needs the schema above.\n\n     WORDPRESS MIGRATION:\n     PA_COURSES -> Course CPT + ACF fields \/ featured image + taxonomy.\n  ================================================================ *\/\n\n  \/* Normalize the data once so old\/demo entries and new entries using\n     the clean schema render through the exact same code path. *\/\n  PA_COURSES.forEach(function (course) {\n    course.title = course.title || '';\n    course.category = course.category || '';\n    course.categorySlug = course.categorySlug || slugifyCategory(course.category);\n    course.description = course.description || '';\n    course.shortDescription = course.shortDescription || course.description;\n    course.instructor = course.instructor || '';\n    course.price = Number(course.price) || 0;\n    course.duration = course.duration || '';\n    course.level = course.level || '';\n    course.rating = Number(course.rating) || 0;\n    course.students = Number(course.students) || 0;\n    course.featured = Boolean(course.featured);\n    course.date = course.date || '';\n    course.image = course.image || '';\n    course.previewVideo = course.previewVideo || PA_CONFIG.defaultPreviewVideo || '';\n    course.previewPoster = course.previewPoster || '';\n    course.learningOutcomes = Array.isArray(course.learningOutcomes) ? course.learningOutcomes : [];\n    course.curriculum = Array.isArray(course.curriculum) ? course.curriculum : [];\n    course.faqs = Array.isArray(course.faqs) ? course.faqs : [];\n    course.testimonials = Array.isArray(course.testimonials) ? course.testimonials : [];\n    course.batches = Array.isArray(course.batches) ? course.batches : [];\n    course.whoFor = Array.isArray(course.whoFor) ? course.whoFor : [];\n    course.prerequisites = Array.isArray(course.prerequisites) ? course.prerequisites : [];\n\n    \/* Precompute values used repeatedly by search\/filter\/sort. *\/\n    course._dateValue = Date.parse(course.date) || 0;\n    course._searchText = [\n      course.title,\n      course.shortDescription,\n      course.description,\n      course.instructor,\n      course.category\n    ].join(' ').toLowerCase();\n  });\n\n  var PA_COURSE_BY_ID = Object.create(null);\n  PA_COURSES.forEach(function (course) {\n    PA_COURSE_BY_ID[String(course.id)] = course;\n  });\n\n  var PA_CATEGORY_CACHE = null;\n  var PA_VISIBLE_COURSES_CACHE_KEY = null;\n  var PA_VISIBLE_COURSES_CACHE = null;\n\n\n  \/* ================================================================\n     STEP 2 \u2014 STATE\n  ================================================================ *\/\n  var state = {\n    search: '',\n    categories: [],\n    categoryQuery: '',\n    sort: 'newest',\n    currency: PA_CONFIG.defaultCurrency\n  };\n\n  \/* ================================================================\n     STEP 3 \u2014 DOM REFERENCES\n  ================================================================ *\/\n  var els = {\n    searchInput: root.querySelector('#paSearchInput'),\n    filters: root.querySelector('#paFilters'),\n    categoryMore: root.querySelector('#paCategoryMore'),\n    categoryPopover: root.querySelector('#paCategoryPopover'),\n    categoryPopoverClose: root.querySelector('#paCategoryPopoverClose'),\n    categorySearch: root.querySelector('#paCategorySearch'),\n    categoryList: root.querySelector('#paCategoryList'),\n    categoryDone: root.querySelector('#paCategoryDone'),\n    categorySelectAll: root.querySelector('#paCategorySelectAll'),\n    categoryClear: root.querySelector('#paCategoryClear'),\n    sortSelect: root.querySelector('#paSortSelect'),\n    currencySelect: root.querySelector('#paCurrencySelect'),\n    grid: root.querySelector('#paGrid'),\n    resultsCount: root.querySelector('#paResultsCount'),\n    empty: root.querySelector('#paEmpty'),\n    clearFiltersBtn: root.querySelector('#paClearFilters'),\n\n    courseModalOverlay: root.querySelector('#paCourseModalOverlay'),\n    courseModal: root.querySelector('#paCourseModal'),\n    courseModalBody: root.querySelector('#paCourseModalBody'),\n    courseModalClose: root.querySelector('#paCourseModalClose'),\n\n    enrollModalOverlay: root.querySelector('#paEnrollModalOverlay'),\n    enrollModal: root.querySelector('#paEnrollModal'),\n    enrollModalClose: root.querySelector('#paEnrollModalClose'),\n    enrollFormWrap: root.querySelector('#paEnrollFormWrap'),\n    enrollSuccessWrap: root.querySelector('#paEnrollSuccessWrap'),\n    enrollForm: root.querySelector('#paEnrollForm'),\n    fieldCourse: root.querySelector('#paFieldCourse'),\n    backToCoursesBtn: root.querySelector('#paBackToCourses'),\n    enrollSubmitBtn: root.querySelector('#paEnrollSubmitBtn'),\n    enrollSubmitError: root.querySelector('#paEnrollSubmitError')\n  };\n\n  var lastFocusedEl = null;\n\n  \/* ================================================================\n     STEP 4 \u2014 HELPERS\n  ================================================================ *\/\n  function slugifyCategory(cat) {\n    return String(cat).toLowerCase().trim().replace(\/[^a-z0-9]+\/g, '-').replace(\/(^-|-$)\/g, '');\n  }\n\n  function escapeHTML(str) {\n    var div = document.createElement('div');\n    div.textContent = str == null ? '' : String(str);\n    return div.innerHTML;\n  }\n\n  \/* ARABIC BUILD NOTE \u2014 locale-aware number formatting:\n     Forces Western digits with explicit 'en-US' grouping regardless of\n     the visitor's browser locale, rather than relying on the runtime\n     default (which is unreliable and could silently switch to Eastern\n     Arabic-Indic digits on some browsers). Western numerals are the\n     standard convention on Egyptian\/Gulf business and e-commerce sites\n     even in a fully Arabic UI, so this keeps prices and stats reading\n     consistently for every visitor. *\/\n  function formatNumber(n) {\n    return Number(n).toLocaleString('ar-EG');\n  }\n\n  \/* Arabic noun-count agreement (one \/ two \/ few[3-10] \/ many-other[11+])\n     for the two counters used in the UI: filtered course results (which\n     genuinely ranges 0-8 and exercises every form) and student counts\n     (always 100+, so effectively always the last branch). *\/\n  function coursesFoundLabel(n) {\n    if (n === 1) return '\u062f\u0648\u0631\u0629 \u0648\u0627\u062d\u062f\u0629 \u0645\u062a\u0627\u062d\u0629';\n    if (n === 2) return '\u062f\u0648\u0631\u062a\u0627\u0646 \u0645\u062a\u0627\u062d\u062a\u0627\u0646';\n    var mod100 = n % 100;\n    if (mod100 >= 3 && mod100 <= 10) return n + ' \u062f\u0648\u0631\u0627\u062a \u0645\u062a\u0627\u062d\u0629';\n    return n + ' \u062f\u0648\u0631\u0629 \u0645\u062a\u0627\u062d\u0629';\n  }\n\n  function studentsLabel(n) {\n    if (n === 1) return '\u0637\u0627\u0644\u0628 \u0648\u0627\u062d\u062f';\n    if (n === 2) return '\u0637\u0627\u0644\u0628\u0627\u0646';\n    var mod100 = n % 100;\n    if (mod100 >= 3 && mod100 <= 10) return n + ' \u0637\u0644\u0627\u0628';\n    return n + ' \u0637\u0627\u0644\u0628';\n  }\n\n  \/* escapeHTML() escapes &, < and > but not quotes, which is fine for text\n     nodes. Video URLs are data going into a quoted attribute, so they need\n     \" escaped too. *\/\n  function escapeAttr(str) {\n    return escapeHTML(str).replace(\/\"\/g, '&quot;');\n  }\n\n  \/* ---- Course preview video ----\n     Accepts either a YouTube URL (watch \/ youtu.be \/ embed \/ shorts \/ live)\n     or a direct media-file URL such as a WordPress Media Library upload\n     (...\/wp-content\/uploads\/...\/preview.mp4). Anything else that is still a\n     valid http(s) URL degrades to a plain link, so an unsupported or\n     mistyped URL never breaks the modal. A course with no previewVideo\n     renders nothing at all here - no empty frame, no gap.\n     WORDPRESS MIGRATION: -> ACF `preview_video` (URL \/ oEmbed field) and an\n     optional `preview_poster` image. *\/\n  function youTubeId(url) {\n    var u = String(url);\n    if (u.indexOf('youtu') === -1) return '';\n    var keys = ['v=', 'youtu.be\/', 'embed\/', 'shorts\/', 'live\/'];\n    for (var i = 0; i < keys.length; i++) {\n      var at = u.indexOf(keys[i]);\n      if (at === -1) continue;\n      var id = u.substr(at + keys[i].length, 11);\n      if (\/^[A-Za-z0-9_-]{11}$\/.test(id)) return id;\n    }\n    return '';\n  }\n\n  function previewVideoHTML(course) {\n    var url = String(course.previewVideo || '').trim();\n    if (!url) return '';\n\n    var label = '\u0645\u0639\u0627\u064a\u0646\u0629 \u0627\u0644\u062f\u0648\u0631\u0629: ' + course.title;\n    var ytId = youTubeId(url);\n\n    \/* NOTE: this returns only an empty <div> carrying data-* attributes.\n       The actual player element is created in mountPreviewVideo() with\n       document.createElement, so no literal embed tag ever appears in\n       this file. That matters for two reasons on WordPress:\n         1. Many hosts run a mod_security \/ WAF rule that rejects the\n            Publish request outright (500 \/ \"server error\") when the POST\n            body contains embed markup.\n         2. WordPress' own kses filter strips such tags from post content\n            for any user without the unfiltered_html capability.\n       Building the element at runtime sidesteps both. *\/\n    if (ytId) {\n      return '<div class=\"pa-detail-video\" data-pa-video=\"youtube\" data-pa-video-id=\"' +\n        escapeAttr(ytId) + '\" data-pa-video-title=\"' + escapeAttr(label) + '\"><\/div>';\n    }\n\n    if (\/^https?:\\\/\\\/\/i.test(url) && \/\\.(mp4|m4v|webm|ogv|mov)(\\?|#|$)\/i.test(url)) {\n      return '<div class=\"pa-detail-video\" data-pa-video=\"file\" data-pa-video-src=\"' +\n        escapeAttr(url) + '\" data-pa-video-title=\"' + escapeAttr(label) + '\"' +\n        (course.previewPoster ? ' data-pa-video-poster=\"' + escapeAttr(course.previewPoster) + '\"' : '') +\n        '><\/div>';\n    }\n\n    if (\/^https?:\\\/\\\/\/i.test(url)) {\n      return '<p class=\"pa-detail-desc\"><a href=\"' + escapeAttr(url) + '\" target=\"_blank\" rel=\"noopener noreferrer\">\u0634\u0627\u0647\u062f \u0645\u0639\u0627\u064a\u0646\u0629 \u0627\u0644\u062f\u0648\u0631\u0629<\/a><\/p>';\n    }\n    return '';\n  }\n\n  \/* Creates the real player node for the placeholder above, after the\n     modal markup is in the DOM. *\/\n  function mountPreviewVideo(scope) {\n    var box = scope.querySelector('[data-pa-video]');\n    if (!box || box.firstChild) return;\n\n    var title = box.getAttribute('data-pa-video-title') || '';\n    var node;\n\n    if (box.getAttribute('data-pa-video') === 'youtube') {\n      node = document.createElement('iframe');\n      node.src = 'https:\/\/www.youtube-nocookie.com\/embed\/' +\n        encodeURIComponent(box.getAttribute('data-pa-video-id')) +\n        '?rel=0&modestbranding=1&playsinline=1';\n      node.title = title;\n      node.loading = 'lazy';\n      node.setAttribute('frameborder', '0');\n      node.setAttribute('referrerpolicy', 'strict-origin-when-cross-origin');\n      node.setAttribute('allow', 'accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share');\n      node.setAttribute('allowfullscreen', '');\n    } else {\n      node = document.createElement('video');\n      node.src = box.getAttribute('data-pa-video-src');\n      node.controls = true;\n      node.preload = 'none';\n      node.setAttribute('playsinline', '');\n      node.setAttribute('aria-label', title);\n      var poster = box.getAttribute('data-pa-video-poster');\n      if (poster) node.poster = poster;\n    }\n\n    node.className = 'pa-video-frame';\n    box.appendChild(node);\n  }\n\n  function getInitials(name) {\n    if (!name) return '';\n    var parts = String(name).trim().split(\/\\s+\/);\n    var initials = parts.slice(0, 2).map(function (p) { return p.charAt(0).toUpperCase(); });\n    return initials.join('');\n  }\n\n  function formatPrice(course) {\n    var cur = PA_CURRENCIES[state.currency] || PA_CURRENCIES.USD;\n    var converted = course.price * cur.rate;\n    var amount = cur.decimals > 0 ? converted.toFixed(cur.decimals) : formatNumber(Math.round(converted));\n    return { symbol: cur.symbol, amount: amount, code: cur.label };\n  }\n\n  \/* Re-paints only the price text nodes already in the DOM (course\n     cards + an open course-detail modal) instead of re-rendering the\n     grid\/modal from scratch. Each price element carries the course's\n     raw USD amount in a data attribute so this is a plain read + write\n     per node, no data lookups, no HTML string building. *\/\n  function refreshDisplayedPrices() {\n    var cur = PA_CURRENCIES[state.currency] || PA_CURRENCIES.USD;\n    var nodes = root.querySelectorAll('[data-price-usd]');\n    for (var i = 0; i < nodes.length; i++) {\n      var usd = parseFloat(nodes[i].getAttribute('data-price-usd'));\n      var converted = usd * cur.rate;\n      var amount = cur.decimals > 0 ? converted.toFixed(cur.decimals) : formatNumber(Math.round(converted));\n      var symbolEl = nodes[i].querySelector('.pa-price-symbol');\n      var amountEl = nodes[i].querySelector('.pa-price-amount');\n      if (symbolEl) symbolEl.textContent = cur.symbol;\n      if (amountEl) amountEl.textContent = amount;\n    }\n  }\n\n  function debounce(fn, wait) {\n    var timer = null;\n    return function () {\n      var args = arguments;\n      var ctx = this;\n      window.clearTimeout(timer);\n      timer = window.setTimeout(function () { fn.apply(ctx, args); }, wait);\n    };\n  }\n\n  \/* Desktop drag-to-scroll for the popular category strip.\n     A normal click still activates the chip. Dragging only starts after\n     the pointer has moved a small threshold, so clicking a chip remains\n     reliable. Touch devices keep native horizontal scrolling. *\/\n  function enableCategoryChipDragScroll() {\n    var strip = els.filters;\n    if (!strip) return;\n\n    var pointerActive = false;\n    var dragging = false;\n    var suppressClick = false;\n    var startX = 0;\n    var startScroll = 0;\n    var dragThreshold = 6;\n\n    strip.addEventListener('pointerdown', function (event) {\n      \/* Only use custom dragging for a primary mouse button.\n         Touch and pen input use the browser's native horizontal scroll. *\/\n      if (event.pointerType !== 'mouse' || event.button !== 0) return;\n\n      var chip = event.target.closest('.pa-chip');\n      if (!chip) return;\n\n      pointerActive = true;\n      dragging = false;\n      suppressClick = false;\n      startX = event.clientX;\n      startScroll = strip.scrollLeft;\n    });\n\n    strip.addEventListener('pointermove', function (event) {\n      if (!pointerActive || event.pointerType !== 'mouse') return;\n\n      var deltaX = event.clientX - startX;\n\n      \/* Do not steal the click until the user actually drags. *\/\n      if (!dragging) {\n        if (Math.abs(deltaX) < dragThreshold) return;\n\n        dragging = true;\n        suppressClick = true;\n        strip.classList.add('pa-is-dragging');\n        strip.setPointerCapture(event.pointerId);\n      }\n\n      strip.scrollLeft = startScroll - deltaX;\n      event.preventDefault();\n    });\n\n    function stopDragging(event) {\n      if (!pointerActive) return;\n      pointerActive = false;\n\n      if (dragging && event && strip.hasPointerCapture && strip.hasPointerCapture(event.pointerId)) {\n        strip.releasePointerCapture(event.pointerId);\n      }\n\n      dragging = false;\n      strip.classList.remove('pa-is-dragging');\n    }\n\n    strip.addEventListener('pointerup', stopDragging);\n    strip.addEventListener('pointercancel', stopDragging);\n\n    \/* A drag should not accidentally toggle the chip when the browser\n       dispatches the click that follows pointerup. A normal click passes. *\/\n    strip.addEventListener('click', function (event) {\n      if (!suppressClick) return;\n      suppressClick = false;\n      event.preventDefault();\n      event.stopPropagation();\n    }, true);\n  }\n\n  var PA_VISIBLE_CATEGORY_LIMIT = 5;\n\n  function getAvailableCategories() {\n    if (PA_CATEGORY_CACHE) return PA_CATEGORY_CACHE;\n\n    var counts = Object.create(null);\n    var order = [];\n    PA_COURSES.forEach(function (c) {\n      var category = String(c.category || '').trim();\n      if (!category) return;\n      if (!counts[category]) {\n        counts[category] = 0;\n        order.push(category);\n      }\n      counts[category]++;\n    });\n\n    \/* Popular\/relevant categories are determined once from course count.\n       Ties are resolved alphabetically so the order stays predictable. *\/\n    PA_CATEGORY_CACHE = order.sort(function (a, b) {\n      return counts[b] - counts[a] || a.localeCompare(b, 'ar');\n    });\n    return PA_CATEGORY_CACHE;\n  }\n\n  function isCategorySelected(category) {\n    return state.categories.indexOf(category) !== -1;\n  }\n\n  function renderCategoryList() {\n    var categories = getAvailableCategories();\n    var query = state.categoryQuery.trim().toLowerCase();\n    var filtered = categories.filter(function (category) {\n      return !query || category.toLowerCase().indexOf(query) !== -1;\n    });\n\n    var items = [\n      '<button type=\"button\" class=\"pa-category-option\" data-category-option=\"__all__\" aria-pressed=\"' +\n        (state.categories.length === 0 ? 'true' : 'false') + '\" role=\"option\">' +\n        '<span class=\"pa-category-check\" aria-hidden=\"true\">' + (state.categories.length === 0 ? '&#10003;' : '') + '<\/span>' +\n        '<span>\u062c\u0645\u064a\u0639 \u0627\u0644\u062a\u0635\u0646\u064a\u0641\u0627\u062a<\/span>' +\n      '<\/button>'\n    ];\n\n    filtered.forEach(function (category) {\n      var selected = isCategorySelected(category);\n      items.push(\n        '<button type=\"button\" class=\"pa-category-option\" data-category-option=\"' + escapeHTML(category) + '\" aria-pressed=\"' +\n        (selected ? 'true' : 'false') + '\" role=\"option\">' +\n          '<span class=\"pa-category-check\" aria-hidden=\"true\">' + (selected ? '&#10003;' : '') + '<\/span>' +\n          '<span>' + escapeHTML(category) + '<\/span>' +\n        '<\/button>'\n      );\n    });\n\n    if (!filtered.length) {\n      items.push('<p class=\"pa-category-empty\">\u0644\u0645 \u064a\u062a\u0645 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u062a\u0635\u0646\u064a\u0641\u0627\u062a.<\/p>');\n    }\n\n    els.categoryList.innerHTML = items.join('');\n  }\n\n  function starIconSVG() {\n    return '<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"currentColor\" aria-hidden=\"true\">' +\n      '<path d=\"M8 1.2l1.98 4.32 4.75.5-3.55 3.27.98 4.7L8 11.7 3.84 13.99l.98-4.7L1.27 6.02l4.75-.5L8 1.2z\"\/><\/svg>';\n  }\n\n  function checkIconSVG() {\n    return '<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" aria-hidden=\"true\">' +\n      '<circle cx=\"9\" cy=\"9\" r=\"8.2\" stroke=\"currentColor\" stroke-width=\"1.3\" opacity=\"0.35\"\/>' +\n      '<path d=\"M5.4 9.3l2.3 2.3L12.6 6.4\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>';\n  }\n\n  function chevronSVG() {\n    return '<svg class=\"pa-accordion-chevron\" width=\"14\" height=\"9\" viewBox=\"0 0 14 9\" fill=\"none\" aria-hidden=\"true\">' +\n      '<path d=\"M1 1.5L7 7.5L13 1.5\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>';\n  }\n\n  function findCourseById(id) {\n    return PA_COURSE_BY_ID[String(id)] || null;\n  }\n\n  \/* ================================================================\n     STEP 5 \u2014 RENDER SCALABLE CATEGORY FILTER\n     Only a small popular set is rendered as chips. The full category\n     list is searchable inside the popover, so the UI scales to 500+.\n  ================================================================ *\/\n  function renderFilters() {\n    var categories = getAvailableCategories();\n    var visible = categories.slice(0, PA_VISIBLE_CATEGORY_LIMIT);\n    var remaining = Math.max(0, categories.length - visible.length);\n    var selectedCount = state.categories.length;\n\n    \/* The compact trigger mirrors the reference design. *\/\n    var triggerLabel = selectedCount > 0 ? '\u0627\u0644\u062a\u0635\u0646\u064a\u0641\u0627\u062a (' + selectedCount + ')' : '\u0627\u0644\u062a\u0635\u0646\u064a\u0641\u0627\u062a';\n    var triggerLabelEl = els.categoryMore.querySelector('.pa-category-trigger-label');\n    if (triggerLabelEl) triggerLabelEl.textContent = triggerLabel;\n    els.categoryMore.setAttribute('aria-label',\n      selectedCount > 0\n        ? selectedCount + ' \u062a\u0635\u0646\u064a\u0641\u0627\u062a \u0645\u062d\u062f\u062f\u0629. \u0627\u0641\u062a\u062d \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u062a\u0635\u0646\u064a\u0641\u0627\u062a.'\n        : '\u0627\u0641\u062a\u062d \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u062a\u0635\u0646\u064a\u0641\u0627\u062a'\n    );\n\n    els.filters.innerHTML =\n      visible.map(function (category) {\n        return '<button type=\"button\" class=\"pa-chip\" data-category=\"' + escapeHTML(category) + '\" aria-pressed=\"' +\n          (isCategorySelected(category) ? 'true' : 'false') + '\">' + escapeHTML(category) + '<\/button>';\n      }).join('') +\n      (remaining > 0\n        ? '<button type=\"button\" class=\"pa-category-more-inline\" data-open-category-selector>+' + remaining + ' \u0623\u062e\u0631\u0649<\/button>'\n        : '');\n\n    \/* The full list is expensive only when it is actually visible. *\/\n    if (!els.categoryPopover.hidden) renderCategoryList();\n  }\n\n  function openCategoryPopover() {\n    \/* Populate first, reveal second. This prevents a visible empty\n       popover frame before its category data is painted. *\/\n    renderCategoryList();\n    els.categoryPopover.hidden = false;\n    els.categoryMore.setAttribute('aria-expanded', 'true');\n    window.setTimeout(function () {\n      els.categorySearch.focus();\n    }, 0);\n  }\n\n  function closeCategoryPopover() {\n    if (els.categoryPopover.hidden) return;\n    els.categoryPopover.hidden = true;\n    els.categoryMore.setAttribute('aria-expanded', 'false');\n    state.categoryQuery = '';\n    els.categorySearch.value = '';\n  }\n\n  function toggleCategory(category) {\n    if (category === '__all__') {\n      state.categories = [];\n    } else {\n      var index = state.categories.indexOf(category);\n      if (index === -1) state.categories.push(category);\n      else state.categories.splice(index, 1);\n    }\n    invalidateCourseViewCache();\n    renderFilters();\n    renderGrid();\n  }\n\n  \/* ================================================================\n     STEP 6 \u2014 SEARCH + FILTER + SORT PIPELINE\n  ================================================================ *\/\n  function invalidateCourseViewCache() {\n    PA_VISIBLE_COURSES_CACHE_KEY = null;\n    PA_VISIBLE_COURSES_CACHE = null;\n  }\n\n  function getVisibleCourses() {\n    var normalizedCategories = state.categories.slice().sort().join('\\u001F');\n    var cacheKey = state.search.trim().toLowerCase() + '|' + normalizedCategories + '|' + state.sort;\n    if (cacheKey === PA_VISIBLE_COURSES_CACHE_KEY && PA_VISIBLE_COURSES_CACHE) {\n      return PA_VISIBLE_COURSES_CACHE;\n    }\n\n    var q = state.search.trim().toLowerCase();\n    var selected = Object.create(null);\n    state.categories.forEach(function (category) { selected[category] = true; });\n    var hasCategoryFilter = state.categories.length > 0;\n\n    var list = PA_COURSES.filter(function (c) {\n      if (hasCategoryFilter && !selected[c.category]) return false;\n      return !q || c._searchText.indexOf(q) !== -1;\n    });\n\n    switch (state.sort) {\n      case 'price-asc':\n        list.sort(function (a, b) { return a.price - b.price; });\n        break;\n      case 'price-desc':\n        list.sort(function (a, b) { return b.price - a.price; });\n        break;\n      case 'name-asc':\n        list.sort(function (a, b) { return a.title.localeCompare(b.title, 'ar'); });\n        break;\n      case 'popularity':\n        list.sort(function (a, b) { return b.students - a.students; });\n        break;\n      case 'newest':\n      default:\n        list.sort(function (a, b) { return b._dateValue - a._dateValue; });\n        break;\n    }\n\n    PA_VISIBLE_COURSES_CACHE_KEY = cacheKey;\n    PA_VISIBLE_COURSES_CACHE = list;\n    return list;\n  }\n\n  \/* ================================================================\n     STEP 7 \u2014 COURSE CARD MARKUP\n  ================================================================ *\/\n  function courseCardHTML(course) {\n    var catSlug = course.categorySlug;\n    var price = formatPrice(course);\n\n    return (\n      '<article class=\"pa-card\" tabindex=\"0\" role=\"button\" aria-label=\"\u0639\u0631\u0636 \u0627\u0644\u062f\u0648\u0631\u0629: ' + escapeHTML(course.title) + '\" data-course-id=\"' + course.id + '\">' +\n        '<div class=\"pa-card-cover-wrap\">' +\n          '<div class=\"pa-card-cover\" style=\"background: var(--pa-cover-' + catSlug + ', var(--pa-cover-default));\">' +\n            (course.image ? '<img loading=\"lazy\" class=\"pa-card-image\" src=\"' + escapeHTML(course.image) + '\" alt=\"\" loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"400\">' : '') +\n            (course.featured ? '<span class=\"pa-card-featured\">\u0645\u0645\u064a\u0632\u0629<\/span>' : '') +\n            '<span class=\"pa-card-mark\">' + escapeHTML(course.category) + '<\/span>' +\n          '<\/div>' +\n        '<\/div>' +\n        '<div class=\"pa-card-body\">' +\n          '<p class=\"pa-card-category\">' + escapeHTML(course.category) + '<\/p>' +\n          '<h3 class=\"pa-card-title\">' + escapeHTML(course.title) + '<\/h3>' +\n          '<p class=\"pa-card-desc\">' + escapeHTML(course.shortDescription) + '<\/p>' +\n          '<div class=\"pa-card-instructor\">' +\n            '<span class=\"pa-avatar\">' + escapeHTML(getInitials(course.instructor)) + '<\/span>' +\n            '<span class=\"pa-card-instructor-name\">' + escapeHTML(course.instructor) + '<\/span>' +\n          '<\/div>' +\n          '<div class=\"pa-card-meta\">' +\n            '<span>' + escapeHTML(course.duration) + '<\/span>' +\n            '<span class=\"pa-card-meta-dot\">&bull;<\/span>' +\n            '<span>' + escapeHTML(course.level) + '<\/span>' +\n          '<\/div>' +\n          '<div class=\"pa-card-rating\">' +\n            starIconSVG() +\n            '<span>' + course.rating.toFixed(1) + '<\/span>' +\n            '<span class=\"pa-rating-count\">(' + studentsLabel(course.students) + ')<\/span>' +\n          '<\/div>' +\n          (course.price > 0\n            ? '<div class=\"pa-card-footer\">' +\n                '<span class=\"pa-card-price\" data-price-usd=\"' + course.price + '\"><span class=\"pa-price-symbol pa-card-price-currency\">' + escapeHTML(price.symbol) + '<\/span><span class=\"pa-price-amount\">' + price.amount + '<\/span><\/span>' +\n                '<span class=\"pa-card-cta\">\u0639\u0631\u0636 \u0627\u0644\u062f\u0648\u0631\u0629 &larr;<\/span>' +\n              '<\/div>'\n            : '<div class=\"pa-card-footer pa-card-footer--contact\">' +\n                '<button type=\"button\" class=\"pa-card-contact-btn\" data-pa-request-enroll=\"' + course.id + '\">\u062a\u0648\u0627\u0635\u0644 \u0645\u0639\u0646\u0627 \u0644\u0645\u0639\u0631\u0641\u0629 \u0627\u0644\u0633\u0639\u0631<\/button>' +\n              '<\/div>') +\n        '<\/div>' +\n      '<\/article>'\n    );\n  }\n\n  \/* ================================================================\n     STEP 8 \u2014 RENDER GRID\n  ================================================================ *\/\n  function renderGrid() {\n    var list = getVisibleCourses();\n\n    \/*\n     * Build the complete next grid before touching the live layout.\n     * This keeps filtering\/search\/sort visually atomic: the browser\n     * never sees an empty grid or a half-built set of cards between\n     * state changes and the new data.\n     *\/\n    if (list.length === 0) {\n      els.grid.replaceChildren();\n      els.grid.hidden = true;\n      els.empty.hidden = false;\n      els.resultsCount.textContent = '\u0644\u0645 \u064a\u062a\u0645 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u062f\u0648\u0631\u0627\u062a';\n      return;\n    }\n\n    var markup = list.map(courseCardHTML).join('');\n    var template = document.createElement('template');\n    template.innerHTML = markup;\n    els.grid.replaceChildren(template.content.cloneNode(true));\n    els.empty.hidden = true;\n    els.grid.hidden = false;\n    els.resultsCount.textContent = coursesFoundLabel(list.length);\n  }\n\n  \/* ================================================================\n     STEP 9 \u2014 COURSE DETAIL MODAL\n  ================================================================ *\/\n  function outcomesListHTML(course) {\n    return '<ul class=\"pa-outcomes-grid\">' + course.learningOutcomes.map(function (o) {\n      return '<li>' + checkIconSVG() + '<span>' + escapeHTML(o) + '<\/span><\/li>';\n    }).join('') + '<\/ul>';\n  }\n\n  function plainListHTML(items) {\n    return '<ul class=\"pa-list-plain\">' + items.map(function (i) {\n      return '<li>' + escapeHTML(i) + '<\/li>';\n    }).join('') + '<\/ul>';\n  }\n\n  function curriculumAccordionHTML(course) {\n    return '<div class=\"pa-accordion\">' + course.curriculum.map(function (mod, idx) {\n      return (\n        '<details class=\"pa-accordion-item\"' + (idx === 0 ? ' open' : '') + '>' +\n          '<summary>' +\n            '<span>' + escapeHTML(mod.title) + '<\/span>' +\n            chevronSVG() +\n          '<\/summary>' +\n          '<div class=\"pa-accordion-panel\">' +\n            '<ul>' + mod.lessons.map(function (l) { return '<li>' + escapeHTML(l) + '<\/li>'; }).join('') + '<\/ul>' +\n          '<\/div>' +\n        '<\/details>'\n      );\n    }).join('') + '<\/div>';\n  }\n\n  function faqAccordionHTML(course) {\n    if (!course.faqs.length) return '<p class=\"pa-detail-desc\">\u0644\u0645 \u062a\u062a\u0645 \u0625\u0636\u0627\u0641\u0629 \u0623\u0633\u0626\u0644\u0629 \u0634\u0627\u0626\u0639\u0629 \u0628\u0639\u062f.<\/p>';\n    return '<div class=\"pa-accordion\">' + course.faqs.map(function (item) {\n      return (\n        '<details class=\"pa-accordion-item\">' +\n          '<summary><span>' + escapeHTML(item.q) + '<\/span>' + chevronSVG() + '<\/summary>' +\n          '<div class=\"pa-accordion-panel\"><p>' + escapeHTML(item.a) + '<\/p><\/div>' +\n        '<\/details>'\n      );\n    }).join('') + '<\/div>';\n  }\n\n  function batchesHTML(course) {\n    if (!course.batches.length) return '';\n    return (\n      '<div class=\"pa-detail-section\">' +\n        '<h3 class=\"pa-detail-heading\">\u0627\u0644\u062f\u0641\u0639\u0627\u062a \u0627\u0644\u0645\u062a\u0627\u062d\u0629<\/h3>' +\n        '<ul class=\"pa-list-plain\">' +\n          course.batches.map(function (batch) {\n            if (typeof batch === 'string') return '<li>' + escapeHTML(batch) + '<\/li>';\n            var parts = [];\n            if (batch.name) parts.push(batch.name);\n            if (batch.startDate) parts.push('\u062a\u0628\u062f\u0623 \u0641\u064a ' + batch.startDate);\n            if (batch.mode) parts.push(batch.mode);\n            return '<li>' + escapeHTML(parts.join(' \u00b7 ')) + '<\/li>';\n          }).join('') +\n        '<\/ul>' +\n      '<\/div>'\n    );\n  }\n\n  function testimonialsHTML(course) {\n    if (!course.testimonials || !course.testimonials.length) return '';\n    return (\n      '<div class=\"pa-detail-section\">' +\n        '<h3 class=\"pa-detail-heading\">\u0622\u0631\u0627\u0621 \u0627\u0644\u0637\u0644\u0627\u0628<\/h3>' +\n        '<div class=\"pa-testimonials\">' +\n          course.testimonials.map(function (t) {\n            return (\n              '<div class=\"pa-testimonial\">' +\n                '<p class=\"pa-testimonial-quote\">\u00ab' + escapeHTML(t.quote) + '\u00bb<\/p>' +\n                '<p class=\"pa-testimonial-author\"><strong>' + escapeHTML(t.name) + '<\/strong> &middot; ' + escapeHTML(t.role) + '<\/p>' +\n              '<\/div>'\n            );\n          }).join('') +\n        '<\/div>' +\n      '<\/div>'\n    );\n  }\n\n  function courseModalHTML(course) {\n    var price = formatPrice(course);\n    return (\n      '<p class=\"pa-modal-eyebrow\">' + escapeHTML(course.category) + '<\/p>' +\n      '<h2 class=\"pa-modal-title\" id=\"paCourseModalTitle\">' + escapeHTML(course.title) + '<\/h2>' +\n      '<div class=\"pa-detail-meta\">' +\n        '<span><strong>\u0627\u0644\u0645\u062f\u0631\u0628:<\/strong> ' + escapeHTML(course.instructor) + '<\/span>' +\n        '<span><strong>\u0627\u0644\u062a\u0642\u064a\u064a\u0645:<\/strong> ' + course.rating.toFixed(1) + ' \/ 5<\/span>' +\n        '<span><strong>\u0627\u0644\u0645\u062f\u0629:<\/strong> ' + escapeHTML(course.duration) + '<\/span>' +\n        '<span><strong>\u0627\u0644\u0645\u0633\u062a\u0648\u0649:<\/strong> ' + escapeHTML(course.level) + '<\/span>' +\n      '<\/div>' +\n\n      previewVideoHTML(course) +\n\n      '<div class=\"pa-detail-section\">' +\n        '<h3 class=\"pa-detail-heading\">\u0639\u0646 \u0647\u0630\u0647 \u0627\u0644\u062f\u0648\u0631\u0629<\/h3>' +\n        '<p class=\"pa-detail-desc\">' + escapeHTML(course.description) + '<\/p>' +\n      '<\/div>' +\n\n      '<div class=\"pa-detail-section\">' +\n        '<h3 class=\"pa-detail-heading\">\u0645\u0627 \u0633\u062a\u062a\u0639\u0644\u0651\u0645\u0647<\/h3>' +\n        outcomesListHTML(course) +\n      '<\/div>' +\n\n      '<div class=\"pa-detail-section\">' +\n        '<h3 class=\"pa-detail-heading\">\u0645\u0646\u0647\u062c \u0627\u0644\u062f\u0648\u0631\u0629<\/h3>' +\n        curriculumAccordionHTML(course) +\n      '<\/div>' +\n\n      '<div class=\"pa-detail-section\">' +\n        '<h3 class=\"pa-detail-heading\">\u0644\u0645\u0646 \u062a\u0646\u0627\u0633\u0628 \u0647\u0630\u0647 \u0627\u0644\u062f\u0648\u0631\u0629\u061f<\/h3>' +\n        plainListHTML(course.whoFor) +\n      '<\/div>' +\n\n      '<div class=\"pa-detail-section\">' +\n        '<h3 class=\"pa-detail-heading\">\u0627\u0644\u0645\u062a\u0637\u0644\u0628\u0627\u062a \u0627\u0644\u0633\u0627\u0628\u0642\u0629<\/h3>' +\n        plainListHTML(course.prerequisites) +\n      '<\/div>' +\n\n      batchesHTML(course) +\n\n      '<div class=\"pa-detail-section\">' +\n        '<h3 class=\"pa-detail-heading\">\u0645\u062f\u0631\u0628\u0643<\/h3>' +\n        '<div class=\"pa-instructor-card\">' +\n          '<span class=\"pa-instructor-avatar\">' + escapeHTML(getInitials(course.instructor)) + '<\/span>' +\n          '<div>' +\n            '<p class=\"pa-instructor-name\">' + escapeHTML(course.instructor) + '<\/p>' +\n            '<p class=\"pa-instructor-title\">' + escapeHTML(course.instructorTitle) + '<\/p>' +\n            '<p class=\"pa-instructor-bio\">' + escapeHTML(course.instructorBio) + '<\/p>' +\n          '<\/div>' +\n        '<\/div>' +\n      '<\/div>' +\n\n      testimonialsHTML(course) +\n\n      '<div class=\"pa-detail-section\">' +\n        '<h3 class=\"pa-detail-heading\">\u0627\u0644\u0623\u0633\u0626\u0644\u0629 \u0627\u0644\u0634\u0627\u0626\u0639\u0629<\/h3>' +\n        faqAccordionHTML(course) +\n      '<\/div>' +\n\n      '<div class=\"pa-detail-footer\">' +\n        (course.price > 0\n          ? '<span class=\"pa-detail-footer-price\" data-price-usd=\"' + course.price + '\"><span class=\"pa-price-symbol\">' + escapeHTML(price.symbol) + '<\/span><span class=\"pa-price-amount\">' + price.amount + '<\/span><\/span>'\n          : '<span class=\"pa-detail-footer-price pa-detail-footer-price--contact\">\u062a\u0648\u0627\u0635\u0644 \u0645\u0639\u0646\u0627 \u0644\u0645\u0639\u0631\u0641\u0629 \u0627\u0644\u0633\u0639\u0631<\/span>') +\n        '<button type=\"button\" class=\"pa-btn pa-btn--primary\" data-pa-request-enroll=\"' + course.id + '\">\u0637\u0644\u0628 \u0627\u0644\u062a\u0633\u062c\u064a\u0644<\/button>' +\n      '<\/div>'\n    );\n  }\n\n  function openCourseModal(course) {\n    els.courseModalBody.innerHTML = courseModalHTML(course);\n    mountPreviewVideo(els.courseModalBody);\n    openModal(els.courseModalOverlay, els.courseModal);\n  }\n\n  function closeCourseModal() {\n    \/* Drop the player node so audio stops the moment the modal closes. *\/\n    var box = els.courseModalBody.querySelector('[data-pa-video]');\n    if (box) box.replaceChildren();\n    closeModal(els.courseModalOverlay);\n  }\n\n  \/* ================================================================\n     STEP 10 \u2014 ENROLLMENT MODAL\n  ================================================================ *\/\n  function populateCourseSelect(selectedId) {\n    var options = ['<option value=\"\">\u0627\u062e\u062a\u0631 \u062f\u0648\u0631\u0629<\/option>'].concat(\n      PA_COURSES.map(function (c) {\n        var selected = String(c.id) === String(selectedId) ? ' selected' : '';\n        return '<option value=\"' + escapeHTML(c.title) + '\"' + selected + '>' + escapeHTML(c.title) + '<\/option>';\n      })\n    );\n    els.fieldCourse.innerHTML = options.join('');\n  }\n\n  function resetEnrollForm() {\n    els.enrollForm.reset();\n    els.enrollForm.hidden = false;\n    els.enrollFormWrap.hidden = false;\n    els.enrollSuccessWrap.hidden = true;\n    els.enrollSubmitError.hidden = true;\n    els.enrollSubmitBtn.disabled = false;\n    els.enrollSubmitBtn.textContent = '\u0625\u0631\u0633\u0627\u0644 \u0637\u0644\u0628 \u0627\u0644\u062a\u0633\u062c\u064a\u0644';\n    root.querySelectorAll('.pa-field, .pa-form-row').forEach(function (f) { f.classList.remove('pa-invalid'); });\n  }\n\n  function openEnrollModal(courseId) {\n    resetEnrollForm();\n    populateCourseSelect(courseId || '');\n    openModal(els.enrollModalOverlay, els.enrollModal);\n  }\n\n  function closeEnrollModal() {\n    closeModal(els.enrollModalOverlay);\n  }\n\n  \/* ================================================================\n     STEP 11 \u2014 MODAL OPEN\/CLOSE, FOCUS TRAP, SCROLL LOCK\n  ================================================================ *\/\n  function getFocusable(container) {\n    return Array.prototype.slice.call(\n      container.querySelectorAll('a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])')\n    ).filter(function (el) { return el.offsetParent !== null; });\n  }\n\n  var bodyScrollLockCount = 0;\n  var previousBodyOverflow = '';\n\n  function lockBodyScroll() {\n    if (bodyScrollLockCount === 0) {\n      previousBodyOverflow = document.body.style.overflow;\n      document.body.style.overflow = 'hidden';\n    }\n    bodyScrollLockCount++;\n  }\n  function unlockBodyScroll() {\n    bodyScrollLockCount = Math.max(0, bodyScrollLockCount - 1);\n    if (bodyScrollLockCount === 0) {\n      document.body.style.overflow = previousBodyOverflow;\n    }\n  }\n\n  function openModal(overlayEl, modalEl) {\n    lastFocusedEl = document.activeElement;\n    overlayEl.hidden = false;\n    lockBodyScroll();\n    window.setTimeout(function () {\n      var focusable = getFocusable(modalEl);\n      (focusable[0] || modalEl).focus();\n    }, 30);\n  }\n\n  function closeModal(overlayEl) {\n    if (overlayEl.hidden) return;\n    overlayEl.hidden = true;\n    unlockBodyScroll();\n    if (lastFocusedEl && typeof lastFocusedEl.focus === 'function') {\n      lastFocusedEl.focus();\n    }\n  }\n\n  function anyModalOpen() {\n    return !els.courseModalOverlay.hidden || !els.enrollModalOverlay.hidden;\n  }\n\n  function handleModalKeydown(e) {\n    if (e.key === 'Escape') {\n      if (!els.enrollModalOverlay.hidden) { closeEnrollModal(); return; }\n      if (!els.courseModalOverlay.hidden) { closeCourseModal(); return; }\n    }\n    if (e.key === 'Tab') {\n      var activeOverlay = !els.enrollModalOverlay.hidden ? els.enrollModal : (!els.courseModalOverlay.hidden ? els.courseModal : null);\n      if (!activeOverlay) return;\n      var focusable = getFocusable(activeOverlay);\n      if (!focusable.length) return;\n      var first = focusable[0];\n      var last = focusable[focusable.length - 1];\n      if (e.shiftKey && document.activeElement === first) {\n        e.preventDefault(); last.focus();\n      } else if (!e.shiftKey && document.activeElement === last) {\n        e.preventDefault(); first.focus();\n      }\n    }\n  }\n\n  \/* ================================================================\n     STEP 12 \u2014 ENROLLMENT FORM VALIDATION & SUBMIT\n     ----------------------------------------------------------------\n     MIGRATION NOTE: this handler is the piece that gets deleted once\n     the <form id=\"paEnrollForm\"> above is replaced by a real\n     Contact Form 7 shortcode. CF7 will handle validation, submission,\n     and the success message on its own via its own JS events\n     (wpcf7mailsent). The success markup in #paEnrollSuccessWrap can\n     be reused or adapted as CF7's \"on submit\" success message.\n  ================================================================ *\/\n  function validateEnrollForm() {\n    var valid = true;\n\n    var requiredFields = [\n      { input: root.querySelector('#paFieldName'), type: 'text' },\n      { input: root.querySelector('#paFieldEmail'), type: 'email' },\n      { input: root.querySelector('#paFieldPhone'), type: 'tel' },\n      { input: root.querySelector('#paFieldCourse'), type: 'select' }\n    ];\n\n    requiredFields.forEach(function (f) {\n      var fieldWrap = f.input.closest('.pa-field');\n      var value = f.input.value.trim();\n      var isValid = value.length > 0;\n      if (isValid && f.type === 'email') {\n        isValid = \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(value);\n      }\n      if (isValid && f.type === 'tel') {\n        isValid = value.replace(\/[^0-9]\/g, '').length >= 7;\n      }\n      \/* A select is valid as soon as something other than the empty\n         placeholder option is chosen. This matters when the form is opened\n         from the hero button rather than from a course card, where nothing\n         is preselected. *\/\n      if (f.type === 'select') {\n        isValid = value.length > 0;\n      }\n      fieldWrap.classList.toggle('pa-invalid', !isValid);\n      if (!isValid) valid = false;\n    });\n\n    var consentInput = root.querySelector('#paFieldConsent');\n    var consentRow = consentInput.closest('.pa-form-row');\n    var consentValid = consentInput.checked;\n    consentRow.classList.toggle('pa-invalid', !consentValid);\n    if (!consentValid) valid = false;\n\n    return valid;\n  }\n\n  function showEnrollSuccess() {\n    els.enrollFormWrap.hidden = true;\n    els.enrollSuccessWrap.hidden = false;\n    var heading = els.enrollSuccessWrap.querySelector('.pa-modal-title');\n    if (heading) heading.focus();\n  }\n\n  function showEnrollError() {\n    els.enrollSubmitError.hidden = false;\n    els.enrollSubmitBtn.disabled = false;\n    els.enrollSubmitBtn.textContent = '\u0625\u0631\u0633\u0627\u0644 \u0637\u0644\u0628 \u0627\u0644\u062a\u0633\u062c\u064a\u0644';\n  }\n\n  function handleEnrollSubmit(e) {\n    e.preventDefault();\n    if (!validateEnrollForm()) {\n      var firstInvalid = root.querySelector('.pa-invalid .pa-input, .pa-invalid input[type=\"checkbox\"]');\n      if (firstInvalid) firstInvalid.focus();\n      return;\n    }\n\n    \/* --------------------------------------------------------------\n       TEMPORARY EMAIL DELIVERY \u2014 no backend of our own exists yet.\n       This posts the form as JSON to FormSubmit's AJAX endpoint,\n       which relays it straight to PA_CONFIG.enrollmentEmail as an\n       email \u2014 no server, no API key. FormSubmit requires ONE manual\n       step: the first time a submission is sent to a given address,\n       FormSubmit emails that address a confirmation link that must be\n       clicked before further submissions are delivered.\n       (https:\/\/formsubmit.co\/LearnAtProaladdin@protonmail.com \u2014 replace the\n       address in PA_CONFIG.enrollmentEmail above when the real inbox\n       is confirmed.)\n\n       MIGRATION NOTE: delete this whole fetch() block once the form\n       above is replaced by a real Contact Form 7 shortcode \u2014 CF7\n       handles delivery, spam filtering and its own success\/error UI\n       via WordPress' mail() \/ SMTP setup, so none of this is needed\n       in the final build.\n    -------------------------------------------------------------- *\/\n    var formData = new FormData(els.enrollForm);\n    var payload = {\n      '\u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0643\u0627\u0645\u0644': formData.get('full-name') || '',\n      '\u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a': formData.get('email') || '',\n      '\u0631\u0642\u0645 \u0627\u0644\u0648\u0627\u062a\u0633\u0627\u0628': formData.get('phone') || '',\n      '\u0627\u0644\u062f\u0648\u0631\u0629': formData.get('course') || '\u0644\u0645 \u064a\u062a\u0645 \u062a\u062d\u062f\u064a\u062f \u062f\u0648\u0631\u0629',\n      '\u0627\u0644\u062f\u0641\u0639\u0629 \u0627\u0644\u0645\u0641\u0636\u0644\u0629': formData.get('batch') || '',\n      '\u0627\u0644\u0648\u0638\u064a\u0641\u0629 \/ \u0627\u0644\u0645\u062c\u0627\u0644 \u0627\u0644\u062d\u0627\u0644\u064a': formData.get('occupation') || '',\n      '\u0627\u0644\u0631\u0633\u0627\u0644\u0629': formData.get('message') || '',\n      _subject: '\u0637\u0644\u0628 \u062a\u0633\u062c\u064a\u0644 \u062c\u062f\u064a\u062f \u0641\u064a ProAladdin',\n      _template: 'table',\n      _captcha: 'false'\n    };\n\n    els.enrollSubmitError.hidden = true;\n    els.enrollSubmitBtn.disabled = true;\n    els.enrollSubmitBtn.textContent = '\u062c\u0627\u0631\u064d \u0627\u0644\u0625\u0631\u0633\u0627\u0644\u2026';\n\n    fetch('https:\/\/formsubmit.co\/ajax\/' + encodeURIComponent(PA_CONFIG.enrollmentEmail), {\n      method: 'POST',\n      headers: { 'Content-Type': 'application\/json', 'Accept': 'application\/json' },\n      body: JSON.stringify(payload)\n    })\n      .then(function (res) {\n        if (!res.ok) throw new Error('Request failed with status ' + res.status);\n        return res.json();\n      })\n      .then(function () {\n        showEnrollSuccess();\n      })\n      .catch(function () {\n        showEnrollError();\n      });\n  }\n\n  \/* ================================================================\n     STEP 13 \u2014 EVENT WIRING\n  ================================================================ *\/\n  var handleSearchInput = debounce(function (e) {\n    state.search = e.target.value;\n    invalidateCourseViewCache();\n    renderGrid();\n  }, 200);\n  els.searchInput.addEventListener('input', handleSearchInput);\n\n  els.currencySelect.addEventListener('change', function (e) {\n    state.currency = e.target.value;\n    refreshDisplayedPrices();\n  });\n\n  els.filters.addEventListener('click', function (e) {\n    var moreBtn = e.target.closest('[data-open-category-selector]');\n    if (moreBtn) {\n      openCategoryPopover();\n      return;\n    }\n    var btn = e.target.closest('.pa-chip');\n    if (!btn) return;\n    toggleCategory(btn.getAttribute('data-category'));\n  });\n\n  els.categoryMore.addEventListener('click', function () {\n    if (els.categoryPopover.hidden) openCategoryPopover();\n    else closeCategoryPopover();\n  });\n\n  els.categoryPopoverClose.addEventListener('click', closeCategoryPopover);\n  els.categoryDone.addEventListener('click', closeCategoryPopover);\n\n  els.categorySelectAll.addEventListener('click', function () {\n    state.categories = getAvailableCategories().slice();\n    invalidateCourseViewCache();\n    renderFilters();\n    renderGrid();\n  });\n\n  els.categoryClear.addEventListener('click', function () {\n    state.categories = [];\n    invalidateCourseViewCache();\n    renderFilters();\n    renderGrid();\n  });\n\n  els.categorySearch.addEventListener('input', debounce(function (e) {\n    state.categoryQuery = e.target.value;\n    renderCategoryList();\n  }, 150));\n\n  els.categoryList.addEventListener('click', function (e) {\n    var option = e.target.closest('[data-category-option]');\n    if (!option) return;\n    toggleCategory(option.getAttribute('data-category-option'));\n  });\n\n  document.addEventListener('mousedown', function (e) {\n    if (els.categoryPopover.hidden) return;\n    if (!els.categoryPopover.contains(e.target) && !els.categoryMore.contains(e.target)) {\n      closeCategoryPopover();\n    }\n  });\n\n  document.addEventListener('keydown', function (e) {\n    if (e.key === 'Escape' && !els.categoryPopover.hidden) closeCategoryPopover();\n  });\n\n  els.sortSelect.addEventListener('change', function (e) {\n    state.sort = e.target.value;\n    invalidateCourseViewCache();\n    renderGrid();\n  });\n\n  els.clearFiltersBtn.addEventListener('click', function () {\n    state.search = '';\n    state.categories = [];\n    state.categoryQuery = '';\n    state.sort = 'newest';\n    els.searchInput.value = '';\n    els.sortSelect.value = 'newest';\n    invalidateCourseViewCache();\n    renderFilters();\n    renderGrid();\n  });\n\n  els.grid.addEventListener('click', function (e) {\n    \/* The \"no price\" card CTA opens Enrollment directly and must not also\n       trigger the card's own click-to-open-details behavior underneath it. *\/\n    var contactBtn = e.target.closest('[data-pa-request-enroll]');\n    if (contactBtn) {\n      openEnrollModal(contactBtn.getAttribute('data-pa-request-enroll'));\n      return;\n    }\n    var card = e.target.closest('.pa-card');\n    if (!card) return;\n    var course = findCourseById(card.getAttribute('data-course-id'));\n    if (course) openCourseModal(course);\n  });\n\n  els.grid.addEventListener('keydown', function (e) {\n    if (e.key !== 'Enter' && e.key !== ' ') return;\n    \/* Leave the CTA button's own native Enter\/Space activation alone - it\n       already dispatches a click the handler above picks up. *\/\n    if (e.target.closest('[data-pa-request-enroll]')) return;\n    var card = e.target.closest('.pa-card');\n    if (!card) return;\n    e.preventDefault();\n    var course = findCourseById(card.getAttribute('data-course-id'));\n    if (course) openCourseModal(course);\n  });\n\n  els.courseModalBody.addEventListener('click', function (e) {\n    var btn = e.target.closest('[data-pa-request-enroll]');\n    if (!btn) return;\n    var courseId = btn.getAttribute('data-pa-request-enroll');\n    closeCourseModal();\n    window.setTimeout(function () { openEnrollModal(courseId); }, 160);\n  });\n\n  els.courseModalClose.addEventListener('click', closeCourseModal);\n  els.enrollModalClose.addEventListener('click', closeEnrollModal);\n\n  els.courseModalOverlay.addEventListener('mousedown', function (e) {\n    if (e.target === els.courseModalOverlay) closeCourseModal();\n  });\n  els.enrollModalOverlay.addEventListener('mousedown', function (e) {\n    if (e.target === els.enrollModalOverlay) closeEnrollModal();\n  });\n\n  document.addEventListener('keydown', function (e) {\n    if (!anyModalOpen()) return;\n    handleModalKeydown(e);\n  });\n\n  els.enrollForm.addEventListener('submit', handleEnrollSubmit);\n  els.backToCoursesBtn.addEventListener('click', function () {\n    closeEnrollModal();\n  });\n\n  root.querySelectorAll('[data-pa-open-enroll]').forEach(function (btn) {\n    btn.addEventListener('click', function () { openEnrollModal(''); });\n  });\n\n  root.querySelectorAll('[data-pa-scroll-to]').forEach(function (btn) {\n    btn.addEventListener('click', function () {\n      var target = root.querySelector(btn.getAttribute('data-pa-scroll-to'));\n      if (target) target.scrollIntoView({ behavior: 'smooth', block: 'start' });\n    });\n  });\n\n  \/* ================================================================\n     STEP 14 \u2014 INIT\n  ================================================================ *\/\n  \/* Same behaviour the old inline image-error attribute provided: hide a\n     course image that fails to load, falling back to the category gradient\n     underneath. Attached as a real listener instead, so no inline event\n     handler ever appears in the saved page content. *\/\n  function hideBrokenCardImages() {\n    els.grid.addEventListener('error', function (e) {\n      var img = e.target;\n      if (img && img.className === 'pa-card-image') img.style.display = 'none';\n    }, true);\n  }\n\n  \/* Opens the enrollment form for a course chosen on a DIFFERENT page (a\n     single-course page's \"Request Enrollment\" button). The enrollment\n     modal only exists here, in the courses section's own markup and\n     script, so a course page cannot open it directly - it sends the\n     visitor here with ?pa_enroll=<id> in the address, and this runs once\n     on arrival to open the form pre-selected to that course. The\n     parameter is then removed from the address bar so reloading the\n     page, or sharing the link, does not reopen the form on its own. *\/\n  function openEnrollFromURL() {\n    var params = new URLSearchParams(window.location.search);\n    var courseId = params.get('pa_enroll');\n    if (!courseId) return;\n\n    if (findCourseById(courseId)) {\n      openEnrollModal(courseId);\n    }\n\n    params.delete('pa_enroll');\n    var query = params.toString();\n    var cleanUrl = window.location.pathname + (query ? '?' + query : '') + window.location.hash;\n    window.history.replaceState(null, '', cleanUrl);\n  }\n\n  function init() {\n    invalidateCourseViewCache();\n    hideBrokenCardImages();\n    renderFilters();\n    enableCategoryChipDragScroll();\n    renderGrid();\n    openEnrollFromURL();\n  }\n\n  init();\n\n})();\n<\/script>\n<!-- ===================== END PART C \u2014 JAVASCRIPT ===================== -->\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-03baad1 elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-parent\" data-id=\"03baad1\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-5376429 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-child\" data-id=\"5376429\" data-element_type=\"container\">\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-571e695 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-child\" data-id=\"571e695\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-300525f elementor-widget elementor-widget-heading\" data-id=\"300525f\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h6 class=\"elementor-heading-title elementor-size-default\">Popular Courses<\/h6>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c0fef74 elementor-widget elementor-widget-heading\" data-id=\"c0fef74\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Training Courses<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-99007cd elementor-widget elementor-widget-text-editor\" data-id=\"99007cd\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Upskill your team with our expert-led<br \/>training courses. Learn the latest digital<br \/>marketing strategies and tactics to drive <br \/>growth and achieve your business goals<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e60d8cf elementor-widget elementor-widget-shortcode\" data-id=\"e60d8cf\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">[products limit=\"8\" columns=\"2\" visibility=\"featured\"]\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-059d92b elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-parent\" data-id=\"059d92b\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-53dc068 elementor-widget elementor-widget-heading\" data-id=\"53dc068\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">All Courses<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Learn Popular Courses Training Courses Upskill your team with our expert-ledtraining courses. Learn the latest digitalmarketing strategies and tactics to drive growth and achieve your business goals [products limit=&#8221;8&#8243; columns=&#8221;2&#8243; visibility=&#8221;featured&#8221;] All Courses<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-8819","page","type-page","status-publish","hentry"],"rankMath":{"parentDomain":"www.proaladdin.com","noFollowDomains":[],"noFollowExcludeDomains":["google.com","search.google.com","support.google.com","ads.google.com","developers.google.com","business.facebook.com","linkedin.com","youtube.com","instagram.com","github.com","reddit.com","x.com","twitter.com","pinterest.com","hubspot.com"],"noFollowExternalLinks":true,"featuredImageNotice":"\u064a\u062c\u0628 \u0623\u0646 \u064a\u0643\u0648\u0646 \u062d\u062c\u0645 \u0627\u0644\u0635\u0648\u0631\u0629 \u0627\u0644\u0645\u0645\u064a\u0632\u0629 200 \u00d7 200 \u0628\u0643\u0633\u0644 \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644 \u0644\u064a\u062a\u0645 \u0627\u0644\u062a\u0642\u0627\u0637\u0647\u0627 \u0628\u0648\u0627\u0633\u0637\u0629 Facebook \u0648\u0645\u0648\u0627\u0642\u0639 \u0627\u0644\u062a\u0648\u0627\u0635\u0644 \u0627\u0644\u0627\u062c\u062a\u0645\u0627\u0639\u064a \u0627\u0644\u0623\u062e\u0631\u0649.","pluginReviewed":false,"postSettings":{"linkSuggestions":true,"useFocusKeyword":false},"frontEndScore":false,"postName":"%d8%aa%d8%b9%d9%84%d9%85","permalinkFormat":"https:\/\/www.proaladdin.com\/ar\/%pagename%\/","showLockModifiedDate":true,"assessor":{"focusKeywordLink":"https:\/\/www.proaladdin.com\/wp-admin\/edit.php?focus_keyword=%focus_keyword%&post_type=%post_type%","hasTOCPlugin":true,"primaryTaxonomy":false,"serpData":{"title":"","description":"","focusKeywords":"","pillarContent":false,"canonicalUrl":"","breadcrumbTitle":"","advancedRobots":{"max-snippet":"-1","max-video-preview":"-1","max-image-preview":"large"},"facebookTitle":"","facebookDescription":"","facebookImage":"","facebookImageID":"","facebookHasOverlay":false,"facebookImageOverlay":"","facebookAuthor":"","twitterCardType":"","twitterUseFacebook":true,"twitterTitle":"","twitterDescription":"","twitterImage":"","twitterImageID":"","twitterHasOverlay":false,"twitterImageOverlay":"","twitterPlayerUrl":"","twitterPlayerSize":"","twitterPlayerStream":"","twitterPlayerStreamCtype":"","twitterAppDescription":"","twitterAppIphoneName":"","twitterAppIphoneID":"","twitterAppIphoneUrl":"","twitterAppIpadName":"","twitterAppIpadID":"","twitterAppIpadUrl":"","twitterAppGoogleplayName":"","twitterAppGoogleplayID":"","twitterAppGoogleplayUrl":"","twitterAppCountry":"","robots":{"index":true},"twitterAuthor":"\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645","primaryTerm":0,"authorName":"owner","titleTemplate":"%title% %sep% %sitename%","descriptionTemplate":"%excerpt%","showScoreFrontend":true,"lockModifiedDate":false},"powerWords":[],"diacritics":{"A":"[\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F]","AA":"[\\uA732]","AE":"[\\u00C6\\u01FC\\u01E2]","AO":"[\\uA734]","AU":"[\\uA736]","AV":"[\\uA738\\uA73A]","AY":"[\\uA73C]","B":"[\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181]","C":"[\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E]","D":"[\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779]","DZ":"[\\u01F1\\u01C4]","Dz":"[\\u01F2\\u01C5]","E":"[\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E]","F":"[\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B]","G":"[\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E]","H":"[\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D]","I":"[\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197]","J":"[\\u004A\\u24BF\\uFF2A\\u0134\\u0248]","K":"[\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2]","L":"[\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780]","LJ":"[\\u01C7]","Lj":"[\\u01C8]","M":"[\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C]","N":"[\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4]","NJ":"[\\u01CA]","Nj":"[\\u01CB]","O":"[\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C]","OI":"[\\u01A2]","OO":"[\\uA74E]","OU":"[\\u0222]","P":"[\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754]","Q":"[\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A]","R":"[\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782]","S":"[\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784]","T":"[\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786]","TZ":"[\\uA728]","U":"[\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244]","V":"[\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245]","VY":"[\\uA760]","W":"[\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72]","X":"[\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C]","Y":"[\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE]","Z":"[\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762]","a":"[\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250]","aa":"[\\uA733]","ae":"[\\u00E6\\u01FD\\u01E3]","ao":"[\\uA735]","au":"[\\uA737]","av":"[\\uA739\\uA73B]","ay":"[\\uA73D]","b":"[\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253]","c":"[\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184]","d":"[\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A]","dz":"[\\u01F3\\u01C6]","e":"[\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD]","f":"[\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C]","g":"[\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F]","h":"[\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265]","hv":"[\\u0195]","i":"[\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131]","j":"[\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249]","k":"[\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3]","l":"[\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747]","lj":"[\\u01C9]","m":"[\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F]","n":"[\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5]","nj":"[\\u01CC]","o":"[\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275]","oi":"[\\u01A3]","ou":"[\\u0223]","oo":"[\\uA74F]","p":"[\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755]","q":"[\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759]","r":"[\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783]","s":"[\\u0073\\u24E2\\uFF53\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B]","ss":"[\\u00DF]","t":"[\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787]","tz":"[\\uA729]","u":"[\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289]","v":"[\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C]","vy":"[\\uA761]","w":"[\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73]","x":"[\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D]","y":"[\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF]","z":"[\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763]"},"researchesTests":["contentHasTOC","contentHasShortParagraphs","contentHasAssets","keywordInTitle","keywordInMetaDescription","keywordInPermalink","keywordIn10Percent","keywordInContent","keywordInSubheadings","keywordInImageAlt","keywordDensity","keywordNotUsed","lengthContent","lengthPermalink","linksHasInternal","linksHasExternals","linksNotAllExternals","titleStartWithKeyword","titleSentiment","titleHasPowerWords","titleHasNumber","hasContentAI"],"hasRedirection":true,"hasBreadcrumb":false},"homeUrl":"https:\/\/www.proaladdin.com\/ar\/","objectID":8819,"objectType":"post","locale":"ar","localeFull":"ar","overlayImages":{"play":{"name":"\u0623\u064a\u0642\u0648\u0646\u0629 \u0627\u0644\u062a\u0634\u063a\u064a\u0644","url":"https:\/\/www.proaladdin.com\/wp-content\/plugins\/seo-by-rank-math\/assets\/admin\/img\/icon-play.png","path":"\/home\/proafgpc\/public_html\/wp-content\/plugins\/seo-by-rank-math\/assets\/admin\/img\/icon-play.png","position":"middle_center"},"gif":{"name":"\u0623\u064a\u0642\u0648\u0646\u0629 GIF","url":"https:\/\/www.proaladdin.com\/wp-content\/plugins\/seo-by-rank-math\/assets\/admin\/img\/icon-gif.png","path":"\/home\/proafgpc\/public_html\/wp-content\/plugins\/seo-by-rank-math\/assets\/admin\/img\/icon-gif.png","position":"middle_center"}},"defautOgImage":"https:\/\/www.proaladdin.com\/wp-content\/plugins\/seo-by-rank-math\/assets\/admin\/img\/social-placeholder.jpg","customPermalinks":true,"isUserRegistered":true,"autoSuggestKeywords":true,"connectSiteUrl":"https:\/\/rankmath.com\/auth?site=https%3A%2F%2Fwww.proaladdin.com%2Far%2F&r=https%3A%2F%2Fwww.proaladdin.com%2Far%2Fwp-json%2Fwp%2Fv2%2Fpages%2F8819%3Fnonce%3D4ff1fc6361","maxTags":5,"trendsIcon":"<svg viewBox=\"0 0 610 610\"><path d=\"M18.85,446,174.32,290.48l58.08,58.08L76.93,504a14.54,14.54,0,0,1-20.55,0L18.83,466.48a14.54,14.54,0,0,1,0-20.55Z\" style=\"fill:#4285f4\"\/><path d=\"M242.65,242.66,377.59,377.6l-47.75,47.75a14.54,14.54,0,0,1-20.55,0L174.37,290.43l47.75-47.75A14.52,14.52,0,0,1,242.65,242.66Z\" style=\"fill:#ea4335\"\/><polygon points=\"319.53 319.53 479.26 159.8 537.34 217.88 377.61 377.62 319.53 319.53\" style=\"fill:#fabb05\"\/><path d=\"M594.26,262.73V118.61h0a16.94,16.94,0,0,0-16.94-16.94H433.2a16.94,16.94,0,0,0-12,28.92L565.34,274.71h0a16.94,16.94,0,0,0,28.92-12Z\" style=\"fill:#34a853\"\/><rect width=\"610\" height=\"610\" style=\"fill:none\"\/><\/svg>","showScore":true,"siteFavIcon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8\/9hAAABs0lEQVR4AWL4\/\/8\/RRjO8Iucx+noO0MWUDo16FYABMGP6ZfUcRnWtm27jVPbtm3bttuH2t3eFPcY9pLz7NxiLjCyVd87pKnHyqXyxtCs8APd0rnyxiu4qSeA3QEDrAwBDrT1s1Rc\/OrjLZwqVmOSu6+Lamcpp2KKMA9PH1BYXMe1mUP5qotvXTywsOEEYHXxrY+3cqk6TMkYpNr2FeoY3KIr0RPtn9wQ2unlA+GMkRw6+9TFw4YTwDUzx\/JVvARj9KaedXRO8P5B1Du2S32smzqUrcKGEyA+uAgQjKX7zf0boWHGfn71jIKj2689gxp7OAGShNcBUmLMPVjZuiKcA2vuWHHDCQxMCz629kXAIU4ApY15QwggAFbfOP9DhgBJ+nWVJ1AZAfICAj1pAlY6hCADZnveQf7bQIwzVONGJonhLIlS9gr5mFg44Xd+4S3XHoGNPdJl1INIwKyEgHckEhgTe1bGiFY9GSFBYUwLh1IkiJUbY407E7syBSFxKTszEoiE\/YdrgCEayDmtaJwCI9uu8TKMuZSVfSa4BpGgzvomBR\/INhLGzrqDotp01ZR8pn\/1L0JN9d9XNyx0AAAAAElFTkSuQmCC","canUser":{"general":false,"advanced":false,"snippet":false,"social":false,"analysis":false,"analytics":false,"content_ai":false},"isPro":false,"is_front_page":false,"trendsUpgradeLink":"https:\/\/rankmath.com\/pricing\/?utm_source=Plugin&utm_medium=CE%20General%20Tab%20Trends&utm_campaign=WP","trendsUpgradeLabel":"\u062a\u0631\u0642\u064a\u0629","trendsPreviewImage":"https:\/\/www.proaladdin.com\/wp-content\/plugins\/seo-by-rank-math\/assets\/admin\/img\/trends-preview.jpg","currentEditor":false,"homepageData":{"assessor":{"powerWords":[],"diacritics":true,"researchesTests":["contentHasTOC","contentHasShortParagraphs","contentHasAssets","keywordInTitle","keywordInMetaDescription","keywordInPermalink","keywordIn10Percent","keywordInContent","keywordInSubheadings","keywordInImageAlt","keywordDensity","keywordNotUsed","lengthContent","lengthPermalink","linksHasInternal","linksHasExternals","linksNotAllExternals","titleStartWithKeyword","titleSentiment","titleHasPowerWords","titleHasNumber","hasContentAI"],"hasBreadcrumb":false,"serpData":{"title":"%sitename% %page% %sep% %sitedesc%","description":"","titleTemplate":"%sitename% %page% %sep% %sitedesc%","descriptionTemplate":"","focusKeywords":"","breadcrumbTitle":"Home","robots":{"index":true},"advancedRobots":{"max-snippet":"-1","max-video-preview":"-1","max-image-preview":"large"},"facebookTitle":"","facebookDescription":"","facebookImage":"","facebookImageID":""}}},"tocTitle":"Table of Contents","tocExcludeHeadings":[],"listStyle":"ul"},"acf":[],"_links":{"self":[{"href":"https:\/\/www.proaladdin.com\/ar\/wp-json\/wp\/v2\/pages\/8819","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.proaladdin.com\/ar\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.proaladdin.com\/ar\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.proaladdin.com\/ar\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.proaladdin.com\/ar\/wp-json\/wp\/v2\/comments?post=8819"}],"version-history":[{"count":90,"href":"https:\/\/www.proaladdin.com\/ar\/wp-json\/wp\/v2\/pages\/8819\/revisions"}],"predecessor-version":[{"id":8995,"href":"https:\/\/www.proaladdin.com\/ar\/wp-json\/wp\/v2\/pages\/8819\/revisions\/8995"}],"wp:attachment":[{"href":"https:\/\/www.proaladdin.com\/ar\/wp-json\/wp\/v2\/media?parent=8819"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}