<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
    <meta http-equiv="Pragma" content="no-cache" />
    <meta http-equiv="Expires" content="0" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Zebook - Booking Management System</title>
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap" rel="stylesheet">
    <script type="module" crossorigin src="/assets/index-d61d37f2.js"></script>
    <link rel="stylesheet" href="/assets/index-12f2f03c.css">
  <script>
(function(){
  var MAX=5,KEY='__chunk_reload',DONE='__chunk_ok';

  function recoveryReload(){
    var n=parseInt(sessionStorage.getItem(KEY)||'0',10);
    if(n<MAX){
      sessionStorage.setItem(KEY,String(n+1));
      var u=new URL(location.href);
      u.searchParams.set('_r',Date.now().toString(36));
      location.replace(u.toString());
    } else {
      // Clear and try one more time after a delay (CDN may have propagated)
      sessionStorage.removeItem(KEY);
      setTimeout(function(){ location.reload(); }, 3000);
    }
  }

  // Catch ONLY SyntaxError from stale chunks (HTML served as JS)
  // Do NOT catch runtime errors — those should show in console, not trigger reloads
  window.addEventListener('error',function(e){
    if(e.message&&e.message.includes('Unexpected token')&&e.filename&&(e.filename.indexOf('/assets/')!==-1||e.filename.indexOf('.js')!==-1)){
      console.warn('[recovery] Chunk parse error on:',e.filename);
      recoveryReload();
    }
  },true);

  // Catch unhandled promise rejections from dynamic imports
  window.addEventListener('unhandledrejection',function(e){
    if(e.reason&&e.reason.message&&(e.reason.message.includes('Unexpected token')||e.reason.message.includes('Failed to fetch'))){
      console.warn('[recovery] Import error:',e.reason.message);
      recoveryReload();
    }
  });

  // Fast blank page detection via MutationObserver
  var detected=false;
  function checkBlank(){
    if(detected)return;
    var root=document.getElementById('root');
    if(!root)return;
    var hasContent=root.children.length>0;
    if(hasContent){
      detected=true;
      sessionStorage.setItem(DONE,'1');
      sessionStorage.removeItem(KEY);
      observer.disconnect();
    }
  }
  var observer=new MutationObserver(checkBlank);
  observer.observe(document.documentElement,{childList:true,subtree:true});

  // Fallback: check after 2 seconds
  setTimeout(function(){
    if(sessionStorage.getItem(DONE))return;
    checkBlank();
    if(!detected){
      console.warn('[recovery] Blank page detected — reloading');
      recoveryReload();
    }
  },2000);
})();</script>
</head>
  <body>
    <div id="root"></div>
    
  </body>
</html>