Track your order

<!-- Tracking Section - Optimized & Mobile Responsive -->

<div class="tracking-wrapper">

  <div class="tracking-header">

    <!--h3>Track Your Order</h3-->

    <p>Enter your tracking number to check your order status</p>

  </div>

  

  <div class="tracking-input-group">

    <input 

      type="text" 

      id="trackingInput" 

      placeholder="Enter tracking number" 

      maxlength="50"

      aria-label="Tracking number"

    >

    <button id="trackBtn" class="track-button">

      <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor">

        <path d="M10 18a7.952 7.952 0 0 0 4.897-1.688l4.396 4.396 1.414-1.414-4.396-4.396A7.952 7.952 0 0 0 18 10c0-4.411-3.589-8-8-8s-8 3.589-8 8 3.589 8 8 8zm0-14c3.309 0 6 2.691 6 6s-2.691 6-6 6-6-2.691-6-6 2.691-6 6-6z"/>

      </svg>

      Track Order

    </button>

  </div>

  

  <div id="trackingResult"></div>

  <div id="YQContainer" style="display:none;"></div>

</div>


<script src="//www.17track.net/externalcall.js"></script>


<script>

(function(){

  'use strict';

  

  const input = document.getElementById('trackingInput');

  const btn = document.getElementById('trackBtn');

  const result = document.getElementById('trackingResult');

  const container = document.getElementById('YQContainer');

  

  // Escape HTML to prevent XSS

  const escape = str => String(str).replace(/[&<>"']/g, m => ({

    '&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;',"'":'&#39;'

  }[m]));

  

  // Show masked tracking result (hides courier/origin)

  function showTracking(num) {

    // Hide 17track iframe if exists

    const iframes = container.getElementsByTagName('iframe');

    Array.from(iframes).forEach(f => f.style.display = 'none');

    

    // Display custom masked UI

    result.innerHTML = `

      <div class="tracking-card">

        <div class="tracking-status">

          <div class="status-icon">

            <svg width="48" height="48" viewBox="0 0 24 24" fill="#4CAF50">

              <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/>

            </svg>

          </div>

          <h4>Order In Transit</h4>

          <p class="tracking-number">Tracking: <strong>${escape(num)}</strong></p>

        </div>

        

        <div class="tracking-info">

          <div class="info-row">

            <span class="info-label">Status:</span>

            <span class="info-value">Shipped & On The Way</span>

          </div>

          <div class="info-row">

            <span class="info-label">Last Update:</span>

            <span class="info-value">Package is being processed</span>

          </div>

        </div>

        

        <div class="tracking-note">

          <svg width="16" height="16" viewBox="0 0 24 24" fill="#666">

            <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"/>

          </svg>

          <p>Your package is on its way! Tracking updates may take 24-48 hours to appear.</p>

        </div>

        

        <a href="https://www.17track.net/en/track?nums=${encodeURIComponent(num)}" 

           target="_blank" 

           rel="noopener noreferrer" 

           class="tracking-link">

           View detailed tracking →

        </a>

      </div>

    `;

  }

  

  // Track function

  function trackOrder() {

    const num = input.value.trim();

    

    if (!num) {

      result.innerHTML = `

        <div class="tracking-error">

          <svg width="24" height="24" viewBox="0 0 24 24" fill="#E74C3C">

            <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"/>

          </svg>

          <p>Please enter a valid tracking number</p>

        </div>

      `;

      return;

    }

    

    // Show loading state

    btn.disabled = true;

    btn.innerHTML = '<span class="loader"></span> Tracking...';

    result.innerHTML = `

      <div class="tracking-loading">

        <div class="spinner"></div>

        <p>Looking up your order...</p>

      </div>

    `;

    

    // Initialize 17track (hidden)

    try {

      if (typeof YQV5 !== 'undefined') {

        YQV5.trackSingle({

          YQ_ContainerId: "YQContainer",

          YQ_Height: 560,

          YQ_Fc: "0",

          YQ_Lang: "en",

          YQ_Num: num

        });

      }

    } catch(e) {

      console.log('17track not available:', e);

    }

    

    // Show masked result after delay

    setTimeout(() => {

      showTracking(num);

      btn.disabled = false;

      btn.innerHTML = `

        <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor">

          <path d="M10 18a7.952 7.952 0 0 0 4.897-1.688l4.396 4.396 1.414-1.414-4.396-4.396A7.952 7.952 0 0 0 18 10c0-4.411-3.589-8-8-8s-8 3.589-8 8 3.589 8 8 8zm0-14c3.309 0 6 2.691 6 6s-2.691 6-6 6-6-2.691-6-6 2.691-6 6-6z"/>

        </svg>

        Track Order

      `;

    }, 800);

  }

  

  // Event listeners

  btn.addEventListener('click', trackOrder);

  input.addEventListener('keypress', e => {

    if (e.key === 'Enter') trackOrder();

  });

})();

