<!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no,viewport-fit=cover"/><meta name="theme-color" content="#20b2aa"/><meta name="theme-color" media="(prefers-color-scheme: light)" content="#20b2aa"/><meta name="theme-color" media="(prefers-color-scheme: dark)" content="#1a8a7a"/><meta name="description" content="TM Case Booking System - Professional medical case management"/><meta name="mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/><meta name="apple-mobile-web-app-title" content="TM Cases"/><meta name="format-detection" content="telephone=no"/><meta name="msapplication-TileColor" content="#20b2aa"/><meta name="msapplication-tap-highlight" content="no"/><meta name="cache-version" content="1.0.24"/><link rel="icon" type="image/png" sizes="32x32" href="/logo192.png"/><link rel="icon" type="image/png" sizes="16x16" href="/logo192.png"/><link rel="manifest" href="/manifest.json"/><link rel="apple-touch-icon" href="/logo192.png"/><title>TM Case Booking System</title><meta name="app-version" content="1.4.0-1767704300407"><script defer="defer" src="/static/js/main.065c3953.js"></script><link href="/static/css/main.ecb4f944.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"><div id="app-loading-screen" style="position:fixed;top:0;left:0;right:0;bottom:0;width:100vw;height:100vh;background:linear-gradient(135deg,#20b2aa 0,#1a8a7a 100%);display:flex;justify-content:center;align-items:center;flex-direction:column;z-index:999999;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif"><div style="background:#fff;padding:2rem 3rem;border-radius:16px;box-shadow:0 8px 32px rgba(0,0,0,.2);text-align:center;max-width:400px"><div style="width:60px;height:60px;border:4px solid #20b2aa;border-top-color:transparent;border-radius:50%;margin:0 auto 1.5rem;animation:spin 1s linear infinite"></div><h2 style="margin:0 0 .5rem;color:#333;font-size:1.5rem">Loading TM Cases</h2><p style="margin:0;color:#666;font-size:.9rem">Please wait while we load the application...</p><p style="margin:1rem 0 0;color:#999;font-size:.75rem" id="loading-timer">0s</p></div></div><style>@keyframes spin{to{transform:rotate(360deg)}}</style><script>let loadStartTime=Date.now();setInterval(()=>{let e=Math.floor((Date.now()-loadStartTime)/1e3),t=document.getElementById("loading-timer");t&&(t.textContent=e+"s",e>10&&(t.innerHTML=e+'s - <strong style="color: #e74c3c;">Taking too long? Try clearing cache (Ctrl+Shift+Delete)</strong>'))},1e3);const observer=new MutationObserver(e=>{const t=document.getElementById("app-loading-screen"),o=document.getElementById("root");o&&o.children.length>1&&(t&&t.remove(),observer.disconnect())});observer.observe(document.getElementById("root"),{childList:!0,subtree:!0}),setTimeout(()=>{const e=document.getElementById("app-loading-screen");e&&(e.remove(),observer.disconnect())},15e3)</script></div><script>if("serviceWorker"in navigator){let e=!1;window.addEventListener("load",()=>{if(e)return;e=!0;const t=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),a=/iPad|iPhone|iPod/.test(navigator.userAgent);navigator.serviceWorker.register("/sw.js?v=1.4.81").then(e=>{t||a||setInterval(()=>{e.update()},3e5),e.addEventListener("updatefound",()=>{const t=e.installing;t&&t.addEventListener("statechange",()=>{"installed"===t.state&&navigator.serviceWorker.controller})})}).catch(t=>{e=!1}),navigator.serviceWorker.addEventListener("message",e=>{e.data&&"CACHE_RESET"===e.data.type&&"hidden"===document.visibilityState&&(t||a||setTimeout(()=>window.location.reload(),1e3))})})}</script></body></html>