{"id":4049,"date":"2026-06-11T14:45:28","date_gmt":"2026-06-11T11:45:28","guid":{"rendered":"https:\/\/www.transtoyou.com\/nl\/?page_id=4049"},"modified":"2026-06-11T14:45:28","modified_gmt":"2026-06-11T11:45:28","slug":"video-consultatie","status":"publish","type":"page","link":"https:\/\/www.transtoyou.com\/nl\/video-consultatie\/","title":{"rendered":"Videoconsult"},"content":{"rendered":"\n<div class=\"tty-cl-landing\"\n     id=\"tty-cl-landing\"\n     data-preselected-kind=\"\"\n     data-preselected-discipline=\"\">\n    \n        \n    <!-- Hero -->\n    <div class=\"tty-cl-hero\">\n        <h2 class=\"tty-cl-hero-title\">Boek je videoconsult<\/h2>\n        <p class=\"tty-cl-hero-subtitle\">Kies je consult, selecteer je arts en tijd, allemaal vanuit huis en volledig veilig.<\/p>\n        \n        <div class=\"tty-cl-hero-trust\">\n            <span><i class=\"fa-duotone fa-check\"><\/i> Artsen met EU- en VK-registratie<\/span>\n            <span><i class=\"fa-duotone fa-check\"><\/i> Veilige en priv\u00e9video<\/span>\n            <span><i class=\"fa-duotone fa-check\"><\/i> Recept indien medisch passend<\/span>\n            <span><i class=\"fa-duotone fa-check\"><\/i> Werkt op elk apparaat<\/span>\n        <\/div>\n    <\/div>\n    \n    <div class=\"tty-cl-layout\">\n        <div class=\"tty-cl-main\">\n    \n    <!-- Stepper: progress indicator; completed steps are clickable to go back -->\n    <div class=\"tty-cl-stepper\" id=\"tty-cl-stepper\">\n        <button type=\"button\" class=\"tty-cl-stepper-item is-current\" data-goto=\"kind\" disabled>\n            <span class=\"tty-cl-stepper-num\"><span class=\"tty-cl-stepper-digit\">1<\/span><i class=\"fa-duotone fa-check\"><\/i><\/span>\n            <span class=\"tty-cl-stepper-body\">\n                <span class=\"tty-cl-stepper-label\">Consult<\/span>\n                <span class=\"tty-cl-stepper-value\"><\/span>\n            <\/span>\n        <\/button>\n        <span class=\"tty-cl-stepper-sep\"><\/span>\n        <button type=\"button\" class=\"tty-cl-stepper-item is-upcoming\" data-goto=\"discipline\" disabled>\n            <span class=\"tty-cl-stepper-num\"><span class=\"tty-cl-stepper-digit\">2<\/span><i class=\"fa-duotone fa-check\"><\/i><\/span>\n            <span class=\"tty-cl-stepper-body\">\n                <span class=\"tty-cl-stepper-label\">Zorggebied<\/span>\n                <span class=\"tty-cl-stepper-value\"><\/span>\n            <\/span>\n        <\/button>\n        <span class=\"tty-cl-stepper-sep\"><\/span>\n        <button type=\"button\" class=\"tty-cl-stepper-item is-upcoming\" data-goto=\"booking\" disabled>\n            <span class=\"tty-cl-stepper-num\"><span class=\"tty-cl-stepper-digit\">3<\/span><i class=\"fa-duotone fa-check\"><\/i><\/span>\n            <span class=\"tty-cl-stepper-body\">\n                <span class=\"tty-cl-stepper-label\">Arts en tijd<\/span>\n                <span class=\"tty-cl-stepper-value\"><\/span>\n            <\/span>\n        <\/button>\n    <\/div>\n    \n    <!-- Delivery country: doctors and medication availability are matched to it -->\n        <div class=\"tty-cl-delivery tty-cl-delivery-warning\">\n        <i class=\"fa-duotone fa-triangle-exclamation tty-cl-delivery-warnicon\"><\/i>\n        <span class=\"tty-cl-delivery-text\">\n            <strong>Selecteer je afleverland<\/strong>\n            <span>Artsen en de beschikbaarheid van medicatie worden afgestemd op dit land.<\/span>\n        <\/span>\n        <button type=\"button\" class=\"tty-cl-change-country\"><i class=\"fa-duotone fa-globe\"><\/i> Selecteer land<\/button>\n    <\/div>\n        \n    <!-- Step 1: Kind -->\n    <div class=\"tty-cl-step\" id=\"tty-cl-step-kind\" data-step=\"kind\">\n        <div class=\"tty-cl-step-head\">\n            <h3 class=\"tty-cl-step-title\">\n                <span class=\"tty-cl-step-icon\"><i class=\"fa-duotone fa-hand-pointer\"><\/i><\/span>\n                Welke soort consult heb je nodig?            <\/h3>\n            <a href=\"#tty-cl-faq\" class=\"tty-cl-faq-link\">\n                <i class=\"fa-duotone fa-circle-question\"><\/i>\n                Veelgestelde vragen            <\/a>\n        <\/div>\n        \n        <div class=\"tty-cl-kind-grid\">\n            <button type=\"button\" class=\"tty-cl-kind-card\" data-kind=\"intake\">\n                <span class=\"tty-cl-kind-icon\"><i class=\"fa-duotone fa-video\"><\/i><\/span>\n                <span class=\"tty-cl-kind-name\">Videoconsult<\/span>\n                <span class=\"tty-cl-kind-desc\">Je eerste intakeconsult met een van onze artsen.<\/span>\n                                <span class=\"tty-cl-kind-meta\">\n                    <span class=\"tty-cl-kind-price\">vanaf <span class=\"woocommerce-Price-amount amount\"><span class=\"woocommerce-Price-currencySymbol\">\u20ac<\/span>&nbsp;45,00<\/span><\/span>\n                                        <span class=\"tty-cl-kind-duration\"><i class=\"fa-duotone fa-clock\"><\/i> 45 min<\/span>\n                                    <\/span>\n                                <span class=\"tty-cl-card-cta\">Selecteer <i class=\"fa-duotone fa-arrow-right\"><\/i><\/span>\n            <\/button>\n            \n            <button type=\"button\" class=\"tty-cl-kind-card\" data-kind=\"followup\">\n                <span class=\"tty-cl-kind-icon\"><i class=\"fa-duotone fa-calendar-check\"><\/i><\/span>\n                <span class=\"tty-cl-kind-name\">Vervolgvideoconsult<\/span>\n                <span class=\"tty-cl-kind-desc\">Voor pati\u00ebnten met een geldig intakeconsult, tegen een lager tarief.<\/span>\n                                <span class=\"tty-cl-kind-meta\">\n                    <span class=\"tty-cl-kind-price\">vanaf <span class=\"woocommerce-Price-amount amount\"><span class=\"woocommerce-Price-currencySymbol\">\u20ac<\/span>&nbsp;50,00<\/span><\/span>\n                                        <span class=\"tty-cl-kind-duration\"><i class=\"fa-duotone fa-clock\"><\/i> 45 min<\/span>\n                                                            <span class=\"tty-cl-discount-badge\">-10%<\/span>\n                                    <\/span>\n                                <span class=\"tty-cl-kind-validity\">Binnen 12 maanden na je intakeconsult.<\/span>\n                                                <span class=\"tty-cl-card-cta\">Selecteer <i class=\"fa-duotone fa-arrow-right\"><\/i><\/span>\n            <\/button>\n        <\/div>\n    <\/div>\n    \n    <!-- Step 2: Discipline -->\n    <div class=\"tty-cl-step\" id=\"tty-cl-step-discipline\" data-step=\"discipline\" style=\"display:none;\">\n        <h3 class=\"tty-cl-step-title\">\n            <span class=\"tty-cl-step-icon\"><i class=\"fa-duotone fa-stethoscope\"><\/i><\/span>\n            Kies je zorggebied        <\/h3>\n        \n        <div class=\"tty-cl-discipline-grid\">\n                        <button type=\"button\" class=\"tty-cl-discipline-card\" data-discipline=\"weight-loss\">\n                <span class=\"tty-cl-discipline-icon\"><i class=\"fa-duotone fa-stethoscope\"><\/i><\/span>\n                <span class=\"tty-cl-discipline-name\">Gewichtsverlies<\/span>\n                <i class=\"fa-duotone fa-chevron-right tty-cl-discipline-chevron\"><\/i>\n            <\/button>\n                        <button type=\"button\" class=\"tty-cl-discipline-card\" data-discipline=\"transgender-care\">\n                <span class=\"tty-cl-discipline-icon\"><i class=\"fa-duotone fa-stethoscope\"><\/i><\/span>\n                <span class=\"tty-cl-discipline-name\">Transgenderzorg<\/span>\n                <i class=\"fa-duotone fa-chevron-right tty-cl-discipline-chevron\"><\/i>\n            <\/button>\n                    <\/div>\n    <\/div>\n    \n    <!-- Step 3: Booking panels (one per discipline x kind; revealed client-side) -->\n    <div class=\"tty-cl-step\" id=\"tty-cl-step-booking\" data-step=\"booking\" style=\"display:none;\">\n        <h3 class=\"tty-cl-step-title\">\n            <span class=\"tty-cl-step-icon\"><i class=\"fa-duotone fa-calendar-check\"><\/i><\/span>\n            Boek je consult        <\/h3>\n        \n                <div class=\"tty-cl-panel\" data-panel=\"weight-loss:intake\" style=\"display:none;\">\n            \n            <!-- Panel header: what is being booked -->\n            <div class=\"tty-cl-panel-header\">\n                <div class=\"tty-cl-panel-titles\">\n                    <h4 class=\"tty-cl-panel-title\">Gewichtsverlies<\/h4>\n                    <span class=\"tty-cl-panel-discipline\"><i class=\"fa-duotone fa-stethoscope\"><\/i> Gewichtsverlies<\/span>\n                <\/div>\n                <div class=\"tty-cl-panel-pricing\">\n                                                            <span class=\"tty-cl-price\"><span class=\"woocommerce-Price-amount amount\"><span class=\"woocommerce-Price-currencySymbol\">\u20ac<\/span>&nbsp;50,00<\/span><\/span>\n                                                            <span class=\"tty-cl-duration\"><i class=\"fa-duotone fa-stopwatch\"><\/i> 45 min<\/span>\n                                    <\/div>\n            <\/div>\n            \n                        \n            <div class=\"tty-cl-panel-locked\">\n                <i class=\"fa-duotone fa-user-doctor\"><\/i>\n                <p>Er zijn momenteel geen artsen beschikbaar voor dit consult. Probeer het later opnieuw.<\/p>\n            <\/div>\n            \n                    <\/div>\n                <div class=\"tty-cl-panel\" data-panel=\"transgender-care:intake\" style=\"display:none;\">\n            \n            <!-- Panel header: what is being booked -->\n            <div class=\"tty-cl-panel-header\">\n                <div class=\"tty-cl-panel-titles\">\n                    <h4 class=\"tty-cl-panel-title\">Transgenderzorg<\/h4>\n                    <span class=\"tty-cl-panel-discipline\"><i class=\"fa-duotone fa-stethoscope\"><\/i> Transgenderzorg<\/span>\n                <\/div>\n                <div class=\"tty-cl-panel-pricing\">\n                                                            <span class=\"tty-cl-price\"><span class=\"woocommerce-Price-amount amount\"><span class=\"woocommerce-Price-currencySymbol\">\u20ac<\/span>&nbsp;45,00<\/span><\/span>\n                                                            <span class=\"tty-cl-duration\"><i class=\"fa-duotone fa-stopwatch\"><\/i> 45 min<\/span>\n                                    <\/div>\n            <\/div>\n            \n                        \n            <!-- Doctor selection -->\n            <div class=\"tty-cl-substep tty-cl-substep-doctor\">\n                <h5 class=\"tty-cl-substep-title\">Selecteer je arts<\/h5>\n                \n                                <div class=\"tty-cl-doctor-filters\">\n                    <label class=\"tty-cl-filter\">\n                        <span class=\"tty-cl-filter-label\"><i class=\"fa-duotone fa-language\"><\/i> Taal:<\/span>\n                        <select class=\"tty-cl-language-filter\">\n                            <option value=\"all\">Alle talen<\/option>\n                                                        <option value=\"de\" >Deutsch<\/option>\n                                                        <option value=\"en\" >English<\/option>\n                                                        <option value=\"es\" >Espa\u00f1ol<\/option>\n                                                        <option value=\"ro\" >Rom\u00e2n\u0103<\/option>\n                                                        <option value=\"ru\" >\u0420\u0443\u0441\u0441\u043a\u0438\u0439<\/option>\n                                                    <\/select>\n                    <\/label>\n                <\/div>\n                                \n                <div class=\"tty-cl-doctors-grid\">\n                                                            <label class=\"tty-cl-doctor-option\"\n                           data-countries=\"\"\n                           data-languages=\"en,ro\">\n                        <input type=\"radio\" name=\"tty_cl_doctor_transgender-care:intake\" value=\"35\">\n                        <span class=\"tty-cl-doctor-inner\">\n                            <img decoding=\"async\" src=\"https:\/\/www.transtoyou.com\/nl\/wp-content\/uploads\/dr-c-alexandru-expert.webp\" alt=\"\" class=\"tty-cl-doctor-avatar\" loading=\"lazy\">\n                            <span class=\"tty-cl-doctor-meta\">\n                                <strong class=\"tty-cl-doctor-name\">Dr. C. Alexandru<\/strong>\n                                <span class=\"tty-cl-doctor-specialty\">General Medicine Doctor<\/span>\n                                                                <span class=\"tty-cl-doctor-langs\"><i class=\"fa-duotone fa-language\"><\/i> English, Rom\u00e2n\u0103<\/span>\n                                                            <\/span>\n                        <\/span>\n                    <\/label>\n                                                            <label class=\"tty-cl-doctor-option\"\n                           data-countries=\"\"\n                           data-languages=\"en,es\">\n                        <input type=\"radio\" name=\"tty_cl_doctor_transgender-care:intake\" value=\"37\">\n                        <span class=\"tty-cl-doctor-inner\">\n                            <img decoding=\"async\" src=\"https:\/\/www.transtoyou.com\/nl\/wp-content\/uploads\/dr-c-munoz-parada.webp\" alt=\"\" class=\"tty-cl-doctor-avatar\" loading=\"lazy\">\n                            <span class=\"tty-cl-doctor-meta\">\n                                <strong class=\"tty-cl-doctor-name\">Dr. C. Mu\u00f1oz Parada<\/strong>\n                                <span class=\"tty-cl-doctor-specialty\">General Medicine Doctor<\/span>\n                                                                <span class=\"tty-cl-doctor-langs\"><i class=\"fa-duotone fa-language\"><\/i> English, Espa\u00f1ol<\/span>\n                                                            <\/span>\n                        <\/span>\n                    <\/label>\n                                                            <label class=\"tty-cl-doctor-option\"\n                           data-countries=\"\"\n                           data-languages=\"en,de,ru\">\n                        <input type=\"radio\" name=\"tty_cl_doctor_transgender-care:intake\" value=\"36\">\n                        <span class=\"tty-cl-doctor-inner\">\n                            <img decoding=\"async\" src=\"https:\/\/www.transtoyou.com\/nl\/wp-content\/uploads\/dr-m-sharoyko-picture-min.png\" alt=\"\" class=\"tty-cl-doctor-avatar\" loading=\"lazy\">\n                            <span class=\"tty-cl-doctor-meta\">\n                                <strong class=\"tty-cl-doctor-name\">Dr. M. Sharoyko<\/strong>\n                                <span class=\"tty-cl-doctor-specialty\">Internal Medicine Physician<\/span>\n                                                                <span class=\"tty-cl-doctor-langs\"><i class=\"fa-duotone fa-language\"><\/i> English, Deutsch, \u0420\u0443\u0441\u0441\u043a\u0438\u0439<\/span>\n                                                            <\/span>\n                        <\/span>\n                    <\/label>\n                                    <\/div>\n                \n                <div class=\"tty-cl-no-doctors-match\" style=\"display:none;\">\n                                        <p>Selecteer je bezorgland om beschikbare artsen te zien.<\/p>\n                                        <button type=\"button\" class=\"tty-cl-change-country\"><i class=\"fa-duotone fa-globe\"><\/i> Afleverland wijzigen<\/button>\n                <\/div>\n            <\/div>\n            \n            <!-- Date selection -->\n            <div class=\"tty-cl-substep tty-cl-substep-date\" style=\"display:none;\">\n                <h5 class=\"tty-cl-substep-title\">Selecteer een datum<\/h5>\n                <div class=\"tty-cl-loading\" style=\"display:none;\"><span class=\"tty-meet-spinner\"><\/span> Beschikbare data laden...<\/div>\n                <div class=\"tty-cl-dates-container\"><\/div>\n            <\/div>\n            \n            <!-- Time selection -->\n            <div class=\"tty-cl-substep tty-cl-substep-time\" style=\"display:none;\">\n                <h5 class=\"tty-cl-substep-title\">Selecteer een tijd<\/h5>\n                <div class=\"tty-cl-loading\" style=\"display:none;\"><span class=\"tty-meet-spinner\"><\/span> Beschikbare tijden laden...<\/div>\n                <div class=\"tty-cl-times-container\"><\/div>\n            <\/div>\n            \n            <!-- Confirm: hands over to WooCommerce checkout with the booking data -->\n            <div class=\"tty-cl-substep tty-cl-substep-confirm\" style=\"display:none;\">\n                <h5 class=\"tty-cl-substep-title\">Bevestig je boeking<\/h5>\n                \n                <div class=\"tty-cl-summary\">\n                    <div class=\"tty-cl-summary-item\"><span>Consult:<\/span> <strong>Transgenderzorg<\/strong><\/div>\n                    <div class=\"tty-cl-summary-item\"><span>Arts:<\/span> <strong class=\"tty-cl-summary-doctor\"><\/strong><\/div>\n                    <div class=\"tty-cl-summary-item\"><span>Datum:<\/span> <strong class=\"tty-cl-summary-date\"><\/strong><\/div>\n                    <div class=\"tty-cl-summary-item\"><span>Tijd:<\/span> <strong class=\"tty-cl-summary-time\"><\/strong><\/div>\n                    <div class=\"tty-cl-summary-item\"><span>Afleverland:<\/span> <strong class=\"tty-cl-summary-country\">\n                                                                    <\/strong><\/div>\n                <\/div>\n                \n                <!-- How it works: sets expectations before payment (v1.3.3) -->\n                <div class=\"tty-cl-howto\">\n                    <h6 class=\"tty-cl-howto-title\"><i class=\"fa-duotone fa-circle-info\"><\/i> Hoe het werkt<\/h6>\n                    <div class=\"tty-cl-howto-steps\">\n                        <div class=\"tty-cl-howto-step\">\n                            <span class=\"tty-cl-howto-icon\"><i class=\"fa-duotone fa-credit-card\"><\/i><\/span>\n                            <span class=\"tty-cl-howto-text\">Boek en betaal veilig online.<\/span>\n                        <\/div>\n                        <div class=\"tty-cl-howto-step\">\n                            <span class=\"tty-cl-howto-icon\"><i class=\"fa-duotone fa-envelope\"><\/i><\/span>\n                            <span class=\"tty-cl-howto-text\">Je ontvangt je persoonlijke videolink per e-mail.<\/span>\n                        <\/div>\n                        <div class=\"tty-cl-howto-step\">\n                            <span class=\"tty-cl-howto-icon\"><i class=\"fa-duotone fa-video\"><\/i><\/span>\n                            <span class=\"tty-cl-howto-text\">Neem deel vanaf elk apparaat, tot 15 minuten voor je afspraak.<\/span>\n                        <\/div>\n                    <\/div>\n                <\/div>\n                \n                                <!-- Document upload: same contract as the product page form\n                     (tty_meet_upload_attachment \/ tty_meet_delete_attachment,\n                     session key handed over via tty_meet_attachment_session) -->\n                <div class=\"tty-meet-upload-section tty-cl-upload\" data-session=\"j4IIjh6XzzTWbKkuVjKh53PBAopdg2iY_1781382226\">\n                    <div class=\"tty-meet-upload-header\">\n                        <label class=\"tty-meet-upload-label\">\n                            <i class=\"fa-duotone fa-file-medical\"><\/i>\n                            Deel documenten met je arts                            <span class=\"tty-meet-optional\">(optioneel)<\/span>\n                        <\/label>\n                        <p class=\"tty-meet-upload-description\">\n                            Upload relevante documenten, zoals bloedtestuitslagen, recepten of medische rapporten, zodat je arts zich kan voorbereiden op het consult.                        <\/p>\n                    <\/div>\n                    \n                    <div class=\"tty-meet-upload-dropzone tty-cl-dropzone\">\n                        <div class=\"tty-meet-dropzone-content\">\n                            <i class=\"fa-duotone fa-cloud-arrow-up\"><\/i>\n                            <p class=\"tty-meet-dropzone-text\">Sleep bestanden hierheen of<\/p>\n                            <button type=\"button\" class=\"tty-meet-btn tty-meet-btn-outline tty-cl-browse-btn\">\n                                <i class=\"fa-duotone fa-folder-open\"><\/i>\n                                Bestanden kiezen                            <\/button>\n                            <p class=\"tty-meet-dropzone-info\">\n                                PDF, JPG, PNG tot 10 MB. Maximaal 5 bestanden.                            <\/p>\n                        <\/div>\n                        <input type=\"file\"\n                               class=\"tty-cl-file-input\"\n                               accept=\".pdf,.jpg,.jpeg,.png,application\/pdf,image\/jpeg,image\/png\"\n                               multiple\n                               style=\"display:none;\">\n                    <\/div>\n                    \n                    <div class=\"tty-meet-upload-type-modal tty-cl-type-modal\" style=\"display:none;\">\n                        <div class=\"tty-meet-type-modal-content\">\n                            <h4>Wat voor document is dit?<\/h4>\n                            <p class=\"tty-meet-type-modal-filename tty-cl-type-filename\"><\/p>\n                            <div class=\"tty-meet-type-options\">\n                                                                <label class=\"tty-meet-type-option\">\n                                    <input type=\"radio\" name=\"tty_cl_file_type_transgender-care:intake\" value=\"blood_results\">\n                                    <span class=\"tty-meet-type-option-label\">Blood Test Results<\/span>\n                                <\/label>\n                                                                <label class=\"tty-meet-type-option\">\n                                    <input type=\"radio\" name=\"tty_cl_file_type_transgender-care:intake\" value=\"prescription\">\n                                    <span class=\"tty-meet-type-option-label\">Prescription<\/span>\n                                <\/label>\n                                                                <label class=\"tty-meet-type-option\">\n                                    <input type=\"radio\" name=\"tty_cl_file_type_transgender-care:intake\" value=\"medical_report\">\n                                    <span class=\"tty-meet-type-option-label\">Medical Report<\/span>\n                                <\/label>\n                                                                <label class=\"tty-meet-type-option\">\n                                    <input type=\"radio\" name=\"tty_cl_file_type_transgender-care:intake\" value=\"referral_letter\">\n                                    <span class=\"tty-meet-type-option-label\">Referral Letter<\/span>\n                                <\/label>\n                                                                <label class=\"tty-meet-type-option\">\n                                    <input type=\"radio\" name=\"tty_cl_file_type_transgender-care:intake\" value=\"lab_results\">\n                                    <span class=\"tty-meet-type-option-label\">Lab Results<\/span>\n                                <\/label>\n                                                                <label class=\"tty-meet-type-option\">\n                                    <input type=\"radio\" name=\"tty_cl_file_type_transgender-care:intake\" value=\"imaging\">\n                                    <span class=\"tty-meet-type-option-label\">Imaging \/ Scans<\/span>\n                                <\/label>\n                                                                <label class=\"tty-meet-type-option\">\n                                    <input type=\"radio\" name=\"tty_cl_file_type_transgender-care:intake\" value=\"other\">\n                                    <span class=\"tty-meet-type-option-label\">Other Document<\/span>\n                                <\/label>\n                                                            <\/div>\n                            <div class=\"tty-meet-type-modal-actions\">\n                                <button type=\"button\" class=\"tty-meet-btn tty-meet-btn-outline tty-cl-type-cancel\">Annuleren<\/button>\n                                <button type=\"button\" class=\"tty-meet-btn tty-meet-btn-primary tty-cl-type-confirm\" disabled>\n                                    <i class=\"fa-duotone fa-upload\"><\/i>\n                                    Uploaden                                <\/button>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                    \n                    <div class=\"tty-meet-uploaded-files tty-cl-uploaded-files\" style=\"display:none;\">\n                        <h4 class=\"tty-meet-uploaded-title\">\n                            <i class=\"fa-duotone fa-paperclip\"><\/i>\n                            Ge\u00fcploade documenten (<span class=\"tty-cl-file-count\">0<\/span>)\n                        <\/h4>\n                        <div class=\"tty-cl-files-list\"><\/div>\n                    <\/div>\n                    \n                    <div class=\"tty-meet-upload-progress tty-cl-upload-progress\" style=\"display:none;\">\n                        <div class=\"tty-meet-progress-bar\"><div class=\"tty-meet-progress-fill tty-cl-progress-fill\" style=\"width:0%;\"><\/div><\/div>\n                    <\/div>\n                    \n                    <div class=\"tty-meet-upload-error tty-cl-upload-error\" style=\"display:none;\"><\/div>\n                <\/div>\n                                \n                <form method=\"post\" action=\"https:\/\/www.transtoyou.com\/nl\/afrekenen\/\" class=\"tty-cl-checkout-form\">\n                    <input type=\"hidden\" name=\"add-to-cart\" value=\"3753\">\n                    <input type=\"hidden\" name=\"quantity\" value=\"1\">\n                    <input type=\"hidden\" name=\"tty_meet_doctor_id\" value=\"\" class=\"tty-cl-field-doctor\">\n                    <input type=\"hidden\" name=\"tty_meet_date\" value=\"\" class=\"tty-cl-field-date\">\n                    <input type=\"hidden\" name=\"tty_meet_time\" value=\"\" class=\"tty-cl-field-time\">\n                                        <input type=\"hidden\" name=\"tty_meet_attachment_session\" value=\"j4IIjh6XzzTWbKkuVjKh53PBAopdg2iY_1781382226\">\n                                        \n                    <div class=\"tty-cl-reason-section\">\n                        <label class=\"tty-cl-reason-label\" for=\"tty-cl-reason-transgender-care:intake\">\n                            <i class=\"fa-duotone fa-message-lines\"><\/i>\n                            Reden voor je consult                            <span class=\"tty-cl-required\" aria-hidden=\"true\">*<\/span>\n                        <\/label>\n                        <p class=\"tty-cl-reason-hint\">Beschrijf kort wat je wilt bespreken, zodat je arts zich kan voorbereiden op het consult.<\/p>\n                        <textarea name=\"tty_meet_reason\" id=\"tty-cl-reason-transgender-care:intake\" class=\"tty-cl-reason\" rows=\"4\" required minlength=\"25\" maxlength=\"250\" placeholder=\"Beschrijf kort wat je wilt bespreken...\"><\/textarea>\n                        <div class=\"tty-cl-reason-counter\"><span class=\"tty-cl-reason-count\">0<\/span> \/ 250 <span class=\"tty-cl-reason-min\">(minimaal 25 tekens)<\/span><\/div>\n                        <div class=\"tty-cl-reason-error\" style=\"display:none;\">Beschrijf de reden voor je consult (minimaal 25 tekens).<\/div>\n                        <p class=\"tty-cl-reason-privacy\"><i class=\"fa-duotone fa-lock\"><\/i> Je beschrijving is alleen zichtbaar voor je arts.<\/p>\n                    <\/div>\n                    \n                    <button type=\"submit\" class=\"tty-cl-btn tty-cl-btn-primary tty-cl-btn-book\">\n                        <i class=\"fa-duotone fa-credit-card\"><\/i>\n                        Boek &amp; betaal                    <\/button>\n                <\/form>\n            <\/div>\n            \n                    <\/div>\n                <div class=\"tty-cl-panel\" data-panel=\"transgender-care:followup\" style=\"display:none;\">\n            \n            <!-- Panel header: what is being booked -->\n            <div class=\"tty-cl-panel-header\">\n                <div class=\"tty-cl-panel-titles\">\n                    <h4 class=\"tty-cl-panel-title\">Follow-up - Transgander Care<\/h4>\n                    <span class=\"tty-cl-panel-discipline\"><i class=\"fa-duotone fa-stethoscope\"><\/i> Transgenderzorg<\/span>\n                <\/div>\n                <div class=\"tty-cl-panel-pricing\">\n                                        <span class=\"tty-cl-discount-badge\">-10%<\/span>\n                                                            <span class=\"tty-cl-price\"><span class=\"woocommerce-Price-amount amount\"><span class=\"woocommerce-Price-currencySymbol\">\u20ac<\/span>&nbsp;50,00<\/span><\/span>\n                                                            <span class=\"tty-cl-duration\"><i class=\"fa-duotone fa-stopwatch\"><\/i> 45 min<\/span>\n                                    <\/div>\n            <\/div>\n            \n                        \n            <div class=\"tty-cl-panel-locked\">\n                <i class=\"fa-duotone fa-lock\"><\/i>\n                <p>\n                    Vervolgconsulten zijn gekoppeld aan je pati\u00ebntenaccount: we controleren of je een geldig intakeconsult hebt.                                            Een intake blijft 12 maanden geldig.                                    <\/p>\n                <a class=\"tty-cl-btn tty-cl-btn-primary\" href=\"https:\/\/www.transtoyou.com\/nl\/wp-login.php?redirect_to=%2Fnl%2Fwp-json%2Fwp%2Fv2%2Fpages%2F4049\">\n                    <i class=\"fa-duotone fa-right-to-bracket\"><\/i>\n                    Log in om je vervolgconsult te boeken                <\/a>\n            <\/div>\n            \n                    <\/div>\n            <\/div>\n    \n        <\/div><!-- \/.tty-cl-main -->\n        \n        <!-- Info rail: sticky on desktop, stacked below the flow on mobile -->\n        <aside class=\"tty-cl-aside\">\n            <div class=\"tty-cl-info-card\">\n                <h4 class=\"tty-cl-info-card-title\"><i class=\"fa-duotone fa-route\"><\/i> Hoe het werkt<\/h4>\n                <div class=\"tty-cl-journey\">\n                    <div class=\"tty-cl-journey-step\">\n                        <span class=\"tty-cl-journey-icon\"><i class=\"fa-duotone fa-hand-pointer\"><\/i><\/span>\n                        <span class=\"tty-cl-journey-body\">\n                            <strong>Kies je consult<\/strong>\n                            <span>Intake of vervolgconsult, per zorggebied.<\/span>\n                        <\/span>\n                    <\/div>\n                    <div class=\"tty-cl-journey-step\">\n                        <span class=\"tty-cl-journey-icon\"><i class=\"fa-duotone fa-calendar-days\"><\/i><\/span>\n                        <span class=\"tty-cl-journey-body\">\n                            <strong>Kies arts, datum &amp; tijd<\/strong>\n                            <span>Filter op land en taal.<\/span>\n                        <\/span>\n                    <\/div>\n                    <div class=\"tty-cl-journey-step\">\n                        <span class=\"tty-cl-journey-icon\"><i class=\"fa-duotone fa-credit-card\"><\/i><\/span>\n                        <span class=\"tty-cl-journey-body\">\n                            <strong>Betaal veilig online<\/strong>\n                            <span>De prijs is altijd inclusief consult.<\/span>\n                        <\/span>\n                    <\/div>\n                    <div class=\"tty-cl-journey-step\">\n                        <span class=\"tty-cl-journey-icon\"><i class=\"fa-duotone fa-video\"><\/i><\/span>\n                        <span class=\"tty-cl-journey-body\">\n                            <strong>Neem deel aan je videogesprek<\/strong>\n                            <span>Link via e-mail, op elk apparaat, tot 15 minuten van tevoren.<\/span>\n                        <\/span>\n                    <\/div>\n                <\/div>\n            <\/div>\n            \n            <div class=\"tty-cl-info-card\">\n                <h4 class=\"tty-cl-info-card-title\"><i class=\"fa-duotone fa-list-check\"><\/i> Wat je nodig hebt<\/h4>\n                <ul class=\"tty-cl-info-list\">\n                    <li><i class=\"fa-duotone fa-camera-web\"><\/i> <span>Een werkende camera en microfoon, telefoon, tablet of computer.<\/span><\/li>\n                    <li><i class=\"fa-duotone fa-wifi\"><\/i> <span>Een stabiele internetverbinding.<\/span><\/li>\n                    <li><i class=\"fa-duotone fa-file-medical\"><\/i> <span>Recente medische informatie, zoals medicatielijsten of testresultaten.<\/span><\/li>\n                <\/ul>\n            <\/div>\n            \n            <div class=\"tty-cl-info-card\">\n                <h4 class=\"tty-cl-info-card-title\"><i class=\"fa-duotone fa-circle-info\"><\/i> Goed om te weten<\/h4>\n                <ul class=\"tty-cl-info-list\">\n                    <li><i class=\"fa-duotone fa-receipt\"><\/i> <span>De prijs is inclusief het consult, eventuele medicatie betaal je apart.<\/span><\/li>\n                    <li><i class=\"fa-duotone fa-prescription-bottle-medical\"><\/i> <span>Recepten worden rechtstreeks naar gecertificeerde partnerapotheken gestuurd.<\/span><\/li>\n                    <li><i class=\"fa-duotone fa-building-shield\"><\/i> <span>Consulten worden meestal niet vergoed door de zorgverzekering. Controleer dit bij je verzekeraar.<\/span><\/li>\n                    <li><i class=\"fa-duotone fa-id-card\"><\/i> <span>Het consult moet persoonlijk door jou worden uitgevoerd.<\/span><\/li>\n                <\/ul>\n                <p class=\"tty-cl-info-note\"><i class=\"fa-duotone fa-triangle-exclamation\"><\/i> Niet voor noodgevallen. Bel in urgente situaties de lokale hulpdiensten.<\/p>\n            <\/div>\n        <\/aside>\n    <\/div><!-- \/.tty-cl-layout -->\n    \n    <!-- FAQ -->\n    <div class=\"tty-cl-faq\" id=\"tty-cl-faq\">\n        <h3 class=\"tty-cl-faq-title\"><i class=\"fa-duotone fa-circle-question\"><\/i> Veelgestelde vragen<\/h3>\n        \n        <details class=\"tty-cl-faq-item\">\n            <summary>Hoe snel kan ik een videoconsult boeken?<\/summary>\n            <div class=\"tty-cl-faq-answer\">De meeste afspraken zijn binnen een paar uur beschikbaar, afhankelijk van de beschikbaarheid van de arts.<\/div>\n        <\/details>\n        \n        <details class=\"tty-cl-faq-item\">\n            <summary>Wat kost een videoconsult?<\/summary>\n            <div class=\"tty-cl-faq-answer\">De prijs wordt altijd weergegeven bij het boeken van je afspraak. Die is inclusief het consult met de arts, eventuele medicatie betaal je apart.<\/div>\n        <\/details>\n        \n        <details class=\"tty-cl-faq-item\">\n            <summary>Heb ik speciale software nodig?<\/summary>\n            <div class=\"tty-cl-faq-answer\">Nee. Consults verlopen veilig in je browser of in de Transtoyou-app. Een stabiele internetverbinding is alles wat je nodig hebt.<\/div>\n        <\/details>\n        \n        <details class=\"tty-cl-faq-item\">\n            <summary>Wat moet ik voorbereiden voor het videoconsult?<\/summary>\n            <div class=\"tty-cl-faq-answer\">Een werkende camera en microfoon, op je telefoon, tablet of computer, een stabiele internetverbinding en recente medische informatie zoals medicatielijsten of testresultaten.<\/div>\n        <\/details>\n        \n        <details class=\"tty-cl-faq-item\">\n            <summary>Kan ik het consult in een andere taal doen?<\/summary>\n            <div class=\"tty-cl-faq-answer\">Ja, we werken samen met artsen in verschillende landen en talen. Je kunt bij het boeken filteren op land en taal.<\/div>\n        <\/details>\n        \n        <details class=\"tty-cl-faq-item\">\n            <summary>Krijg ik na een consult altijd een recept?<\/summary>\n            <div class=\"tty-cl-faq-answer\">Niet altijd. Recepten worden alleen voorgeschreven als de arts het medisch verantwoord vindt.<\/div>\n        <\/details>\n        \n        <details class=\"tty-cl-faq-item\">\n            <summary>Worden consults vergoed door mijn zorgverzekering?<\/summary>\n            <div class=\"tty-cl-faq-answer\">In de meeste gevallen niet, omdat we buiten het standaard vergoede zorgsysteem werken. Controleer dit altijd bij je verzekeraar.<\/div>\n        <\/details>\n    <\/div>\n<\/div>\n\n<script>\njQuery(document).ready(function($) {\n    var $landing = $('#tty-cl-landing');\n    var state = { kind: '', discipline: '', doctor: 0, doctorName: '', date: '', dateFormatted: '', time: '', timeFormatted: '' };\n    \n    var kindLabels = {\n        intake: \"Videoconsult\",\n        followup: \"Vervolgvideoconsult\"    };\n    \n    function showStep(step) {\n        $landing.find('.tty-cl-step').hide();\n        $landing.find('[data-step=\"' + step + '\"]').show();\n        updateStepper(step);\n    }\n    \n    \/\/ Sticky-header aware scrolling. The theme's header (header-behavior.css)\n    \/\/ is fixed once the body has the .scrolled class and exposes its live\n    \/\/ heights as CSS custom properties: --header-scrolldown-height applies\n    \/\/ while scrolling down (82px desktop, 0 on mobile where the header hides)\n    \/\/ and --header-scrollup-height while scrolling up (134px \/ 65px). We pick\n    \/\/ the variable matching the scroll direction, add the WP admin bar when\n    \/\/ it is fixed, and fall back to measuring #masthead if the variables are\n    \/\/ ever unavailable.\n    function scrollToTarget($target) {\n        if (!$target || $target.length === 0) {\n            return;\n        }\n        \n        var targetTop = $target.offset().top;\n        var goingUp = targetTop < $(window).scrollTop();\n        var varName = goingUp ? '--header-scrollup-height' : '--header-scrolldown-height';\n        \n        var headerHeight = parseInt(window.getComputedStyle(document.documentElement).getPropertyValue(varName), 10);\n        \n        if (isNaN(headerHeight)) {\n            var $header = $('#masthead');\n            headerHeight = $header.length ? ($header.outerHeight() || 0) : 0;\n        }\n        \n        var $adminBar = $('#wpadminbar');\n        var adminBarHeight = ($adminBar.length && $adminBar.css('position') === 'fixed') ? ($adminBar.outerHeight() || 0) : 0;\n        \n        $('html, body').animate({ scrollTop: targetTop - headerHeight - adminBarHeight - 24 }, 300);\n    }\n    \n    function updateStepper(current) {\n        var order = ['kind', 'discipline', 'booking'];\n        var currentIndex = order.indexOf(current);\n        \n        $('#tty-cl-stepper .tty-cl-stepper-item').each(function() {\n            var $item = $(this);\n            var index = order.indexOf(String($item.data('goto')));\n            \n            $item.removeClass('is-current is-done is-upcoming');\n            \n            if (index < currentIndex) {\n                $item.addClass('is-done').prop('disabled', false);\n            } else if (index === currentIndex) {\n                $item.addClass('is-current').prop('disabled', true);\n            } else {\n                $item.addClass('is-upcoming').prop('disabled', true);\n            }\n        });\n        \n        \/\/ Sublabels: show the chosen values on completed steps. The\n        \/\/ discipline value only appears once the booking panel is open \u2014\n        \/\/ a deep-linked ?discipline preselection must not show on step 1.\n        var kindValue = state.kind ? (kindLabels[state.kind] || state.kind) : '';\n        var discValue = '';\n        \n        if (state.discipline && current === 'booking') {\n            discValue = $landing.find('.tty-cl-discipline-card[data-discipline=\"' + state.discipline + '\"] .tty-cl-discipline-name').text();\n        }\n        \n        $('#tty-cl-stepper [data-goto=\"kind\"] .tty-cl-stepper-value').text(kindValue);\n        $('#tty-cl-stepper [data-goto=\"discipline\"] .tty-cl-stepper-value').text(discValue);\n    }\n    \n    function resetBookingState($panel) {\n        state.doctor = 0; state.date = ''; state.time = '';\n        $panel.find('input[type=\"radio\"]').prop('checked', false);\n        $panel.find('.tty-cl-substep-date, .tty-cl-substep-time, .tty-cl-substep-confirm').hide();\n        $panel.find('.tty-cl-dates-container, .tty-cl-times-container').empty();\n        filterPanelDoctors($panel);\n    }\n    \n    \/\/ Delivery country (lowercase ISO2) injected server-side; '' = unknown.\n    \/\/ Doctors are hard-matched to it: an EMPTY country list on a doctor\n    \/\/ means the doctor is available in ALL countries (business rule).\n    var deliveryCountry = \"\";\n    \n    \/\/ Language filtering on the doctor grid, with the country dimension\n    \/\/ locked to the visitor's delivery country, scoped per panel.\n    function filterPanelDoctors($panel) {\n        var language = $panel.find('.tty-cl-language-filter').length ? $panel.find('.tty-cl-language-filter').val() : 'all';\n        var visibleCount = 0;\n        \n        $panel.find('.tty-cl-doctor-option').each(function() {\n            var $option = $(this);\n            var optionCountries = String($option.data('countries') || '').split(',').filter(function(c) { return c !== ''; });\n            var optionLanguages = String($option.data('languages') || '').split(',');\n            \n            var matchesCountry = deliveryCountry !== '' && (optionCountries.length === 0 || optionCountries.indexOf(deliveryCountry) !== -1);\n            var matchesLanguage = !language || language === 'all' || optionLanguages.indexOf(language) !== -1;\n            \n            if (matchesCountry && matchesLanguage) {\n                $option.show();\n                visibleCount++;\n            } else {\n                \/\/ A hidden selected doctor must not stay selected\n                if ($option.find('input').prop('checked')) {\n                    $option.find('input').prop('checked', false);\n                    state.doctor = 0;\n                    $panel.find('.tty-cl-substep-date, .tty-cl-substep-time, .tty-cl-substep-confirm').hide();\n                }\n                $option.hide();\n            }\n        });\n        \n        $panel.find('.tty-cl-no-doctors-match').toggle(visibleCount === 0);\n    }\n    \n    function openPanel() {\n        if (!state.kind || !state.discipline) {\n            return;\n        }\n        \n        showStep('booking');\n        $landing.find('.tty-cl-panel').hide();\n        \n        var $panel = $landing.find('.tty-cl-panel[data-panel=\"' + state.discipline + ':' + state.kind + '\"]');\n        \n        if ($panel.length === 0) {\n            \/\/ No type for this combination \u2014 fall back to the discipline step\n            showStep('discipline');\n            return;\n        }\n        \n        resetBookingState($panel);\n        $panel.show();\n        \n        scrollToTarget($('#tty-cl-step-booking'));\n    }\n    \n    \/\/ Kind selection\n    $landing.on('click', '.tty-cl-kind-card', function() {\n        state.kind = $(this).data('kind');\n        state.discipline = '';\n        showStep('discipline');\n    });\n    \n    \/\/ Discipline selection\n    $landing.on('click', '.tty-cl-discipline-card', function() {\n        state.discipline = $(this).data('discipline');\n        openPanel();\n    });\n    \n    \/\/ Language filter changes\n    $landing.on('change', '.tty-cl-language-filter', function() {\n        filterPanelDoctors($(this).closest('.tty-cl-panel'));\n    });\n    \n    \/\/ Delivery-country change: open the theme's country selector popup on\n    \/\/ the countries tab (same public API the theme uses internally), with\n    \/\/ the header trigger as fallback.\n    $landing.on('click', '.tty-cl-change-country', function(e) {\n        e.preventDefault();\n        \n        if (window.CountrySelector && typeof window.CountrySelector.openPopup === 'function') {\n            window.CountrySelector.openPopup('countries');\n        } else {\n            $('#country-selector-trigger').trigger('click');\n        }\n    });\n    \n    \/\/ After a delivery-country change (theme fires country_changed on body,\n    \/\/ without reloading), reload the landing with the current position\n    \/\/ preserved as deep-link params: the visitor returns to the same panel\n    \/\/ with freshly server-filtered doctors and an updated delivery strip.\n    $(document.body).on('country_changed', function() {\n        var params = new URLSearchParams(window.location.search);\n        \n        params.delete('kind');\n        params.delete('discipline');\n        \n        if (state.kind) {\n            params.set('kind', state.kind);\n        }\n        \n        if (state.discipline) {\n            params.set('discipline', state.discipline);\n        }\n        \n        var query = params.toString();\n        window.location.href = window.location.pathname + (query ? '?' + query : '');\n    });\n    \n    \/\/ Locked follow-up -> switch to intake of the same discipline\n    $landing.on('click', '.tty-cl-switch-to-intake', function() {\n        state.kind = 'intake';\n        state.discipline = $(this).data('discipline');\n        openPanel();\n    });\n    \n    \/\/ Stepper navigation: completed steps are clickable to go back\n    $landing.on('click', '.tty-cl-stepper-item.is-done', function() {\n        var goto_ = $(this).data('goto');\n        \n        if (goto_ === 'kind') {\n            state.kind = ''; state.discipline = '';\n            showStep('kind');\n        } else if (goto_ === 'discipline') {\n            state.discipline = '';\n            showStep('discipline');\n        }\n    });\n    \n    \/\/ FAQ quick-link: smooth scroll to the FAQ section\n    $landing.on('click', '.tty-cl-faq-link', function(e) {\n        e.preventDefault();\n        scrollToTarget($('#tty-cl-faq'));\n    });\n    \n    \/\/ Doctor selection -> load dates\n    $landing.on('change', '.tty-cl-doctors-grid input[type=\"radio\"]', function() {\n        var $panel = $(this).closest('.tty-cl-panel');\n        \n        state.doctor = parseInt($(this).val(), 10);\n        state.doctorName = $(this).closest('.tty-cl-doctor-option').find('.tty-cl-doctor-name').text();\n        \n        $panel.find('.tty-cl-substep-time, .tty-cl-substep-confirm').hide();\n        $panel.find('.tty-cl-substep-date').show();\n        \n        loadDates($panel);\n    });\n    \n    function loadDates($panel) {\n        var $container = $panel.find('.tty-cl-dates-container');\n        var $loading = $panel.find('.tty-cl-substep-date .tty-cl-loading');\n        \n        $loading.show();\n        $container.empty();\n        \n        $.ajax({\n            url: ttyMeet.ajaxUrl,\n            type: 'POST',\n            data: { action: 'tty_meet_get_available_dates', nonce: ttyMeet.nonce, doctor_id: state.doctor },\n            success: function(response) {\n                $loading.hide();\n                \n                if (response.success && response.data.dates.length > 0) {\n                    $.each(response.data.dates, function(i, date) {\n                        $container.append(\n                            '<label class=\"tty-cl-date-option\">' +\n                            '<input type=\"radio\" name=\"tty_cl_date\" value=\"' + date.date + '\" data-formatted=\"' + date.formatted + '\" data-day=\"' + date.day + '\">' +\n                            '<span class=\"tty-cl-date-day\">' + date.day + '<\/span>' +\n                            '<span class=\"tty-cl-date-full\">' + date.formatted + '<\/span>' +\n                            '<\/label>'\n                        );\n                    });\n                } else {\n                    $container.html('<p class=\"tty-cl-no-results\">' + ttyMeet.strings.noSlots + '<\/p>');\n                }\n            },\n            error: function() {\n                $loading.hide();\n                $container.html('<p class=\"tty-cl-no-results\">' + ttyMeet.strings.error + '<\/p>');\n            }\n        });\n    }\n    \n    \/\/ Date selection -> load times\n    $landing.on('change', 'input[name=\"tty_cl_date\"]', function() {\n        var $panel = $(this).closest('.tty-cl-panel');\n        \n        state.date = $(this).val();\n        \/\/ Full confirmation format: weekday + bare date (the payload keeps\n        \/\/ them separate so the date cards can render them on two lines)\n        state.dateFormatted = $(this).data('day') + ', ' + $(this).data('formatted');\n        \n        $panel.find('.tty-cl-substep-confirm').hide();\n        $panel.find('.tty-cl-substep-time').show();\n        \n        loadTimes($panel);\n    });\n    \n    function loadTimes($panel) {\n        var $container = $panel.find('.tty-cl-times-container');\n        var $loading = $panel.find('.tty-cl-substep-time .tty-cl-loading');\n        \n        $loading.show();\n        $container.empty();\n        \n        $.ajax({\n            url: ttyMeet.ajaxUrl,\n            type: 'POST',\n            data: { action: 'tty_meet_get_available_slots', nonce: ttyMeet.nonce, doctor_id: state.doctor, date: state.date },\n            success: function(response) {\n                $loading.hide();\n                \n                if (response.success && response.data.slots.length > 0) {\n                    $.each(response.data.slots, function(i, slot) {\n                        $container.append(\n                            '<label class=\"tty-cl-time-option\">' +\n                            '<input type=\"radio\" name=\"tty_cl_time\" value=\"' + slot.time + '\" data-formatted=\"' + slot.formatted + '\">' +\n                            '<span>' + slot.formatted + '<\/span>' +\n                            '<\/label>'\n                        );\n                    });\n                } else {\n                    $container.html('<p class=\"tty-cl-no-results\">' + ttyMeet.strings.noSlots + '<\/p>');\n                }\n            },\n            error: function() {\n                $loading.hide();\n                $container.html('<p class=\"tty-cl-no-results\">' + ttyMeet.strings.error + '<\/p>');\n            }\n        });\n    }\n    \n    \/\/ Time selection -> show confirm\n    $landing.on('change', 'input[name=\"tty_cl_time\"]', function() {\n        var $panel = $(this).closest('.tty-cl-panel');\n        \n        state.time = $(this).val();\n        state.timeFormatted = $(this).data('formatted');\n        \n        $panel.find('.tty-cl-summary-doctor').text(state.doctorName);\n        $panel.find('.tty-cl-summary-date').text(state.dateFormatted);\n        $panel.find('.tty-cl-summary-time').text(state.timeFormatted);\n        \n        $panel.find('.tty-cl-field-doctor').val(state.doctor);\n        $panel.find('.tty-cl-field-date').val(state.date);\n        $panel.find('.tty-cl-field-time').val(state.time);\n        \n        $panel.find('.tty-cl-substep-confirm').show();\n    });\n    \n    \/\/ ---- Document upload (same contract as the product page form) ----\n    var maxFiles = 5;\n    var pendingUpload = null;\n    \n    function getUploadScope($el) {\n        var $upload = $el.closest('.tty-cl-upload');\n        \n        return {\n            $upload: $upload,\n            session: $upload.data('session'),\n            files: $upload.data('files') || []\n        };\n    }\n    \n    $landing.on('click', '.tty-cl-browse-btn', function() {\n        $(this).closest('.tty-cl-upload').find('.tty-cl-file-input').trigger('click');\n    });\n    \n    $landing.on('click', '.tty-cl-dropzone', function(e) {\n        if ($(e.target).closest('.tty-cl-browse-btn').length === 0 && e.target === this) {\n            $(this).find('.tty-cl-file-input').trigger('click');\n        }\n    });\n    \n    $landing.on('dragover dragenter', '.tty-cl-dropzone', function(e) {\n        e.preventDefault();\n        $(this).addClass('tty-meet-dropzone-active');\n    });\n    \n    $landing.on('dragleave drop', '.tty-cl-dropzone', function(e) {\n        e.preventDefault();\n        $(this).removeClass('tty-meet-dropzone-active');\n        \n        if (e.type === 'drop' && e.originalEvent.dataTransfer && e.originalEvent.dataTransfer.files.length > 0) {\n            queueFile($(this), e.originalEvent.dataTransfer.files[0]);\n        }\n    });\n    \n    $landing.on('change', '.tty-cl-file-input', function() {\n        if (this.files.length > 0) {\n            queueFile($(this).closest('.tty-cl-dropzone'), this.files[0]);\n            this.value = '';\n        }\n    });\n    \n    function queueFile($dropzone, file) {\n        var scope = getUploadScope($dropzone);\n        \n        if (scope.files.length >= maxFiles) {\n            showUploadError(scope.$upload, \"Maximumaantal bestanden bereikt.\");\n            return;\n        }\n        \n        pendingUpload = file;\n        \n        var $modal = scope.$upload.find('.tty-cl-type-modal');\n        $modal.find('.tty-cl-type-filename').text(file.name);\n        $modal.find('input[type=\"radio\"]').prop('checked', false);\n        $modal.find('.tty-cl-type-confirm').prop('disabled', true);\n        $modal.show();\n    }\n    \n    $landing.on('change', '.tty-cl-type-modal input[type=\"radio\"]', function() {\n        $(this).closest('.tty-cl-type-modal').find('.tty-cl-type-confirm').prop('disabled', false);\n    });\n    \n    $landing.on('click', '.tty-cl-type-cancel', function() {\n        pendingUpload = null;\n        $(this).closest('.tty-cl-type-modal').hide();\n    });\n    \n    $landing.on('click', '.tty-cl-type-confirm', function() {\n        var $modal = $(this).closest('.tty-cl-type-modal');\n        var fileType = $modal.find('input[type=\"radio\"]:checked').val();\n        \n        if (!pendingUpload || !fileType) {\n            return;\n        }\n        \n        $modal.hide();\n        uploadFile(getUploadScope($modal), pendingUpload, fileType);\n        pendingUpload = null;\n    });\n    \n    function uploadFile(scope, file, fileType) {\n        var formData = new FormData();\n        formData.append('action', 'tty_meet_upload_attachment');\n        formData.append('nonce', ttyMeet.nonce);\n        formData.append('file', file);\n        formData.append('file_type', fileType);\n        formData.append('session_key', scope.session);\n        \n        var $progress = scope.$upload.find('.tty-cl-upload-progress');\n        var $fill = scope.$upload.find('.tty-cl-progress-fill');\n        \n        scope.$upload.find('.tty-cl-upload-error').hide();\n        $progress.show();\n        \n        $.ajax({\n            url: ttyMeet.ajaxUrl,\n            type: 'POST',\n            data: formData,\n            processData: false,\n            contentType: false,\n            xhr: function() {\n                var xhr = new window.XMLHttpRequest();\n                xhr.upload.addEventListener('progress', function(e) {\n                    if (e.lengthComputable) {\n                        $fill.css('width', ((e.loaded \/ e.total) * 100) + '%');\n                    }\n                }, false);\n                return xhr;\n            },\n            success: function(response) {\n                $progress.hide();\n                $fill.css('width', '0%');\n                \n                if (response.success) {\n                    var files = scope.$upload.data('files') || [];\n                    files.push(response.data.attachment);\n                    scope.$upload.data('files', files);\n                    renderFiles(scope.$upload);\n                } else {\n                    showUploadError(scope.$upload, (response.data && response.data.message) || ttyMeet.strings.error);\n                }\n            },\n            error: function() {\n                $progress.hide();\n                $fill.css('width', '0%');\n                showUploadError(scope.$upload, ttyMeet.strings.error);\n            }\n        });\n    }\n    \n    function renderFiles($upload) {\n        var files = $upload.data('files') || [];\n        var $wrap = $upload.find('.tty-cl-uploaded-files');\n        var $list = $upload.find('.tty-cl-files-list');\n        \n        if (files.length === 0) {\n            $wrap.hide();\n            return;\n        }\n        \n        $wrap.show();\n        $upload.find('.tty-cl-file-count').text(files.length);\n        $list.empty();\n        \n        $.each(files, function(i, file) {\n            var iconClass = file.is_pdf ? 'fa-file-pdf' : 'fa-file-image';\n            $list.append(\n                '<div class=\"tty-meet-file-item\" data-id=\"' + file.id + '\">' +\n                '<i class=\"fa-duotone ' + iconClass + '\"><\/i>' +\n                '<span class=\"tty-meet-file-name\">' + $('<span>').text(file.name || file.original_name || '').html() + '<\/span>' +\n                '<button type=\"button\" class=\"tty-meet-file-remove tty-cl-file-remove\" data-id=\"' + file.id + '\" aria-label=\"Remove\">' +\n                '<i class=\"fa-duotone fa-trash-can\"><\/i><\/button>' +\n                '<\/div>'\n            );\n        });\n    }\n    \n    $landing.on('click', '.tty-cl-file-remove', function() {\n        var $btn = $(this);\n        var fileId = $btn.data('id');\n        var $upload = $btn.closest('.tty-cl-upload');\n        \n        $btn.prop('disabled', true);\n        \n        $.ajax({\n            url: ttyMeet.ajaxUrl,\n            type: 'POST',\n            data: { action: 'tty_meet_delete_attachment', nonce: ttyMeet.nonce, attachment_id: fileId },\n            success: function(response) {\n                if (response.success) {\n                    var files = ($upload.data('files') || []).filter(function(f) { return f.id !== fileId; });\n                    $upload.data('files', files);\n                    renderFiles($upload);\n                } else {\n                    $btn.prop('disabled', false);\n                }\n            },\n            error: function() {\n                $btn.prop('disabled', false);\n            }\n        });\n    });\n    \n    function showUploadError($upload, message) {\n        $upload.find('.tty-cl-upload-error').text(message).show();\n    }\n    \n    \/\/ Reason field: live counter, counter states and book-button gating.\n    \/\/ Scoped per panel form \u2014 every (discipline x kind) panel has its own\n    \/\/ textarea, counter and button. Raw length drives the live state; the\n    \/\/ submit guard below applies the authoritative trimmed check (the\n    \/\/ server-side validation in TTY_Meet_WooCommerce remains the source\n    \/\/ of truth).\n    function updateReasonState($form) {\n        var $reason = $form.find('.tty-cl-reason');\n        \n        if ($reason.length === 0) {\n            return;\n        }\n        \n        var length = String($reason.val() || '').length;\n        var $counter = $form.find('.tty-cl-reason-counter');\n        \n        $form.find('.tty-cl-reason-count').text(length);\n        $counter.toggleClass('invalid', length > 0 && length < 25);\n        $counter.toggleClass('valid', length >= 25);\n        $form.find('.tty-cl-btn-book').prop('disabled', length < 25).toggleClass('tty-cl-btn-disabled', length < 25);\n        \n        if (length >= 25) {\n            $form.find('.tty-cl-reason-error').hide();\n            $reason.removeClass('has-error');\n        }\n    }\n    \n    $landing.on('input', '.tty-cl-reason', function() {\n        updateReasonState($(this).closest('.tty-cl-checkout-form'));\n    });\n    \n    $landing.find('.tty-cl-checkout-form').each(function() {\n        updateReasonState($(this));\n    });\n    \n    \/\/ Guard the handover: all three fields must be set and the reason valid\n    $landing.on('submit', '.tty-cl-checkout-form', function(e) {\n        var $form = $(this);\n        \n        if (!$form.find('.tty-cl-field-doctor').val() || !$form.find('.tty-cl-field-date').val() || !$form.find('.tty-cl-field-time').val()) {\n            e.preventDefault();\n            return;\n        }\n        \n        var $reason = $form.find('.tty-cl-reason');\n        var reasonLength = String($reason.val() || '').trim().length;\n        \n        if (reasonLength < 25 || reasonLength > 250) {\n            e.preventDefault();\n            $form.find('.tty-cl-reason-error').show();\n            $reason.addClass('has-error').trigger('focus');\n            \n            if ($reason.length && $reason.get(0).scrollIntoView) {\n                $reason.get(0).scrollIntoView({ behavior: 'smooth', block: 'center' });\n            }\n            return;\n        }\n        \n        $form.find('.tty-cl-btn-book').prop('disabled', true).css('opacity', '0.7');\n    });\n    \n    \/\/ Deep links: ?kind=... and\/or ?discipline=...\n    var preKind = $landing.data('preselected-kind');\n    var preDisc = $landing.data('preselected-discipline');\n    \n    if (preKind && preDisc) {\n        state.kind = preKind;\n        state.discipline = preDisc;\n        openPanel();\n    } else if (preKind) {\n        state.kind = preKind;\n        showStep('discipline');\n    } else if (preDisc) {\n        \/\/ Discipline known, kind not: ask the kind first, then jump straight in\n        state.discipline = preDisc;\n        showStep('kind');\n        $landing.on('click.ttyClPre', '.tty-cl-kind-card', function() {\n            $landing.off('click.ttyClPre');\n            state.discipline = preDisc;\n            openPanel();\n        });\n    }\n});\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":13,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-4049","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.transtoyou.com\/nl\/wp-json\/wp\/v2\/pages\/4049","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.transtoyou.com\/nl\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.transtoyou.com\/nl\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.transtoyou.com\/nl\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/www.transtoyou.com\/nl\/wp-json\/wp\/v2\/comments?post=4049"}],"version-history":[{"count":1,"href":"https:\/\/www.transtoyou.com\/nl\/wp-json\/wp\/v2\/pages\/4049\/revisions"}],"predecessor-version":[{"id":4050,"href":"https:\/\/www.transtoyou.com\/nl\/wp-json\/wp\/v2\/pages\/4049\/revisions\/4050"}],"wp:attachment":[{"href":"https:\/\/www.transtoyou.com\/nl\/wp-json\/wp\/v2\/media?parent=4049"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}