{"id":1258,"date":"2023-07-07T09:05:31","date_gmt":"2023-07-07T09:05:31","guid":{"rendered":"https:\/\/365solutionsjo.com\/?page_id=1258"},"modified":"2025-12-29T21:23:25","modified_gmt":"2025-12-29T18:23:25","slug":"airpods-service","status":"publish","type":"page","link":"https:\/\/365solutionsjo.com\/ar\/airpods-service\/","title":{"rendered":"AirPods-Service"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1258\" class=\"elementor elementor-1258\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-b63434a elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"b63434a\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-8ca9926\" data-id=\"8ca9926\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b5d3ab1 elementor-widget elementor-widget-text-editor\" data-id=\"b5d3ab1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h4>This is your Apple Authorised AirPods service and repair Center<\/h4>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-f258391 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"f258391\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-50af524\" data-id=\"50af524\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-3bc7cf3 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3bc7cf3\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-3469e4b\" data-id=\"3469e4b\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-1f3bd32 elementor-widget elementor-widget-html\" data-id=\"1f3bd32\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\" \/>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" \/>\n  <title>AirPods Service and Repair<\/title>\n\n  <style>\n    :root{\n      --border:#d9d9d9;\n      --shadow:0 0 0 1px rgba(0,0,0,.03), 0 2px 6px rgba(0,0,0,.08);\n      --radius:12px;\n      --primary:#0095a8;\n    }\n    *{box-sizing:border-box}\n    body{margin:0;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Arial,sans-serif;background:#fff;color:#111}\n\n    \/* ===== Table Section ===== *\/\n    .models-table-section{padding:18px 0}\n    .models-table-wrap{max-width:1200px;margin:0 auto;padding:0 12px}\n    .models-table{\n      width:100%;\n      border-collapse:collapse;\n      border:2px solid #6b6b6b;\n      background:#fff;\n    }\n    .models-table thead th{\n      font-size:20px;font-weight:800;text-align:center;\n      padding:10px 6px;border-bottom:2px solid #6b6b6b;\n    }\n    .models-table td{\n      border:2px solid #6b6b6b;\n      padding:0;\n      vertical-align:middle;\n      word-wrap:break-word;\n    }\n    .models-table .model-cell-btn{\n      all:unset;\n      box-sizing:border-box;\n      display:block;\n      width:100%;\n      padding:10px 10px;\n      font-size:14px;\n      font-weight:600;\n      line-height:1.35;\n      color:#000;\n      cursor:pointer;\n    }\n    .models-table td:hover{background:#f6f8ff}\n    .models-table .model-cell-btn:focus-visible{\n      outline:3px solid #0a84ff;\n      outline-offset:-3px;\n      border-radius:6px;\n    }\n    @media (max-width:800px){\n      .models-table{table-layout:auto}\n      .models-table thead th{font-size:18px}\n      .models-table .model-cell-btn{font-size:16px}\n    }\n\n    \/* ===== Modal base ===== *\/\n    .modal-backdrop{\n      position:fixed; inset:0;\n      background:rgba(0,0,0,.35);\n      display:none;\n      align-items:center;\n      justify-content:center;\n      padding:24px;\n      z-index:999999;\n    }\n    .modal-backdrop.open{display:flex}\n    .modal{\n      background:#fff;\n      width:min(1050px,95vw);\n      max-height:86vh;\n      border-radius:14px;\n      box-shadow:var(--shadow);\n      overflow:hidden;\n      display:flex;\n      flex-direction:column;\n    }\n    .modal__header{\n      display:flex; align-items:center; gap:8px;\n      padding:14px 16px;\n      border-bottom:1px solid #eee;\n    }\n    .modal__title{margin-left:4px;font-weight:800}\n    .spacer{flex:1}\n    .icon-btn{\n  appearance: none;\n  -webkit-appearance: none;\n\n  all: unset;              \/* clears inherited\/theme button styles *\/\n  box-sizing: border-box;  \/* because all: unset removes it *\/\n\n  width:36px;\n  height:36px;\n  border-radius:8px;\n  border:1px solid #e5e5e5;\n  background:#fff;\n\n  display:grid;\n  place-items:center;\n  cursor:pointer;\n}\n    .close-btn{font-size:20px;line-height:1}\n    .modal__body{padding:18px 16px 22px;overflow:auto}\n    .step2{max-width:840px;margin:0 auto}\n    .h1-like{font-weight:800;text-align:center;margin:12px 0 6px;font-size:20px}\n    .field-label{margin:16px 0 8px;font-size:14px;font-weight:700;color:#333}\n    .text-input{\n      width:100%;height:42px;border:1px solid var(--border);\n      border-radius:8px;padding:0 10px;font-size:15px;\n    }\n\n    \/* Location cards *\/\n    .options{\n      display:grid; grid-template-columns:repeat(3,1fr);\n      gap:16px; margin:14px 0 8px;\n    }\n    @media (max-width:860px){.options{grid-template-columns:1fr}}\n    .option{\n      border:1px solid #ddd; border-radius:12px;\n      padding:14px; text-align:center; cursor:pointer;\n      background:#fff; display:grid; gap:10px; place-items:center;\n      transition:border-color .12s ease, box-shadow .12s ease;\n    }\n    .option:hover{border-color:#cfcfcf}\n    .option.active{border-color:var(--primary); box-shadow:0 0 0 2px rgba(0,149,168,.12)}\n    .serviceImage{width:120px;height:120px;display:grid;place-items:center}\n    .serviceImage img{max-width:100%;max-height:100%;object-fit:contain}\n    .option .title{font-weight:800;font-size:13px}\n\n    .location-info{font-size:14px;color:#333;line-height:1.5}\n    .location-info a{color:#0095a8;text-decoration:none}\n    .location-info a:hover{text-decoration:underline}\n\n    .actions{display:grid;place-items:center;margin:16px 0 18px}\n    .btn-primary{\n      appearance:none;border:0;border-radius:10px;\n      background:linear-gradient(90deg,#0095a8,#00b8d9);\n      color:#fff;padding:12px 28px;\n      font-weight:900;letter-spacing:.4px;\n      cursor:pointer;\n    }\n    .btn-primary:disabled{opacity:.55;cursor:not-allowed}\n\n    \/* small helper *\/\n    .field-group{max-width:420px}\n    .summary-box{\n      border:1px solid rgba(0,0,0,0.06);\n      border-radius:12px;\n      padding:14px 16px;\n      background:#f7fbff;\n      margin-bottom:16px;\n    }\n\n    \/* ===== OTP card styling ===== *\/\n    .otp-card{\n      padding:16px 18px;\n      border:1px solid rgba(0,0,0,.08);\n      border-radius:14px;\n      background:#fff;\n      box-shadow:0 0 0 1px rgba(0,0,0,.02),0 8px 26px rgba(0,0,0,.06);\n    }\n    .otp-title{font-weight:900;font-size:18px;margin-bottom:4px}\n    .otp-subtitle{color:#555;font-size:13px;margin-bottom:14px}\n    .otp-subtitle span{font-weight:800;color:#111}\n\n    .otp-inputs{\n      display:flex; gap:10px; justify-content:center;\n      margin:10px 0 14px;\n    }\n    .otp-box{\n      width:46px;height:54px;\n      text-align:center;\n      font-size:22px;\n      font-weight:900;\n      border-radius:12px;\n      border:1px solid rgba(0,0,0,.14);\n      outline:none;\n      transition:box-shadow .12s ease,border-color .12s ease,transform .08s ease;\n      background:#fff;\n    }\n    .otp-box:focus{\n      border-color:#0095a8;\n      box-shadow:0 0 0 3px rgba(0,149,168,.18);\n      transform:translateY(-1px);\n    }\n    .otp-box.filled{border-color:rgba(0,149,168,.45); background:#f2fbfd;}\n    .otp-box.error{border-color:#b00020; box-shadow:0 0 0 3px rgba(176,0,32,.12); background:#fff5f7;}\n    .otp-box.success{border-color:#0a7a3d; box-shadow:0 0 0 3px rgba(10,122,61,.14); background:#f3fff7;}\n\n    .otp-actions{display:flex; gap:10px; justify-content:center; margin-top:6px;}\n    .otp-btn{\n      border:0;border-radius:12px;padding:12px 16px;\n      font-weight:900;cursor:pointer;color:#fff;\n      background:linear-gradient(90deg,#0095a8,#00b8d9);\n      min-width:140px;\n    }\n    .otp-btn:disabled{opacity:.5; cursor:not-allowed}\n    .otp-btn-ghost{\n      background:#fff;color:#0095a8;\n      border:1px solid rgba(0,149,168,.28);\n      min-width:120px;\n    }\n\n    .otp-links{display:flex; justify-content:space-between; align-items:center; margin-top:12px;}\n    .otp-link{border:0;background:transparent;color:#0095a8;font-weight:900;cursor:pointer;padding:0;}\n    .otp-link:disabled{opacity:.45;cursor:not-allowed}\n    .otp-timer{color:#666;font-size:13px;font-weight:700}\n\n    .otp-error{margin-top:10px;color:#b00020;font-weight:800;font-size:13px}\n    .otp-success{margin-top:10px;color:#0a7a3d;font-weight:900;font-size:13px}\n  <\/style>\n<\/head>\n\n<body>\n\n<!-- ===== Models Table ===== -->\n<section class=\"models-table-section\">\n  <div class=\"models-table-wrap\">\n    <table class=\"models-table\" aria-label=\"AirPods Repair Models\">\n      <thead><tr><th>AirPods Replacement, Service, and Repair & Support Models<\/th><\/tr><\/thead>\n      <tbody>\n        <tr><td><button class=\"model-cell-btn\" data-model=\"AirPods 1st generation Repair\">AirPods 1st generation Repair<\/button><\/td><\/tr>\n        <tr><td><button class=\"model-cell-btn\" data-model=\"AirPods 2nd generation Repair\">AirPods 2nd generation Repair<\/button><\/td><\/tr>\n        <tr><td><button class=\"model-cell-btn\" data-model=\"AirPods 3rd generation Repair\">AirPods 3rd generation Repair<\/button><\/td><\/tr>\n        <tr><td><button class=\"model-cell-btn\" data-model=\"AirPods 4th generation Repair\">AirPods 4th generation Repair<\/button><\/td><\/tr>\n        <tr><td><button class=\"model-cell-btn\" data-model=\"AirPods with ANC Repair\">AirPods with ANC Repair<\/button><\/td><\/tr>\n        <tr><td><button class=\"model-cell-btn\" data-model=\"AirPods Max Repair\">AirPods Max Repair<\/button><\/td><\/tr>\n        <tr><td><button class=\"model-cell-btn\" data-model=\"AirPods Pro Repair\">AirPods Pro Repair<\/button><\/td><\/tr>\n        <tr><td><button class=\"model-cell-btn\" data-model=\"AirPods Pro 2nd generation Repair\">AirPods Pro 2nd generation Repair<\/button><\/td><\/tr>\n        <tr><td><button class=\"model-cell-btn\" data-model=\"AirPods Pro 3rd generation Repair\">AirPods Pro 3rd generation Repair<\/button><\/td><\/tr>\n      <\/tbody>\n    <\/table>\n  <\/div>\n<\/section>\n\n<!-- =========================================================\n     MODAL 1: Model + location\n========================================================= -->\n<div class=\"modal-backdrop\" id=\"modalBackdrop\" aria-hidden=\"true\">\n  <div class=\"modal\" role=\"dialog\" aria-modal=\"true\">\n    <div class=\"modal__header\">\n      <div class=\"modal__title\" id=\"modalTitle\">Choose your model<\/div>\n      <div class=\"spacer\"><\/div>\n      <button class=\"icon-btn close-btn\" style=\"background: white\" id=\"closeBtn\" aria-label=\"Close\">\u00d7<\/button>\n    <\/div>\n\n    <div class=\"modal__body step2\" id=\"step2\">\n      <div class=\"h1-like\" id=\"step2Title\">Model title here<\/div>\n\n      <!-- \u2705 Service description (was missing in your file, but your JS uses it) -->\n      <label class=\"field-label\" for=\"serviceDesc\" style=\"margin-top:12px;\">Problem description (optional)<\/label>\n      <textarea id=\"serviceDesc\" class=\"text-input\" rows=\"4\" style=\"height:auto; padding:10px;\" placeholder=\"Describe the issue...\"><\/textarea>\n\n      <div class=\"field-label\" style=\"margin-top:18px\">I would like to get this service at :<\/div>\n\n      <div class=\"options\" id=\"serviceOptions\">\n        <div class=\"option\" data-id=\"amman\">\n          <div class=\"serviceImage\">\n            <img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/365solutionsjo.com\/wp-content\/uploads\/2025\/10\/pngtree-an-image-of-a-store-front-or-bakery-store-coloring-pages-vector-png-image_6981000.png?ssl=1\" alt=\"Service Center\"\/>\n          <\/div>\n          <div class=\"title\">365 Solutions in Amman<\/div>\n        <\/div>\n\n        <div class=\"option\" data-id=\"irbid\">\n          <div class=\"serviceImage\">\n            <img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/365solutionsjo.com\/wp-content\/uploads\/2025\/10\/pngtree-cartoon-illustration-of-a-shophouse-coloring-page-outline-sketch-drawing-vector-png-image_6980999.png?ssl=1\" alt=\"Service Center\"\/>\n          <\/div>\n          <div class=\"title\">365 Solutions in Irbid<\/div>\n        <\/div>\n\n        <div class=\"option\" data-id=\"homeOffice\">\n          <div class=\"serviceImage\">\n            <img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/365solutionsjo.com\/wp-content\/uploads\/2025\/10\/delivery-drawing.jpg?ssl=1\" alt=\"delivery\"\/>\n          <\/div>\n          <div class=\"title\">Collect it from my Home\/Office<\/div>\n        <\/div>\n      <\/div>\n\n      <div id=\"locationInfoAmman\" class=\"location-info\" style=\"display:none; text-align:center; margin-top:18px;\">\n        <div class=\"info-text\">\n          <strong>Amman<\/strong><br>\n          221 Mecca Street Amman<br>\n          <a href=\"mailto:Help@365solutionsjo.com\">Help@365solutionsjo.com<\/a><br>\n          <a href=\"tel:+962796818189\">+962 796 818189<\/a><br><br>\n          <strong>Opening hours:<\/strong><br>\n          Sun \u2013 Thu | 9:00 AM to 9:00 PM<br>\n          Sat | 10:00 AM to 9:00 PM<br>\n          Fri | closed\n        <\/div>\n      <\/div>\n\n      <div id=\"locationInfoIrbid\" class=\"location-info\" style=\"display:none; text-align:center; margin-top:18px;\">\n        <div class=\"info-text\">\n          <strong>Irbid<\/strong><br>\n          Wasfi AlTal Street<br>\n          <a href=\"mailto:Irbid@365solutionsjo.com\">Irbid@365solutionsjo.com<\/a><br>\n          <a href=\"tel:+962796688831\">+962 79 668 88 31<\/a><br><br>\n          <strong>Opening hours:<\/strong><br>\n          Sat \u2013 Thu | 10:00 AM to 9:00 PM<br>\n          Fri | closed\n        <\/div>\n      <\/div>\n\n      <div id=\"locationInfoHomeOffice\" class=\"location-info\" style=\"display:none; text-align:left; margin-top:18px;\">\n        <strong>Terms & Conditions<\/strong>\n        <ul>\n          <li>Pick-up & Delivery Service is chargeable at 5.0JD as a logistic fee.<\/li>\n          <li>If the customer chooses to continue the repair the logistic fee will be waived OFF.<\/li>\n          <li>Technician will diagnose the device and share a detailed report for customers approval to proceed with repair.<\/li>\n          <li>Repair or replaced parts will be charged additionally with up to 90 days of warranty.<\/li>\n          <li>This offer is valid only for limited time and can be discontinued without any prior notice.<\/li>\n          <li>This service is currently available only in Amman and its suburbs.<\/li>\n        <\/ul>\n      <\/div>\n\n      <div class=\"actions\">\n        <button class=\"btn-primary\" id=\"nextBtn\" type=\"button\">NEXT<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<!-- =========================================================\n     MODAL 2: Appointment\n========================================================= -->\n<div class=\"modal-backdrop\" id=\"modalCustomer\" aria-hidden=\"true\">\n  <div class=\"modal\" role=\"dialog\" aria-modal=\"true\">\n    <div class=\"modal__header\">\n      <div class=\"modal__title\">\ud83d\udcc5 Book Your Appointment<\/div>\n      <div class=\"spacer\"><\/div>\n      <button class=\"icon-btn close-btn\" style=\"background: white\" id=\"closeCustomer\" aria-label=\"Close\">\u00d7<\/button>\n    <\/div>\n\n    <div class=\"modal__body step2\" style=\"padding: 24px 30px;\">\n      <div id=\"summaryDetails\" class=\"summary-box\"><\/div>\n\n      <label class=\"field-label\" for=\"custName\">Full Name<\/label>\n      <input id=\"custName\" class=\"text-input\" type=\"text\" \/>\n\n      <label class=\"field-label\" for=\"custEmail\" style=\"margin-top:12px;\">Email<\/label>\n      <input id=\"custEmail\" class=\"text-input\" type=\"email\" \/>\n\n      <label class=\"field-label\" for=\"custPhone\" style=\"margin-top:12px;\">Phone Number<\/label>\n      <input id=\"custPhone\" class=\"text-input\" type=\"tel\" \/>\n\n      <div class=\"field-group\" style=\"margin-top:16px;\">\n        <label class=\"field-label\" for=\"apptDate\">Choose Appointment Date<\/label>\n        <input id=\"apptDate\" class=\"text-input\" type=\"date\" \/>\n      <\/div>\n\n      <div class=\"field-group\" style=\"margin-top:12px;\">\n        <label class=\"field-label\" for=\"apptTime\">Choose Appointment Time<\/label>\n        <select id=\"apptTime\" class=\"text-input\">\n          <option value=\"\">Select a time<\/option>\n        <\/select>\n        <div id=\"closedMsg\" style=\"display:none; margin-top:6px; font-size:13px; color:#b00020;\">\n          Selected day is closed for this location.\n        <\/div>\n      <\/div>\n\n      <div class=\"actions\" style=\"margin-top:24px;\">\n        <button class=\"btn-primary\" id=\"submitAppointment\" type=\"button\">SUBMIT<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<!-- =========================================================\n     MODAL 3: Home\/Office pickup\n========================================================= -->\n<div class=\"modal-backdrop\" id=\"modalHomePickup\" aria-hidden=\"true\">\n  <div class=\"modal\" role=\"dialog\" aria-modal=\"true\">\n    <div class=\"modal__header\">\n      <div class=\"modal__title\">\ud83d\ude9a Home\/Office Pickup \u2013 Create Ticket<\/div>\n      <div class=\"spacer\"><\/div>\n      <button class=\"icon-btn close-btn\" style=\"background: white\" id=\"closeHomePickup\" aria-label=\"Close\">\u00d7<\/button>\n    <\/div>\n\n    <div class=\"modal__body\" style=\"padding: 24px 30px;\">\n      <div id=\"homePickupSummary\" class=\"summary-box\" style=\"margin-bottom: 20px;\"><\/div>\n\n      <label class=\"field-label\" for=\"hpName\">Full Name<\/label>\n      <input id=\"hpName\" class=\"text-input\" type=\"text\" \/>\n\n      <label class=\"field-label\" for=\"hpEmail\" style=\"margin-top:12px;\">Email<\/label>\n      <input id=\"hpEmail\" class=\"text-input\" type=\"email\" \/>\n\n      <label class=\"field-label\" for=\"hpPhone\" style=\"margin-top:12px;\">Phone Number<\/label>\n      <input id=\"hpPhone\" class=\"text-input\" type=\"tel\" \/>\n\n      <label class=\"field-label\" for=\"hpSerial\" style=\"margin-top:16px;\">Serial number or IMEI<\/label>\n      <input id=\"hpSerial\" class=\"text-input\" type=\"text\" \/>\n\n      <label class=\"field-label\" for=\"hpProblem\" style=\"margin-top:12px;\">Problem details<\/label>\n      <textarea id=\"hpProblem\" class=\"text-input\" rows=\"4\" style=\"height:auto; padding:10px;\"><\/textarea>\n\n      <label class=\"field-label\" for=\"hpCompany\" style=\"margin-top:12px;\">Company name (optional)<\/label>\n      <input id=\"hpCompany\" class=\"text-input\" type=\"text\" \/>\n\n      <label class=\"field-label\" for=\"hpAddress\" style=\"margin-top:12px;\">Customer address<\/label>\n      <textarea id=\"hpAddress\" class=\"text-input\" rows=\"3\" style=\"height:auto; padding:10px;\"><\/textarea>\n\n      <div class=\"actions\" style=\"margin-top:22px;\">\n        <button class=\"btn-primary\" id=\"submitHomePickup\" type=\"button\">SUBMIT<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<!-- ===================== SERVICE AGREEMENT MODAL ===================== -->\n<div class=\"modal-backdrop\" id=\"modalAgreement\" aria-hidden=\"true\">\n  <div class=\"modal\" role=\"dialog\" aria-modal=\"true\">\n    <div class=\"modal__header\">\n      <div class=\"modal__title\">\ud83d\udcdd Service Agreement<\/div>\n      <div class=\"spacer\"><\/div>\n      <button class=\"icon-btn close-btn\" style=\"background: white\" id=\"closeAgreement\" aria-label=\"Close\">\u00d7<\/button>\n    <\/div>\n\n    <div class=\"modal__body\" style=\"padding: 24px 30px;\">\n      <div id=\"agreementSummary\" class=\"summary-box\" style=\"margin-bottom: 16px;\"><\/div>\n\n      <div style=\"margin-bottom: 12px;\">\n        <label class=\"field-label\">Terms & Conditions<\/label>\n        <iframe id=\"termsPdfFrame\" src=\"\" style=\"width:100%; height:600px; border:1px solid #e5e5e5; border-radius:10px;\"><\/iframe>\n      <\/div>\n\n      <div class=\"grid-2\" style=\"display:grid; grid-template-columns:1fr 1fr; gap:12px;\">\n        <div>\n          <label class=\"field-label\" for=\"agreeName\">Customer Name<\/label>\n          <input id=\"agreeName\" class=\"text-input\" type=\"text\" placeholder=\"Your full name\">\n        <\/div>\n        <div>\n          <label class=\"field-label\" for=\"agreePID\">Personal ID (optional)<\/label>\n          <input id=\"agreePID\" class=\"text-input\" type=\"text\" placeholder=\"ID \/ National No.\">\n        <\/div>\n      <\/div>\n\n      <div style=\"margin-top:14px;\">\n        <label class=\"field-label\">Signature<\/label>\n        <div style=\"border:1px solid #d2e3f0; border-radius:8px; background:#fff; padding:10px;\">\n          <canvas id=\"sigPad\" style=\"width:50%; height:100px;\"><\/canvas>\n        <\/div>\n        <div style=\"margin-top:8px; display:flex; gap:8px;\">\n          <button id=\"clearSig\" type=\"button\" class=\"icon-btn\" style=\"background: white\" title=\"Clear\" aria-label=\"Clear\">Clear<\/button>\n        <\/div>\n      <\/div>\n\n      <div style=\"margin-top:16px;\">\n        <label class=\"field-label\"><input id=\"agreeCheck\" type=\"checkbox\"> I have read and agree to the Terms & Conditions.<\/label>\n      <\/div>\n\n      <div class=\"actions\" style=\"margin-top:18px;\">\n        <button class=\"btn-primary\" id=\"agreeAndCreate\">AGREE & CREATE TICKET<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<!-- ===================== OTP MODAL ===================== -->\n<div class=\"modal-backdrop\" id=\"otpModal\" aria-hidden=\"true\">\n  <div class=\"modal\" role=\"dialog\" aria-modal=\"true\" style=\"width:min(560px,95vw);\">\n    <div class=\"modal__header\">\n      <div class=\"modal__title\">\u2705 Email Verification<\/div>\n      <div class=\"spacer\"><\/div>\n      <button class=\"icon-btn close-btn\" id=\"otpCloseBtn\" aria-label=\"Close\">\u00d7<\/button>\n    <\/div>\n\n    <div class=\"modal__body\" style=\"padding: 18px 20px 22px;\">\n      <div class=\"otp-card\" id=\"otpCard\">\n        <div class=\"otp-title\">Enter verification code<\/div>\n        <div class=\"otp-subtitle\">We sent a 6-digit code to <span id=\"otpEmailLabel\"><\/span><\/div>\n\n        <div class=\"otp-inputs\" id=\"otpInputs\" aria-label=\"Verification code\">\n          <input class=\"otp-box\" inputmode=\"numeric\" autocomplete=\"one-time-code\" maxlength=\"1\" \/>\n          <input class=\"otp-box\" inputmode=\"numeric\" maxlength=\"1\" \/>\n          <input class=\"otp-box\" inputmode=\"numeric\" maxlength=\"1\" \/>\n          <input class=\"otp-box\" inputmode=\"numeric\" maxlength=\"1\" \/>\n          <input class=\"otp-box\" inputmode=\"numeric\" maxlength=\"1\" \/>\n          <input class=\"otp-box\" inputmode=\"numeric\" maxlength=\"1\" \/>\n        <\/div>\n\n        <div class=\"otp-actions\">\n          <button type=\"button\" class=\"otp-btn\" id=\"otpVerifyBtn\" disabled>Verify<\/button>\n          <button type=\"button\" class=\"otp-btn otp-btn-ghost\" id=\"otpClearBtn\">Clear<\/button>\n        <\/div>\n\n        <div class=\"otp-links\">\n          <button type=\"button\" class=\"otp-link\" id=\"otpResendBtn\">Resend code<\/button>\n          <span class=\"otp-timer\" id=\"otpTimer\"><\/span>\n        <\/div>\n\n        <div class=\"otp-error\" id=\"otpError\" style=\"display:none;\"><\/div>\n        <div class=\"otp-success\" id=\"otpSuccess\" style=\"display:none;\">\u2705 Verified successfully<\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<!-- libs -->\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/signature_pad@4.1.5\/dist\/signature_pad.umd.min.js\"><\/script>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/pdf-lib@1.17.1\/dist\/pdf-lib.min.js\"><\/script>\n\n<!-- ===== UI logic (non-module) ===== -->\n<script>\n  const $ = s => document.querySelector(s);\n  const $$ = s => Array.from(document.querySelectorAll(s));\n\n  \/\/ \u2705 keep it simple: fixed service list\n  let selectedServices = ['AirPods Service'];\n\n  function openBackdrop(id){\n    const b = document.getElementById(id);\n    if(!b) return;\n    b.classList.add('open');\n    b.setAttribute('aria-hidden','false');\n    document.documentElement.style.overflow='hidden';\n  }\n  function closeBackdrop(id){\n    const b = document.getElementById(id);\n    if(!b) return;\n    const active = document.activeElement;\n    if(active && b.contains(active)) active.blur();\n    b.classList.remove('open');\n    b.setAttribute('aria-hidden','true');\n    document.documentElement.style.overflow='';\n  }\n\n  \/\/ Modal 1 open\/close\n  document.getElementById('closeBtn')?.addEventListener('click', ()=>closeBackdrop('modalBackdrop'));\n  document.getElementById('modalBackdrop')?.addEventListener('click', (e)=>{\n    if(e.target.id === 'modalBackdrop') closeBackdrop('modalBackdrop');\n  });\n\n  \/\/ location select\n  const optionsWrap = document.getElementById('serviceOptions');\n  const locationInfoAmman = document.getElementById('locationInfoAmman');\n  const locationInfoIrbid = document.getElementById('locationInfoIrbid');\n  const locationInfoHomeOffice = document.getElementById('locationInfoHomeOffice');\n  function hideAllLocations(){\n    locationInfoAmman.style.display='none';\n    locationInfoIrbid.style.display='none';\n    locationInfoHomeOffice.style.display='none';\n  }\n  optionsWrap.addEventListener('click', (e)=>{\n    const opt = e.target.closest('.option');\n    if(!opt) return;\n    $$('#serviceOptions .option').forEach(o=>o.classList.remove('active'));\n    opt.classList.add('active');\n    hideAllLocations();\n    if(opt.dataset.id === 'amman') locationInfoAmman.style.display='block';\n    if(opt.dataset.id === 'irbid') locationInfoIrbid.style.display='block';\n    if(opt.dataset.id === 'homeOffice') locationInfoHomeOffice.style.display='block';\n  });\n\n  \/\/ Table click -> open modal 1\n  document.addEventListener('click', (e)=>{\n    const btn = e.target.closest('.model-cell-btn');\n    if(!btn) return;\n    e.preventDefault();\n    const model = btn.dataset.model || btn.textContent.trim();\n    document.getElementById('step2Title').textContent = model;\n    document.getElementById('modalTitle').textContent = model;\n    document.getElementById('serviceDesc').value = '';\n    $$('#serviceOptions .option').forEach(o=>o.classList.remove('active'));\n    hideAllLocations();\n    openBackdrop('modalBackdrop');\n  });\n\n  \/\/ Modal 2 open\/close helpers\n  const modalCustomer  = document.getElementById('modalCustomer');\n  const closeCustomer  = document.getElementById('closeCustomer');\n  const summaryDetails = document.getElementById('summaryDetails');\n  const apptDate  = document.getElementById('apptDate');\n  const apptTime  = document.getElementById('apptTime');\n  const closedMsg = document.getElementById('closedMsg');\n\n  closeCustomer.addEventListener('click', ()=> closeBackdrop('modalCustomer'));\n  modalCustomer.addEventListener('click', (e)=>{ if(e.target.id==='modalCustomer') closeBackdrop('modalCustomer'); });\n\n  \/\/ Modal 3 open\/close\n  const homePickupSummary = document.getElementById('homePickupSummary');\n  document.getElementById('closeHomePickup')?.addEventListener('click', ()=> closeBackdrop('modalHomePickup'));\n  document.getElementById('modalHomePickup')?.addEventListener('click', (e)=>{ if(e.target.id==='modalHomePickup') closeBackdrop('modalHomePickup'); });\n\n  \/\/ open customer\/home modals\n  window.openCustomerModal = function(data){\n    summaryDetails.innerHTML = `\n      <div><strong>Device:<\/strong> ${data.model}<\/div>\n      <div><strong>Service(s):<\/strong> ${data.services.join(', ')}<\/div>\n      <div><strong>Description:<\/strong> ${data.description || '(none)'}<\/div>\n      <div><strong>Location:<\/strong> ${data.locationName}<\/div>\n    `;\n    window._currentBranchForBooking = data.location;\n    window._lastSelection = data;\n    apptDate.value = '';\n    apptTime.innerHTML = '<option value=\"\">Select a time<\/option>';\n    closedMsg.style.display = 'none';\n    openBackdrop('modalCustomer');\n  };\n\n  window.openHomePickupModal = function(data){\n    window._homePickupData = data;\n    window._lastSelection = data;\n    homePickupSummary.innerHTML = `\n      <div><strong>Device:<\/strong> ${data.model}<\/div>\n      <div><strong>Service(s):<\/strong> ${data.services.join(', ')}<\/div>\n      <div><strong>Description:<\/strong> ${data.description || '(none)'}<\/div>\n      <hr>\n      <div><strong>Location:<\/strong> ${data.locationName}<\/div>\n    `;\n    openBackdrop('modalHomePickup');\n  };\n\n  \/\/ NEXT (from modal 1)\n  document.getElementById('nextBtn').addEventListener('click', ()=>{\n    const chosenModel = document.getElementById('step2Title').textContent.trim();\n    const chosenPlaceEl = document.querySelector('#serviceOptions .option.active');\n    const chosenPlace = chosenPlaceEl?.dataset.id || '';\n    const chosenPlaceName = chosenPlaceEl?.querySelector('.title')?.textContent?.trim() || '';\n    const serviceDesc = document.getElementById('serviceDesc')?.value.trim() || '';\n\n    if(!chosenPlace){\n      alert('Please choose a service location.');\n      return;\n    }\n\n    const data = {\n      model: chosenModel,\n      services: selectedServices.slice(),\n      description: serviceDesc,\n      location: chosenPlace,\n      locationName: chosenPlaceName\n    };\n\n    closeBackdrop('modalBackdrop');\n\n    if(chosenPlace === 'homeOffice'){\n      window.openHomePickupModal(data);\n    }else{\n      window.openCustomerModal(data);\n    }\n  });\n<\/script>\n\n<!-- ===== OTP modal logic (non-module) ===== -->\n<script>\n(function(){\n  const otpModal   = document.getElementById('otpModal');\n  const closeBtn   = document.getElementById('otpCloseBtn');\n  const emailLabel = document.getElementById('otpEmailLabel');\n  const inputsWrap = document.getElementById('otpInputs');\n  const boxes      = inputsWrap ? Array.from(inputsWrap.querySelectorAll('.otp-box')) : [];\n  const verifyBtn  = document.getElementById('otpVerifyBtn');\n  const clearBtn   = document.getElementById('otpClearBtn');\n  const resendBtn  = document.getElementById('otpResendBtn');\n  const timerEl    = document.getElementById('otpTimer');\n  const errEl      = document.getElementById('otpError');\n  const okEl       = document.getElementById('otpSuccess');\n\n  let resendCooldownSec = 0;\n  let timerInterval = null;\n  let _resolveWait = null;\n\n  function openOtpModal(){\n    otpModal.classList.add('open');\n    otpModal.setAttribute('aria-hidden','false');\n    document.documentElement.style.overflow='hidden';\n  }\n  function closeOtpModal(result=false){\n    const active = document.activeElement;\n    if(active && otpModal.contains(active)) active.blur();\n\n    otpModal.classList.remove('open');\n    otpModal.setAttribute('aria-hidden','true');\n    document.documentElement.style.overflow='';\n\n    if(_resolveWait){\n      _resolveWait(result);\n      _resolveWait = null;\n    }\n  }\n\n  closeBtn?.addEventListener('click', ()=> closeOtpModal(false));\n  otpModal?.addEventListener('click', (e)=>{ if(e.target === otpModal) closeOtpModal(false); });\n\n  function setStatus({ error = '', success = '' }){\n    if(errEl){\n      errEl.style.display = error ? '' : 'none';\n      errEl.textContent = error || '';\n    }\n    if(okEl){\n      okEl.style.display = success ? '' : 'none';\n      okEl.textContent = success || '';\n    }\n  }\n  function readCode(){ return boxes.map(b => (b.value || '').trim()).join(''); }\n  function updateUI(){\n    const code = readCode();\n    boxes.forEach(b=>{\n      b.classList.toggle('filled', !!b.value);\n      b.classList.remove('error','success');\n    });\n    const ready = \/^\\d{6}$\/.test(code);\n    if(verifyBtn) verifyBtn.disabled = !ready;\n    return code;\n  }\n  function focusIndex(i){\n    const idx = Math.max(0, Math.min(boxes.length - 1, i));\n    boxes[idx]?.focus();\n    boxes[idx]?.select?.();\n  }\n  function clearAll(){\n    boxes.forEach(b => b.value = '');\n    updateUI();\n    setStatus({ error:'', success:'' });\n    focusIndex(0);\n  }\n  function markError(msg){\n    boxes.forEach(b => b.classList.add('error'));\n    setStatus({ error: msg || 'Invalid or expired code. Please try again.' });\n  }\n  function markSuccess(){\n    boxes.forEach(b => b.classList.add('success'));\n    setStatus({ success:'\u2705 Verified successfully' });\n  }\n  function startResendCooldown(seconds){\n    resendCooldownSec = seconds;\n    if(timerInterval) clearInterval(timerInterval);\n    function tick(){\n      if(resendBtn) resendBtn.disabled = resendCooldownSec > 0;\n      if(timerEl) timerEl.textContent = resendCooldownSec > 0 ? `Resend in ${resendCooldownSec}s` : '';\n      if(resendCooldownSec > 0) resendCooldownSec--;\n    }\n    tick();\n    timerInterval = setInterval(tick, 1000);\n  }\n\n  boxes.forEach((box, i)=>{\n    box.addEventListener('input', ()=>{\n      const v = (box.value || '').replace(\/\\D\/g,'');\n      box.value = v.slice(-1);\n      updateUI();\n      setStatus({ error:'', success:'' });\n      if(box.value && i < boxes.length - 1) focusIndex(i + 1);\n    });\n\n    box.addEventListener('keydown', (e)=>{\n      if(e.key === 'Backspace'){\n        if(box.value){\n          box.value = '';\n          updateUI();\n          return;\n        }\n        if(i > 0){\n          focusIndex(i - 1);\n          boxes[i - 1].value = '';\n          updateUI();\n        }\n      }\n      if(e.key === 'ArrowLeft' && i > 0) focusIndex(i - 1);\n      if(e.key === 'ArrowRight' && i < boxes.length - 1) focusIndex(i + 1);\n    });\n\n    box.addEventListener('paste', (e)=>{\n      const text = (e.clipboardData || window.clipboardData).getData('text') || '';\n      const digits = text.replace(\/\\D\/g,'').slice(0,6);\n      if(digits.length){\n        e.preventDefault();\n        digits.split('').forEach((d, idx)=>{ if(boxes[idx]) boxes[idx].value = d; });\n        updateUI();\n        verifyBtn?.focus();\n      }\n    });\n  });\n\n  clearBtn?.addEventListener('click', clearAll);\n\n  \/\/ callbacks to be set by firebase module script\n  window.onOtpVerify = async function(){ return false; };\n  window.onOtpResend = async function(){};\n\n  window.showOtpModal = function(email){\n    emailLabel.textContent = email || '';\n    clearAll();\n    startResendCooldown(30);\n    openOtpModal();\n    return new Promise((resolve)=>{ _resolveWait = resolve; });\n  };\n\n  window._otpUI = { markError, markSuccess, clearAll, closeOtpModal };\n\n  verifyBtn?.addEventListener('click', async ()=>{\n    try{\n      verifyBtn.disabled = true;\n      setStatus({ error:'', success:'' });\n      const ok = await window.onOtpVerify(readCode());\n      if(ok){\n        markSuccess();\n        setTimeout(()=> closeOtpModal(true), 450);\n      }else{\n        markError();\n      }\n    }catch(err){\n      console.error(err);\n      markError(err?.message || 'Verification failed.');\n    }finally{\n      verifyBtn.disabled = !\/^\\d{6}$\/.test(readCode());\n    }\n  });\n\n  resendBtn?.addEventListener('click', async ()=>{\n    try{\n      setStatus({ error:'', success:'' });\n      resendBtn.disabled = true;\n      await window.onOtpResend();\n      startResendCooldown(30);\n      setStatus({ success:'\u2705 New code sent. Check your email.' });\n    }catch(err){\n      console.error(err);\n      setStatus({ error:'Could not resend code. Please try again.' });\n      resendBtn.disabled = false;\n    }\n  });\n})();\n<\/script>\n\n<!-- ===== Firebase + Firestore\/Storage\/Functions (module) ===== -->\n<script type=\"module\">\n  import { initializeApp } from \"https:\/\/www.gstatic.com\/firebasejs\/10.13.1\/firebase-app.js\";\n  import { getFirestore, collection, addDoc, serverTimestamp } from \"https:\/\/www.gstatic.com\/firebasejs\/10.13.1\/firebase-firestore.js\";\n  import { getStorage, ref, uploadBytes, getDownloadURL } from \"https:\/\/www.gstatic.com\/firebasejs\/10.13.1\/firebase-storage.js\";\n  import { getFunctions, httpsCallable } from \"https:\/\/www.gstatic.com\/firebasejs\/10.13.1\/firebase-functions.js\";\n\n  \/\/ \u2705 your config\n  const firebaseConfig = {\n    apiKey: \"AIzaSyCWSayCLeyr_6aBSNjb4nCY--Lw-DB_4S4\",\n    authDomain: \"solutionssystemmain.firebaseapp.com\",\n    projectId: \"solutionssystemmain\",\n    storageBucket: \"solutionssystemmain.appspot.com\",\n    messagingSenderId: \"961697855820\",\n    appId: \"1:961697855820:web:a83ed62b1fdacee11f77e9\"\n  };\n\n  \/\/ init\n  const app = initializeApp(firebaseConfig);\n  const db = getFirestore(app);\n  const storage = getStorage(app);\n  const functions = getFunctions(app);\n\n  \/\/ expose\n  window.app = app;\n  window.db = db;\n\n  \/\/ callables\n  const sendVerificationCode = httpsCallable(functions, \"sendVerificationCode\");\n  const verifyEmailCode = httpsCallable(functions, \"verifyEmailCode\");\n\n  window.sendEmailVerification = async (email, contextData = {}) => {\n    const res = await sendVerificationCode({\n      email,\n      purpose: \"onlineTickets\",\n      device: contextData.device || \"\",\n      location: contextData.location || \"\",\n    });\n    return res.data;\n  };\n\n  window.verifyEmailOTP = async (email, code) => {\n    const res = await verifyEmailCode({ email, code });\n    return res.data;\n  };\n\n  \/\/ connect OTP modal callbacks to firebase functions\n  function getActiveEmail(){\n    return (\n      document.getElementById('custEmail')?.value.trim() ||\n      document.getElementById('hpEmail')?.value.trim() ||\n      window._lastOtpEmail ||\n      ''\n    );\n  }\n\n  window.onOtpVerify = async (code) => {\n    const email = getActiveEmail();\n    if(!email) return false;\n    try{\n      const res = await window.verifyEmailOTP(email, code);\n      return !!res?.ok && !!res?.verified;\n    }catch(e){\n      const msg = e?.message || e?.details || 'Verification failed.';\n      window._otpUI?.markError(msg);\n      return false;\n    }\n  };\n\n  window.onOtpResend = async () => {\n    const email = getActiveEmail();\n    if(!email) throw new Error('Please enter your email first.');\n    await window.sendEmailVerification(email, {\n      device: window._homePickupData?.model || document.getElementById('step2Title')?.textContent?.trim() || '',\n      location: window._homePickupData?.locationName || window._currentBranchForBooking || ''\n    });\n  };\n\n  \/\/ ===== Appointment submit (Modal 2) =====\n  document.getElementById('submitAppointment')?.addEventListener(\"click\", async () => {\n    const name = document.getElementById(\"custName\").value.trim();\n    const email = document.getElementById(\"custEmail\").value.trim();\n    const phone = document.getElementById(\"custPhone\").value.trim();\n    const dateVal = document.getElementById(\"apptDate\").value;\n    const timeVal = document.getElementById(\"apptTime\").value;\n\n    if (!name || !email || !phone || !dateVal || !timeVal) {\n      alert(\"\u26a0\ufe0f Please fill in all required fields.\");\n      return;\n    }\n\n    const sel = window._lastSelection;\n    const data = {\n      device: sel?.model || document.getElementById('step2Title')?.textContent?.trim() || '',\n      services: sel?.services || ['AirPods Service'],\n      description: sel?.description || \"\",\n      location: window._currentBranchForBooking || \"\",\n      customer: { name, email, phone },\n      appointment: { date: dateVal, time: timeVal },\n      createdAt: serverTimestamp(),\n    };\n\n    try {\n      await addDoc(collection(db, \"appointments\"), data);\n      alert(`\u2705 Appointment saved successfully!\\nOur team will contact you very soon.\\nThank you...`);\n\n      \/\/ close + reset\n      document.getElementById('modalCustomer').classList.remove(\"open\");\n      document.documentElement.style.overflow = \"\";\n      document.getElementById(\"custName\").value = \"\";\n      document.getElementById(\"custEmail\").value = \"\";\n      document.getElementById(\"custPhone\").value = \"\";\n      document.getElementById(\"apptDate\").value = \"\";\n      document.getElementById(\"apptTime\").value = \"\";\n    } catch (error) {\n      console.error(error);\n      alert(\"\u274c Error saving appointment. Check console for details.\");\n    }\n  });\n\n  \/\/ ===== Agreement flow (Modal 4) =====\n  const agreementModal   = document.getElementById('modalAgreement');\n  const closeAgreement   = document.getElementById('closeAgreement');\n  const agreementSummary = document.getElementById('agreementSummary');\n  const agreeName        = document.getElementById('agreeName');\n  const agreePID         = document.getElementById('agreePID');\n  const agreeCheck       = document.getElementById('agreeCheck');\n  const agreeAndCreate   = document.getElementById('agreeAndCreate');\n  const termsPdfFrame    = document.getElementById('termsPdfFrame');\n  const homePickupModal  = document.getElementById('modalHomePickup');\n\n  const TERMS_PDF_URL = 'https:\/\/365solutionsjo.com\/wp-content\/uploads\/2025\/11\/Terms-and-conditions.pdf';\n\n  let signaturePad;\n  function initSignaturePad(){\n    const canvas = document.getElementById('sigPad');\n    const rect = canvas.getBoundingClientRect();\n    canvas.width  = rect.width * window.devicePixelRatio;\n    canvas.height = rect.height * window.devicePixelRatio;\n    const ctx = canvas.getContext('2d');\n    ctx.scale(window.devicePixelRatio, window.devicePixelRatio);\n    signaturePad = new window.SignaturePad(canvas, { backgroundColor: 'rgba(255,255,255,0)' });\n    const clearBtn = document.getElementById('clearSig');\n    if (clearBtn) clearBtn.onclick = ()=> signaturePad.clear();\n  }\n\n  function openAgreementModal(summary, prefillName){\n    agreementSummary.innerHTML = `\n      <p><strong>Device:<\/strong> ${summary.device}<\/p>\n      <p><strong>Service(s):<\/strong> ${summary.services.join(', ')}<\/p>\n      <p><strong>Description:<\/strong> ${summary.description || '(none)'}<\/p>\n      <hr>\n      <p><strong>Location:<\/strong> ${summary.locationName}<\/p>\n    `;\n    termsPdfFrame.src = TERMS_PDF_URL + '#toolbar=0&navpanes=0&scrollbar=0';\n    agreeName.value = prefillName || '';\n    agreePID.value = '';\n    agreeCheck.checked = false;\n\n    agreementModal.classList.add('open');\n    agreementModal.setAttribute('aria-hidden','false');\n    document.documentElement.style.overflow = 'hidden';\n    setTimeout(initSignaturePad, 50);\n  }\n\n  closeAgreement?.addEventListener('click', ()=>{\n    agreementModal.classList.remove('open');\n    agreementModal.setAttribute('aria-hidden','true');\n    document.documentElement.style.overflow = '';\n  });\n\n  \/\/ Home pickup -> open agreement\n  document.getElementById('submitHomePickup')?.addEventListener('click', (e)=>{\n    e.preventDefault();\n\n    const name    = document.getElementById('hpName').value.trim();\n    const email   = document.getElementById('hpEmail').value.trim();\n    const phone   = document.getElementById('hpPhone').value.trim();\n    const serial  = document.getElementById('hpSerial').value.trim();\n    const problem = document.getElementById('hpProblem').value.trim();\n    const company = document.getElementById('hpCompany').value.trim();\n    const address = document.getElementById('hpAddress').value.trim();\n\n    if(!name || !email || !phone || !serial || !problem || !address){\n      alert('Please fill in name, email, phone, serial\/IMEI, problem details, and address.');\n      return;\n    }\n\n    const sel = window._homePickupData;\n    if(!sel){\n      alert('Missing selection context. Please choose model\/services again.');\n      return;\n    }\n\n    window._homePickupFormInputs = { name, email, phone, serial, problem, company, address };\n\n    openAgreementModal({\n      device: sel.model,\n      services: sel.services,\n      description: sel.description,\n      locationName: sel.locationName\n    }, name);\n  });\n\n  async function fetchArrayBuffer(url){\n    const res = await fetch(url);\n    if(!res.ok) throw new Error('Failed to fetch Terms PDF');\n    return await res.arrayBuffer();\n  }\n\n  async function createStampedAgreementPDF({customerName, signatureDataUrl}) {\n    const { PDFDocument, rgb, StandardFonts } = window.PDFLib;\n    const pdfBytes = await fetchArrayBuffer(TERMS_PDF_URL);\n    const pdfDoc = await PDFDocument.load(pdfBytes);\n    const page = pdfDoc.getPages()[0];\n    const font = await pdfDoc.embedFont(StandardFonts.Helvetica);\n\n    const sigPngBytes = await (await fetch(signatureDataUrl)).arrayBuffer();\n    const sigImage = await pdfDoc.embedPng(sigPngBytes);\n\n    \/\/ Tweak these coordinates as needed\n    page.drawText(`${customerName}`, { x: 40, y: 65, size: 5, font, color: rgb(0,0,0) });\n    page.drawImage(sigImage, { x: 225, y: 55, width: 60, height: 20 });\n\n    page.drawText(`${customerName}`, { x: 475, y: 50, size: 5, font, color: rgb(0,0,0) });\n    page.drawImage(sigImage, { x: 300, y: 45, width: 60, height: 20 });\n\n    return await pdfDoc.save();\n  }\n\n  async function uploadAgreementToStorage(bytes){\n    const filename = `agreements\/${Date.now()}_agreement.pdf`;\n    const fileRef = ref(storage, filename);\n    await uploadBytes(fileRef, new Blob([bytes], { type: 'application\/pdf' }));\n    return await getDownloadURL(fileRef);\n  }\n\n  \/\/ AGREE & CREATE -> send OTP -> open OTP modal -> verify -> save ticket\n  agreeAndCreate?.addEventListener('click', async ()=>{\n    try{\n      const name = agreeName.value.trim();\n      const pid  = agreePID.value.trim();\n\n      if(!name){ alert('Please enter your name.'); return; }\n      if(!agreeCheck.checked){ alert('Please accept the Terms & Conditions.'); return; }\n      if(!signaturePad || signaturePad.isEmpty()){ alert('Please provide your signature.'); return; }\n\n      const selection = window._homePickupData;\n      const form      = window._homePickupFormInputs;\n      if(!selection || !form){ alert('Missing context. Please fill the form again.'); return; }\n\n      const email = String(form.email || \"\").trim();\n      if(!email || !email.includes(\"@\")){\n        alert(\"Please enter a valid email.\");\n        return;\n      }\n\n      \/\/ 1) Send OTP\n      agreeAndCreate.disabled = true;\n      agreeAndCreate.textContent = \"Sending code...\";\n      await window.sendEmailVerification(email, { device: selection.model, location: selection.locationName });\n      window._lastOtpEmail = email;\n\n      \/\/ 2) Open OTP modal and wait\n      agreeAndCreate.textContent = \"Waiting for verification...\";\n      const verified = await window.showOtpModal(email);\n      if(!verified){\n        agreeAndCreate.disabled = false;\n        agreeAndCreate.textContent = \"AGREE & CREATE TICKET\";\n        return;\n      }\n\n      \/\/ 3) Continue (stamp PDF + upload + save)\n      agreeAndCreate.textContent = \"Creating ticket...\";\n      const sigDataUrl = signaturePad.toDataURL('image\/png');\n      const stampedBytes = await createStampedAgreementPDF({ customerName: name, signatureDataUrl: sigDataUrl });\n      const agreementUrl = await uploadAgreementToStorage(stampedBytes);\n\n      const payload = {\n        device: selection.model,\n        services: selection.services,\n        selectionDescription: selection.description || '',\n        location: selection.location,\n        locationName: selection.locationName,\n        agreement: {\n          customerName: name,\n          personalId: pid || null,\n          signedAt: new Date().toISOString(),\n          url: agreementUrl\n        },\n        customer: {\n          name: form.name,\n          email: form.email,\n          phone: form.phone,\n          company: form.company || null,\n          address: form.address\n        },\n        deviceInfo: {\n          serialOrImei: form.serial,\n          problemDetails: form.problem\n        },\n        appointment: null,\n        createdAt: serverTimestamp(),\n        emailVerification: { verified: true, verifiedAt: new Date().toISOString() }\n      };\n\n      await addDoc(collection(db, 'onlineTickets'), payload);\n\n      alert('\u2705 Ticket created. Thank you!');\n      agreementModal.classList.remove('open');\n      homePickupModal.classList.remove('open');\n      document.documentElement.style.overflow = '';\n\n    }catch(err){\n      console.error(err);\n      const msg = err?.message || err?.details || \"\u274c Could not create ticket. Please try again.\";\n      alert(msg);\n    }finally{\n      agreeAndCreate.disabled = false;\n      agreeAndCreate.textContent = \"AGREE & CREATE TICKET\";\n    }\n  });\n<\/script>\n\n<script>\n  \/\/ close backdrop helpers for agreement\/home\/otp (optional click-outside)\n  document.getElementById('modalAgreement')?.addEventListener('click', (e)=>{\n    if(e.target.id === 'modalAgreement') {\n      document.getElementById('modalAgreement').classList.remove('open');\n      document.documentElement.style.overflow='';\n    }\n  });\n<\/script>\n\n<\/body>\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1d08fc2 elementor-widget elementor-widget-heading\" data-id=\"1d08fc2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h6 class=\"elementor-heading-title elementor-size-default\">Cost<\/h6>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-68c8448 elementor-widget elementor-widget-text-editor\" data-id=\"68c8448\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Prices may vary depending on the model and type of repair, but the service that we provide will always worth it, when you bring your AirPods to the service center, we can give you an estimation.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f03fc50 elementor-widget elementor-widget-heading\" data-id=\"f03fc50\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span style=\"font-size: 24px;text-transform: none\">Time<\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3b6e094 elementor-widget elementor-widget-text-editor\" data-id=\"3b6e094\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"color: rgb(0, 0, 0); font-family: Tahoma, sans-serif;\">Most of the repairs can take 3-5 working days depending on the type of repair, but this might change if parts are needed in the repair.<\/span><br><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1dff91a elementor-widget elementor-widget-heading\" data-id=\"1dff91a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span style=\"font-size: 24px;text-transform: none\">How to start a repair<\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-33e32c2 elementor-widget elementor-widget-text-editor\" data-id=\"33e32c2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"color: #000000; font-family: Tahoma, sans-serif;\">You can bring your AirPods to our service center and we will estimate the time and cost, and you will receive an SMS and email during the repair procedure, more over you can always track your repair from\u00a0<\/span><a style=\"background-color: #f5f5f5; font-size: 1rem;\" href=\"https:\/\/365solutionsjo.com\/customer_repair_tracking.html\" target=\"_blank\" rel=\"noopener\">here.<\/a><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-e8f9318\" data-id=\"e8f9318\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-8d22eea elementor-widget elementor-widget-image\" data-id=\"8d22eea\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"746\" height=\"910\" src=\"https:\/\/i0.wp.com\/365solutionsjo.com\/wp-content\/uploads\/2023\/07\/AirPods-Service2.png?fit=746%2C910&amp;ssl=1\" class=\"attachment-large size-large wp-image-1260\" alt=\"\" srcset=\"https:\/\/i0.wp.com\/365solutionsjo.com\/wp-content\/uploads\/2023\/07\/AirPods-Service2.png?w=746&amp;ssl=1 746w, https:\/\/i0.wp.com\/365solutionsjo.com\/wp-content\/uploads\/2023\/07\/AirPods-Service2.png?resize=246%2C300&amp;ssl=1 246w\" sizes=\"(max-width: 746px) 100vw, 746px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-408e65d elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"408e65d\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-2914405\" data-id=\"2914405\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-1972372 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"1972372\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-wide\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-16 elementor-inner-column elementor-element elementor-element-b028bc4\" data-id=\"b028bc4\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-c50312d e-transform elementor-position-top elementor-widget elementor-widget-image-box\" data-id=\"c50312d\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_transform_scale_effect_hover&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1.1999999999999999555910790149937383830547332763671875,&quot;sizes&quot;:[]},&quot;_transform_scale_effect_hover_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_scale_effect_hover_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"image-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><figure class=\"elementor-image-box-img\"><a href=\"https:\/\/365solutionsjo.com\/iPhone-service\" tabindex=\"-1\"><img decoding=\"async\" width=\"472\" height=\"527\" src=\"https:\/\/i0.wp.com\/365solutionsjo.com\/wp-content\/uploads\/2024\/03\/iPhone_15_Pro_iPhone_15_Family_Screen__GBEN.png?fit=472%2C527&amp;ssl=1\" class=\"attachment-full size-full wp-image-1437\" alt=\"\" srcset=\"https:\/\/i0.wp.com\/365solutionsjo.com\/wp-content\/uploads\/2024\/03\/iPhone_15_Pro_iPhone_15_Family_Screen__GBEN.png?w=472&amp;ssl=1 472w, https:\/\/i0.wp.com\/365solutionsjo.com\/wp-content\/uploads\/2024\/03\/iPhone_15_Pro_iPhone_15_Family_Screen__GBEN.png?resize=269%2C300&amp;ssl=1 269w\" sizes=\"(max-width: 472px) 100vw, 472px\" \/><\/a><\/figure><div class=\"elementor-image-box-content\"><div class=\"elementor-image-box-title\"><a href=\"https:\/\/365solutionsjo.com\/iPhone-service\">iPhone<\/a><\/div><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-16 elementor-inner-column elementor-element elementor-element-f1c5fb0\" data-id=\"f1c5fb0\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-8bb20d7 e-transform elementor-position-top elementor-widget elementor-widget-image-box\" data-id=\"8bb20d7\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_transform_scale_effect_hover&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1.1999999999999999555910790149937383830547332763671875,&quot;sizes&quot;:[]},&quot;_transform_scale_effect_hover_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_scale_effect_hover_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"image-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><figure class=\"elementor-image-box-img\"><a href=\"https:\/\/365solutionsjo.com\/iPad-service\" tabindex=\"-1\"><img decoding=\"async\" width=\"283\" height=\"283\" src=\"https:\/\/i0.wp.com\/365solutionsjo.com\/wp-content\/uploads\/2023\/07\/iPad-Service-Small.png?fit=283%2C283&amp;ssl=1\" class=\"attachment-medium size-medium wp-image-1279\" alt=\"\" srcset=\"https:\/\/i0.wp.com\/365solutionsjo.com\/wp-content\/uploads\/2023\/07\/iPad-Service-Small.png?w=283&amp;ssl=1 283w, https:\/\/i0.wp.com\/365solutionsjo.com\/wp-content\/uploads\/2023\/07\/iPad-Service-Small.png?resize=150%2C150&amp;ssl=1 150w\" sizes=\"(max-width: 283px) 100vw, 283px\" \/><\/a><\/figure><div class=\"elementor-image-box-content\"><div class=\"elementor-image-box-title\"><a href=\"https:\/\/365solutionsjo.com\/iPad-service\">iPad<\/a><\/div><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-16 elementor-inner-column elementor-element elementor-element-3a3b408\" data-id=\"3a3b408\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-223b452 e-transform elementor-position-top elementor-widget elementor-widget-image-box\" data-id=\"223b452\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_transform_scale_effect_hover&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1.1999999999999999555910790149937383830547332763671875,&quot;sizes&quot;:[]},&quot;_transform_scale_effect_hover_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_scale_effect_hover_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"image-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><figure class=\"elementor-image-box-img\"><a href=\"https:\/\/365solutionsjo.com\/mac-service\/\" mac=\"\" tabindex=\"-1\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"300\" src=\"https:\/\/i0.wp.com\/365solutionsjo.com\/wp-content\/uploads\/2024\/03\/MacBook_Pro_16_in_M3_Pro_Max_Space_Black_PDP_Image_Position-1__en-ME.png?fit=300%2C300&amp;ssl=1\" class=\"attachment-medium size-medium wp-image-1445\" alt=\"\" srcset=\"https:\/\/i0.wp.com\/365solutionsjo.com\/wp-content\/uploads\/2024\/03\/MacBook_Pro_16_in_M3_Pro_Max_Space_Black_PDP_Image_Position-1__en-ME.png?w=472&amp;ssl=1 472w, https:\/\/i0.wp.com\/365solutionsjo.com\/wp-content\/uploads\/2024\/03\/MacBook_Pro_16_in_M3_Pro_Max_Space_Black_PDP_Image_Position-1__en-ME.png?resize=300%2C300&amp;ssl=1 300w, https:\/\/i0.wp.com\/365solutionsjo.com\/wp-content\/uploads\/2024\/03\/MacBook_Pro_16_in_M3_Pro_Max_Space_Black_PDP_Image_Position-1__en-ME.png?resize=150%2C150&amp;ssl=1 150w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/figure><div class=\"elementor-image-box-content\"><div class=\"elementor-image-box-title\"><a href=\"https:\/\/365solutionsjo.com\/mac-service\/\" mac=\"\">Mac<\/a><\/div><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-16 elementor-inner-column elementor-element elementor-element-8de1112\" data-id=\"8de1112\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4c3dd9c e-transform elementor-position-top elementor-widget elementor-widget-image-box\" data-id=\"4c3dd9c\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_transform_scale_effect_hover&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1.1999999999999999555910790149937383830547332763671875,&quot;sizes&quot;:[]},&quot;_transform_scale_effect_hover_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_scale_effect_hover_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"image-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><figure class=\"elementor-image-box-img\"><a href=\"https:\/\/365solutionsjo.com\/AppleWatch-Service\" tabindex=\"-1\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"300\" src=\"https:\/\/i0.wp.com\/365solutionsjo.com\/wp-content\/uploads\/2024\/03\/Apple_Watch_Series_9_45mm_Cellular_Apple_Watch_Ultra_2_49mm_Cellular_Apple_Watch_SE_44mm_Cellular_3-up_Family_Screen__AEEN-1.png?fit=300%2C300&amp;ssl=1\" class=\"attachment-medium size-medium wp-image-1444\" alt=\"\" srcset=\"https:\/\/i0.wp.com\/365solutionsjo.com\/wp-content\/uploads\/2024\/03\/Apple_Watch_Series_9_45mm_Cellular_Apple_Watch_Ultra_2_49mm_Cellular_Apple_Watch_SE_44mm_Cellular_3-up_Family_Screen__AEEN-1.png?w=472&amp;ssl=1 472w, https:\/\/i0.wp.com\/365solutionsjo.com\/wp-content\/uploads\/2024\/03\/Apple_Watch_Series_9_45mm_Cellular_Apple_Watch_Ultra_2_49mm_Cellular_Apple_Watch_SE_44mm_Cellular_3-up_Family_Screen__AEEN-1.png?resize=300%2C300&amp;ssl=1 300w, https:\/\/i0.wp.com\/365solutionsjo.com\/wp-content\/uploads\/2024\/03\/Apple_Watch_Series_9_45mm_Cellular_Apple_Watch_Ultra_2_49mm_Cellular_Apple_Watch_SE_44mm_Cellular_3-up_Family_Screen__AEEN-1.png?resize=150%2C150&amp;ssl=1 150w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/figure><div class=\"elementor-image-box-content\"><div class=\"elementor-image-box-title\"><a href=\"https:\/\/365solutionsjo.com\/AppleWatch-Service\">AppleWatch<\/a><\/div><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-16 elementor-inner-column elementor-element elementor-element-3f06d5f\" data-id=\"3f06d5f\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-080ce2f e-transform elementor-position-top elementor-widget elementor-widget-image-box\" data-id=\"080ce2f\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_transform_scale_effect_hover&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1.1999999999999999555910790149937383830547332763671875,&quot;sizes&quot;:[]},&quot;_transform_scale_effect_hover_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_scale_effect_hover_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"image-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><figure class=\"elementor-image-box-img\"><a href=\"https:\/\/365solutionsjo.com\/AirPods-Service\" tabindex=\"-1\"><img loading=\"lazy\" decoding=\"async\" width=\"283\" height=\"283\" src=\"https:\/\/i0.wp.com\/365solutionsjo.com\/wp-content\/uploads\/2023\/07\/AirPods-Service-Small.png?fit=283%2C283&amp;ssl=1\" class=\"attachment-medium size-medium wp-image-1282\" alt=\"\" srcset=\"https:\/\/i0.wp.com\/365solutionsjo.com\/wp-content\/uploads\/2023\/07\/AirPods-Service-Small.png?w=283&amp;ssl=1 283w, https:\/\/i0.wp.com\/365solutionsjo.com\/wp-content\/uploads\/2023\/07\/AirPods-Service-Small.png?resize=150%2C150&amp;ssl=1 150w\" sizes=\"(max-width: 283px) 100vw, 283px\" \/><\/a><\/figure><div class=\"elementor-image-box-content\"><div class=\"elementor-image-box-title\"><a href=\"https:\/\/365solutionsjo.com\/AirPods-Service\">AirPods<\/a><\/div><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-16 elementor-inner-column elementor-element elementor-element-9e98795\" data-id=\"9e98795\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-37996f4 e-transform elementor-position-top elementor-widget elementor-widget-image-box\" data-id=\"37996f4\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_transform_scale_effect_hover&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1.1999999999999999555910790149937383830547332763671875,&quot;sizes&quot;:[]},&quot;_transform_scale_effect_hover_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_scale_effect_hover_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"image-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><figure class=\"elementor-image-box-img\"><a href=\"https:\/\/365solutionsjo.com\/AppleTV-Service\" tabindex=\"-1\"><img loading=\"lazy\" decoding=\"async\" width=\"283\" height=\"283\" src=\"https:\/\/i0.wp.com\/365solutionsjo.com\/wp-content\/uploads\/2023\/07\/AppleTV-Service-Small.png?fit=283%2C283&amp;ssl=1\" class=\"attachment-medium size-medium wp-image-1283\" alt=\"\" srcset=\"https:\/\/i0.wp.com\/365solutionsjo.com\/wp-content\/uploads\/2023\/07\/AppleTV-Service-Small.png?w=283&amp;ssl=1 283w, https:\/\/i0.wp.com\/365solutionsjo.com\/wp-content\/uploads\/2023\/07\/AppleTV-Service-Small.png?resize=150%2C150&amp;ssl=1 150w\" sizes=\"(max-width: 283px) 100vw, 283px\" \/><\/a><\/figure><div class=\"elementor-image-box-content\"><div class=\"elementor-image-box-title\"><a href=\"https:\/\/365solutionsjo.com\/AppleTV-Service\">AppleTV<\/a><\/div><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>This is your Apple Authorised AirPods service and repair Center AirPods Service and Repair AirPods Replacement, Service, and Repair &#038; Support Models AirPods 1st generation Repair AirPods 2nd generation Repair AirPods 3rd generation Repair AirPods 4th generation Repair AirPods with ANC Repair AirPods Max Repair AirPods Pro Repair AirPods Pro 2nd generation Repair AirPods Pro [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"nf_dc_page":"","om_disable_all_campaigns":false,"_uag_custom_page_level_css":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","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":"","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-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":"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":""},"mobile":{"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":""}},"footnotes":""},"class_list":["post-1258","page","type-page","status-publish","hentry"],"aioseo_notices":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>AirPods-Service -<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/365solutionsjo.com\/ar\/airpods-service\/\" \/>\n<meta property=\"og:locale\" content=\"ar_AR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"AirPods-Service -\" \/>\n<meta property=\"og:description\" content=\"This is your Apple Authorised AirPods service and repair Center AirPods Service and Repair AirPods Replacement, Service, and Repair &#038; Support Models AirPods 1st generation Repair AirPods 2nd generation Repair AirPods 3rd generation Repair AirPods 4th generation Repair AirPods with ANC Repair AirPods Max Repair AirPods Pro Repair AirPods Pro 2nd generation Repair AirPods Pro [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/365solutionsjo.com\/ar\/airpods-service\/\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-29T18:23:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/365solutionsjo.com\/wp-content\/uploads\/2025\/10\/pngtree-an-image-of-a-store-front-or-bakery-store-coloring-pages-vector-png-image_6981000.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u0648\u0642\u062a \u0627\u0644\u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u0645\u064f\u0642\u062f\u0651\u0631\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 \u062f\u0642\u0627\u0626\u0642\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/365solutionsjo.com\\\/airpods-service\\\/\",\"url\":\"https:\\\/\\\/365solutionsjo.com\\\/airpods-service\\\/\",\"name\":\"AirPods-Service -\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/dso.azu.mybluehost.me\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/365solutionsjo.com\\\/airpods-service\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/365solutionsjo.com\\\/airpods-service\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/365solutionsjo.com\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/pngtree-an-image-of-a-store-front-or-bakery-store-coloring-pages-vector-png-image_6981000.png\",\"datePublished\":\"2023-07-07T09:05:31+00:00\",\"dateModified\":\"2025-12-29T18:23:25+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/365solutionsjo.com\\\/airpods-service\\\/#breadcrumb\"},\"inLanguage\":\"ar\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/365solutionsjo.com\\\/airpods-service\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ar\",\"@id\":\"https:\\\/\\\/365solutionsjo.com\\\/airpods-service\\\/#primaryimage\",\"url\":\"https:\\\/\\\/365solutionsjo.com\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/pngtree-an-image-of-a-store-front-or-bakery-store-coloring-pages-vector-png-image_6981000.png\",\"contentUrl\":\"https:\\\/\\\/365solutionsjo.com\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/pngtree-an-image-of-a-store-front-or-bakery-store-coloring-pages-vector-png-image_6981000.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/365solutionsjo.com\\\/airpods-service\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/365solutionsjo.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"AirPods-Service\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/dso.azu.mybluehost.me\\\/#website\",\"url\":\"https:\\\/\\\/dso.azu.mybluehost.me\\\/\",\"name\":\"\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/dso.azu.mybluehost.me\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ar\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"AirPods-Service -","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/365solutionsjo.com\/ar\/airpods-service\/","og_locale":"ar_AR","og_type":"article","og_title":"AirPods-Service -","og_description":"This is your Apple Authorised AirPods service and repair Center AirPods Service and Repair AirPods Replacement, Service, and Repair &#038; Support Models AirPods 1st generation Repair AirPods 2nd generation Repair AirPods 3rd generation Repair AirPods 4th generation Repair AirPods with ANC Repair AirPods Max Repair AirPods Pro Repair AirPods Pro 2nd generation Repair AirPods Pro [&hellip;]","og_url":"https:\/\/365solutionsjo.com\/ar\/airpods-service\/","article_modified_time":"2025-12-29T18:23:25+00:00","og_image":[{"url":"https:\/\/365solutionsjo.com\/wp-content\/uploads\/2025\/10\/pngtree-an-image-of-a-store-front-or-bakery-store-coloring-pages-vector-png-image_6981000.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"\u0648\u0642\u062a \u0627\u0644\u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u0645\u064f\u0642\u062f\u0651\u0631":"4 \u062f\u0642\u0627\u0626\u0642"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/365solutionsjo.com\/airpods-service\/","url":"https:\/\/365solutionsjo.com\/airpods-service\/","name":"AirPods-Service -","isPartOf":{"@id":"https:\/\/dso.azu.mybluehost.me\/#website"},"primaryImageOfPage":{"@id":"https:\/\/365solutionsjo.com\/airpods-service\/#primaryimage"},"image":{"@id":"https:\/\/365solutionsjo.com\/airpods-service\/#primaryimage"},"thumbnailUrl":"https:\/\/365solutionsjo.com\/wp-content\/uploads\/2025\/10\/pngtree-an-image-of-a-store-front-or-bakery-store-coloring-pages-vector-png-image_6981000.png","datePublished":"2023-07-07T09:05:31+00:00","dateModified":"2025-12-29T18:23:25+00:00","breadcrumb":{"@id":"https:\/\/365solutionsjo.com\/airpods-service\/#breadcrumb"},"inLanguage":"ar","potentialAction":[{"@type":"ReadAction","target":["https:\/\/365solutionsjo.com\/airpods-service\/"]}]},{"@type":"ImageObject","inLanguage":"ar","@id":"https:\/\/365solutionsjo.com\/airpods-service\/#primaryimage","url":"https:\/\/365solutionsjo.com\/wp-content\/uploads\/2025\/10\/pngtree-an-image-of-a-store-front-or-bakery-store-coloring-pages-vector-png-image_6981000.png","contentUrl":"https:\/\/365solutionsjo.com\/wp-content\/uploads\/2025\/10\/pngtree-an-image-of-a-store-front-or-bakery-store-coloring-pages-vector-png-image_6981000.png"},{"@type":"BreadcrumbList","@id":"https:\/\/365solutionsjo.com\/airpods-service\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/365solutionsjo.com\/"},{"@type":"ListItem","position":2,"name":"AirPods-Service"}]},{"@type":"WebSite","@id":"https:\/\/dso.azu.mybluehost.me\/#website","url":"https:\/\/dso.azu.mybluehost.me\/","name":"","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dso.azu.mybluehost.me\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ar"}]}},"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"trp-custom-language-flag":false},"uagb_author_info":{"display_name":"admin","author_link":"https:\/\/365solutionsjo.com\/ar\/author\/admin\/"},"uagb_comment_info":0,"uagb_excerpt":"This is your Apple Authorised AirPods service and repair Center AirPods Service and Repair AirPods Replacement, Service, and Repair &#038; Support Models AirPods 1st generation Repair AirPods 2nd generation Repair AirPods 3rd generation Repair AirPods 4th generation Repair AirPods with ANC Repair AirPods Max Repair AirPods Pro Repair AirPods Pro 2nd generation Repair AirPods Pro&hellip;","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/365solutionsjo.com\/ar\/wp-json\/wp\/v2\/pages\/1258","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/365solutionsjo.com\/ar\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/365solutionsjo.com\/ar\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/365solutionsjo.com\/ar\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/365solutionsjo.com\/ar\/wp-json\/wp\/v2\/comments?post=1258"}],"version-history":[{"count":63,"href":"https:\/\/365solutionsjo.com\/ar\/wp-json\/wp\/v2\/pages\/1258\/revisions"}],"predecessor-version":[{"id":2603,"href":"https:\/\/365solutionsjo.com\/ar\/wp-json\/wp\/v2\/pages\/1258\/revisions\/2603"}],"wp:attachment":[{"href":"https:\/\/365solutionsjo.com\/ar\/wp-json\/wp\/v2\/media?parent=1258"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}