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>