{"id":2154,"date":"2026-08-20T20:17:17","date_gmt":"2026-08-21T00:17:17","guid":{"rendered":"https:\/\/ectransfers.com\/nhmadison\/?page_id=2154"},"modified":"2026-08-23T12:45:10","modified_gmt":"2026-08-23T16:45:10","slug":"ec-reservations","status":"publish","type":"page","link":"https:\/\/ectransfers.com\/nhmadison\/ec-reservations\/","title":{"rendered":"EC-Reservations"},"content":{"rendered":"\n<div id=\"ec-bf\">\n<div class=\"ecbf-wizard\">\n\n<!-- \u2500\u2500 STEP 1 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n<div class=\"ecbf-step\" id=\"ecbf-step-1\">\n<span class=\"ecbf-h1\">EC Transfers<\/span>\n<span class=\"ecbf-subtitle\">Plan Your Trip<\/span>\n\n<div class=\"ecbf-trip-row\">\n<div class=\"ecbf-field\">\n<label><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#8a9bb5\" stroke-width=\"1.8\"><path d=\"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0Z\"><\/path><circle cx=\"12\" cy=\"10\" r=\"3\"><\/circle><\/svg> Pick up <span class=\"ecbf-req\">*<\/span><\/label>\n<div class=\"ecbf-pill-group\" id=\"ecbf-pickup-group\">\n<button type=\"button\" class=\"ecbf-pill ecbf-loc-pill\" data-loc=\"NH Hotel\" data-role=\"pickup\">NH Hotel<\/button>\n<button type=\"button\" class=\"ecbf-pill ecbf-loc-pill\" data-loc=\"JFK\" data-role=\"pickup\">JFK<\/button>\n<button type=\"button\" class=\"ecbf-pill ecbf-loc-pill\" data-loc=\"LGA\" data-role=\"pickup\">LGA<\/button>\n<button type=\"button\" class=\"ecbf-pill ecbf-loc-pill\" data-loc=\"EWR\" data-role=\"pickup\">EWR<\/button>\n<\/div>\n<\/div>\n\n<div class=\"ecbf-field\">\n<label><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#8a9bb5\" stroke-width=\"1.8\"><path d=\"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0Z\"><\/path><circle cx=\"12\" cy=\"10\" r=\"3\"><\/circle><\/svg> Drop off <span class=\"ecbf-req\">*<\/span><\/label>\n<div class=\"ecbf-pill-group\" id=\"ecbf-dropoff-group\">\n<button type=\"button\" class=\"ecbf-pill ecbf-loc-pill\" data-loc=\"NH Hotel\" data-role=\"dropoff\">NH Hotel<\/button>\n<button type=\"button\" class=\"ecbf-pill ecbf-loc-pill\" data-loc=\"JFK\" data-role=\"dropoff\">JFK<\/button>\n<button type=\"button\" class=\"ecbf-pill ecbf-loc-pill\" data-loc=\"LGA\" data-role=\"dropoff\">LGA<\/button>\n<button type=\"button\" class=\"ecbf-pill ecbf-loc-pill\" data-loc=\"EWR\" data-role=\"dropoff\">EWR<\/button>\n<\/div>\n<\/div>\n\n<div class=\"ecbf-field\">\n<label><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#8a9bb5\" stroke-width=\"1.8\"><path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"><\/path><circle cx=\"9\" cy=\"7\" r=\"4\"><\/circle><path d=\"M23 21v-2a4 4 0 0 0-3-3.87M16 3.13a4 4 0 0 1 0 7.75\"><\/path><\/svg> Guests Number <span class=\"ecbf-req\">*<\/span><\/label>\n<div class=\"ecbf-stepper\">\n<button type=\"button\" class=\"ecbf-stepper-btn\" data-target=\"ecbf-guests\" data-dir=\"-1\">\u2212<\/button>\n<input type=\"text\" id=\"ecbf-guests\" class=\"ecbf-stepper-input\" value=\"1\" readonly>\n<button type=\"button\" class=\"ecbf-stepper-btn\" data-target=\"ecbf-guests\" data-dir=\"1\">+<\/button>\n<\/div>\n<\/div>\n\n<div class=\"ecbf-field\">\n<label><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#8a9bb5\" stroke-width=\"1.8\"><rect x=\"2\" y=\"7\" width=\"20\" height=\"13\" rx=\"2\"><\/rect><path d=\"M16 7V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v2\"><\/path><\/svg> Bags Number <span class=\"ecbf-req\">*<\/span><\/label>\n<div class=\"ecbf-stepper\">\n<button type=\"button\" class=\"ecbf-stepper-btn\" data-target=\"ecbf-bags\" data-dir=\"-1\">\u2212<\/button>\n<input type=\"text\" id=\"ecbf-bags\" class=\"ecbf-stepper-input\" value=\"0\" readonly>\n<button type=\"button\" class=\"ecbf-stepper-btn\" data-target=\"ecbf-bags\" data-dir=\"1\">+<\/button>\n<\/div>\n<\/div>\n<\/div>\n\n<div id=\"ecbf-vehicle-section\" class=\"ecbf-vehicle-section\" style=\"display:none;\">\n<div class=\"ecbf-vehicle-section-title\">Choose Your Vehicle<\/div>\n<p id=\"ecbf-step2-summary\" class=\"ecbf-step2-summary\"><\/p>\n\n<div id=\"ecbf-vehicle-grid\" class=\"ecbf-vehicle-grid\"><\/div>\n<div id=\"ecbf-no-pricing\" class=\"ecbf-no-pricing\" style=\"display:none;\">\n<p>Online pricing isn't available for this route yet.<\/p>\n<a class=\"ecbf-call-btn\" href=\"tel:+16468530170\">\ud83d\udcde Call Us to Book<\/a>\n<\/div>\n<p class=\"ecbf-peak-note\">\ud83d\udd50 Peak Hour pricing applies 1:00 PM \u2013 5:30 PM (not in Jan, Feb, or Mar)<\/p>\n<\/div>\n<\/div>\n\n<!-- \u2500\u2500 STEP 2 (Booking Details) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n<div class=\"ecbf-step\" id=\"ecbf-step-3\" style=\"display:none;\">\n<button type=\"button\" class=\"ecbf-back-btn\" data-back=\"1\">\u2190 Back<\/button>\n<span class=\"ecbf-subtitle\">Booking Details<\/span>\n\n<div class=\"ecbf-step3-layout\">\n<div class=\"ecbf-step3-form\">\n\n<div class=\"ecbf-field\">\n<label><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#8a9bb5\" stroke-width=\"1.8\"><rect x=\"3\" y=\"5\" width=\"18\" height=\"16\" rx=\"2\"><\/rect><path d=\"M16 3v4M8 3v4M3 10h18\"><\/path><\/svg> Pickup Date & Time <span class=\"ecbf-req\">*<\/span><\/label>\n<div class=\"ecbf-datetime-plus-return\">\n<div class=\"ecbf-datetime-row\">\n<input type=\"date\" id=\"ecbf-date\" class=\"ecbf-date-input\">\n<select id=\"ecbf-hour\" class=\"ecbf-time-select\"><\/select>\n<span class=\"ecbf-time-colon\">:<\/span>\n<select id=\"ecbf-minute\" class=\"ecbf-time-select\"><\/select>\n<select id=\"ecbf-ampm\" class=\"ecbf-ampm-select\">\n<option value=\"AM\">AM<\/option>\n<option value=\"PM\">PM<\/option>\n<\/select>\n<\/div>\n<button type=\"button\" id=\"ecbf-add-return-btn\" class=\"ecbf-add-return-btn\">+ Add Return<\/button>\n<button type=\"button\" id=\"ecbf-meet-greet-btn\" class=\"ecbf-add-return-btn\" style=\"display:none;\">+ Meet & Greet<\/button>\n<button type=\"button\" id=\"ecbf-car-seat-btn\" class=\"ecbf-add-return-btn\">+ Car Seat<\/button>\n<\/div>\n<\/div>\n\n<div class=\"ecbf-row3\">\n<div class=\"ecbf-field\">\n<label><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#8a9bb5\" stroke-width=\"1.8\"><path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\"><\/path><circle cx=\"12\" cy=\"7\" r=\"4\"><\/circle><\/svg> Guest Name<\/label>\n<input type=\"text\" id=\"ecbf-guest-name\" placeholder=\"Full name\">\n<\/div>\n<div class=\"ecbf-field\">\n<label><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#8a9bb5\" stroke-width=\"1.8\"><path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6A19.79 19.79 0 0 1 2.12 4.18 2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.13.96.37 1.9.72 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.9.35 1.85.59 2.81.72A2 2 0 0 1 22 16.92Z\"><\/path><\/svg> Guest Phone<\/label>\n<div class=\"ecbf-phone-row\">\n<div class=\"ecbf-phone-code-wrap\" id=\"ecbf-phone-code-wrap\">\n<button type=\"button\" id=\"ecbf-phone-code-btn\" class=\"ecbf-phone-code-btn\" data-dial=\"+1\">\ud83c\uddfa\ud83c\uddf8 +1<\/button>\n<div id=\"ecbf-phone-code-panel\" class=\"ecbf-phone-code-panel\" style=\"display:none;\">\n<input type=\"text\" id=\"ecbf-phone-code-search\" class=\"ecbf-phone-code-search\" placeholder=\"Search country\">\n<div id=\"ecbf-phone-code-list\" class=\"ecbf-phone-code-list\"><\/div>\n<\/div>\n<\/div>\n<input type=\"tel\" id=\"ecbf-guest-phone\" placeholder=\"(555) 555-5555\">\n<\/div>\n<\/div>\n<div class=\"ecbf-field\">\n<label><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#8a9bb5\" stroke-width=\"1.8\"><rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\"><\/rect><path d=\"m22 6-10 7L2 6\"><\/path><\/svg> Guest Email<\/label>\n<input type=\"email\" id=\"ecbf-guest-email\" placeholder=\"guest@email.com\">\n<\/div>\n<\/div>\n\n<div class=\"ecbf-row3\">\n<div class=\"ecbf-field\">\n<label><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#8a9bb5\" stroke-width=\"1.8\"><path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"><\/path><circle cx=\"9\" cy=\"7\" r=\"4\"><\/circle><path d=\"M23 21v-2a4 4 0 0 0-3-3.87M16 3.13a4 4 0 0 1 0 7.75\"><\/path><\/svg> Guests Number <span class=\"ecbf-req\">*<\/span><\/label>\n<input type=\"text\" id=\"ecbf-guests-display\" readonly>\n<\/div>\n<div class=\"ecbf-field\">\n<label><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#8a9bb5\" stroke-width=\"1.8\"><rect x=\"2\" y=\"7\" width=\"20\" height=\"13\" rx=\"2\"><\/rect><path d=\"M16 7V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v2\"><\/path><\/svg> Bags Number <span class=\"ecbf-req\">*<\/span><\/label>\n<input type=\"text\" id=\"ecbf-bags-display\" readonly>\n<\/div>\n<div class=\"ecbf-field\" id=\"ecbf-room-flight-field\">\n<label id=\"ecbf-room-flight-label\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#8a9bb5\" stroke-width=\"1.8\"><path d=\"M2 20v-8a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v8M2 20v-3M22 20v-3M2 13V7a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2M12 9h8a2 2 0 0 1 2 2v2\"><\/path><\/svg> Room # <span class=\"ecbf-req\">*<\/span><\/label>\n<input type=\"text\" id=\"ecbf-room-flight-input\" placeholder=\"e.g. 826\">\n<span id=\"ecbf-flight-actions\" style=\"display:none;\">\n<button type=\"button\" id=\"ecbf-check-flight-btn\" class=\"ecbf-check-flight-btn\">\ud83d\udd0d Check Flight<\/button>\n<\/span>\n<div id=\"ecbf-flight-check-result\" class=\"ecbf-flight-check-result\" style=\"display:none;\"><\/div>\n<\/div>\n<\/div>\n\n<div class=\"ecbf-row3\">\n<div class=\"ecbf-field\">\n<label><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#8a9bb5\" stroke-width=\"1.8\"><rect x=\"5\" y=\"4\" width=\"14\" height=\"18\" rx=\"2\"><\/rect><circle cx=\"12\" cy=\"11\" r=\"3\"><\/circle><path d=\"M8 19c.7-1.8 2.1-2.5 4-2.5s3.3.7 4 2.5\"><\/path><\/svg> Booked by <span class=\"ecbf-req\">*<\/span><\/label>\n<div class=\"ecbf-pill-group\" id=\"ecbf-agent-group\">\n<button type=\"button\" class=\"ecbf-pill ecbf-pill-agent\" data-agent=\"Aaron\">Aaron<\/button>\n<button type=\"button\" class=\"ecbf-pill ecbf-pill-agent\" data-agent=\"Erik\">Erik<\/button>\n<button type=\"button\" class=\"ecbf-pill ecbf-pill-agent\" data-agent=\"John\">John<\/button>\n<button type=\"button\" class=\"ecbf-pill ecbf-pill-agent\" data-agent=\"Max\">Max<\/button>\n<\/div>\n<\/div>\n<div class=\"ecbf-field ecbf-field-wide\">\n<label><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#8a9bb5\" stroke-width=\"1.8\"><path d=\"M21 11.5a8.5 8.5 0 0 1-8.5 8.5c-1.4 0-2.7-.3-3.9-.9L3 21l1.9-5.6A8.5 8.5 0 1 1 21 11.5Z\"><\/path><\/svg> Remarks<\/label>\n<input type=\"text\" id=\"ecbf-remarks\" placeholder=\"Special Requirements\">\n<\/div>\n<\/div>\n\n<div class=\"ecbf-confirm-payment-row\">\n<div class=\"ecbf-section-block\">\n<div class=\"ecbf-section-title\">Email Confirmation<\/div>\n<div class=\"ecbf-field\">\n<label><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#8a9bb5\" stroke-width=\"1.8\"><rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\"><\/rect><path d=\"m22 6-10 7L2 6\"><\/path><\/svg> Automatic Email Confirmation<\/label>\n<input type=\"email\" id=\"ecbf-confirm-email\" placeholder=\"confirmation@example.com\">\n<\/div>\n<div class=\"ecbf-field\">\n<label>Copy To<\/label>\n<input type=\"email\" id=\"ecbf-copy-email\" placeholder=\"Enter another email\">\n<\/div>\n<\/div>\n\n<div class=\"ecbf-section-block\">\n<div class=\"ecbf-section-title\">Payment <span class=\"ecbf-req\">*<\/span><\/div>\n<div class=\"ecbf-field\">\n<div class=\"ecbf-pill-group\" id=\"ecbf-payment-group\">\n<button type=\"button\" class=\"ecbf-pill ecbf-pill-payment\" data-payment=\"Direct to driver\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#8a9bb5\" stroke-width=\"1.8\"><rect x=\"2\" y=\"5\" width=\"20\" height=\"14\" rx=\"2\"><\/rect><path d=\"M2 10h20\"><\/path><\/svg> Direct to driver<\/button>\n<button type=\"button\" class=\"ecbf-pill ecbf-pill-payment\" data-payment=\"Invoice\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#8a9bb5\" stroke-width=\"1.8\"><rect x=\"2\" y=\"5\" width=\"20\" height=\"14\" rx=\"2\"><\/rect><path d=\"M2 10h20\"><\/path><\/svg> Invoice<\/button>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<button type=\"button\" id=\"ecbf-submit\" class=\"ecbf-submit-btn\" disabled>Confirm Booking<\/button>\n<p id=\"ecbf-step3-error\" class=\"ecbf-error-msg\"><\/p>\n<\/div>\n\n<div class=\"ecbf-summary-col\">\n<div class=\"ecbf-summary-card\">\n<span class=\"ecbf-summary-title\">Summary<\/span>\n<img decoding=\"async\" id=\"ecbf-summary-img\" src=\"\" alt=\"\">\n<p id=\"ecbf-summary-lines\"><\/p>\n<\/div>\n\n<div class=\"ecbf-summary-card ecbf-extras-card\" id=\"ecbf-extras-card\" style=\"display:none;\">\n<span class=\"ecbf-summary-title\">Extras<\/span>\n<div id=\"ecbf-extras-lines\"><\/div>\n<\/div>\n\n<div class=\"ecbf-summary-card ecbf-total-card\" id=\"ecbf-total-card\" style=\"display:none;\">\n<span class=\"ecbf-summary-title\">Total<\/span>\n<p id=\"ecbf-total-lines\"><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<!-- \u2500\u2500 CONFIRMATION \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n<div class=\"ecbf-step\" id=\"ecbf-step-confirm\" style=\"display:none;\">\n<div class=\"ecbf-result\">\n<div class=\"ecbf-confirm-badge\"><span class=\"ecbf-confirm-check\">\u2713<\/span><\/div>\n<p class=\"ecbf-result-title\">Booking Confirmed<\/p>\n<div class=\"ecbf-confirm-id\" id=\"ecbf-confirm-id\"><\/div>\n\n<div class=\"ecbf-confirm-row-group\">\n<div class=\"ecbf-confirm-card\" id=\"ecbf-confirm-trip\"><\/div>\n<div class=\"ecbf-confirm-card\" id=\"ecbf-confirm-guest\"><\/div>\n<div class=\"ecbf-confirm-card\" id=\"ecbf-confirm-extras\" style=\"display:none;\"><\/div>\n<div class=\"ecbf-confirm-card ecbf-confirm-vehicle-card\">\n<img decoding=\"async\" id=\"ecbf-confirm-vehicle-img\" class=\"ecbf-confirm-vehicle-img\" src=\"\" alt=\"\">\n<\/div>\n<\/div>\n\n<div class=\"ecbf-confirm-row-group\" id=\"ecbf-confirm-return-row\" style=\"display:none;\">\n<div class=\"ecbf-confirm-card\" id=\"ecbf-confirm-return-trip\"><\/div>\n<div class=\"ecbf-confirm-card\" id=\"ecbf-confirm-return-guest\"><\/div>\n<div class=\"ecbf-confirm-card\" id=\"ecbf-confirm-return-extras\" style=\"display:none;\"><\/div>\n<div class=\"ecbf-confirm-card ecbf-confirm-vehicle-card\">\n<img decoding=\"async\" id=\"ecbf-confirm-return-vehicle-img\" class=\"ecbf-confirm-vehicle-img\" src=\"\" alt=\"\">\n<\/div>\n<\/div>\n\n<div class=\"ecbf-confirm-total-row\" id=\"ecbf-confirm-total-row\"><\/div>\n\n<p class=\"ecbf-confirm-note\">We've notified our team by email \u2014 we'll be in touch shortly to confirm.<\/p>\n\n<button type=\"button\" id=\"ecbf-new-booking-btn\" class=\"ecbf-new-booking-btn\">Start a New Reservation<\/button>\n<\/div>\n<\/div>\n\n<\/div>\n\n<!-- \u2500\u2500 RETURN TRIP MODAL \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n<div id=\"ecbf-return-overlay\" class=\"ecbf-return-overlay\">\n<div class=\"ecbf-return-modal\">\n<div class=\"ecbf-return-modal-head\">\n<span>Return Trip<\/span>\n<button type=\"button\" id=\"ecbf-return-close\" aria-label=\"Close\">\u00d7<\/button>\n<\/div>\n\n<p class=\"ecbf-return-pickup-note\">Return pick up: <strong id=\"ecbf-return-pickup-label\"><\/strong><\/p>\n\n<div class=\"ecbf-field\" id=\"ecbf-return-flight-field\" style=\"display:none;\">\n<label><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#8a9bb5\" stroke-width=\"1.8\"><path d=\"M17.8 19.2 16 11l3.5-3.5C21 6 21.5 4 21 3c-1-.5-3 0-4.5 1.5L13 8 4.8 6.2c-.5-.1-1 .1-1.3.5l-.4.5c-.4.4-.3 1.1.2 1.4L9 12l-2 3H4l-1 1 3 2 2 3 1-1v-3l3-2 3.6 5.7c.3.5 1 .6 1.4.2l.5-.4c.4-.3.6-.8.5-1.3Z\"><\/path><\/svg> Flight # <span class=\"ecbf-req\">*<\/span><\/label>\n<input type=\"text\" id=\"ecbf-return-flight-input\" placeholder=\"e.g. AA123\">\n<span>\n<button type=\"button\" id=\"ecbf-return-check-flight-btn\" class=\"ecbf-check-flight-btn\">\ud83d\udd0d Check Flight<\/button>\n<\/span>\n<div id=\"ecbf-return-flight-check-result\" class=\"ecbf-flight-check-result\" style=\"display:none;\"><\/div>\n<\/div>\n\n<div class=\"ecbf-field\">\n<label><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#8a9bb5\" stroke-width=\"1.8\"><path d=\"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0Z\"><\/path><circle cx=\"12\" cy=\"10\" r=\"3\"><\/circle><\/svg> Drop off <span class=\"ecbf-req\">*<\/span><\/label>\n<div class=\"ecbf-pill-group\" id=\"ecbf-return-dropoff-group\"><\/div>\n<\/div>\n\n<div class=\"ecbf-field\">\n<label><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#8a9bb5\" stroke-width=\"1.8\"><rect x=\"3\" y=\"5\" width=\"18\" height=\"16\" rx=\"2\"><\/rect><path d=\"M16 3v4M8 3v4M3 10h18\"><\/path><\/svg> Return Date & Time <span class=\"ecbf-req\">*<\/span><\/label>\n<div class=\"ecbf-datetime-row\">\n<input type=\"date\" id=\"ecbf-return-date\" class=\"ecbf-date-input\">\n<select id=\"ecbf-return-hour\" class=\"ecbf-time-select\"><\/select>\n<span class=\"ecbf-time-colon\">:<\/span>\n<select id=\"ecbf-return-minute\" class=\"ecbf-time-select\"><\/select>\n<select id=\"ecbf-return-ampm\" class=\"ecbf-ampm-select\">\n<option value=\"AM\">AM<\/option>\n<option value=\"PM\">PM<\/option>\n<\/select>\n<\/div>\n<\/div>\n\n<div class=\"ecbf-return-selections\">\n<p id=\"ecbf-return-selections-summary\" class=\"ecbf-return-selections-summary\"><\/p>\n<button type=\"button\" id=\"ecbf-return-edit-toggle\" class=\"ecbf-return-edit-toggle\">Edit selections<\/button>\n<\/div>\n\n<div id=\"ecbf-return-edit-panel\" class=\"ecbf-return-edit-panel\" style=\"display:none;\">\n<div class=\"ecbf-return-stepper-row\">\n<div class=\"ecbf-field\">\n<label><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#8a9bb5\" stroke-width=\"1.8\"><path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"><\/path><circle cx=\"9\" cy=\"7\" r=\"4\"><\/circle><path d=\"M23 21v-2a4 4 0 0 0-3-3.87M16 3.13a4 4 0 0 1 0 7.75\"><\/path><\/svg> Guests Number<\/label>\n<div class=\"ecbf-stepper\">\n<button type=\"button\" class=\"ecbf-stepper-btn\" data-target=\"ecbf-return-guests\" data-dir=\"-1\">\u2212<\/button>\n<input type=\"text\" id=\"ecbf-return-guests\" class=\"ecbf-stepper-input\" value=\"1\" readonly>\n<button type=\"button\" class=\"ecbf-stepper-btn\" data-target=\"ecbf-return-guests\" data-dir=\"1\">+<\/button>\n<\/div>\n<\/div>\n<div class=\"ecbf-field\">\n<label><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#8a9bb5\" stroke-width=\"1.8\"><rect x=\"2\" y=\"7\" width=\"20\" height=\"13\" rx=\"2\"><\/rect><path d=\"M16 7V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v2\"><\/path><\/svg> Bags Number<\/label>\n<div class=\"ecbf-stepper\">\n<button type=\"button\" class=\"ecbf-stepper-btn\" data-target=\"ecbf-return-bags\" data-dir=\"-1\">\u2212<\/button>\n<input type=\"text\" id=\"ecbf-return-bags\" class=\"ecbf-stepper-input\" value=\"0\" readonly>\n<button type=\"button\" class=\"ecbf-stepper-btn\" data-target=\"ecbf-return-bags\" data-dir=\"1\">+<\/button>\n<\/div>\n<\/div>\n<\/div>\n<p class=\"ecbf-return-vehicle-label\">Choose a vehicle for the return leg:<\/p>\n<div id=\"ecbf-return-vehicle-grid\" class=\"ecbf-vehicle-grid ecbf-return-vehicle-grid\"><\/div>\n<\/div>\n\n<button type=\"button\" id=\"ecbf-return-save\" class=\"ecbf-submit-btn\">Save Return Trip<\/button>\n<p id=\"ecbf-return-error\" class=\"ecbf-error-msg\"><\/p>\n<\/div>\n<\/div>\n\n<!-- \u2500\u2500 MEET & GREET MODAL \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n<div id=\"ecbf-mg-overlay\" class=\"ecbf-return-overlay\">\n<div class=\"ecbf-return-modal ecbf-addon-modal\">\n<div class=\"ecbf-return-modal-head\">\n<span>Meet & Greet<\/span>\n<button type=\"button\" id=\"ecbf-mg-close\" aria-label=\"Close\">\u00d7<\/button>\n<\/div>\n<img decoding=\"async\" class=\"ecbf-addon-img\" src=\"https:\/\/ectransfers.com\/nhmadison\/wp-content\/uploads\/2025\/02\/MG.jpeg\" alt=\"Meet & Greet\">\n<p class=\"ecbf-addon-price\">$25<\/p>\n<p class=\"ecbf-addon-note\">Pick up on arrival hall if the parking lot is open only.<\/p>\n<button type=\"button\" id=\"ecbf-mg-confirm\" class=\"ecbf-submit-btn\">Confirm<\/button>\n<button type=\"button\" id=\"ecbf-mg-remove\" class=\"ecbf-addon-remove\" style=\"display:none;\">Remove Meet & Greet<\/button>\n<\/div>\n<\/div>\n\n<!-- \u2500\u2500 CAR SEAT MODAL \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n<div id=\"ecbf-cs-overlay\" class=\"ecbf-return-overlay\">\n<div class=\"ecbf-return-modal ecbf-addon-modal\">\n<div class=\"ecbf-return-modal-head\">\n<span>Car Seat<\/span>\n<button type=\"button\" id=\"ecbf-cs-close\" aria-label=\"Close\">\u00d7<\/button>\n<\/div>\n<div class=\"ecbf-cs-options\">\n<button type=\"button\" class=\"ecbf-cs-option\" id=\"ecbf-cs-front\" data-seat=\"front\">\n<img decoding=\"async\" src=\"https:\/\/ectransfers.com\/nhmadison\/wp-content\/uploads\/2024\/06\/frontcs.png\" alt=\"Front-facing car seat\">\n<span class=\"ecbf-cs-label\">Front-Facing<\/span>\n<span class=\"ecbf-cs-price\">$25<\/span>\n<\/button>\n<button type=\"button\" class=\"ecbf-cs-option\" id=\"ecbf-cs-rear\" data-seat=\"rear\">\n<img decoding=\"async\" src=\"https:\/\/ectransfers.com\/nhmadison\/wp-content\/uploads\/2024\/05\/rear-facing.png\" alt=\"Rear-facing car seat\">\n<span class=\"ecbf-cs-label\">Rear-Facing<\/span>\n<span class=\"ecbf-cs-price\">$25<\/span>\n<\/button>\n<\/div>\n<button type=\"button\" id=\"ecbf-cs-confirm\" class=\"ecbf-submit-btn\">Confirm<\/button>\n<\/div>\n<\/div>\n\n<\/div>\n\n<style>\nhtml,body{background:#0f1623!important;margin:0!important;padding:0!important;}\n#ec-bf{all:initial;display:block;position:relative!important;width:100vw!important;max-width:100vw!important;left:50%!important;right:50%!important;margin-left:-50vw!important;margin-right:-50vw!important;min-height:100vh!important;min-height:100dvh!important;font-family:'Inter',-apple-system,BlinkMacSystemFont,sans-serif!important;background:#0f1623!important;color:#e8eaf0;padding:64px 20px;box-sizing:border-box;}\n#ec-bf *,#ec-bf *::before,#ec-bf *::after{box-sizing:border-box!important;margin:0;padding:0}\n#ec-bf .ecbf-wizard{max-width:1080px;margin:0 auto;}\n#ec-bf .ecbf-h1{display:block;text-align:center;font-size:12px!important;font-weight:500!important;letter-spacing:.12em;text-transform:uppercase;color:#8a9bb5!important;margin-bottom:6px!important}\n#ec-bf .ecbf-subtitle{display:block;text-align:center;font-size:21px!important;font-weight:700!important;color:#fff!important;margin-bottom:24px!important;letter-spacing:-.02em}\n#ec-bf .ecbf-req{color:#fc8181;font-weight:700;}\n#ec-bf .ecbf-field{margin-bottom:18px;}\n#ec-bf .ecbf-field-wide{grid-column:span 2;}\n#ec-bf .ecbf-field label{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#7f93b8;margin-bottom:9px;}\n#ec-bf .ecbf-field input,#ec-bf select{width:100%;padding:12px 14px;border-radius:10px;border:1.5px solid #2f3f60;background:#1a2236;color:#fff;font-size:14px;font-family:inherit;transition:border-color .15s;color-scheme:dark;}\n#ec-bf .ecbf-field input:focus,#ec-bf select:focus{outline:none;border-color:#4a90d9;}\n#ec-bf .ecbf-field input::placeholder{color:#5a6b85;}\n#ec-bf .ecbf-field input[readonly]{background:#141c2c;color:#c8d4e8;}\n\n#ec-bf .ecbf-pill-group{display:flex;gap:8px;flex-wrap:wrap;}\n#ec-bf .ecbf-pill{display:inline-flex;align-items:center;gap:6px;background:#1a2236;border:1.5px solid #2f3f60;color:#c8d4e8;padding:10px 16px;border-radius:999px;font-size:13px;font-weight:700;cursor:pointer;font-family:inherit;transition:border-color .15s,background .15s,color .15s,box-shadow .15s,transform .15s;}\n#ec-bf .ecbf-pill:hover{transform:translateY(-1px);}\n#ec-bf .ecbf-pill.active{background:linear-gradient(135deg,#4a90d9,#2f6bb0);border-color:#6bb0f0;color:#fff;box-shadow:0 4px 16px rgba(74,144,217,.4);}\n#ec-bf .ecbf-pill.ecbf-pill-agent.active{background:linear-gradient(135deg,#C8A35E,#a5813f);border-color:#e9d29b;color:#191307;box-shadow:0 4px 16px rgba(200,163,94,.4);}\n#ec-bf .ecbf-pill.ecbf-pill-payment.active{background:linear-gradient(135deg,#48bb78,#2f8f57);border-color:#6fd696;color:#fff;box-shadow:0 4px 16px rgba(72,187,120,.4);}\n#ec-bf .ecbf-pill.ecbf-hidden{display:none!important;}\n#ec-bf .ecbf-pill svg{stroke:currentColor;}\n\n#ec-bf .ecbf-datetime-row{display:flex!important;flex-wrap:nowrap;align-items:center;gap:16px;max-width:460px;}\n#ec-bf .ecbf-date-input{flex:0 0 155px;min-width:0;padding:11px 10px;font-size:13px;}\n#ec-bf .ecbf-time-select{flex:0 0 58px;padding:11px 4px;font-size:13px;text-align:center;text-align-last:center;}\n#ec-bf .ecbf-ampm-select{flex:0 0 64px;padding:11px 4px;font-size:13px;text-align:center;text-align-last:center;}\n#ec-bf .ecbf-time-colon{flex:0 0 auto;color:#7f93b8;font-weight:700;}\n\n#ec-bf .ecbf-trip-row{display:grid;grid-template-columns:1.3fr 1.3fr 1fr 1fr;gap:36px;align-items:start;}\n#ec-bf .ecbf-trip-row .ecbf-field{margin-bottom:0;}\n#ec-bf .ecbf-trip-row .ecbf-pill-group{flex-wrap:nowrap;}\n#ec-bf .ecbf-trip-row .ecbf-pill{padding:10px 12px;flex:1;justify-content:center;white-space:nowrap;}\n#ec-bf .ecbf-stepper{display:flex;align-items:center;gap:8px;}\n#ec-bf .ecbf-stepper-input{text-align:center;flex:1;}\n#ec-bf .ecbf-stepper-btn{flex:0 0 40px;height:40px;border-radius:10px;border:none;background:#4a90d9;color:#fff;font-size:18px;font-weight:700;cursor:pointer;line-height:1;transition:background .15s,opacity .15s;}\n#ec-bf .ecbf-stepper-btn:hover{background:#3f7cc0;}\n#ec-bf .ecbf-stepper-btn:disabled{opacity:.35;cursor:not-allowed;}\n\n#ec-bf .ecbf-submit-btn{width:100%;padding:15px;border-radius:12px;border:none;background:linear-gradient(135deg,#4a90d9,#2f6bb0);color:#fff;font-size:15px;font-weight:700;cursor:pointer;font-family:inherit;box-shadow:0 6px 20px rgba(74,144,217,.35);transition:transform .15s,box-shadow .15s,background .15s,opacity .15s;margin-top:8px;}\n#ec-bf .ecbf-submit-btn:disabled{background:#25304a;color:#5a6b85;cursor:not-allowed;box-shadow:none;}\n#ec-bf .ecbf-submit-btn:not(:disabled):hover{transform:translateY(-2px);box-shadow:0 10px 28px rgba(74,144,217,.5);}\n#ec-bf .ecbf-error-msg{margin-top:10px;font-size:12px;color:#fc8181;text-align:center;min-height:14px;}\n\n#ec-bf .ecbf-back-btn{background:#1a2236;border:1px solid #2f3f60;color:#c8d4e8;padding:8px 14px;border-radius:999px;font-size:12px;font-weight:700;cursor:pointer;font-family:inherit;margin-bottom:16px;transition:background .15s;}\n#ec-bf .ecbf-back-btn:hover{background:#232e48;}\n\n#ec-bf .ecbf-step2-summary{text-align:center;color:#8a9bb5;font-size:13px;margin-bottom:22px;}\n#ec-bf .ecbf-peak-note{text-align:center;color:#ffab40;font-size:12px;font-weight:600;margin-top:20px;}\n#ec-bf .ecbf-vehicle-section{margin-top:28px;padding-top:24px;border-top:1px dashed #2f3f60;}\n#ec-bf .ecbf-vehicle-section-title{text-align:center;font-size:16px;font-weight:700;color:#fff;margin-bottom:10px;}\n#ec-bf .ecbf-vehicle-grid{display:grid!important;grid-template-columns:repeat(5,1fr);gap:12px;}\n#ec-bf .ecbf-vehicle-card{background:#1a2236!important;border:1.5px solid #283148!important;border-radius:14px!important;width:100%!important;min-width:0;padding:14px 10px 14px!important;cursor:pointer;transition:border-color .2s,box-shadow .2s,transform .15s;color:inherit;font-family:inherit;text-align:center;}\n#ec-bf .ecbf-vehicle-card:hover{border-color:#4a90d9!important;box-shadow:0 0 0 3px rgba(74,144,217,.12)!important;transform:translateY(-2px)}\n#ec-bf .ecbf-vehicle-card .ecbf-v-label{display:block;font-size:15px;font-weight:700;letter-spacing:.02em;color:#e8eaf0;margin-bottom:10px;}\n#ec-bf .ecbf-vehicle-card img{width:100%;height:108px;object-fit:contain;display:block;filter:drop-shadow(0 3px 10px rgba(0,0,0,.5));margin:0 0 10px;}\n#ec-bf .ecbf-vehicle-card .ecbf-v-specs{display:flex;justify-content:center;gap:16px;margin-bottom:12px;font-size:13px;color:#9bacc9;font-weight:600;}\n#ec-bf .ecbf-vehicle-card .ecbf-v-prices{display:flex;flex-direction:column;gap:6px;border-top:1px solid #283148;padding-top:12px;}\n#ec-bf .ecbf-vehicle-card .ecbf-v-price-line{display:flex;justify-content:space-between;font-size:13px;color:#9bacc9;}\n#ec-bf .ecbf-vehicle-card .ecbf-v-price-line strong{color:#fff;font-size:16px;}\n#ec-bf .ecbf-vehicle-card .ecbf-v-price-line.ecbf-peak-line span:first-child{color:#ffab40;}\n#ec-bf .ecbf-vehicle-card .ecbf-v-price-line.ecbf-peak-line strong{color:#ffab40;}\n#ec-bf .ecbf-no-pricing{text-align:center;padding:30px 20px;}\n#ec-bf .ecbf-no-pricing p{color:#9bacc9;margin-bottom:16px;font-size:14px;}\n\n#ec-bf .ecbf-step3-layout{display:grid;grid-template-columns:1fr 240px;gap:24px;align-items:start;}\n#ec-bf .ecbf-row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px;margin-bottom:4px;}\n#ec-bf .ecbf-section-title{font-size:13px;font-weight:700;color:#fff;margin:20px 0 12px;padding-bottom:8px;border-bottom:1px dashed #2f3f60;}\n#ec-bf .ecbf-confirm-payment-row{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:start;}\n#ec-bf .ecbf-confirm-payment-row .ecbf-section-title{margin-top:0;}\n#ec-bf .ecbf-phone-row{display:flex;gap:6px;}\n#ec-bf .ecbf-phone-code-wrap{position:relative;flex:0 0 96px;}\n#ec-bf .ecbf-phone-code-btn{width:100%;height:100%;padding:12px 8px;border-radius:10px;border:1.5px solid #2f3f60;background:#1a2236;color:#fff;font-size:13px;font-family:inherit;cursor:pointer;text-align:left;transition:border-color .15s;}\n#ec-bf .ecbf-phone-code-btn:hover{border-color:#4a90d9;}\n#ec-bf .ecbf-phone-code-panel{position:absolute;top:calc(100% + 6px);left:0;width:250px;background:#141c2c;border:1.5px solid #2f3f60;border-radius:12px;box-shadow:0 12px 30px rgba(0,0,0,.5);z-index:30;padding:8px;}\n#ec-bf .ecbf-phone-code-search{width:100%;padding:9px 10px;margin-bottom:6px;border-radius:8px;border:1.5px solid #2f3f60;background:#0f1623;color:#fff;font-size:13px;font-family:inherit;}\n#ec-bf .ecbf-phone-code-list{max-height:220px;overflow-y:auto;display:flex;flex-direction:column;gap:2px;}\n#ec-bf .ecbf-phone-code-item{display:flex;align-items:center;gap:8px;background:transparent;border:none;color:#c8d4e8;padding:8px 8px;border-radius:8px;cursor:pointer;font-size:13px;text-align:left;font-family:inherit;width:100%;}\n#ec-bf .ecbf-phone-code-item:hover{background:#1f2b45;}\n#ec-bf .ecbf-phone-code-header{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#7f93b8;padding:8px 8px 4px;}\n#ec-bf .ecbf-phone-code-divider{height:1px;background:#2f3f60;margin:6px 4px;}\n#ec-bf .ecbf-pci-dial{margin-left:auto;color:#7f93b8;font-size:12px;}\n#ec-bf .ecbf-peak-tag{color:#ffab40;font-weight:800;}\n#ec-bf .ecbf-datetime-plus-return{display:flex;align-items:center;gap:16px;flex-wrap:wrap;}\n#ec-bf .ecbf-add-return-btn{background:transparent;border:1.5px dashed #4a90d9;color:#7ec8ff;padding:10px 16px;border-radius:10px;font-size:12px;font-weight:700;cursor:pointer;font-family:inherit;white-space:nowrap;transition:background .15s,border-color .15s;}\n#ec-bf .ecbf-add-return-btn:hover{background:rgba(74,144,217,.1);}\n#ec-bf .ecbf-add-return-btn.ecbf-return-active{border-style:solid;border-color:#48bb78;color:#7fe0a8;background:rgba(72,187,120,.1);}\n\n#ec-bf .ecbf-return-overlay{display:none;position:fixed;inset:0;background:rgba(5,8,14,.75);backdrop-filter:blur(2px);z-index:99999;align-items:center;justify-content:center;padding:16px;}\n#ec-bf .ecbf-return-overlay.open{display:flex;}\n#ec-bf .ecbf-return-modal{background:linear-gradient(180deg,#182036,#121a2c);border:1px solid #2a3a5c;border-radius:18px;width:100%;max-width:480px;padding:22px 22px 26px;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px rgba(0,0,0,.5);}\n#ec-bf .ecbf-return-modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;}\n#ec-bf .ecbf-return-modal-head span{font-size:18px;font-weight:700;color:#fff;}\n#ec-bf #ecbf-return-close{background:#1f2b45;border:1px solid #32456b;color:#c8d4e8;width:30px;height:30px;border-radius:50%;cursor:pointer;font-size:16px;line-height:1;}\n#ec-bf #ecbf-return-close:hover{background:#2a3a5c;color:#fff;}\n#ec-bf .ecbf-return-pickup-note{font-size:13px;color:#9bacc9;margin-bottom:18px;}\n#ec-bf .ecbf-return-pickup-note strong{color:#fff;}\n#ec-bf .ecbf-return-selections{background:#0d1525;border:1px solid #2f3f60;border-radius:12px;padding:12px 14px;display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px;flex-wrap:wrap;}\n#ec-bf .ecbf-return-selections-summary{font-size:12px;color:#c8d4e8;line-height:1.6;}\n#ec-bf .ecbf-return-edit-toggle{background:transparent;border:1px solid #4a90d9;color:#7ec8ff;padding:7px 12px;border-radius:999px;font-size:11px;font-weight:700;cursor:pointer;font-family:inherit;white-space:nowrap;}\n#ec-bf .ecbf-return-edit-toggle:hover{background:rgba(74,144,217,.12);}\n#ec-bf .ecbf-return-edit-toggle.active{background:#4a90d9;color:#fff;}\n#ec-bf .ecbf-return-edit-panel{margin-bottom:14px;}\n#ec-bf .ecbf-return-stepper-row{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px;}\n#ec-bf .ecbf-return-vehicle-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#7f93b8;margin-bottom:10px;}\n#ec-bf .ecbf-return-vehicle-grid{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(110px,1fr))!important;gap:10px;}\n#ec-bf .ecbf-return-vehicle-grid .ecbf-vehicle-card{padding:10px 8px!important;}\n#ec-bf .ecbf-return-vehicle-grid .ecbf-vehicle-card img{height:56px;}\n#ec-bf .ecbf-return-vehicle-grid .ecbf-vehicle-card .ecbf-v-label{font-size:12px;margin-bottom:4px;}\n#ec-bf .ecbf-return-vehicle-grid .ecbf-vehicle-card.ecbf-selected{border-color:#48bb78!important;box-shadow:0 0 0 3px rgba(72,187,120,.18)!important;}\n#ec-bf .ecbf-addon-modal{max-width:380px;}\n#ec-bf .ecbf-addon-img{width:100%;border-radius:12px;margin-bottom:14px;display:block;}\n#ec-bf .ecbf-addon-price{font-size:26px;font-weight:800;color:#fff;text-align:center;margin-bottom:10px;}\n#ec-bf .ecbf-addon-note{font-size:13px;color:#9bacc9;text-align:center;line-height:1.6;margin-bottom:18px;}\n#ec-bf .ecbf-addon-remove{display:block;width:100%;margin-top:10px;background:transparent;border:none;color:#fc8181;font-size:12px;font-weight:700;cursor:pointer;font-family:inherit;padding:8px;}\n#ec-bf .ecbf-addon-remove:hover{text-decoration:underline;}\n#ec-bf .ecbf-cs-options{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:18px;}\n#ec-bf .ecbf-cs-option{background:#1a2236;border:1.5px solid #283148;border-radius:14px;padding:14px 10px;cursor:pointer;font-family:inherit;color:inherit;text-align:center;transition:border-color .2s,box-shadow .2s,transform .15s;}\n#ec-bf .ecbf-cs-option:hover{transform:translateY(-2px);border-color:#4a90d9;}\n#ec-bf .ecbf-cs-option.ecbf-selected{border-color:#48bb78;box-shadow:0 0 0 3px rgba(72,187,120,.18);}\n#ec-bf .ecbf-cs-option img{width:100%;height:90px;object-fit:contain;margin-bottom:10px;filter:drop-shadow(0 3px 10px rgba(0,0,0,.5));}\n#ec-bf .ecbf-cs-label{display:block;font-size:13px;font-weight:700;color:#e8eaf0;margin-bottom:4px;}\n#ec-bf .ecbf-cs-price{display:block;font-size:14px;font-weight:800;color:#fff;}\n#ec-bf .ecbf-check-flight-btn{display:inline-block;margin-top:8px;margin-right:8px;font-size:11px;font-weight:700;color:#191307;background:linear-gradient(135deg,#C8A35E,#a5813f);border:none;padding:7px 14px;border-radius:999px;cursor:pointer;font-family:inherit;}\n#ec-bf .ecbf-check-flight-btn:hover{opacity:.9;}\n#ec-bf .ecbf-check-flight-btn:disabled{opacity:.6;cursor:not-allowed;}\n#ec-bf .ecbf-flight-check-result{margin-top:10px;padding:10px 12px;border-radius:10px;font-size:12px;line-height:1.6;}\n#ec-bf .ecbf-flight-check-result.ecbf-fc-found{background:rgba(72,187,120,.12);border:1px solid rgba(72,187,120,.4);color:#c8ecd6;}\n#ec-bf .ecbf-flight-check-result.ecbf-fc-notfound{background:rgba(252,129,129,.1);border:1px solid rgba(252,129,129,.35);color:#f4c3c3;}\n#ec-bf .ecbf-flight-check-result.ecbf-fc-loading{background:#0d1525;border:1px solid #2f3f60;color:#9bacc9;}\n\n#ec-bf .ecbf-summary-col{display:flex;flex-direction:column;gap:16px;position:sticky;top:20px;}\n#ec-bf .ecbf-summary-card{background:#0d1525;border:1px solid #2f3f60;border-radius:14px;padding:16px;}\n#ec-bf .ecbf-summary-title{display:block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:#7f93b8;margin-bottom:10px;text-align:center;}\n#ec-bf .ecbf-summary-card img{width:100%;height:90px;object-fit:contain;filter:drop-shadow(0 3px 10px rgba(0,0,0,.5));margin-bottom:10px;}\n#ec-bf #ecbf-summary-lines{font-size:12px;color:#c8d4e8;line-height:1.9;white-space:pre-line;}\n#ec-bf .ecbf-extra-row{display:flex;align-items:center;gap:10px;}\n#ec-bf .ecbf-extra-row + .ecbf-extra-row{margin-top:12px;}\n#ec-bf .ecbf-extra-row img{width:44px;height:44px;object-fit:cover;border-radius:8px;flex:0 0 44px;margin-bottom:0;filter:none;}\n#ec-bf .ecbf-extra-row-text{font-size:12px;color:#c8d4e8;line-height:1.5;}\n#ec-bf .ecbf-extra-row-text strong{display:block;color:#fff;font-size:13px;}\n#ec-bf .ecbf-total-card{text-align:center;background:rgba(72,187,120,.1);border-color:#48bb78;box-shadow:0 0 0 1px rgba(72,187,120,.15) inset;}\n#ec-bf .ecbf-total-card .ecbf-summary-title{color:#7fe0a8;}\n#ec-bf #ecbf-total-lines{font-size:22px;font-weight:800;color:#7fe0a8;}\n\n#ec-bf .ecbf-result{max-width:760px;margin:0 auto;text-align:center;padding:20px 0 4px;}\n#ec-bf .ecbf-confirm-badge{width:52px;height:52px;border-radius:50%;background:radial-gradient(circle,rgba(72,187,120,.25),rgba(72,187,120,.04));border:2px solid #48bb78;display:flex;align-items:center;justify-content:center;margin:0 auto 12px;box-shadow:0 0 24px rgba(72,187,120,.3);}\n#ec-bf .ecbf-confirm-check{font-size:24px;line-height:1;color:#48bb78;font-weight:800;}\n#ec-bf .ecbf-result-title{font-size:19px;font-weight:800;color:#fff;margin-bottom:8px;letter-spacing:-.01em;}\n#ec-bf .ecbf-confirm-id{display:inline-block;background:#1a2236;border:1px solid #2f3f60;border-radius:999px;padding:5px 16px;font-size:12px;font-weight:700;color:#7ec8ff;letter-spacing:.03em;margin-bottom:16px;font-family:'Courier New',monospace;}\n#ec-bf .ecbf-confirm-row-group{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:10px;}\n#ec-bf .ecbf-confirm-row-group .ecbf-confirm-card{flex:1 1 160px;min-width:160px;}\n#ec-bf .ecbf-confirm-card{background:#0d1525;border:1px solid #2f3f60;border-radius:12px;padding:12px 14px;text-align:left;}\n#ec-bf .ecbf-confirm-card-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#7f93b8;margin-bottom:6px;}\n#ec-bf .ecbf-confirm-subid{font-family:'Courier New',monospace;color:#7ec8ff;text-transform:none;letter-spacing:0;margin-left:4px;}\n#ec-bf .ecbf-confirm-row{display:flex;justify-content:space-between;gap:10px;padding:5px 0;border-bottom:1px solid #1c2740;font-size:12px;}\n#ec-bf .ecbf-confirm-row:last-child{border-bottom:none;padding-bottom:0;}\n#ec-bf .ecbf-confirm-row-label{color:#8a9bb5;flex:0 0 auto;}\n#ec-bf .ecbf-confirm-row-value{color:#e8eaf0;font-weight:600;text-align:right;}\n#ec-bf .ecbf-confirm-rf-badge{display:block;color:#C8A35E;font-weight:700;font-size:11px;margin-top:2px;}\n#ec-bf .ecbf-confirm-extras-row{display:flex;align-items:center;gap:8px;padding:4px 0;}\n#ec-bf .ecbf-confirm-extras-row img{width:28px;height:28px;object-fit:cover;border-radius:6px;flex:0 0 28px;}\n#ec-bf .ecbf-confirm-extras-row span{font-size:12px;color:#e8eaf0;}\n#ec-bf .ecbf-confirm-vehicle-card{display:flex;align-items:center;justify-content:center;}\n#ec-bf .ecbf-confirm-vehicle-img{max-width:100%;max-height:70px;width:auto;height:auto;display:block;margin:0 auto;filter:drop-shadow(0 3px 10px rgba(0,0,0,.5));}\n#ec-bf .ecbf-confirm-total-row{display:flex;gap:10px;margin-bottom:14px;}\n#ec-bf .ecbf-confirm-total-box{flex:1 1 0;background:rgba(72,187,120,.1);border:1.5px solid #48bb78;border-radius:12px;padding:10px;text-align:center;}\n#ec-bf .ecbf-confirm-total-box .ecbf-confirm-card-title{color:#7fe0a8;text-align:center;margin-bottom:2px;}\n#ec-bf .ecbf-confirm-total-value{font-size:22px;font-weight:800;color:#7fe0a8;}\n#ec-bf .ecbf-confirm-note{font-size:11px;color:#7f93b8;margin-bottom:10px;line-height:1.5;}\n#ec-bf .ecbf-new-booking-btn{background:transparent;border:none;color:#7ec8ff;font-size:12px;font-weight:700;cursor:pointer;font-family:inherit;padding:6px;text-decoration:underline;}\n#ec-bf .ecbf-call-btn{display:inline-block;background:linear-gradient(135deg,#48bb78,#2f8f57);color:#fff;text-decoration:none;font-size:14px;font-weight:700;padding:13px 24px;border-radius:999px;box-shadow:0 6px 20px rgba(72,187,120,.4);transition:transform .15s,box-shadow .15s;}\n#ec-bf .ecbf-call-btn:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(72,187,120,.55);}\n\n@media(max-width:900px){\n#ec-bf .ecbf-trip-row{grid-template-columns:1fr 1fr;}\n#ec-bf .ecbf-vehicle-grid{display:flex!important;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:8px;}\n#ec-bf .ecbf-vehicle-card{flex:0 0 150px;width:150px!important;}\n}\n@media(max-width:720px){\n#ec-bf .ecbf-step3-layout{grid-template-columns:1fr;}\n#ec-bf .ecbf-row3{grid-template-columns:1fr;}\n#ec-bf .ecbf-field-wide{grid-column:auto;}\n#ec-bf .ecbf-trip-row{grid-template-columns:1fr;}\n}\n@media(max-width:480px){\n#ec-bf .ecbf-vehicle-card{width:140px!important;flex-basis:140px;padding:12px 10px!important}\n#ec-bf .ecbf-time-select{flex-basis:50px;padding:11px 2px;font-size:12px;}\n#ec-bf .ecbf-ampm-select{flex-basis:56px;padding:11px 2px;font-size:12px;}\n#ec-bf .ecbf-date-input{font-size:12px;padding:11px 6px;}\n}\n<\/style>\n\n<script>\n(function () {\ndocument.documentElement.style.overflowX = 'hidden';\ndocument.body.style.overflowX = 'hidden';\n\nvar restBase = \"https:\\\/\\\/ectransfers.com\\\/nhmadison\\\/wp-json\\\/ecbf\\\/v1\";\nvar matrix = {\"sedan\":{\"JFK\":[100,115],\"LGA\":[75,85],\"EWR\":[115,125]},\"minisuv\":{\"JFK\":[115,130],\"LGA\":[85,95],\"EWR\":[125,135]},\"regsuv\":{\"JFK\":[140,150],\"LGA\":[90,100],\"EWR\":[140,150]},\"vipsuv\":{\"JFK\":[160,165],\"LGA\":[115,120],\"EWR\":[160,165]},\"escalade\":{\"JFK\":[175,180],\"LGA\":[130,135],\"EWR\":[175,180]}};\nvar vehicles = {\"sedan\":{\"label\":\"Sedan\",\"img\":\"https:\\\/\\\/ectransfers.com\\\/nhmadison\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/Sedan.webp\",\"email_img\":\"https:\\\/\\\/ectransfers.com\\\/nhmadison\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/Luxsdn.png\",\"seats\":3,\"bags\":3},\"minisuv\":{\"label\":\"Mini Suv\",\"img\":\"https:\\\/\\\/ectransfers.com\\\/nhmadison\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/Small_Suv.webp\",\"email_img\":\"https:\\\/\\\/ectransfers.com\\\/nhmadison\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/ecosuv.png\",\"seats\":4,\"bags\":4},\"regsuv\":{\"label\":\"Regular Suv\",\"img\":\"https:\\\/\\\/ectransfers.com\\\/nhmadison\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/Regular_Suv.webp\",\"email_img\":\"https:\\\/\\\/ectransfers.com\\\/nhmadison\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/Regular-Chevy-suv.png\",\"seats\":6,\"bags\":6},\"vipsuv\":{\"label\":\"VIP Suv\",\"img\":\"https:\\\/\\\/ectransfers.com\\\/nhmadison\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/VIP_Suv.webp\",\"email_img\":\"https:\\\/\\\/ectransfers.com\\\/nhmadison\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/VIP_Suv_chevy.png\",\"seats\":6,\"bags\":6},\"escalade\":{\"label\":\"VIP Escalade\",\"img\":\"https:\\\/\\\/ectransfers.com\\\/nhmadison\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/VIP_Sv.png\",\"email_img\":\"https:\\\/\\\/ectransfers.com\\\/nhmadison\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/VIP_Sv.png\",\"seats\":6,\"bags\":6}};\nvar locations = [\"NH Hotel\",\"JFK\",\"LGA\",\"EWR\"];\n\nfunction pad2(n) { return (n < 10 ? '0' : '') + n; }\n\nfunction isPeakFor( month, hour24, minute ) {\nif (month === 1 || month === 2 || month === 3) return false;\nvar mins = hour24 * 60 + minute;\nreturn mins >= (13 * 60) && mins < (17 * 60 + 30);\n}\n\nfunction routeAirport( pickup, dropoff ) {\nvar airports = ['JFK', 'LGA', 'EWR'];\nif (pickup === 'NH Hotel' && airports.indexOf(dropoff) !== -1) return dropoff;\nif (dropoff === 'NH Hotel' && airports.indexOf(pickup) !== -1) return pickup;\nreturn null;\n}\n\n\/\/ \u2500\u2500 STATE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nvar state = {\npickup: null, dropoff: null, guests: 1, bags: 0,\nvehicle: null, agent: null, payment: null\n};\n\n\/\/ \u2500\u2500 STEP 1: date\/time setup \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nvar dateInput = document.getElementById('ecbf-date');\nvar hourSelect = document.getElementById('ecbf-hour');\nvar minuteSelect = document.getElementById('ecbf-minute');\nvar ampmSelect = document.getElementById('ecbf-ampm');\n\nfor (var h = 1; h <= 12; h++) {\nvar hOpt = document.createElement('option');\nhOpt.value = String(h); hOpt.textContent = pad2(h);\nhourSelect.appendChild(hOpt);\n}\nfor (var m = 0; m <= 55; m += 5) {\nvar mOpt = document.createElement('option');\nmOpt.value = String(m); mOpt.textContent = pad2(m);\nminuteSelect.appendChild(mOpt);\n}\n(function setDefaults() {\nvar now = new Date();\ndateInput.value = now.getFullYear() + '-' + pad2(now.getMonth() + 1) + '-' + pad2(now.getDate());\ndateInput.min = dateInput.value;\nvar hours24 = now.getHours();\nvar hours12 = hours24 % 12; if (hours12 === 0) hours12 = 12;\nhourSelect.value = String(hours12);\nminuteSelect.value = String(Math.floor(now.getMinutes() \/ 5) * 5);\nampmSelect.value = hours24 >= 12 ? 'PM' : 'AM';\n})();\n\nfunction getSelectedDateTime() {\nvar dateStr = dateInput.value;\nvar hour12 = parseInt(hourSelect.value, 10);\nvar minute = parseInt(minuteSelect.value, 10);\nvar ampm = ampmSelect.value;\nvar hour24 = hour12 % 12; if (ampm === 'PM') hour24 += 12;\nvar parts = dateStr.split('-');\nvar month = parts.length === 3 ? parseInt(parts[1], 10) : (new Date()).getMonth() + 1;\nreturn { dateStr: dateStr, hour12: hour12, minute: minute, ampm: ampm, hour24: hour24, month: month };\n}\n\n\/\/ \u2500\u2500 STEP 1: pick up \/ drop off mutual exclusion \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nvar pickupGroup = document.getElementById('ecbf-pickup-group');\nvar dropoffGroup = document.getElementById('ecbf-dropoff-group');\n\nfunction refreshDropoffVisibility() {\ndropoffGroup.querySelectorAll('.ecbf-loc-pill').forEach(function (btn) {\nvar loc = btn.getAttribute('data-loc');\nif (loc === state.pickup) {\nbtn.classList.add('ecbf-hidden');\nif (state.dropoff === loc) { state.dropoff = null; btn.classList.remove('active'); }\n} else {\nbtn.classList.remove('ecbf-hidden');\n}\n});\n}\n\npickupGroup.querySelectorAll('.ecbf-loc-pill').forEach(function (btn) {\nbtn.addEventListener('click', function () {\npickupGroup.querySelectorAll('.ecbf-loc-pill').forEach(function (b) { b.classList.remove('active'); });\nbtn.classList.add('active');\nstate.pickup = btn.getAttribute('data-loc');\nrefreshDropoffVisibility();\nrefreshVehicleSection();\n});\n});\ndropoffGroup.querySelectorAll('.ecbf-loc-pill').forEach(function (btn) {\nbtn.addEventListener('click', function () {\nif (btn.classList.contains('ecbf-hidden')) return;\ndropoffGroup.querySelectorAll('.ecbf-loc-pill').forEach(function (b) { b.classList.remove('active'); });\nbtn.classList.add('active');\nstate.dropoff = btn.getAttribute('data-loc');\nrefreshVehicleSection();\n});\n});\n\n\/\/ \u2500\u2500 STEP 1: guests \/ bags steppers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\ndocument.querySelectorAll('.ecbf-trip-row .ecbf-stepper-btn').forEach(function (btn) {\nbtn.addEventListener('click', function () {\nvar targetId = btn.getAttribute('data-target');\nvar dir = parseInt(btn.getAttribute('data-dir'), 10);\nvar input = document.getElementById(targetId);\nvar min = targetId === 'ecbf-guests' ? 1 : 0;\nvar val = Math.max(min, Math.min(20, parseInt(input.value, 10) + dir));\ninput.value = String(val);\nif (targetId === 'ecbf-guests') state.guests = val; else state.bags = val;\nrefreshVehicleSection();\n});\n});\n\n\/\/ \u2500\u2500 STEP NAVIGATION \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nvar step1 = document.getElementById('ecbf-step-1');\nvar step3 = document.getElementById('ecbf-step-3');\nvar stepConfirm = document.getElementById('ecbf-step-confirm');\ndocument.getElementById('ecbf-new-booking-btn').addEventListener('click', function () {\nlocation.reload();\n});\n\ndocument.querySelectorAll('.ecbf-back-btn').forEach(function (btn) {\nbtn.addEventListener('click', function () {\nstep3.style.display = 'none';\nstep1.style.display = '';\n});\n});\n\n\/\/ \u2500\u2500 Inline vehicle section (shows below Step 1 fields once\n\/\/ Pick up + Drop off are chosen; re-filters live as guests\/\n\/\/ bags change) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nvar vehicleSection = document.getElementById('ecbf-vehicle-section');\nvar vehicleGrid = document.getElementById('ecbf-vehicle-grid');\nvar noPricingBox = document.getElementById('ecbf-no-pricing');\nvar step2Summary = document.getElementById('ecbf-step2-summary');\n\nfunction refreshVehicleSection() {\nif (!state.pickup || !state.dropoff) {\nvehicleSection.style.display = 'none';\nreturn;\n}\nvehicleSection.style.display = '';\nbuildVehicleGrid();\n}\n\nfunction buildVehicleGrid() {\nvehicleGrid.innerHTML = '';\nstep2Summary.textContent = state.pickup + ' \u2192 ' + state.dropoff + ' \u00b7 ' + state.guests + ' guest' + (state.guests > 1 ? 's' : '') + ' \u00b7 ' + state.bags + ' bag' + (state.bags !== 1 ? 's' : '');\n\nvar airport = routeAirport(state.pickup, state.dropoff);\nif (!airport) {\nvehicleGrid.style.display = 'none';\nnoPricingBox.style.display = 'block';\nreturn;\n}\nvehicleGrid.style.display = 'flex';\nnoPricingBox.style.display = 'none';\n\nObject.keys(vehicles).forEach(function (key) {\nvar v = vehicles[key];\nif (state.guests > v.seats || state.bags > v.bags) return;\nvar pair = matrix[key] && matrix[key][airport];\nif (!pair) return;\n\nvar card = document.createElement('button');\ncard.type = 'button';\ncard.className = 'ecbf-vehicle-card';\ncard.innerHTML =\n'<span class=\"ecbf-v-label\">' + v.label + '<\/span>' +\n'<img decoding=\"async\" src=\"' + v.img + '\" alt=\"' + v.label + '\">' +\n'<span class=\"ecbf-v-specs\"><span>\ud83d\udc64 ' + v.seats + '<\/span><span>\ud83e\uddf3 ' + v.bags + '<\/span><\/span>' +\n'<span class=\"ecbf-v-prices\">' +\n'<span class=\"ecbf-v-price-line\"><span>Standard<\/span><strong>$' + pair[0] + '<\/strong><\/span>' +\n'<span class=\"ecbf-v-price-line ecbf-peak-line\"><span>Peak Hour<\/span><strong>$' + pair[1] + '<\/strong><\/span>' +\n'<\/span>';\ncard.addEventListener('click', function () {\nstate.vehicle = key;\nenterStep3();\n});\nvehicleGrid.appendChild(card);\n});\n\nif (!vehicleGrid.children.length) {\nvehicleGrid.style.display = 'none';\nnoPricingBox.style.display = 'block';\nnoPricingBox.querySelector('p').textContent = \"No vehicle fits that many guests\/bags \u2014 please call us.\";\n}\n}\n\n\/\/ \u2500\u2500 STEP 3: reservation details \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nvar roomFlightField = document.getElementById('ecbf-room-flight-field');\nvar roomFlightLabel = document.getElementById('ecbf-room-flight-label');\nvar roomFlightInput = document.getElementById('ecbf-room-flight-input');\nvar flightActions = document.getElementById('ecbf-flight-actions');\nvar checkFlightBtn = document.getElementById('ecbf-check-flight-btn');\nvar flightCheckResult = document.getElementById('ecbf-flight-check-result');\nvar guestsDisplay = document.getElementById('ecbf-guests-display');\nvar bagsDisplay = document.getElementById('ecbf-bags-display');\nvar summaryImg = document.getElementById('ecbf-summary-img');\nvar summaryLines = document.getElementById('ecbf-summary-lines');\n\nvar ICONS = {\nbed: '<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#8a9bb5\" stroke-width=\"1.8\"><path d=\"M2 20v-8a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v8M2 20v-3M22 20v-3M2 13V7a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2M12 9h8a2 2 0 0 1 2 2v2\"><\/path><\/svg>',\nplane: '<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#8a9bb5\" stroke-width=\"1.8\"><path d=\"M17.8 19.2 16 11l3.5-3.5C21 6 21.5 4 21 3c-1-.5-3 0-4.5 1.5L13 8 4.8 6.2c-.5-.1-1 .1-1.3.5l-.4.5c-.4.4-.3 1.1.2 1.4L9 12l-2 3H4l-1 1 3 2 2 3 1-1v-3l3-2 3.6 5.7c.3.5 1 .6 1.4.2l.5-.4c.4-.3.6-.8.5-1.3Z\"><\/path><\/svg>'\n};\n\nfunction updateSummary() {\nvar v = vehicles[state.vehicle];\nsummaryImg.src = v.img;\nvar dt = getSelectedDateTime();\nvar dateDisplay = dt.dateStr + ' ' + pad2(dt.hour12) + ':' + pad2(dt.minute) + dt.ampm;\nvar airport = routeAirport(state.pickup, state.dropoff);\nvar peak = isPeakFor(dt.month, dt.hour24, dt.minute);\nvar pair = matrix[state.vehicle] && matrix[state.vehicle][airport];\nvar price = pair ? (peak ? pair[1] : pair[0]) : null;\n\nvar html =\n'Vehicle: ' + v.label + '<br>' +\n'Date: ' + dateDisplay + '<br>' +\n'Pick up: ' + state.pickup + '<br>' +\n'Drop off: ' + state.dropoff + '<br>' +\n'Price: ' + (price !== null ? ('$' + price + (peak ? ' <span class=\"ecbf-peak-tag\">(Peak)<\/span>' : '')) : '\u2014');\n\nvar rPrice = null;\nif (returnState.active) {\nvar rAirport = routeAirport(state.dropoff, returnState.dropoff);\nvar rHour24 = returnState.hour12 % 12; if (returnState.ampm === 'PM') rHour24 += 12;\nvar rParts = returnState.dateStr.split('-');\nvar rMonth = parseInt(rParts[1], 10);\nvar rPeak = isPeakFor(rMonth, rHour24, returnState.minute);\nvar rPair = matrix[returnState.vehicle] && matrix[returnState.vehicle][rAirport];\nrPrice = rPair ? (rPeak ? rPair[1] : rPair[0]) : null;\nvar rDateDisplay = returnState.dateStr + ' ' + pad2(returnState.hour12) + ':' + pad2(returnState.minute) + returnState.ampm;\n\nhtml += '<br><br><strong>Return Trip<\/strong><br>' +\n'Vehicle: ' + vehicles[returnState.vehicle].label + '<br>' +\n'Date: ' + rDateDisplay + '<br>' +\n'Pick up: ' + state.dropoff + '<br>' +\n'Drop off: ' + returnState.dropoff + '<br>' +\n'Price: ' + (rPrice !== null ? ('$' + rPrice + (rPeak ? ' <span class=\"ecbf-peak-tag\">(Peak)<\/span>' : '')) : 'Call for pricing');\n}\n\nsummaryLines.innerHTML = html;\n\n\/\/ \u2500\u2500 Extras card (separate box, with thumbnail images) \u2500\u2500\u2500\u2500\nvar extrasTotal = 0;\nvar extrasRows = '';\nif (extrasState.meetGreet) {\nextrasRows += '<div class=\"ecbf-extra-row\"><img decoding=\"async\" src=\"https:\/\/ectransfers.com\/nhmadison\/wp-content\/uploads\/2025\/02\/MG.jpeg\" alt=\"Meet & Greet\"><span class=\"ecbf-extra-row-text\"><strong>Meet & Greet<\/strong>$25<\/span><\/div>';\nextrasTotal += 25;\n}\nif (extrasState.carSeatFront) {\nextrasRows += '<div class=\"ecbf-extra-row\"><img decoding=\"async\" src=\"https:\/\/ectransfers.com\/nhmadison\/wp-content\/uploads\/2024\/06\/frontcs.png\" alt=\"Car Seat (Front-Facing)\"><span class=\"ecbf-extra-row-text\"><strong>Car Seat (Front-Facing)<\/strong>$25<\/span><\/div>';\nextrasTotal += 25;\n}\nif (extrasState.carSeatRear) {\nextrasRows += '<div class=\"ecbf-extra-row\"><img decoding=\"async\" src=\"https:\/\/ectransfers.com\/nhmadison\/wp-content\/uploads\/2024\/05\/rear-facing.png\" alt=\"Car Seat (Rear-Facing)\"><span class=\"ecbf-extra-row-text\"><strong>Car Seat (Rear-Facing)<\/strong>$25<\/span><\/div>';\nextrasTotal += 25;\n}\n\nvar extrasCard = document.getElementById('ecbf-extras-card');\nif (extrasRows) {\ndocument.getElementById('ecbf-extras-lines').innerHTML = extrasRows;\nextrasCard.style.display = 'block';\n} else {\nextrasCard.style.display = 'none';\n}\n\n\/\/ \u2500\u2500 Total card (separate box, grand total) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nvar totalCard = document.getElementById('ecbf-total-card');\nif (price !== null) {\nvar grandTotal = price + (returnState.active && rPrice !== null ? rPrice : 0) + extrasTotal;\nvar totalNote = (returnState.active && rPrice === null) ? '<br><span class=\"ecbf-peak-tag\" style=\"font-size:11px;\">+ return, call for price<\/span>' : '';\ndocument.getElementById('ecbf-total-lines').innerHTML = '\u2713 $' + grandTotal + totalNote;\ntotalCard.style.display = 'block';\n} else {\ntotalCard.style.display = 'none';\n}\n}\n\nfunction enterStep3() {\nguestsDisplay.value = state.guests;\nbagsDisplay.value = state.bags;\nresetReturnState();\nresetExtrasState();\n\nmeetGreetBtn.style.display = (state.pickup !== 'NH Hotel') ? 'inline-block' : 'none';\n\nif (state.pickup === 'NH Hotel') {\nroomFlightLabel.innerHTML = ICONS.bed + ' Room # <span class=\"ecbf-req\">*<\/span>';\nroomFlightInput.placeholder = 'e.g. 826';\nflightActions.style.display = 'none';\n} else {\nroomFlightLabel.innerHTML = ICONS.plane + ' Flight # <span class=\"ecbf-req\">*<\/span>';\nroomFlightInput.placeholder = 'e.g. AA123';\nflightActions.style.display = 'block';\n}\nroomFlightInput.value = '';\nflightCheckResult.style.display = 'none';\n\nupdateSummary();\n\nstep1.style.display = 'none';\nstep3.style.display = '';\nupdateStep3Button();\n}\n\n[dateInput, hourSelect, minuteSelect, ampmSelect].forEach(function (el) {\nel.addEventListener('change', function () {\nif (state.vehicle) updateSummary();\n});\n});\n\n\/\/ \u2500\u2500 RETURN TRIP \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nvar returnState = { active: false, dropoff: null, guests: 1, bags: 0, vehicle: null, dateStr: null, hour12: null, minute: null, ampm: null, flightNumber: '' };\nvar returnDraft = {};\n\nvar returnOverlay = document.getElementById('ecbf-return-overlay');\nvar addReturnBtn = document.getElementById('ecbf-add-return-btn');\nvar returnPickupLabel = document.getElementById('ecbf-return-pickup-label');\nvar returnFlightField = document.getElementById('ecbf-return-flight-field');\nvar returnFlightInput = document.getElementById('ecbf-return-flight-input');\nvar returnDropoffGroup = document.getElementById('ecbf-return-dropoff-group');\nvar returnDateInput = document.getElementById('ecbf-return-date');\nvar returnHourSelect = document.getElementById('ecbf-return-hour');\nvar returnMinuteSelect = document.getElementById('ecbf-return-minute');\nvar returnAmpmSelect = document.getElementById('ecbf-return-ampm');\nvar returnSelectionsSummary = document.getElementById('ecbf-return-selections-summary');\nvar returnEditToggle = document.getElementById('ecbf-return-edit-toggle');\nvar returnEditPanel = document.getElementById('ecbf-return-edit-panel');\nvar returnGuestsInput = document.getElementById('ecbf-return-guests');\nvar returnBagsInput = document.getElementById('ecbf-return-bags');\nvar returnVehicleGrid = document.getElementById('ecbf-return-vehicle-grid');\nvar returnError = document.getElementById('ecbf-return-error');\nvar returnSaveBtn = document.getElementById('ecbf-return-save');\n\nfor (var rh = 1; rh <= 12; rh++) {\nvar rhOpt = document.createElement('option');\nrhOpt.value = String(rh); rhOpt.textContent = pad2(rh);\nreturnHourSelect.appendChild(rhOpt);\n}\nfor (var rm = 0; rm <= 55; rm += 5) {\nvar rmOpt = document.createElement('option');\nrmOpt.value = String(rm); rmOpt.textContent = pad2(rm);\nreturnMinuteSelect.appendChild(rmOpt);\n}\n\nfunction resetReturnState() {\nreturnState = { active: false, dropoff: null, guests: 1, bags: 0, vehicle: null, dateStr: null, hour12: null, minute: null, ampm: null, flightNumber: '' };\nupdateAddReturnButton();\n}\n\nfunction updateAddReturnButton() {\nif (returnState.active) {\naddReturnBtn.textContent = '\u2713 Return Added \u2014 Edit';\naddReturnBtn.classList.add('ecbf-return-active');\n} else {\naddReturnBtn.textContent = '+ Add Return';\naddReturnBtn.classList.remove('ecbf-return-active');\n}\n}\n\n\/\/ \u2500\u2500 EXTRAS: Meet & Greet + Car Seat \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nvar extrasState = { meetGreet: false, carSeatFront: false, carSeatRear: false };\nvar carSeatDraft = { front: false, rear: false };\n\nvar meetGreetBtn = document.getElementById('ecbf-meet-greet-btn');\nvar mgOverlay = document.getElementById('ecbf-mg-overlay');\nvar mgConfirmBtn = document.getElementById('ecbf-mg-confirm');\nvar mgRemoveBtn = document.getElementById('ecbf-mg-remove');\n\nvar carSeatBtn = document.getElementById('ecbf-car-seat-btn');\nvar csOverlay = document.getElementById('ecbf-cs-overlay');\nvar csFrontOption = document.getElementById('ecbf-cs-front');\nvar csRearOption = document.getElementById('ecbf-cs-rear');\nvar csConfirmBtn = document.getElementById('ecbf-cs-confirm');\n\nfunction resetExtrasState() {\nextrasState = { meetGreet: false, carSeatFront: false, carSeatRear: false };\nupdateMeetGreetButton();\nupdateCarSeatButton();\n}\n\nfunction updateMeetGreetButton() {\nif (extrasState.meetGreet) {\nmeetGreetBtn.textContent = '\u2713 Meet & Greet Added';\nmeetGreetBtn.classList.add('ecbf-return-active');\n} else {\nmeetGreetBtn.textContent = '+ Meet & Greet';\nmeetGreetBtn.classList.remove('ecbf-return-active');\n}\n}\n\nfunction updateCarSeatButton() {\nvar count = (extrasState.carSeatFront ? 1 : 0) + (extrasState.carSeatRear ? 1 : 0);\nif (count > 0) {\ncarSeatBtn.textContent = '\u2713 ' + count + ' Car Seat' + (count > 1 ? 's' : '') + ' Added';\ncarSeatBtn.classList.add('ecbf-return-active');\n} else {\ncarSeatBtn.textContent = '+ Car Seat';\ncarSeatBtn.classList.remove('ecbf-return-active');\n}\n}\n\nmeetGreetBtn.addEventListener('click', function () {\nmgRemoveBtn.style.display = extrasState.meetGreet ? 'block' : 'none';\nmgConfirmBtn.textContent = extrasState.meetGreet ? 'Confirm' : 'Confirm \u2014 Add $25';\nmgOverlay.classList.add('open');\n});\ndocument.getElementById('ecbf-mg-close').addEventListener('click', function () { mgOverlay.classList.remove('open'); });\nmgOverlay.addEventListener('click', function (e) { if (e.target === this) mgOverlay.classList.remove('open'); });\nmgConfirmBtn.addEventListener('click', function () {\nextrasState.meetGreet = true;\nupdateMeetGreetButton();\nupdateSummary();\nmgOverlay.classList.remove('open');\n});\nmgRemoveBtn.addEventListener('click', function () {\nextrasState.meetGreet = false;\nupdateMeetGreetButton();\nupdateSummary();\nmgOverlay.classList.remove('open');\n});\n\nfunction refreshCsOptionUI() {\ncsFrontOption.classList.toggle('ecbf-selected', carSeatDraft.front);\ncsRearOption.classList.toggle('ecbf-selected', carSeatDraft.rear);\n}\ncsFrontOption.addEventListener('click', function () { carSeatDraft.front = !carSeatDraft.front; refreshCsOptionUI(); });\ncsRearOption.addEventListener('click', function () { carSeatDraft.rear = !carSeatDraft.rear; refreshCsOptionUI(); });\n\ncarSeatBtn.addEventListener('click', function () {\ncarSeatDraft = { front: extrasState.carSeatFront, rear: extrasState.carSeatRear };\nrefreshCsOptionUI();\ncsOverlay.classList.add('open');\n});\ndocument.getElementById('ecbf-cs-close').addEventListener('click', function () { csOverlay.classList.remove('open'); });\ncsOverlay.addEventListener('click', function (e) { if (e.target === this) csOverlay.classList.remove('open'); });\ncsConfirmBtn.addEventListener('click', function () {\nextrasState.carSeatFront = carSeatDraft.front;\nextrasState.carSeatRear = carSeatDraft.rear;\nupdateCarSeatButton();\nupdateSummary();\ncsOverlay.classList.remove('open');\n});\n\nfunction updateReturnSelectionsSummary() {\nvar v = vehicles[returnDraft.vehicle];\nreturnSelectionsSummary.textContent = 'Guests: ' + returnDraft.guests + ' | Bags: ' + returnDraft.bags + ' | Car: ' + (v ? v.label : '\u2014');\n}\n\nfunction buildReturnVehicleGrid() {\nreturnVehicleGrid.innerHTML = '';\nvar airport = routeAirport(state.dropoff, returnDraft.dropoff);\nObject.keys(vehicles).forEach(function (key) {\nvar v = vehicles[key];\nif (returnDraft.guests > v.seats || returnDraft.bags > v.bags) return;\nvar pair = airport && matrix[key] ? matrix[key][airport] : null;\n\nvar card = document.createElement('button');\ncard.type = 'button';\ncard.className = 'ecbf-vehicle-card' + (key === returnDraft.vehicle ? ' ecbf-selected' : '');\ncard.innerHTML =\n'<span class=\"ecbf-v-label\">' + v.label + '<\/span>' +\n'<img decoding=\"async\" src=\"' + v.img + '\" alt=\"' + v.label + '\">' +\n(pair ? '<span class=\"ecbf-v-prices\"><span class=\"ecbf-v-price-line\"><span>Std<\/span><strong>$' + pair[0] + '<\/strong><\/span><span class=\"ecbf-v-price-line ecbf-peak-line\"><span>Peak<\/span><strong>$' + pair[1] + '<\/strong><\/span><\/span>' : '<span class=\"ecbf-v-prices\"><span class=\"ecbf-v-price-line\"><span>Call for price<\/span><\/span><\/span>');\ncard.addEventListener('click', function () {\nreturnDraft.vehicle = key;\nupdateReturnSelectionsSummary();\nreturnVehicleGrid.querySelectorAll('.ecbf-vehicle-card').forEach(function (c) { c.classList.remove('ecbf-selected'); });\ncard.classList.add('ecbf-selected');\n});\nreturnVehicleGrid.appendChild(card);\n});\n}\n\ndocument.querySelectorAll('#ecbf-return-edit-panel .ecbf-stepper-btn').forEach(function (btn) {\nbtn.addEventListener('click', function () {\nvar targetId = btn.getAttribute('data-target');\nvar dir = parseInt(btn.getAttribute('data-dir'), 10);\nvar input = document.getElementById(targetId);\nvar min = targetId === 'ecbf-return-guests' ? 1 : 0;\nvar val = Math.max(min, Math.min(20, parseInt(input.value, 10) + dir));\ninput.value = String(val);\nif (targetId === 'ecbf-return-guests') returnDraft.guests = val; else returnDraft.bags = val;\nupdateReturnSelectionsSummary();\nbuildReturnVehicleGrid();\n});\n});\n\nreturnEditToggle.addEventListener('click', function () {\nvar opening = returnEditPanel.style.display === 'none';\nreturnEditPanel.style.display = opening ? 'block' : 'none';\nreturnEditToggle.classList.toggle('active', opening);\nreturnEditToggle.textContent = opening ? 'Hide selections' : 'Edit selections';\nif (opening) {\nreturnGuestsInput.value = returnDraft.guests;\nreturnBagsInput.value = returnDraft.bags;\nbuildReturnVehicleGrid();\n}\n});\n\nfunction openReturnModal() {\nreturnDraft = {\ndropoff: returnState.active ? returnState.dropoff : state.pickup,\nguests: returnState.active ? returnState.guests : state.guests,\nbags: returnState.active ? returnState.bags : state.bags,\nvehicle: returnState.active ? returnState.vehicle : state.vehicle\n};\n\nreturnPickupLabel.textContent = state.dropoff;\n\nif (state.dropoff !== 'NH Hotel') {\nreturnFlightField.style.display = 'block';\nreturnFlightInput.value = returnState.active ? returnState.flightNumber : '';\n} else {\nreturnFlightField.style.display = 'none';\nreturnFlightInput.value = '';\n}\ndocument.getElementById('ecbf-return-flight-check-result').style.display = 'none';\n\nreturnDropoffGroup.innerHTML = '';\nlocations.forEach(function (loc) {\nif (loc === state.dropoff) return; \/\/ can't return-dropoff at the return-pickup location\nvar btn = document.createElement('button');\nbtn.type = 'button';\nbtn.className = 'ecbf-pill' + (loc === returnDraft.dropoff ? ' active' : '');\nbtn.textContent = loc;\nbtn.addEventListener('click', function () {\nreturnDropoffGroup.querySelectorAll('.ecbf-pill').forEach(function (b) { b.classList.remove('active'); });\nbtn.classList.add('active');\nreturnDraft.dropoff = loc;\nbuildReturnVehicleGrid();\n});\nreturnDropoffGroup.appendChild(btn);\n});\n\nif (returnState.active) {\nreturnDateInput.value = returnState.dateStr;\nreturnHourSelect.value = String(returnState.hour12);\nreturnMinuteSelect.value = String(returnState.minute);\nreturnAmpmSelect.value = returnState.ampm;\n} else {\n\/\/ Default the return date to one day after the outbound pickup,\n\/\/ same time \u2014 a sensible starting point for a round trip that the\n\/\/ guest can freely change.\nvar outbound = getSelectedDateTime();\nvar outboundDate = new Date(outbound.dateStr + 'T00:00:00');\noutboundDate.setDate(outboundDate.getDate() + 1);\nreturnDateInput.value = outboundDate.getFullYear() + '-' + pad2(outboundDate.getMonth() + 1) + '-' + pad2(outboundDate.getDate());\nreturnDateInput.min = dateInput.value;\nreturnHourSelect.value = String(outbound.hour12);\nreturnMinuteSelect.value = String(outbound.minute);\nreturnAmpmSelect.value = outbound.ampm;\n}\n\nupdateReturnSelectionsSummary();\nreturnEditPanel.style.display = 'none';\nreturnEditToggle.classList.remove('active');\nreturnEditToggle.textContent = 'Edit selections';\nreturnError.textContent = '';\nreturnOverlay.classList.add('open');\n}\n\nfunction closeReturnModal() {\nreturnOverlay.classList.remove('open');\n}\n\naddReturnBtn.addEventListener('click', openReturnModal);\ndocument.getElementById('ecbf-return-close').addEventListener('click', closeReturnModal);\nreturnOverlay.addEventListener('click', function (e) { if (e.target === this) closeReturnModal(); });\n\nreturnFlightInput.addEventListener('input', function () {\nvar cleaned = returnFlightInput.value.toUpperCase().replace(\/[^A-Z0-9]\/g, '');\nif (cleaned !== returnFlightInput.value) returnFlightInput.value = cleaned;\n});\ndocument.getElementById('ecbf-return-check-flight-btn').addEventListener('click', function () {\ncheckFlightNumber(returnFlightInput, document.getElementById('ecbf-return-flight-check-result'), document.getElementById('ecbf-return-check-flight-btn'));\n});\n\nreturnSaveBtn.addEventListener('click', function () {\nreturnError.textContent = '';\nif (!returnDraft.dropoff) { returnError.textContent = 'Please choose a return drop off.'; return; }\nif (!returnDateInput.value) { returnError.textContent = 'Please choose a return date.'; return; }\nif (state.dropoff !== 'NH Hotel' && !returnFlightInput.value.trim()) { returnError.textContent = 'Please enter the return flight number.'; return; }\n\nreturnState = {\nactive: true,\ndropoff: returnDraft.dropoff,\nguests: returnDraft.guests,\nbags: returnDraft.bags,\nvehicle: returnDraft.vehicle,\ndateStr: returnDateInput.value,\nhour12: parseInt(returnHourSelect.value, 10),\nminute: parseInt(returnMinuteSelect.value, 10),\nampm: returnAmpmSelect.value,\nflightNumber: state.dropoff !== 'NH Hotel' ? returnFlightInput.value.trim() : ''\n};\nupdateAddReturnButton();\nupdateSummary();\ncloseReturnModal();\n});\n\n\/\/ \u2500\u2500 Guest phone: searchable country code picker \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\/\/ \"popular\" flags the countries that send the most international\n\/\/ visitors to NYC (per NYC Tourism + Conventions visitor data) so\n\/\/ they surface first in the list instead of being buried alphabetically.\nvar PHONE_COUNTRIES = [\n{ flag: '\ud83c\uddec\ud83c\udde7', name: 'United Kingdom', dial: '+44', popular: true },\n{ flag: '\ud83c\udde8\ud83c\udde6', name: 'Canada', dial: '+1', popular: true },\n{ flag: '\ud83c\udde7\ud83c\uddf7', name: 'Brazil', dial: '+55', popular: true },\n{ flag: '\ud83c\uddeb\ud83c\uddf7', name: 'France', dial: '+33', popular: true },\n{ flag: '\ud83c\udde8\ud83c\uddf3', name: 'China', dial: '+86', popular: true },\n{ flag: '\ud83c\uddf2\ud83c\uddfd', name: 'Mexico', dial: '+52', popular: true },\n{ flag: '\ud83c\udde9\ud83c\uddea', name: 'Germany', dial: '+49', popular: true },\n{ flag: '\ud83c\uddee\ud83c\uddf9', name: 'Italy', dial: '+39', popular: true },\n{ flag: '\ud83c\udde6\ud83c\uddfa', name: 'Australia', dial: '+61', popular: true },\n{ flag: '\ud83c\uddf0\ud83c\uddf7', name: 'South Korea', dial: '+82', popular: true },\n{ flag: '\ud83c\uddea\ud83c\uddf8', name: 'Spain', dial: '+34', popular: true },\n{ flag: '\ud83c\uddee\ud83c\uddf1', name: 'Israel', dial: '+972', popular: true },\n{ flag: '\ud83c\uddfa\ud83c\uddf8', name: 'United States', dial: '+1', popular: true },\n{ flag: '\ud83c\udde6\ud83c\uddf7', name: 'Argentina', dial: '+54' },\n{ flag: '\ud83c\udde6\ud83c\uddf9', name: 'Austria', dial: '+43' },\n{ flag: '\ud83c\udde7\ud83c\uddea', name: 'Belgium', dial: '+32' },\n{ flag: '\ud83c\udde7\ud83c\uddf4', name: 'Bolivia', dial: '+591' },\n{ flag: '\ud83c\udde8\ud83c\uddf1', name: 'Chile', dial: '+56' },\n{ flag: '\ud83c\udde8\ud83c\uddf4', name: 'Colombia', dial: '+57' },\n{ flag: '\ud83c\udde8\ud83c\uddf7', name: 'Costa Rica', dial: '+506' },\n{ flag: '\ud83c\udde8\ud83c\uddfa', name: 'Cuba', dial: '+53' },\n{ flag: '\ud83c\udde9\ud83c\uddf4', name: 'Dominican Republic', dial: '+1' },\n{ flag: '\ud83c\uddea\ud83c\udde8', name: 'Ecuador', dial: '+593' },\n{ flag: '\ud83c\uddf8\ud83c\uddfb', name: 'El Salvador', dial: '+503' },\n{ flag: '\ud83c\uddec\ud83c\uddf9', name: 'Guatemala', dial: '+502' },\n{ flag: '\ud83c\udded\ud83c\uddf3', name: 'Honduras', dial: '+504' },\n{ flag: '\ud83c\udded\ud83c\uddfa', name: 'Hungary', dial: '+36' },\n{ flag: '\ud83c\uddee\ud83c\uddf3', name: 'India', dial: '+91' },\n{ flag: '\ud83c\uddee\ud83c\uddea', name: 'Ireland', dial: '+353' },\n{ flag: '\ud83c\uddef\ud83c\uddf2', name: 'Jamaica', dial: '+1' },\n{ flag: '\ud83c\uddef\ud83c\uddf5', name: 'Japan', dial: '+81' },\n{ flag: '\ud83c\uddf3\ud83c\uddf1', name: 'Netherlands', dial: '+31' },\n{ flag: '\ud83c\uddf3\ud83c\uddee', name: 'Nicaragua', dial: '+505' },\n{ flag: '\ud83c\uddf5\ud83c\udde6', name: 'Panama', dial: '+507' },\n{ flag: '\ud83c\uddf5\ud83c\uddfe', name: 'Paraguay', dial: '+595' },\n{ flag: '\ud83c\uddf5\ud83c\uddea', name: 'Peru', dial: '+51' },\n{ flag: '\ud83c\uddf5\ud83c\uddf1', name: 'Poland', dial: '+48' },\n{ flag: '\ud83c\uddf5\ud83c\uddf9', name: 'Portugal', dial: '+351' },\n{ flag: '\ud83c\uddf5\ud83c\uddf7', name: 'Puerto Rico', dial: '+1' },\n{ flag: '\ud83c\uddf7\ud83c\uddfa', name: 'Russia', dial: '+7' },\n{ flag: '\ud83c\uddf8\ud83c\uddea', name: 'Sweden', dial: '+46' },\n{ flag: '\ud83c\udde8\ud83c\udded', name: 'Switzerland', dial: '+41' },\n{ flag: '\ud83c\uddf9\ud83c\uddf7', name: 'Turkey', dial: '+90' },\n{ flag: '\ud83c\uddfa\ud83c\uddfe', name: 'Uruguay', dial: '+598' },\n{ flag: '\ud83c\uddfb\ud83c\uddea', name: 'Venezuela', dial: '+58' }\n];\n\nvar phoneCodeBtn = document.getElementById('ecbf-phone-code-btn');\nvar phoneCodePanel = document.getElementById('ecbf-phone-code-panel');\nvar phoneCodeSearch = document.getElementById('ecbf-phone-code-search');\nvar phoneCodeList = document.getElementById('ecbf-phone-code-list');\n\nfunction makePhoneCodeItem( c ) {\nvar item = document.createElement('button');\nitem.type = 'button';\nitem.className = 'ecbf-phone-code-item';\nitem.innerHTML = '<span>' + c.flag + '<\/span><span>' + c.name + '<\/span><span class=\"ecbf-pci-dial\">(' + c.dial + ')<\/span>';\nitem.addEventListener('click', function () {\nphoneCodeBtn.textContent = c.flag + ' ' + c.dial;\nphoneCodeBtn.setAttribute('data-dial', c.dial);\nphoneCodePanel.style.display = 'none';\nphoneCodeSearch.value = '';\n});\nreturn item;\n}\n\nfunction renderPhoneCodeList( filter ) {\nphoneCodeList.innerHTML = '';\nvar f = (filter || '').toLowerCase();\n\nif (!f) {\nvar header = document.createElement('div');\nheader.className = 'ecbf-phone-code-header';\nheader.textContent = 'Most visited by NYC guests';\nphoneCodeList.appendChild(header);\nPHONE_COUNTRIES.filter(function (c) { return c.popular; }).forEach(function (c) {\nphoneCodeList.appendChild(makePhoneCodeItem(c));\n});\nvar divider = document.createElement('div');\ndivider.className = 'ecbf-phone-code-divider';\nphoneCodeList.appendChild(divider);\nvar header2 = document.createElement('div');\nheader2.className = 'ecbf-phone-code-header';\nheader2.textContent = 'All countries';\nphoneCodeList.appendChild(header2);\nPHONE_COUNTRIES.filter(function (c) { return !c.popular; }).forEach(function (c) {\nphoneCodeList.appendChild(makePhoneCodeItem(c));\n});\nreturn;\n}\n\nPHONE_COUNTRIES.filter(function (c) {\nreturn c.name.toLowerCase().indexOf(f) !== -1 || c.dial.indexOf(f) !== -1;\n}).forEach(function (c) {\nphoneCodeList.appendChild(makePhoneCodeItem(c));\n});\n}\nrenderPhoneCodeList('');\n\nphoneCodeBtn.addEventListener('click', function (e) {\ne.stopPropagation();\nvar opening = phoneCodePanel.style.display === 'none';\nphoneCodePanel.style.display = opening ? 'block' : 'none';\nif (opening) { renderPhoneCodeList(''); phoneCodeSearch.focus(); }\n});\nphoneCodeSearch.addEventListener('input', function () { renderPhoneCodeList(phoneCodeSearch.value); });\ndocument.addEventListener('click', function (e) {\nif (!document.getElementById('ecbf-phone-code-wrap').contains(e.target)) phoneCodePanel.style.display = 'none';\n});\n\ndocument.getElementById('ecbf-agent-group').querySelectorAll('.ecbf-pill-agent').forEach(function (btn) {\nbtn.addEventListener('click', function () {\ndocument.querySelectorAll('#ecbf-agent-group .ecbf-pill').forEach(function (b) { b.classList.remove('active'); });\nbtn.classList.add('active');\nstate.agent = btn.getAttribute('data-agent');\nupdateStep3Button();\n});\n});\ndocument.getElementById('ecbf-payment-group').querySelectorAll('.ecbf-pill-payment').forEach(function (btn) {\nbtn.addEventListener('click', function () {\ndocument.querySelectorAll('#ecbf-payment-group .ecbf-pill').forEach(function (b) { b.classList.remove('active'); });\nbtn.classList.add('active');\nstate.payment = btn.getAttribute('data-payment');\nupdateStep3Button();\n});\n});\n\n\/\/ \u2500\u2500 Flight number verification (server-side FlightAware AeroAPI\n\/\/ lookup by ident only \u2014 no date needed) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction checkFlightNumber( inputEl, resultEl, btnEl ) {\nvar ident = inputEl.value.trim();\nif (!ident) { resultEl.className = 'ecbf-flight-check-result ecbf-fc-notfound'; resultEl.style.display = 'block'; resultEl.textContent = 'Enter a flight number first.'; return; }\n\nvar originalText = btnEl.textContent;\nbtnEl.disabled = true;\nbtnEl.textContent = 'Checking\u2026';\nresultEl.className = 'ecbf-flight-check-result ecbf-fc-loading';\nresultEl.style.display = 'block';\nresultEl.textContent = 'Checking ' + ident + '\u2026';\n\nfetch(restBase + '\/flight-lookup?ident=' + encodeURIComponent(ident))\n.then(function (r) { return r.json(); })\n.then(function (res) {\nbtnEl.disabled = false;\nbtnEl.textContent = originalText;\n\nif (!res || !res.ok) {\nresultEl.className = 'ecbf-flight-check-result ecbf-fc-notfound';\nresultEl.textContent = 'Couldn\\'t check that flight right now \u2014 you can still submit, we\\'ll confirm by phone.';\nreturn;\n}\nif (res.unavailable) {\nresultEl.className = 'ecbf-flight-check-result ecbf-fc-loading';\nresultEl.textContent = 'Flight lookup is temporarily unavailable \u2014 you can still submit, we\\'ll confirm by phone.';\nreturn;\n}\nif (!res.found) {\nresultEl.className = 'ecbf-flight-check-result ecbf-fc-notfound';\nresultEl.textContent = '\u26a0 No flight found for \"' + ident + '\". Double-check it matches the ticket exactly (e.g. AA95).';\nreturn;\n}\n\nresultEl.className = 'ecbf-flight-check-result ecbf-fc-found';\nvar route = (res.origin_code || '?') + (res.origin_city ? ' (' + res.origin_city + ')' : '') + ' \u2192 ' + (res.destination_code || '?') + (res.destination_city ? ' (' + res.destination_city + ')' : '');\nvar depTime = res.estimated_out || res.scheduled_out;\nvar depDisplay = depTime ? new Date(depTime).toLocaleString() : 'time TBD';\nvar arrTime = res.estimated_in || res.scheduled_in;\nvar arrDisplay = arrTime ? new Date(arrTime).toLocaleString() : 'time TBD';\nvar statusText = res.status ? ' \u00b7 ' + res.status : '';\nvar flightLabel = (res.operator_name || res.operator || '') + ' ' + res.ident;\nresultEl.innerHTML = '\u2713 <strong>' + flightLabel.trim() + '<\/strong><br>' + route + '<br>Departs: ' + depDisplay + '<br>Arrives: ' + arrDisplay + statusText;\n})\n.catch(function () {\nbtnEl.disabled = false;\nbtnEl.textContent = originalText;\nresultEl.className = 'ecbf-flight-check-result ecbf-fc-notfound';\nresultEl.textContent = 'Couldn\\'t check that flight right now \u2014 you can still submit, we\\'ll confirm by phone.';\n});\n}\n\ncheckFlightBtn.addEventListener('click', function () {\ncheckFlightNumber(roomFlightInput, flightCheckResult, checkFlightBtn);\n});\n\nvar submitBtn = document.getElementById('ecbf-submit');\nvar step3Error = document.getElementById('ecbf-step3-error');\nfunction updateStep3Button() {\nvar ready = state.agent && state.payment && roomFlightInput.value.trim();\nsubmitBtn.disabled = !ready;\n}\nroomFlightInput.addEventListener('input', function () {\n\/\/ Only normalize while this field is acting as Flight # (not Room #) \u2014\n\/\/ airline code + flight number has no spaces\/punctuation, and a lot\n\/\/ of \"flight not found\" results on FlightAware trace back to a typo'd\n\/\/ space, dash, or lowercase letters not matching their exact format.\nif (flightActions.style.display !== 'none') {\nvar cleaned = roomFlightInput.value.toUpperCase().replace(\/[^A-Z0-9]\/g, '');\nif (cleaned !== roomFlightInput.value) roomFlightInput.value = cleaned;\n}\nupdateStep3Button();\n});\n\nsubmitBtn.addEventListener('click', function () {\nstep3Error.textContent = '';\nsubmitBtn.disabled = true;\nsubmitBtn.textContent = 'Sending\u2026';\n\nvar dt = getSelectedDateTime();\nvar payload = {\npickup: state.pickup, dropoff: state.dropoff,\nvehicle: state.vehicle, guests: state.guests, bags: state.bags,\nagent: state.agent, payment_method: state.payment,\nguest_name: document.getElementById('ecbf-guest-name').value.trim(),\nguest_phone: (document.getElementById('ecbf-phone-code-btn').getAttribute('data-dial') + ' ' + document.getElementById('ecbf-guest-phone').value.trim()).trim(),\nguest_email: document.getElementById('ecbf-guest-email').value.trim(),\nremarks: document.getElementById('ecbf-remarks').value.trim(),\nconfirm_email: document.getElementById('ecbf-confirm-email').value.trim(),\ncopy_email: document.getElementById('ecbf-copy-email').value.trim(),\ndate: dt.dateStr, hour: dt.hour12, minute: dt.minute, ampm: dt.ampm\n};\nif (state.pickup === 'NH Hotel') payload.room_number = roomFlightInput.value.trim();\nelse payload.flight_number = roomFlightInput.value.trim();\n\nif (returnState.active) {\npayload.has_return = true;\npayload.return_dropoff = returnState.dropoff;\npayload.return_date = returnState.dateStr;\npayload.return_hour = returnState.hour12;\npayload.return_minute = returnState.minute;\npayload.return_ampm = returnState.ampm;\npayload.return_guests = returnState.guests;\npayload.return_bags = returnState.bags;\npayload.return_vehicle = returnState.vehicle;\nif (state.dropoff !== 'NH Hotel') payload.return_flight_number = returnState.flightNumber;\n}\n\npayload.has_meet_greet = extrasState.meetGreet;\npayload.has_car_seat_front = extrasState.carSeatFront;\npayload.has_car_seat_rear = extrasState.carSeatRear;\n\nfetch(restBase + '\/submit', {\nmethod: 'POST', headers: { 'Content-Type': 'application\/json' },\nbody: JSON.stringify(payload)\n}).then(function (r) { return r.json(); }).then(function (res) {\nif (!res || !res.ok) {\nstep3Error.textContent = (res && res.message) ? res.message : 'Something went wrong. Please try again.';\nsubmitBtn.disabled = false;\nsubmitBtn.textContent = 'Confirm Booking';\nreturn;\n}\nstep3.style.display = 'none';\nstepConfirm.style.display = '';\n\nfunction confirmRow(label, value) {\nreturn '<div class=\"ecbf-confirm-row\"><span class=\"ecbf-confirm-row-label\">' + label + '<\/span><span class=\"ecbf-confirm-row-value\">' + value + '<\/span><\/div>';\n}\nfunction rfBadge(label, value) {\nreturn value ? ('<span class=\"ecbf-confirm-rf-badge\">' + label + ': ' + value + '<\/span>') : '';\n}\n\ndocument.getElementById('ecbf-confirm-id').textContent = res.booking_id;\n\nvar dateDisplay = dt.dateStr + ' ' + pad2(dt.hour12) + ':' + pad2(dt.minute) + dt.ampm;\nvar rfValue = document.getElementById('ecbf-room-flight-input').value.trim();\nvar rfLabel = state.pickup === 'NH Hotel' ? 'Room' : 'Flight';\nvar tripCard = '<div class=\"ecbf-confirm-card-title\">Trip Details<\/div>' +\nconfirmRow('Vehicle', vehicles[state.vehicle].label) +\nconfirmRow('Route', state.pickup + ' \u2192 ' + state.dropoff + rfBadge(rfLabel, rfValue)) +\nconfirmRow('Date', dateDisplay);\ndocument.getElementById('ecbf-confirm-trip').innerHTML = tripCard;\n\nvar guestName = document.getElementById('ecbf-guest-name').value.trim();\nvar guestPhoneVal = document.getElementById('ecbf-guest-phone').value.trim();\nvar guestPhone = guestPhoneVal ? (document.getElementById('ecbf-phone-code-btn').getAttribute('data-dial') + ' ' + guestPhoneVal) : '';\nvar guestEmail = document.getElementById('ecbf-guest-email').value.trim();\nvar guestCardHtml = '<div class=\"ecbf-confirm-card-title\">Guest Details<\/div>' +\nconfirmRow('Name', guestName || '\u2014') +\nconfirmRow('Phone', guestPhone || '\u2014') +\nconfirmRow('Email', guestEmail || '\u2014');\ndocument.getElementById('ecbf-confirm-guest').innerHTML = guestCardHtml;\n\nvar extrasCardEl = document.getElementById('ecbf-confirm-extras');\nvar extrasRowsHtml = '';\nif (res.has_meet_greet) extrasRowsHtml += '<div class=\"ecbf-confirm-extras-row\"><img decoding=\"async\" src=\"https:\/\/ectransfers.com\/nhmadison\/wp-content\/uploads\/2025\/02\/MG.jpeg\" alt=\"Meet & Greet\"><span>Meet & Greet \u2014 $25<\/span><\/div>';\nif (res.has_car_seat_front) extrasRowsHtml += '<div class=\"ecbf-confirm-extras-row\"><img decoding=\"async\" src=\"https:\/\/ectransfers.com\/nhmadison\/wp-content\/uploads\/2024\/06\/frontcs.png\" alt=\"Car Seat (Front-Facing)\"><span>Car Seat (Front-Facing) \u2014 $25<\/span><\/div>';\nif (res.has_car_seat_rear) extrasRowsHtml += '<div class=\"ecbf-confirm-extras-row\"><img decoding=\"async\" src=\"https:\/\/ectransfers.com\/nhmadison\/wp-content\/uploads\/2024\/05\/rear-facing.png\" alt=\"Car Seat (Rear-Facing)\"><span>Car Seat (Rear-Facing) \u2014 $25<\/span><\/div>';\nif (extrasRowsHtml) {\nextrasCardEl.innerHTML = '<div class=\"ecbf-confirm-card-title\">Extras<\/div>' + extrasRowsHtml;\nextrasCardEl.style.display = 'block';\n} else {\nextrasCardEl.style.display = 'none';\n}\n\ndocument.getElementById('ecbf-confirm-vehicle-img').src = vehicles[state.vehicle].img;\ndocument.getElementById('ecbf-confirm-vehicle-img').alt = vehicles[state.vehicle].label;\n\n\/\/ \u2500\u2500 Return row: same 4-card layout (Trip \/ Guest \/ Extras \/ Car),\n\/\/ only shown when a return leg was added.\nvar returnRowEl = document.getElementById('ecbf-confirm-return-row');\nif (res.has_return) {\nvar rDateDisplay = returnState.dateStr + ' ' + pad2(returnState.hour12) + ':' + pad2(returnState.minute) + returnState.ampm;\nvar returnRfLabel = state.dropoff === 'NH Hotel' ? 'Room' : 'Flight';\nvar returnRfValue = state.dropoff === 'NH Hotel' ? rfValue : returnState.flightNumber;\n\ndocument.getElementById('ecbf-confirm-return-trip').innerHTML =\n'<div class=\"ecbf-confirm-card-title\">Return Trip <span class=\"ecbf-confirm-subid\">' + res.return_booking_id + '<\/span><\/div>' +\nconfirmRow('Vehicle', vehicles[returnState.vehicle].label) +\nconfirmRow('Route', state.dropoff + ' \u2192 ' + returnState.dropoff + rfBadge(returnRfLabel, returnRfValue)) +\nconfirmRow('Date', rDateDisplay) +\nconfirmRow('Price', res.return_price > 0 ? ('$' + res.return_price + (res.return_is_peak ? ' <span class=\"ecbf-peak-tag\">(Peak)<\/span>' : '')) : 'Call for pricing');\n\n\/\/ Same guest \u2014 return trips are booked for the same guest as outbound.\ndocument.getElementById('ecbf-confirm-return-guest').innerHTML = guestCardHtml.replace('Guest Details', 'Return Guest Details');\n\n\/\/ No return-specific extras are collected today, so this stays\n\/\/ hidden \u2014 kept here in case that changes later.\ndocument.getElementById('ecbf-confirm-return-extras').style.display = 'none';\n\ndocument.getElementById('ecbf-confirm-return-vehicle-img').src = vehicles[returnState.vehicle].img;\ndocument.getElementById('ecbf-confirm-return-vehicle-img').alt = vehicles[returnState.vehicle].label;\n\nreturnRowEl.style.display = 'flex';\n} else {\nreturnRowEl.style.display = 'none';\n}\n\nvar totalRowEl = document.getElementById('ecbf-confirm-total-row');\nvar tripSubtotal = res.price + (res.extras_total || 0);\nif (res.has_return) {\nvar returnSubtotalDisplay = res.return_price > 0 ? ('$' + res.return_price) : 'Call for pricing';\ntotalRowEl.innerHTML =\n'<div class=\"ecbf-confirm-total-box\"><div class=\"ecbf-confirm-card-title\">Trip<\/div><div class=\"ecbf-confirm-total-value\">\u2713 $' + tripSubtotal + '<\/div><\/div>' +\n'<div class=\"ecbf-confirm-total-box\"><div class=\"ecbf-confirm-card-title\">Return<\/div><div class=\"ecbf-confirm-total-value\">\u2713 ' + returnSubtotalDisplay + '<\/div><\/div>';\n} else {\ntotalRowEl.innerHTML =\n'<div class=\"ecbf-confirm-total-box\"><div class=\"ecbf-confirm-card-title\">Total<\/div><div class=\"ecbf-confirm-total-value\">\u2713 $' + tripSubtotal + '<\/div><\/div>';\n}\n}).catch(function () {\nstep3Error.textContent = 'Something went wrong. Please try again.';\nsubmitBtn.disabled = false;\nsubmitBtn.textContent = 'Confirm Booking';\n});\n});\n})();\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"disabled","ast-banner-title-visibility":"disabled","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-2154","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/ectransfers.com\/nhmadison\/wp-json\/wp\/v2\/pages\/2154","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ectransfers.com\/nhmadison\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ectransfers.com\/nhmadison\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ectransfers.com\/nhmadison\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ectransfers.com\/nhmadison\/wp-json\/wp\/v2\/comments?post=2154"}],"version-history":[{"count":3,"href":"https:\/\/ectransfers.com\/nhmadison\/wp-json\/wp\/v2\/pages\/2154\/revisions"}],"predecessor-version":[{"id":2158,"href":"https:\/\/ectransfers.com\/nhmadison\/wp-json\/wp\/v2\/pages\/2154\/revisions\/2158"}],"wp:attachment":[{"href":"https:\/\/ectransfers.com\/nhmadison\/wp-json\/wp\/v2\/media?parent=2154"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}