Spaces:
Running
Running
File size: 4,849 Bytes
a20e8b2 e0dc89f a20e8b2 d8ca394 e0dc89f d8ca394 a20e8b2 05f1f2b 4649e4d 05f1f2b e0dc89f 05f1f2b 4649e4d 58e954f d198c9d 72447e2 e8fdfd6 2a86483 73a57cd 4bb53f1 a20e8b2 ba0c442 e0dc89f ba0c442 e0dc89f ba0c442 e0dc89f ba0c442 a20e8b2 79c5914 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/png" href="/mathpulse_final_logo.png" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="MathPulse AI — AI-powered math tutoring platform for Filipino senior high school STEM students. Personalized learning paths, interactive lessons, AI chat tutor, and teacher analytics powered by DeepSeek." />
<meta name="theme-color" content="#9956DE" />
<meta name="robots" content="index, follow" />
<meta property="og:title" content="MathPulse AI" />
<meta property="og:description" content="AI-powered math tutoring for Filipino SHS STEM students with adaptive learning paths and teacher analytics." />
<meta property="og:type" content="website" />
<meta property="og:image" content="/mathpulse_final_logo.png" />
<meta name="twitter:card" content="summary_large_image" />
<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=Nunito:wght@300;400;500;600;700;800;900&display=swap" rel="stylesheet" />
<title>MathPulse AI</title>
<style>
/* Pre-JS static loader — visible from first paint before any script runs */
*,*::before,*::after{box-sizing:border-box}
html,body{margin:0;min-height:100%}
body{min-height:100vh;font-family:'Nunito',ui-sans-serif,system-ui,sans-serif;background:#f8faff;color:#0a1628}
@keyframes pp-spin{to{transform:rotate(360deg)}}
#pp-static-loader{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:1rem;background:#f7f9fc}
#pp-static-loader .pp-card{width:min(100%,24rem);padding:2rem;border-radius:2rem;border:1px solid #dde3eb;background:#fff;box-shadow:0 24px 40px rgba(56,189,248,.12);display:flex;flex-direction:column;align-items:center;gap:1.5rem}
#pp-static-loader .pp-avatar-shell{width:8rem;height:8rem;border-radius:1.5rem;background:linear-gradient(135deg,#e0f2fe,#e0e7ff);box-shadow:0 12px 24px rgba(15,23,42,.12);display:flex;align-items:center;justify-content:center}
#pp-static-loader .pp-avatar-shell img{width:5.5rem;height:5.5rem;object-fit:contain;filter:drop-shadow(0 8px 12px rgba(15,23,42,.2))}
#pp-static-loader .pp-copy{text-align:center}
#pp-static-loader .pp-title{margin:0;font-size:1.25rem;font-weight:700;color:#0a1628}
#pp-static-loader .pp-row{margin-top:.5rem;display:flex;align-items:center;justify-content:center;gap:.5rem}
#pp-static-loader .pp-spinner{width:1rem;height:1rem;border-radius:999px;border:2px solid #0284c7;border-top-color:transparent;animation:pp-spin 1.5s linear infinite}
#pp-static-loader .pp-msg{margin:0;font-size:.875rem;font-weight:600;color:#64748b}
</style>
<script type="module" crossorigin src="/assets/index-BOwCDUuj.js"></script>
<link rel="modulepreload" crossorigin href="/assets/vendor-react-B4AQeu28.js">
<link rel="modulepreload" crossorigin href="/assets/vendor-firebase-core-D7GXCeNu.js">
<link rel="modulepreload" crossorigin href="/assets/vendor-firebase-firestore-CNv3xXal.js">
<link rel="modulepreload" crossorigin href="/assets/vendor-firebase-auth-T_wvTOvf.js">
<link rel="modulepreload" crossorigin href="/assets/vendor-firebase-storage-Bi7H_66d.js">
<link rel="modulepreload" crossorigin href="/assets/vendor-firebase-analytics-rHarj5hR.js">
<link rel="modulepreload" crossorigin href="/assets/vendor-radix-C5nwdvGr.js">
<link rel="modulepreload" crossorigin href="/assets/vendor-charts-CAmziV1y.js">
<link rel="modulepreload" crossorigin href="/assets/vendor-markdown-yqZQ_iQm.js">
<link rel="stylesheet" crossorigin href="/assets/vendor-markdown-CfVKi3_s.css">
<link rel="stylesheet" crossorigin href="/assets/index-Z9-hiUOE.css">
</head>
<body>
<div id="root">
<!-- Static pre-JS card loader: visible from first HTML paint, replaced by React on mount -->
<div id="pp-static-loader" role="status" aria-live="polite" aria-busy="true" aria-label="Loading">
<div class="pp-card">
<div class="pp-avatar-shell">
<img src="/mathpulse_final_logo.png" alt="" />
</div>
<div class="pp-copy">
<h2 class="pp-title">MathPulse AI</h2>
<div class="pp-row">
<div class="pp-spinner"></div>
<p class="pp-msg">Loading...</p>
</div>
</div>
</div>
</div>
</div>
<div id="modal-root"></div>
</body>
</html>
|