<!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-C0PVw5SX.css" data-mxcorp-css="/static/index-C0PVw5SX.css"><script>
(function () {
  var RELOAD_KEY = 'mxcorp.assetReload';
  function assetPath(src) {
    return String(src || '').split('?')[0].split('#')[0];
  }
  function assetUrl(path, bustCache) {
    if (bustCache === true) {
      return path + '?v=' + encodeURIComponent(String(Date.now()));
    }
    return path;
  }
  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="sessionStorage.removeItem(\'mxcorp.assetReload\');location.href=location.pathname+\'?v=\'+Date.now()">Hard refresh</button>' +
      '</div>';
  }
  function ensureStylesheet(src, bustCache) {
    var path = assetPath(src);
    if (!path) return Promise.resolve();
    var url = assetUrl(path, bustCache);
    var existing = document.querySelector('link[data-mxcorp-css="' + path + '"]');
    if (existing && bustCache !== true) {
      return new Promise(function (resolve) {
        requestAnimationFrame(function () {
          if (stylesApplied()) {
            resolve();
            return;
          }
          if (existing.parentNode) existing.parentNode.removeChild(existing);
          ensureStylesheet(src, true).then(resolve);
        });
      });
    }
    if (existing && bustCache === true) {
      existing.parentNode && existing.parentNode.removeChild(existing);
    }
    return fetch(url, { cache: 'no-store' })
      .then(function (res) {
        return res.text().then(function (body) {
          if (!res.ok || body.trimStart().startsWith('<!')) {
            throw new Error('css-not-found');
          }
          return body;
        });
      })
      .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, bustCache) {
    var path = assetPath(src);
    var url = assetUrl(path, bustCache);
    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;
        });
      })
      .then(function () {
        return new Promise(function (resolve, reject) {
          var script = document.createElement('script');
          script.type = 'module';
          script.src = url;
          script.onload = function () {
            sessionStorage.removeItem(RELOAD_KEY);
            resolve();
          };
          script.onerror = function () {
            reject(new Error('asset-not-found'));
          };
          document.head.appendChild(script);
        });
      });
  }
  function stylesApplied() {
    var probe = document.createElement('div');
    probe.className = 'app-shell';
    probe.style.display = 'none';
    document.documentElement.appendChild(probe);
    var minHeight = window.getComputedStyle(probe).minHeight;
    probe.parentNode && probe.parentNode.removeChild(probe);
    return minHeight === '100vh' || parseInt(minHeight, 10) >= 500;
  }
  function bootAssets(cssSrc, jsSrc, bustCache) {
    return ensureStylesheet(cssSrc, bustCache).then(function () {
      if (!stylesApplied()) {
        throw new Error('css-not-applied');
      }
      return loadModule(jsSrc, bustCache);
    });
  }
  window.__mxcorpBoot = function (cssSrc, jsSrc) {
    var jsPath = assetPath(jsSrc);
    bootAssets(cssSrc, jsSrc, false).catch(function () {
      if (sessionStorage.getItem(RELOAD_KEY) === jsPath) {
        bootAssets(cssSrc, jsSrc, true).catch(showLoadError);
        return;
      }
      sessionStorage.setItem(RELOAD_KEY, jsPath);
      bootAssets(cssSrc, jsSrc, true).catch(showLoadError);
    });
  };
})();
</script><script>window.__mxcorpBoot('/static/index-C0PVw5SX.css','/static/index-DLdw9CKL.js');</script></head>
  <body>
    <div id="root"></div>
  </body>
</html>
