<style id="ezmedq-app-nav-wordpress-safety-style">
@media (max-width: 767px) {

    /*
     * Safety styling for the app-owned professional fallback.
     * These selectors do nothing in Safari/Chrome because this wrapper is
     * created only by the Flutter app.
     */
    #ezmedq-persistent-bottom-nav[data-source="professional-fallback"],
    #ezmedq-persistent-bottom-nav[data-source="wordpress-professional-fallback"] {
        position: fixed !important;
        left: 0 !important;
        right: 0 !important;
        bottom: 0 !important;
        width: 100% !important;
        z-index: 2147483000 !important;
        background: #ffffff !important;
        border-top: 1px solid rgba(10,46,92,.08) !important;
        box-shadow: 0 -6px 20px rgba(10,46,92,.08) !important;
        padding: 7px 8px 8px !important;
        box-sizing: border-box !important;
    }

    #ezmedq-persistent-bottom-nav .ezmedq-v10-fallback-inner {
        display: grid !important;
        grid-template-columns: repeat(5, minmax(0,1fr)) !important;
        align-items: stretch !important;
        gap: 2px !important;
        width: 100% !important;
        margin: 0 !important;
        padding: 0 !important;
    }

    #ezmedq-persistent-bottom-nav .ezmedq-v10-nav-item {
        appearance: none !important;
        -webkit-appearance: none !important;
        border: 0 !important;
        background: transparent !important;
        color: #404854 !important;
        text-decoration: none !important;
        display: flex !important;
        flex-direction: column !important;
        align-items: center !important;
        justify-content: center !important;
        gap: 4px !important;
        min-height: 58px !important;
        padding: 4px 2px !important;
        font: inherit !important;
        font-size: 11px !important;
        line-height: 1.1 !important;
        text-align: center !important;
        cursor: pointer !important;
    }

    #ezmedq-persistent-bottom-nav .ezmedq-v10-nav-icon {
        width: 30px !important;
        height: 30px !important;
        border-radius: 15px !important;
        display: flex !important;
        align-items: center !important;
        justify-content: center !important;
        color: currentColor !important;
    }

    #ezmedq-persistent-bottom-nav .ezmedq-v10-nav-item[data-active="1"],
    #ezmedq-persistent-bottom-nav [data-ezmedq-v10-current="1"] {
        color: #0A2E5C !important;
        font-weight: 700 !important;
    }

    #ezmedq-persistent-bottom-nav .ezmedq-v10-nav-item[data-active="1"] .ezmedq-v10-nav-icon {
        background: #E8F2FC !important;
    }

    html.ezmedq-has-persistent-nav body {
        padding-bottom: 82px !important;
    }

    /*
     * Payment flow remains clean: no bottom nav during checkout, CliQ upload,
     * PayPal return/confirmation, or activation/success screens.
     */
    html.ezmedq-payment-flow #ezmedq-persistent-bottom-nav {
        display: none !important;
        visibility: hidden !important;
        opacity: 0 !important;
        pointer-events: none !important;
        width: 0 !important;
        height: 0 !important;
        min-width: 0 !important;
        min-height: 0 !important;
        max-width: 0 !important;
        max-height: 0 !important;
        margin: 0 !important;
        padding: 0 !important;
        overflow: hidden !important;
    }

    html.ezmedq-payment-flow body {
        padding-bottom: 0 !important;
    }
}
</style>
<script id="ezmedq-app-nav-cache-reset">
(function () {
    'use strict';

    /*
     * The current Flutter app stores a clone of whatever website bottom nav it
     * last found under this key. On some iPhone-only pages that cloned markup
     * loses its original CSS and appears as the raw ugly list.
     *
     * Clear ONLY that app-owned cache before Flutter runs its onPageFinished
     * navigation injection. Then Flutter's own code uses its built-in
     * "professional-fallback" bar whenever no real website/Tutor nav exists.
     */
    try {
        localStorage.removeItem('ezmedq.websiteBottomNavHTML.v10');
    } catch (e) {}
})();
</script>
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="https://ezmedq.com/wp-sitemap-index.xsl" ?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><sitemap><loc>https://ezmedq.com/wp-sitemap-posts-page-1.xml</loc></sitemap><sitemap><loc>https://ezmedq.com/wp-sitemap-posts-courses-1.xml</loc></sitemap><sitemap><loc>https://ezmedq.com/wp-sitemap-posts-lesson-1.xml</loc></sitemap><sitemap><loc>https://ezmedq.com/wp-sitemap-taxonomies-course-category-1.xml</loc></sitemap><sitemap><loc>https://ezmedq.com/wp-sitemap-users-1.xml</loc></sitemap></sitemapindex>

