<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
    <meta
      name="description"
      content="ExamPack — one exam is one pack. Read it, then revise what matters next."
    />
    <meta name="application-name" content="ExamPack" />
    <meta name="apple-mobile-web-app-title" content="ExamPack" />
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="mobile-web-app-capable" content="yes" />
    <meta property="og:site_name" content="ExamPack" />
    <meta property="og:type" content="website" />
    <meta property="og:title" content="ExamPack" />
    <meta
      property="og:description"
      content="One exam is one pack. Read it, then revise what matters next."
    />
    <meta name="twitter:card" content="summary" />
    <meta name="twitter:title" content="ExamPack" />
    <meta name="color-scheme" content="light dark" />
    <meta name="theme-color" content="#FFF8F0" />
    <link rel="icon" href="/brand/learnergraph-bulb.svg" type="image/svg+xml" />
    <link rel="manifest" href="/manifest.webmanifest" />
    <title>ExamPack</title>
    <script>
      (() => {
        try {
          const key = "learnergraph.theme.v1";
          const raw = localStorage.getItem(key);
          const dark = raw === "dark" || raw === "midnight" || raw === "x-dark" || raw === "cursor";
          const theme = raw === "system" ? "system" : dark ? "dark" : "light";
          document.documentElement.dataset.lgTheme = theme;
          const meta = document.querySelector('meta[name="theme-color"]');
          if (meta) {
            const night = theme === "dark" || (theme === "system" && matchMedia("(prefers-color-scheme: dark)").matches);
            meta.setAttribute("content", night ? "#0b1220" : "#FFF8F0");
          }
        } catch (_) {}
      })();
    </script>
    <!-- Non-blocking font load — paint the app with system fonts first. -->
    <link rel="preconnect" href="https://fonts.googleapis.com" />
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
    <link
      rel="stylesheet"
      href="https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&family=Noto+Sans+TC:wght@400;500;600;700;800&family=Plus+Jakarta+Sans:ital,wght@0,400;0,500;0,600;0,700;0,800;1,500&display=swap"
      media="print"
      onload="this.media='all'"
    />
    <noscript>
      <link
        rel="stylesheet"
        href="https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&family=Noto+Sans+TC:wght@400;500;600;700;800&family=Plus+Jakarta+Sans:ital,wght@0,400;0,500;0,600;0,700;0,800;1,500&display=swap"
      />
    </noscript>
    <style>
      html,
      body {
        margin: 0;
        min-height: 100%;
        background: #FFF8F0;
        color: #2A241F;
        font-family:
          -apple-system, BlinkMacSystemFont, "SF Pro Text", "Helvetica Neue",
          "Noto Sans TC", sans-serif;
      }
      html[data-lg-theme="dark"],
      html[data-lg-theme="dark"] body {
        background: #0b1220;
        color: #e8eefc;
      }
      @media (prefers-color-scheme: dark) {
        html[data-lg-theme="system"],
        html[data-lg-theme="system"] body {
          background: #0b1220;
          color: #e8eefc;
        }
      }
      #root {
        min-height: 100dvh;
      }
    </style>
    <script type="module" crossorigin src="/assets/index-Cdoxsccc.js"></script>
    <link rel="stylesheet" crossorigin href="/assets/index-AdSosZl0.css">
  </head>
  <body>
    <div id="root"></div>
    <!-- Cloudflare Web Analytics -->
    <script
      defer
      src="https://static.cloudflareinsights.com/beacon.min.js"
      data-cf-beacon='{"token": "39171cd2ca174a36ab73743a0f9e4663"}'
    ></script>
    <!-- End Cloudflare Web Analytics -->
  </body>
</html>