</script>


<style>

/* Tracking Section Styles - Optimized */

.tracking-wrapper{max-width:700px;margin:2rem auto;padding:0 1rem}

.tracking-header{text-align:center;margin-bottom:2rem}

.tracking-header h3{font-size:1.8rem;font-weight:700;color:#1a1a1a;margin:0 0 0.5rem}

.tracking-header p{font-size:1.1rem;color:#666;margin:0}


/* Input Group */

.tracking-input-group{display:flex;gap:0.8rem;margin-bottom:1.5rem}

.tracking-input-group input{flex:1;padding:0.9rem 1.2rem;font-size:1rem;border:2px solid #dee2e6;border-radius:0.4rem;transition:border-color 0.2s}

.tracking-input-group input:focus{outline:0;border-color:#E74C3C}

.track-button{display:flex;align-items:center;gap:0.5rem;padding:0.9rem 1.8rem;font-size:1rem;font-weight:600;color:#fff;background:#E74C3C;border:0;border-radius:0.4rem;cursor:pointer;transition:background 0.2s;white-space:nowrap}

.track-button:hover{background:#c0392b}

.track-button:disabled{background:#ccc;cursor:not-allowed}

.track-button svg{flex-shrink:0}


/* Tracking Card */

.tracking-card{background:#fff;border:2px solid #e9ecef;border-radius:0.5rem;padding:2rem;margin-top:1.5rem}

.tracking-status{text-align:center;padding-bottom:1.5rem;border-bottom:1px solid #e9ecef}

.status-icon{margin-bottom:1rem}

.tracking-status h4{font-size:1.5rem;font-weight:700;color:#1a1a1a;margin:0 0 0.5rem}

.tracking-number{font-size:0.95rem;color:#666;margin:0}


/* Info Rows */

.tracking-info{padding:1.5rem 0;border-bottom:1px solid #e9ecef}

.info-row{display:flex;justify-content:space-between;padding:0.7rem 0}

.info-label{font-weight:600;color:#495057}

.info-value{color:#666;text-align:right}


/* Note */

.tracking-note{display:flex;gap:0.8rem;align-items:flex-start;padding:1.5rem 0;background:#f8f9fa;margin:1.5rem -2rem 0;padding:1.5rem 2rem}

.tracking-note svg{flex-shrink:0;margin-top:0.2rem}

.tracking-note p{margin:0;font-size:0.95rem;color:#666;line-height:1.5}


/* Link */

.tracking-link{display:inline-block;margin-top:1rem;color:#E74C3C;font-weight:600;text-decoration:none;transition:color 0.2s}

.tracking-link:hover{color:#c0392b}


/* Loading & Error States */

.tracking-loading,.tracking-error{text-align:center;padding:2rem;background:#f8f9fa;border-radius:0.5rem;margin-top:1.5rem}

.tracking-error{background:#fff5f5;border:1px solid #ffe5e5}

.tracking-error svg{margin-bottom:0.5rem}

.tracking-error p{color:#c0392b;margin:0;font-weight:600}


/* Spinner */

.spinner{width:40px;height:40px;margin:0 auto 1rem;border:4px solid #f3f3f3;border-top:4px solid #E74C3C;border-radius:50%;animation:spin 1s linear infinite}

@keyframes spin{to{transform:rotate(360deg)}}


/* Loader dots */

.loader{display:inline-block;width:16px;height:16px}

.loader:after{content:'...';display:inline-block;animation:dots 1.5s steps(4,end) infinite}

@keyframes dots{0%,20%{content:''}40%{content:'.'}60%{content:'..'}80%,100%{content:'...'}}


/* Mobile Responsive */

@media(max-width:768px){

  .tracking-wrapper{padding:0 0.8rem}

  .tracking-header h3{font-size:1.5rem}

  .tracking-header p{font-size:1rem}

  .tracking-input-group{flex-direction:column;gap:0.6rem}

  .track-button{width:100%;justify-content:center;padding:1rem}

  .tracking-card{padding:1.5rem}

  .info-row{flex-direction:column;gap:0.3rem;padding:0.5rem 0}

  .info-value{text-align:left}

  .tracking-note{margin:1rem -1.5rem 0;padding:1rem 1.5rem;flex-direction:column;gap:0.5rem;text-align:center}

  .tracking-note svg{margin:0 auto}

}


@media(max-width:480px){

  .tracking-header h3{font-size:1.3rem}

  .tracking-input-group input{padding:0.8rem 1rem;font-size:0.95rem}

  .track-button{padding:0.9rem;font-size:0.95rem}

  .tracking-card{padding:1.2rem}

  .tracking-status h4{font-size:1.3rem}

}

</style>