<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>MXCORP Garment Costing</title>
    <link rel="preconnect" href="https://fonts.googleapis.com" />
    <link rel="preconnect" href="https://fonts.gstatic.com" />
    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap" rel="stylesheet" />
    <style id="mxcorp-critical">body{margin:0;font-family:Inter,system-ui,sans-serif;font-size:12px;background:#fff;color:#111}</style>
    
    
  <link rel="stylesheet" href="/static/index-B196tgrH.css?v=B196tgrH" data-mxcorp-css="/static/index-B196tgrH.css"><script>
(function () {
  function assetPath(src) {
    return String(src || '').split('?')[0].split('#')[0];
  }
  function assetVersion(path) {
    var match = String(path || '').match(/-([A-Za-z0-9_-]{6,})\.(css|js|mjs)$/);
    return match ? match[1] : String(Date.now());
  }
  function assetUrl(path, extraBust) {
    if (!path) return path;
    var version = extraBust ? String(Date.now()) : assetVersion(path);
    return path + '?v=' + encodeURIComponent(version);
  }
  function showLoadError() {
    var root = document.getElementById('root');
    if (!root || root.childElementCount > 0) return;
    root.innerHTML =
      '<div style="padding:24px;font-family:Inter,system-ui,sans-serif;font-size:13px;line-height:1.5;max-width:420px">' +
      '<p style="margin:0 0 8px">The app failed to load after an update.</p>' +
      '<p style="margin:0 0 12px;color:#666">Use a hard refresh (Cmd+Shift+R on Mac, Ctrl+Shift+R on Windows) or click below.</p>' +
      '<button type="button" style="padding:8px 14px;cursor:pointer;margin-right:8px" onclick="location.reload()">Reload page</button>' +
      '<button type="button" style="padding:8px 14px;cursor:pointer" onclick="location.href=location.pathname+\'?v=\'+Date.now()">Hard refresh</button>' +
      '</div>';
  }
  function fetchAssetText(url) {
    return fetch(url, { cache: 'no-store' }).then(function (res) {
      return res.text().then(function (body) {
        if (!res.ok || body.trimStart().startsWith('<!')) {
          throw new Error('asset-not-found');
        }
        return body;
      });
    });
  }
  function ensureStylesheet(src, extraBust) {
    var path = assetPath(src);
    if (!path) return Promise.resolve();
    var url = assetUrl(path, extraBust);
    return fetchAssetText(url).then(function (css) {
      var style = document.querySelector('style[data-mxcorp-css="' + path + '"]');
      if (!style) {
        style = document.createElement('style');
        style.setAttribute('data-mxcorp-css', path);
        document.head.appendChild(style);
      }
      style.textContent = css;
    });
  }
  function loadModule(src, extraBust) {
    var path = assetPath(src);
    var url = assetUrl(path, extraBust);
    return fetchAssetText(url).then(function () {
      return new Promise(function (resolve, reject) {
        var script = document.createElement('script');
        script.type = 'module';
        script.src = url;
        script.onload = function () { resolve(); };
        script.onerror = function () { reject(new Error('asset-not-found')); };
        document.head.appendChild(script);
      });
    });
  }
  function bootAssets(cssSrc, jsSrc, extraBust) {
    return ensureStylesheet(cssSrc, extraBust).then(function () {
      return loadModule(jsSrc, extraBust);
    });
  }
  window.__mxcorpBoot = function (cssSrc, jsSrc) {
    bootAssets(cssSrc, jsSrc, false).catch(function () {
      bootAssets(cssSrc, jsSrc, true).catch(showLoadError);
    });
  };
})();
</script><script>window.__mxcorpBoot('/static/index-B196tgrH.css','/static/index-D2xyQd2s.js');</script></head>
  <body>
    <div id="root"></div>
  </body>
</html>