<script id="ezmedq-app-mobile-navigation-bridge">
(function () {
    'use strict';

    const STORAGE_KEY = 'ezmedq.websiteBottomNavHTML.v10';

    function normalize(value) {
        return (value || '')
            .toString()
            .replace(/\s+/g, ' ')
            .trim()
            .toLowerCase();
    }

    function isPhone() {
        const vw = window.innerWidth || 9999;
        const sw = (window.screen && window.screen.width) || 9999;
        return Math.min(vw, sw) <= 767;
    }

    function currentSection() {
        const path = (window.location.pathname || '').toLowerCase();

        if (path.includes('flashcard')) return 'flashcards';
        if (path.includes('study-deck') || path.includes('study_deck')) return 'study decks';
        if (path.includes('course')) return 'courses';
        if (path.includes('profile') || path.includes('account')) return 'profile';
        if (path.includes('dashboard')) return 'dashboard';

        return 'home';
    }

    function icon(name) {
        const start = '<svg viewBox="0 0 24 24" width="22" height="22" fill="none" stroke="currentColor" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">';

        if (name === 'dashboard') {
            return start +
                '<rect x="3" y="3" width="7" height="7" rx="1"/>' +
                '<rect x="14" y="3" width="7" height="7" rx="1"/>' +
                '<rect x="3" y="14" width="7" height="7" rx="1"/>' +
                '<rect x="14" y="14" width="7" height="7" rx="1"/>' +
                '</svg>';
        }

        if (name === 'courses') {
            return start +
                '<path d="M3 7l9-4 9 4-9 4-9-4Z"/>' +
                '<path d="M5 9.5V15l7 4 7-4V9.5"/>' +
                '</svg>';
        }

        if (name === 'flashcards') {
            return start +
                '<rect x="6" y="4" width="12" height="16" rx="2"/>' +
                '<path d="M9 8h6M9 12h4"/>' +
                '<path d="M4 7v10"/>' +
                '</svg>';
        }

        if (name === 'study decks') {
            return start +
                '<rect x="5" y="5" width="14" height="14" rx="2"/>' +
                '<path d="M8 9h8M8 13h8M8 17h5"/>' +
                '<path d="M8 2h11a2 2 0 0 1 2 2v12"/>' +
                '</svg>';
        }

        return start +
            '<circle cx="5" cy="12" r="1" fill="currentColor" stroke="none"/>' +
            '<circle cx="12" cy="12" r="1" fill="currentColor" stroke="none"/>' +
            '<circle cx="19" cy="12" r="1" fill="currentColor" stroke="none"/>' +
            '</svg>';
    }

    function fallbackMarkup() {
        const active = currentSection();

        function item(key, label, href) {
            return (
                '<a class="ezmedq-v10-nav-item" ' +
                    'data-active="' + (active === key ? '1' : '0') + '" ' +
                    'href="' + href + '">' +
                    '<span class="ezmedq-v10-nav-icon">' + icon(key) + '</span>' +
                    '<span>' + label + '</span>' +
                '</a>'
            );
        }

        return (
            '<div class="ezmedq-v10-fallback-inner" data-ezmedq-v10-fallback="1">' +
                item('dashboard', 'Dashboard', 'https://ezmedq.com/dashboard-page/') +
                item('courses', 'Courses', 'https://ezmedq.com/courses/') +
                item('flashcards', 'Flashcards', 'https://ezmedq.com/flashcards/') +
                item('study decks', 'Study Decks', 'https://ezmedq.com/study-decks/') +
                '<button type="button" class="ezmedq-v10-nav-item" data-ezmedq-v10-more="1" data-active="0">' +
                    '<span class="ezmedq-v10-nav-icon">' + icon('more') + '</span>' +
                    '<span>More</span>' +
                '</button>' +
            '</div>'
        );
    }

    function isPaymentFlow() {
        if (!document.body) return false;

        const text = normalize(
            document.body.innerText ||
            document.body.textContent ||
            ''
        );

        const path = (window.location.pathname || '').toLowerCase();

        const hasEzMedQ =
            text.includes('ezmedq') ||
            text.includes('back to ezmedq');

        const checkout =
            text.includes('ezmedq secure checkout') &&
            text.includes('choose payment method');

        const cliq =
            hasEzMedQ &&
            text.includes('cliq') &&
            (
                text.includes('payment proof') ||
                text.includes('upload') ||
                text.includes('transfer')
            );

        const confirmation =
            hasEzMedQ &&
            (
                text.includes('payment successful') ||
                text.includes('payment success') ||
                text.includes('payment confirmed') ||
                text.includes('payment completed') ||
                text.includes('payment complete') ||
                text.includes('thank you for your payment') ||
                text.includes('order received') ||
                text.includes('order complete') ||
                text.includes('access activated') ||
                text.includes('successfully activated') ||
                text.includes('payment confirmation') ||
                text.includes('upload proof')
            );

        const pathHint =
            path.includes('confirmation') ||
            path.includes('payment-success') ||
            path.includes('payment_success') ||
            path.includes('thank-you') ||
            path.includes('thank_you') ||
            path.includes('order-received') ||
            path.includes('order_received') ||
            path.includes('paypal');

        return checkout || cliq || confirmation || (hasEzMedQ && pathHint);
    }

    function clearBadCloneCache() {
        try {
            localStorage.removeItem(STORAGE_KEY);
        } catch (e) {}
    }

    function repairInjectedNavigation() {
        if (!isPhone()) return;

        clearBadCloneCache();

        const payment = isPaymentFlow();
        document.documentElement.classList.toggle('ezmedq-payment-flow', payment);

        const nav = document.getElementById('ezmedq-persistent-bottom-nav');

        /*
         * IMPORTANT:
         * If no injected nav exists, the current app has most likely detected
         * a real website/Tutor bottom bar. Leave that native website bar alone.
         */
        if (!nav) {
            return;
        }

        if (payment) {
            nav.style.setProperty('display', 'none', 'important');
            nav.style.setProperty('visibility', 'hidden', 'important');
            nav.style.setProperty('height', '0', 'important');
            nav.style.setProperty('margin', '0', 'important');
            nav.style.setProperty('padding', '0', 'important');
            nav.setAttribute('aria-hidden', 'true');

            document.documentElement.classList.remove('ezmedq-has-persistent-nav');

            if (document.body) {
                document.body.style.setProperty('padding-bottom', '0', 'important');
            }

            return;
        }

        /*
         * The bug shown on iPhone is specifically the cached "website-clone":
         * the HTML survives, but its original website CSS does not on that page.
         *
         * Replace ONLY the broken clone with the app's own professional fallback.
         * We do NOT touch a real Tutor/site bottom menu because in that case the
         * app does not create this injected wrapper at all.
         */
        const source = nav.getAttribute('data-source') || '';

        if (
            source === 'website-clone' ||
            !nav.querySelector('.ezmedq-v10-fallback-inner')
        ) {
            nav.innerHTML = fallbackMarkup();
            nav.setAttribute('data-source', 'wordpress-professional-fallback');
        }

        nav.removeAttribute('aria-hidden');
        nav.style.removeProperty('display');
        nav.style.removeProperty('visibility');
        nav.style.removeProperty('height');
        nav.style.removeProperty('margin');
        nav.style.removeProperty('padding');

        document.documentElement.classList.add('ezmedq-has-persistent-nav');
    }

    /*
     * Clear the app's stale clone cache immediately, then keep watching because
     * Flutter injects/re-evaluates the bottom nav after onPageFinished and from
     * its own MutationObserver.
     */
    clearBadCloneCache();

    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', repairInjectedNavigation);
    } else {
        repairInjectedNavigation();
    }

    let queued = false;

    const observer = new MutationObserver(function () {
        if (queued) return;

        queued = true;

        requestAnimationFrame(function () {
            queued = false;
            repairInjectedNavigation();
        });
    });

    observer.observe(document.documentElement, {
        childList: true,
        subtree: true
    });

    window.addEventListener('pageshow', repairInjectedNavigation);
    window.addEventListener('resize', repairInjectedNavigation);

    document.addEventListener('visibilitychange', function () {
        if (!document.hidden) {
            repairInjectedNavigation();
        }
    });

    [0,50,120,250,500,900,1500,2500,4000,7000].forEach(function (ms) {
        setTimeout(repairInjectedNavigation, ms);
    });
})();
</script>