77 lines
3.5 KiB
HTML
77 lines
3.5 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<link rel="icon" type="image/jpeg" href="/nextgen-logo.jpeg" />
|
|
<link rel="apple-touch-icon" href="/nextgen-logo.jpeg" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<link rel="manifest" href="/manifest.webmanifest" />
|
|
<meta name="theme-color" content="#0047AB" />
|
|
<meta name="apple-mobile-web-app-title" content="NextGen Learning" />
|
|
<meta name="application-name" content="NextGen Learning" />
|
|
<meta name="description" content="NextGen Learning - School Management System with Learning Management (LMS) and Student Management (SMS) modules" />
|
|
<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@400;500;600;700;800&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap" rel="stylesheet" />
|
|
<title>NextGen Learning - School Management System</title>
|
|
<style>
|
|
/* Initial splash shown before React mounts */
|
|
html, body { margin: 0; padding: 0; height: 100%; background: #ffffff; font-family: 'IBM Plex Sans', sans-serif; }
|
|
#ng-splash {
|
|
position: fixed; inset: 0;
|
|
display: flex; flex-direction: column; align-items: center; justify-content: center;
|
|
background: linear-gradient(135deg, #0047AB 0%, #002147 100%);
|
|
z-index: 9999;
|
|
}
|
|
#ng-splash .ng-logo {
|
|
width: 160px; height: 160px;
|
|
background: #ffffff;
|
|
border-radius: 24px;
|
|
display: flex; align-items: center; justify-content: center;
|
|
box-shadow: 0 10px 40px rgba(0,0,0,0.25);
|
|
animation: ng-pulse 1.6s ease-in-out infinite;
|
|
}
|
|
#ng-splash .ng-logo img { width: 130px; height: 130px; object-fit: contain; }
|
|
#ng-splash .ng-title {
|
|
color: #ffffff; margin-top: 28px; font-family: 'Inter', sans-serif;
|
|
font-weight: 800; font-size: 28px; letter-spacing: 0.5px;
|
|
}
|
|
#ng-splash .ng-sub {
|
|
color: #FFA500; margin-top: 6px; font-family: 'IBM Plex Sans', sans-serif;
|
|
font-weight: 500; font-size: 14px; letter-spacing: 3px; text-transform: uppercase;
|
|
}
|
|
#ng-splash .ng-spinner {
|
|
margin-top: 36px; width: 32px; height: 32px;
|
|
border: 3px solid rgba(255,255,255,0.2); border-top-color: #FFA500;
|
|
border-radius: 50%; animation: ng-spin 0.9s linear infinite;
|
|
}
|
|
@keyframes ng-pulse {
|
|
0%, 100% { transform: scale(1); box-shadow: 0 10px 40px rgba(0,0,0,0.25); }
|
|
50% { transform: scale(1.05); box-shadow: 0 14px 50px rgba(255,165,0,0.4); }
|
|
}
|
|
@keyframes ng-spin { to { transform: rotate(360deg); } }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div id="ng-splash">
|
|
<div class="ng-logo">
|
|
<img src="/nextgen-logo.jpeg" alt="NextGen Learning" />
|
|
</div>
|
|
<div class="ng-title">NextGen Learning</div>
|
|
<div class="ng-sub">School Management</div>
|
|
<div class="ng-spinner"></div>
|
|
</div>
|
|
<div id="root"></div>
|
|
<script type="module" src="/src/main.tsx"></script>
|
|
<script>
|
|
// Remove splash once React mounts
|
|
window.addEventListener('DOMContentLoaded', function() {
|
|
setTimeout(function() {
|
|
var s = document.getElementById('ng-splash');
|
|
if (s) { s.style.transition = 'opacity 0.4s'; s.style.opacity = '0'; setTimeout(function(){ s.remove(); }, 450); }
|
|
}, 600);
|
|
});
|
|
</script>
|
|
</body>
|
|
</html>
|