@markforster/heroquest-card-creator 0.5.5 → 0.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/README.md +5 -6
  2. package/README.npm.md +5 -6
  3. package/bin/download-miniserve.js +197 -0
  4. package/out/404/index.html +2 -2
  5. package/out/404.html +2 -2
  6. package/out/_next/static/chunks/11-4a01ce75b3953a27.js +1 -0
  7. package/out/_next/static/chunks/27-0d225eb4341b3d85.js +1 -0
  8. package/out/_next/static/chunks/358-0ef6606063eec5f1.js +1 -0
  9. package/out/_next/static/chunks/444-d732bb46f1362e11.js +6 -0
  10. package/out/_next/static/chunks/app/layout-aece39f950404ab2.js +1 -0
  11. package/out/_next/static/chunks/{792.1227b94f86940218.js → app/page-569cc63488f6c643.js} +1 -1
  12. package/out/_next/static/chunks/webpack-8dfc90ea73e2607b.js +1 -0
  13. package/out/_next/static/css/c6f58e940466cbf8.css +1 -0
  14. package/out/_next/static/css/ef2f1bbdb37e3362.css +1 -0
  15. package/out/_next/static/media/avatar.1ff88d2e.jpeg +0 -0
  16. package/out/_next/static/media/hero-back-border-and-text.59765c87.png +0 -0
  17. package/out/_next/static/media/large-window-frame.752311e6.png +0 -0
  18. package/out/_next/static/media/small-large-artwork-border-alpha-mask.410ecda3.png +0 -0
  19. package/out/_next/static/media/small-large-artwork-border-blend-texture.002a2faa.png +0 -0
  20. package/out/_next/static/media/small-window-frame.294856f5.png +0 -0
  21. package/out/_next/static/media/window-parchment.4e3e14fd.png +0 -0
  22. package/out/index.html +2 -2
  23. package/out/index.txt +11 -9
  24. package/out/sitemap.xml +1 -1
  25. package/package.json +18 -3
  26. package/out/_next/static/chunks/249-5c74a93fb7af7f6c.js +0 -1
  27. package/out/_next/static/chunks/275-f9dcc3143453fdcd.js +0 -1
  28. package/out/_next/static/chunks/358-960ba8f02b2494a3.js +0 -1
  29. package/out/_next/static/chunks/app/layout-f836dac406328011.js +0 -1
  30. package/out/_next/static/chunks/app/page-db4487a6c1142fcc.js +0 -1
  31. package/out/_next/static/chunks/webpack-131d74db4cdb47d6.js +0 -1
  32. package/out/_next/static/css/2dfa822ec8c08542.css +0 -1
  33. package/out/_next/static/css/765f83971d263ca1.css +0 -1
  34. package/out/_next/static/media/large-window.74b2288d.png +0 -0
  35. package/out/_next/static/media/small-large-artwork-border-alpha-mask.8d3a71ad.png +0 -0
  36. package/out/_next/static/media/small-large-artwork-border-blend-texture.dcd30133.png +0 -0
  37. package/out/_next/static/media/small-window.9557abcd.png +0 -0
  38. /package/out/_next/static/{P_kMzAnfZ0gmNEgFjpc2f → S32rvNtiF_jUmVPh71Cb3}/_buildManifest.js +0 -0
  39. /package/out/_next/static/{P_kMzAnfZ0gmNEgFjpc2f → S32rvNtiF_jUmVPh71Cb3}/_ssgManifest.js +0 -0
package/README.md CHANGED
@@ -6,13 +6,12 @@ Create HeroQuest‑style cards (heroes, monsters, treasure, backs, and more) in
6
6
 
7
7
  Layouts, typography, and proportions are tuned to match the classic cards, so you can focus on ideas instead of fighting fonts and spacing. Pick a template, drop in artwork, tweak framing, write rules text, and export print‑ready PNGs. Everything runs locally in your browser, and you can export a single `.hqcc` backup to move or restore your library.
8
8
 
9
- Prefer a hosted version? You can also run the app from itch.io:
9
+ **Itch.io**
10
10
 
11
- <a href="https://mark-forster.itch.io/heroquest-card-creator" target="_blank" rel="noopener noreferrer">https://mark-forster.itch.io/heroquest-card-creator</a>
12
-
13
- Community and updates:
14
-
15
- <a href="https://mark-forster.itch.io/heroquest-card-creator/community" target="_blank" rel="noopener noreferrer">https://mark-forster.itch.io/heroquest-card-creator/community</a>
11
+ - Play in your browser: [https://mark-forster.itch.io/heroquest-card-creator](https://mark-forster.itch.io/heroquest-card-creator)
12
+ - Download: [Download](https://mark-forster.itch.io/heroquest-card-creator/purchase)
13
+ - Rate the app: [Rate](https://mark-forster.itch.io/heroquest-card-creator/rate?source=npm)
14
+ - Community and updates: [https://mark-forster.itch.io/heroquest-card-creator/community](https://mark-forster.itch.io/heroquest-card-creator/community)
16
15
 
17
16
  ## Highlights
18
17
 
package/README.npm.md CHANGED
@@ -6,13 +6,12 @@ Create HeroQuest‑style cards (heroes, monsters, treasure, backs, and more) in
6
6
 
7
7
  Layouts, typography, and proportions are tuned to match the classic cards, so you can focus on ideas instead of fighting fonts and spacing. Pick a template, drop in artwork, tweak framing, write rules text, and export print‑ready PNGs. Everything runs locally in your browser, and you can export a single `.hqcc` backup to move or restore your library.
8
8
 
9
- Prefer a hosted version? You can also run the app from itch.io:
9
+ **Itch.io**
10
10
 
11
- <a href="https://mark-forster.itch.io/heroquest-card-creator" target="_blank" rel="noopener noreferrer">https://mark-forster.itch.io/heroquest-card-creator</a>
12
-
13
- Community and updates:
14
-
15
- <a href="https://mark-forster.itch.io/heroquest-card-creator/community" target="_blank" rel="noopener noreferrer">https://mark-forster.itch.io/heroquest-card-creator/community</a>
11
+ - Play in your browser: [https://mark-forster.itch.io/heroquest-card-creator](https://mark-forster.itch.io/heroquest-card-creator)
12
+ - Download: [Download](https://mark-forster.itch.io/heroquest-card-creator/purchase)
13
+ - Rate the app: [Rate](https://mark-forster.itch.io/heroquest-card-creator/rate?source=npm)
14
+ - Community and updates: [https://mark-forster.itch.io/heroquest-card-creator/community](https://mark-forster.itch.io/heroquest-card-creator/community)
16
15
 
17
16
  ## Highlights
18
17
 
@@ -0,0 +1,197 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+
4
+ const fs = require("fs");
5
+ const path = require("path");
6
+ const https = require("https");
7
+
8
+ const rootDir = path.join(__dirname, "..");
9
+ const artefactsDir = path.join(rootDir, "artefacts");
10
+ const outputDir = path.join(artefactsDir, "miniserve");
11
+ const cacheFile = path.join(outputDir, "manifest.json");
12
+ const repoApi = "https://api.github.com/repos/svenstaro/miniserve";
13
+ const fallbackTag = "v0.33.0";
14
+
15
+ const targetMatchers = [
16
+ "aarch64-apple-darwin",
17
+ "x86_64-apple-darwin",
18
+ "x86_64-pc-windows-msvc",
19
+ "windows-msvc",
20
+ "x86_64-unknown-linux-gnu",
21
+ ];
22
+
23
+ const excludedSuffixes = [".sha256", ".sig", ".tar.gz", ".zip"];
24
+
25
+ function fetchJson(url) {
26
+ return new Promise((resolve, reject) => {
27
+ const headers = {
28
+ "User-Agent": "hqcc-miniserve-downloader",
29
+ Accept: "application/vnd.github+json",
30
+ };
31
+ if (process.env.GITHUB_TOKEN) {
32
+ headers.Authorization = `Bearer ${process.env.GITHUB_TOKEN}`;
33
+ }
34
+
35
+ https
36
+ .get(url, { headers }, (res) => {
37
+ let data = "";
38
+ res.setEncoding("utf8");
39
+ res.on("data", (chunk) => (data += chunk));
40
+ res.on("end", () => {
41
+ if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {
42
+ try {
43
+ resolve(JSON.parse(data));
44
+ } catch (err) {
45
+ reject(err);
46
+ }
47
+ return;
48
+ }
49
+ reject(new Error(`Request failed: ${res.statusCode} ${res.statusMessage}`));
50
+ });
51
+ })
52
+ .on("error", reject);
53
+ });
54
+ }
55
+
56
+ function downloadFile(url, destination) {
57
+ return new Promise((resolve, reject) => {
58
+ const headers = {
59
+ "User-Agent": "hqcc-miniserve-downloader",
60
+ Accept: "application/octet-stream",
61
+ };
62
+ if (process.env.GITHUB_TOKEN) {
63
+ headers.Authorization = `Bearer ${process.env.GITHUB_TOKEN}`;
64
+ }
65
+
66
+ https
67
+ .get(url, { headers }, (res) => {
68
+ if (res.statusCode && res.statusCode >= 300 && res.statusCode < 400 && res.headers.location) {
69
+ downloadFile(res.headers.location, destination).then(resolve).catch(reject);
70
+ return;
71
+ }
72
+
73
+ if (!res.statusCode || res.statusCode < 200 || res.statusCode >= 300) {
74
+ reject(new Error(`Download failed: ${res.statusCode} ${res.statusMessage}`));
75
+ return;
76
+ }
77
+
78
+ const file = fs.createWriteStream(destination);
79
+ res.pipe(file);
80
+ file.on("finish", () => file.close(resolve));
81
+ file.on("error", reject);
82
+ })
83
+ .on("error", reject);
84
+ });
85
+ }
86
+
87
+ function isExcluded(name) {
88
+ return excludedSuffixes.some((suffix) => name.endsWith(suffix));
89
+ }
90
+
91
+ function matchesTarget(name) {
92
+ return targetMatchers.some((matcher) => name.includes(matcher));
93
+ }
94
+
95
+ async function resolveRelease() {
96
+ if (process.env.MINISERVE_VERSION) {
97
+ const tag = process.env.MINISERVE_VERSION.startsWith("v")
98
+ ? process.env.MINISERVE_VERSION
99
+ : `v${process.env.MINISERVE_VERSION}`;
100
+ return fetchJson(`${repoApi}/releases/tags/${tag}`).catch((err) => {
101
+ console.warn(`[download-miniserve] Failed to fetch ${tag}: ${err.message}`);
102
+ return null;
103
+ });
104
+ }
105
+
106
+ return fetchJson(`${repoApi}/releases/latest`).catch((err) => {
107
+ console.warn(`[download-miniserve] Failed to fetch latest release: ${err.message}`);
108
+ return null;
109
+ });
110
+ }
111
+
112
+ function loadCache() {
113
+ if (!fs.existsSync(cacheFile)) {
114
+ return null;
115
+ }
116
+ try {
117
+ const raw = fs.readFileSync(cacheFile, "utf8");
118
+ return JSON.parse(raw);
119
+ } catch (err) {
120
+ return null;
121
+ }
122
+ }
123
+
124
+ function saveCache(tag, assets) {
125
+ const payload = {
126
+ tag,
127
+ assets,
128
+ updatedAt: new Date().toISOString(),
129
+ };
130
+ fs.writeFileSync(cacheFile, JSON.stringify(payload, null, 2), "utf8");
131
+ }
132
+
133
+ function allAssetsPresent(assets) {
134
+ return assets.every((name) => fs.existsSync(path.join(outputDir, name)));
135
+ }
136
+
137
+ async function main() {
138
+ if (!fs.existsSync(artefactsDir)) {
139
+ fs.mkdirSync(artefactsDir, { recursive: true });
140
+ }
141
+ if (!fs.existsSync(outputDir)) {
142
+ fs.mkdirSync(outputDir, { recursive: true });
143
+ }
144
+
145
+ let release = await resolveRelease();
146
+ if (!release) {
147
+ console.warn(`[download-miniserve] Falling back to ${fallbackTag}`);
148
+ release = await fetchJson(`${repoApi}/releases/tags/${fallbackTag}`);
149
+ }
150
+
151
+ const tagName = release.tag_name || fallbackTag;
152
+
153
+ const assets = Array.isArray(release.assets) ? release.assets : [];
154
+ const candidates = assets.filter((asset) => {
155
+ const name = asset.name || "";
156
+ return name && matchesTarget(name) && !isExcluded(name);
157
+ });
158
+
159
+ if (candidates.length === 0) {
160
+ throw new Error("No matching miniserve assets found.");
161
+ }
162
+
163
+ const prefixedAssets = candidates.map((asset) => `miniserve-hqcc-${asset.name}`);
164
+ const cache = loadCache();
165
+ if (cache && cache.tag === tagName && allAssetsPresent(prefixedAssets)) {
166
+ console.log(`[download-miniserve] ${tagName} already downloaded. Skipping.`);
167
+ return;
168
+ }
169
+
170
+ for (const asset of candidates) {
171
+ const name = asset.name;
172
+ const url = asset.browser_download_url;
173
+ if (!name || !url) {
174
+ continue;
175
+ }
176
+ const prefixedName = `miniserve-hqcc-${name}`;
177
+ const destination = path.join(outputDir, prefixedName);
178
+ console.log(`[download-miniserve] Downloading ${name} -> ${prefixedName}`);
179
+ await downloadFile(url, destination);
180
+ if (!prefixedName.endsWith(".exe")) {
181
+ try {
182
+ fs.chmodSync(destination, 0o755);
183
+ } catch (err) {
184
+ console.warn(`[download-miniserve] Failed to chmod ${prefixedName}: ${err.message}`);
185
+ }
186
+ }
187
+ }
188
+
189
+ saveCache(tagName, prefixedAssets);
190
+
191
+ console.log("[download-miniserve] Done.");
192
+ }
193
+
194
+ main().catch((err) => {
195
+ console.error(`[download-miniserve] ${err.message}`);
196
+ process.exit(1);
197
+ });
@@ -1,4 +1,4 @@
1
- <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="./_next/static/css/d071dca61fbb01bf.css" data-precedence="next"/><link rel="stylesheet" href="./_next/static/css/1874f9a174b17e3f.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="./_next/static/chunks/webpack-131d74db4cdb47d6.js"/><script src="./_next/static/chunks/fd9d1056-898d1c4f9326004a.js" async=""></script><script src="./_next/static/chunks/117-b8bb75121b26b6b3.js" async=""></script><script src="./_next/static/chunks/main-app-0b6a7f5b2fb24b40.js" async=""></script><script src="./_next/static/chunks/275-f9dcc3143453fdcd.js" async=""></script><script src="./_next/static/chunks/358-960ba8f02b2494a3.js" async=""></script><script src="./_next/static/chunks/app/layout-f836dac406328011.js" async=""></script><link rel="preload" href="https://www.googletagmanager.com/gtag/js?id=G-KSVRMQ5CPG" as="script"/><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><meta name="theme-color" content="#375f8a"/><meta name="color-scheme" content="light dark"/><title>HeroQuest Card Creator</title><meta name="description" content="A browser-based tool for creating custom HeroQuest-style cards."/><meta name="author" content="HeroQuest Card Creator"/><meta name="keywords" content="HeroQuest,card creator,card maker,tabletop,board game,print and play"/><link rel="canonical" href="https://public.markforster.info/Heroquest/Tools/card-maker/"/><meta property="og:title" content="HeroQuest Card Creator"/><meta property="og:description" content="Create and export custom HeroQuest-style cards directly in your browser."/><meta property="og:url" content="https://public.markforster.info/Heroquest/Tools/card-maker/"/><meta property="og:site_name" content="HeroQuest Card Creator"/><meta property="og:locale" content="en_GB"/><meta property="og:image" content="https://public.markforster.info/Heroquest/Tools/card-maker/images/IMG_2912.jpg"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="HeroQuest Card Creator"/><meta name="twitter:description" content="Create and export custom HeroQuest-style cards directly in your browser."/><meta name="twitter:image" content="https://public.markforster.info/Heroquest/Tools/card-maker/images/IMG_2912.jpg"/><link rel="shortcut icon" href="./favicon.ico"/><link rel="icon" href="./favicon.ico"/><link rel="apple-touch-icon" href="./favicon.ico"/><script src="./_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><script>
1
+ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="./_next/static/css/d071dca61fbb01bf.css" data-precedence="next"/><link rel="stylesheet" href="./_next/static/css/1874f9a174b17e3f.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="./_next/static/chunks/webpack-8dfc90ea73e2607b.js"/><script src="./_next/static/chunks/fd9d1056-898d1c4f9326004a.js" async=""></script><script src="./_next/static/chunks/117-b8bb75121b26b6b3.js" async=""></script><script src="./_next/static/chunks/main-app-0b6a7f5b2fb24b40.js" async=""></script><script src="./_next/static/chunks/444-d732bb46f1362e11.js" async=""></script><script src="./_next/static/chunks/11-4a01ce75b3953a27.js" async=""></script><script src="./_next/static/chunks/358-0ef6606063eec5f1.js" async=""></script><script src="./_next/static/chunks/app/layout-aece39f950404ab2.js" async=""></script><link rel="preload" href="https://www.googletagmanager.com/gtag/js?id=G-KSVRMQ5CPG" as="script"/><link rel="preload" href="https://static.itch.io/api.js" as="script"/><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><meta name="theme-color" content="#375f8a"/><meta name="color-scheme" content="light dark"/><title>HeroQuest Card Creator</title><meta name="description" content="A browser-based tool for creating custom HeroQuest-style cards."/><meta name="author" content="HeroQuest Card Creator"/><meta name="keywords" content="HeroQuest,card creator,card maker,tabletop,board game,print and play"/><link rel="canonical" href="https://public.markforster.info/Heroquest/Tools/card-maker/"/><meta property="og:title" content="HeroQuest Card Creator"/><meta property="og:description" content="Create and export custom HeroQuest-style cards directly in your browser."/><meta property="og:url" content="https://public.markforster.info/Heroquest/Tools/card-maker/"/><meta property="og:site_name" content="HeroQuest Card Creator"/><meta property="og:locale" content="en_GB"/><meta property="og:image" content="https://public.markforster.info/Heroquest/Tools/card-maker/images/IMG_2912.jpg"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="HeroQuest Card Creator"/><meta name="twitter:description" content="Create and export custom HeroQuest-style cards directly in your browser."/><meta name="twitter:image" content="https://public.markforster.info/Heroquest/Tools/card-maker/images/IMG_2912.jpg"/><link rel="shortcut icon" href="./favicon.ico"/><link rel="icon" href="./favicon.ico"/><link rel="apple-touch-icon" href="./favicon.ico"/><script src="./_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><script>
2
2
  (function () {
3
3
  try {
4
4
  var stored = null;
@@ -88,4 +88,4 @@
88
88
  font-weight: 400;
89
89
  font-display: swap;
90
90
  }
91
- </style><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><script src="./_next/static/chunks/webpack-131d74db4cdb47d6.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"./_next/static/css/d071dca61fbb01bf.css\",\"style\"]\n2:HL[\"./_next/static/css/1874f9a174b17e3f.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"3:I[2846,[],\"\"]\n5:I[4707,[],\"\"]\n6:I[6423,[],\"\"]\n7:I[4888,[\"275\",\"static/chunks/275-f9dcc3143453fdcd.js\",\"358\",\"static/chunks/358-960ba8f02b2494a3.js\",\"185\",\"static/chunks/app/layout-f836dac406328011.js\"],\"GoogleAnalytics\"]\n9:I[6318,[\"275\",\"static/chunks/275-f9dcc3143453fdcd.js\",\"358\",\"static/chunks/358-960ba8f02b2494a3.js\",\"185\",\"static/chunks/app/layout-f836dac406328011.js\"],\"AnalyticsProvider\"]\na:I[2672,[\"275\",\"static/chunks/275-f9dcc3143453fdcd.js\",\"358\",\"static/chunks/358-960ba8f02b2494a3.js\",\"185\",\"static/chunks/app/layout-f836dac406328011.js\"],\"default\"]\n10:I[1060,[],\"\"]\n8:T445,\n(function () {\n try {\n if (location.protocol !== \"file:\") return;\n if (!navigator.userAgent || navigator.userAgent.indexOf(\"Firefox/\") === -1) return;\n if (window.__HQCC_URL_PATCHED__) return;\n window.__HQCC_URL_PATCHED__ = true;\n\n var OriginalURL = URL;\n function PatchedURL(url, base) {\n if (base == null || base === \"null\") {\n base = window.location.href;\n }\n return new OriginalURL(url, base);\n }\n PatchedURL.prototype = OriginalURL.prototype;\n Object.getOwnPropertyNames(OriginalURL).forEach(function (prop) {\n try {\n if (!(prop in PatchedURL)) {\n Object.defineProperty(PatchedURL, prop, Object.getOwnPropertyDescriptor(OriginalURL, prop));\n }\n } catch (_err) {}\n });\n Object.getOwnPropertySymbols(OriginalURL).forEach(function (prop) {\n try {\n if (!(prop in PatchedURL)) {\n Object.defineProperty(PatchedURL, prop, Object.getOwnPropertyDescriptor(OriginalURL, prop));\n }\n } catch (_err) {}\n });\n window.URL = PatchedURL;\n } catch (_err) {}\n})();\n b:{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"}\nc:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\""])</script><script>self.__next_f.push([1,":\"top\",\"lineHeight\":\"49px\"}\nd:{\"display\":\"inline-block\"}\ne:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\n11:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L3\",null,{\"buildId\":\"P_kMzAnfZ0gmNEgFjpc2f\",\"assetPrefix\":\".\",\"urlParts\":[\"\",\"_not-found\",\"\"],\"initialTree\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},[[\"$L4\",[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null],null],null]},[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"/_not-found\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"./_next/static/css/d071dca61fbb01bf.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"./_next/static/css/1874f9a174b17e3f.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"children\":[[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n(function () {\\n try {\\n var stored = null;\\n try {\\n stored = window.localStorage.getItem(\\\"hqcc.theme\\\");\\n } catch (_err) {\\n stored = null;\\n }\\n var systemDark = false;\\n if (window.matchMedia) {\\n systemDark = window.matchMedia(\\\"(prefers-color-scheme: dark)\\\").matches;\\n }\\n var resolved = \\\"dark\\\";\\n if (stored === \\\"light\\\" || stored === \\\"dark\\\") {\\n resolved = stored;\\n } else if (stored === \\\"system\\\") {\\n resolved = systemDark ? \\\"dark\\\" : \\\"light\\\";\\n } else {\\n resolved = \\\"dark\\\";\\n }\\n document.documentElement.dataset.theme = resolved;\\n document.documentElement.style.colorScheme = resolved;\\n } catch (_err) {}\\n})();\\n \"}}],[\"$\",\"$L7\",null,{\"gaId\":\"G-KSVRMQ5CPG\"}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"$8\"}}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n@font-face {\\n font-family: \\\"Carter Sans W01\\\";\\n src: url(\\\"./fonts/Carter Sans W01 Regular.ttf\\\") format(\\\"truetype\\\");\\n font-style: normal;\\n font-weight: 400;\\n font-display: swap;\\n}\\n\\n@font-face {\\n font-family: \\\"Carter Sans W01\\\";\\n src: url(\\\"./fonts/Carter Sans W01 Medium.ttf\\\") format(\\\"truetype\\\");\\n font-style: normal;\\n font-weight: 550;\\n font-display: swap;\\n}\\n\\n@font-face {\\n font-family: \\\"Carter Sans W01\\\";\\n src: url(\\\"./fonts/Carter Sans W01 Bold.ttf\\\") format(\\\"truetype\\\");\\n font-style: normal;\\n font-weight: 700;\\n font-display: swap;\\n}\\n\\n@font-face {\\n font-family: \\\"HeroQuest\\\";\\n src: url(\\\"./fonts/HeroQuest.ttf\\\") format(\\\"truetype\\\");\\n font-style: normal;\\n font-weight: 400;\\n font-display: swap;\\n}\\n \"}}],[\"$\",\"$L9\",null,{\"gaId\":\"G-KSVRMQ5CPG\",\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$b\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$c\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$d\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$e\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]]}]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],\"$Lf\"],\"globalErrorComponent\":\"$10\",\"missingSlots\":\"$W11\"}]\n"])</script><script>self.__next_f.push([1,"f:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"name\":\"theme-color\",\"content\":\"#375f8a\"}],[\"$\",\"meta\",\"2\",{\"name\":\"color-scheme\",\"content\":\"light dark\"}],[\"$\",\"meta\",\"3\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"4\",{\"children\":\"HeroQuest Card Creator\"}],[\"$\",\"meta\",\"5\",{\"name\":\"description\",\"content\":\"A browser-based tool for creating custom HeroQuest-style cards.\"}],[\"$\",\"meta\",\"6\",{\"name\":\"author\",\"content\":\"HeroQuest Card Creator\"}],[\"$\",\"meta\",\"7\",{\"name\":\"keywords\",\"content\":\"HeroQuest,card creator,card maker,tabletop,board game,print and play\"}],[\"$\",\"link\",\"8\",{\"rel\":\"canonical\",\"href\":\"https://public.markforster.info/Heroquest/Tools/card-maker/\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:title\",\"content\":\"HeroQuest Card Creator\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:description\",\"content\":\"Create and export custom HeroQuest-style cards directly in your browser.\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:url\",\"content\":\"https://public.markforster.info/Heroquest/Tools/card-maker/\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:site_name\",\"content\":\"HeroQuest Card Creator\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:locale\",\"content\":\"en_GB\"}],[\"$\",\"meta\",\"14\",{\"property\":\"og:image\",\"content\":\"https://public.markforster.info/Heroquest/Tools/card-maker/images/IMG_2912.jpg\"}],[\"$\",\"meta\",\"15\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"17\",{\"name\":\"twitter:title\",\"content\":\"HeroQuest Card Creator\"}],[\"$\",\"meta\",\"18\",{\"name\":\"twitter:description\",\"content\":\"Create and export custom HeroQuest-style cards directly in your browser.\"}],[\"$\",\"meta\",\"19\",{\"name\":\"twitter:image\",\"content\":\"https://public.markforster.info/Heroquest/Tools/card-maker/images/IMG_2912.jpg\"}],[\"$\",\"link\",\"20\",{\"rel\":\"shortcut icon\",\"href\":\"./favicon.ico\"}],[\"$\",\"link\",\"21\",{\"rel\":\"icon\",\"href\":\"./favicon.ico\"}],[\"$\",\"link\",\"22\",{\"rel\":\"apple-touch-icon\",\"href\":\"./favicon.ico\"}]]\n4:null\n"])</script></body></html>
91
+ </style><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><script src="./_next/static/chunks/webpack-8dfc90ea73e2607b.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"./_next/static/css/d071dca61fbb01bf.css\",\"style\"]\n2:HL[\"./_next/static/css/1874f9a174b17e3f.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"3:I[2846,[],\"\"]\n5:I[4707,[],\"\"]\n6:I[6423,[],\"\"]\n7:I[4888,[\"444\",\"static/chunks/444-d732bb46f1362e11.js\",\"11\",\"static/chunks/11-4a01ce75b3953a27.js\",\"358\",\"static/chunks/358-0ef6606063eec5f1.js\",\"185\",\"static/chunks/app/layout-aece39f950404ab2.js\"],\"GoogleAnalytics\"]\n8:I[8003,[\"444\",\"static/chunks/444-d732bb46f1362e11.js\",\"11\",\"static/chunks/11-4a01ce75b3953a27.js\",\"358\",\"static/chunks/358-0ef6606063eec5f1.js\",\"185\",\"static/chunks/app/layout-aece39f950404ab2.js\"],\"\"]\na:I[6318,[\"444\",\"static/chunks/444-d732bb46f1362e11.js\",\"11\",\"static/chunks/11-4a01ce75b3953a27.js\",\"358\",\"static/chunks/358-0ef6606063eec5f1.js\",\"185\",\"static/chunks/app/layout-aece39f950404ab2.js\"],\"AnalyticsProvider\"]\nb:I[6032,[\"444\",\"static/chunks/444-d732bb46f1362e11.js\",\"11\",\"static/chunks/11-4a01ce75b3953a27.js\",\"358\",\"static/chunks/358-0ef6606063eec5f1.js\",\"185\",\"static/chunks/app/layout-aece39f950404ab2.js\"],\"default\"]\nc:I[2672,[\"444\",\"static/chunks/444-d732bb46f1362e11.js\",\"11\",\"static/chunks/11-4a01ce75b3953a27.js\",\"358\",\"static/chunks/358-0ef6606063eec5f1.js\",\"185\",\"static/chunks/app/layout-aece39f950404ab2.js\"],\"default\"]\n12:I[1060,[],\"\"]\n9:T445,\n(function () {\n try {\n if (location.protocol !== \"file:\") return;\n if (!navigator.userAgent || navigator.userAgent.indexOf(\"Firefox/\") === -1) return;\n if (window.__HQCC_URL_PATCHED__) return;\n window.__HQCC_URL_PATCHED__ = true;\n\n var OriginalURL = URL;\n function PatchedURL(url, base) {\n if (base == null || base === \"null\") {\n base = window.location.href;\n }\n return new OriginalURL(url, base);\n }\n PatchedURL.prototype = OriginalURL.prototype;\n Object.getOwnPropertyNames(OriginalURL).forEach(function (prop) {\n try {\n if (!(prop in PatchedURL)) {\n Object.defineProperty(PatchedURL, prop, Object.getOwnPropertyDescriptor(OriginalURL, prop));\n }\n } catch (_err) {}\n });\n Object.getOwnPropertySymbols(OriginalURL).forEach(function (prop) {\n try {\n if (!(prop in PatchedURL)) {\n Object.defineProper"])</script><script>self.__next_f.push([1,"ty(PatchedURL, prop, Object.getOwnPropertyDescriptor(OriginalURL, prop));\n }\n } catch (_err) {}\n });\n window.URL = PatchedURL;\n } catch (_err) {}\n})();\n d:{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"}\ne:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\nf:{\"display\":\"inline-block\"}\n10:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\n13:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L3\",null,{\"buildId\":\"S32rvNtiF_jUmVPh71Cb3\",\"assetPrefix\":\".\",\"urlParts\":[\"\",\"_not-found\",\"\"],\"initialTree\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},[[\"$L4\",[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null],null],null]},[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"/_not-found\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"./_next/static/css/d071dca61fbb01bf.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"./_next/static/css/1874f9a174b17e3f.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"children\":[[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n(function () {\\n try {\\n var stored = null;\\n try {\\n stored = window.localStorage.getItem(\\\"hqcc.theme\\\");\\n } catch (_err) {\\n stored = null;\\n }\\n var systemDark = false;\\n if (window.matchMedia) {\\n systemDark = window.matchMedia(\\\"(prefers-color-scheme: dark)\\\").matches;\\n }\\n var resolved = \\\"dark\\\";\\n if (stored === \\\"light\\\" || stored === \\\"dark\\\") {\\n resolved = stored;\\n } else if (stored === \\\"system\\\") {\\n resolved = systemDark ? \\\"dark\\\" : \\\"light\\\";\\n } else {\\n resolved = \\\"dark\\\";\\n }\\n document.documentElement.dataset.theme = resolved;\\n document.documentElement.style.colorScheme = resolved;\\n } catch (_err) {}\\n})();\\n \"}}],[\"$\",\"$L7\",null,{\"gaId\":\"G-KSVRMQ5CPG\"}],[\"$\",\"$L8\",null,{\"src\":\"https://static.itch.io/api.js\",\"strategy\":\"afterInteractive\"}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"$9\"}}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n@font-face {\\n font-family: \\\"Carter Sans W01\\\";\\n src: url(\\\"./fonts/Carter Sans W01 Regular.ttf\\\") format(\\\"truetype\\\");\\n font-style: normal;\\n font-weight: 400;\\n font-display: swap;\\n}\\n\\n@font-face {\\n font-family: \\\"Carter Sans W01\\\";\\n src: url(\\\"./fonts/Carter Sans W01 Medium.ttf\\\") format(\\\"truetype\\\");\\n font-style: normal;\\n font-weight: 550;\\n font-display: swap;\\n}\\n\\n@font-face {\\n font-family: \\\"Carter Sans W01\\\";\\n src: url(\\\"./fonts/Carter Sans W01 Bold.ttf\\\") format(\\\"truetype\\\");\\n font-style: normal;\\n font-weight: 700;\\n font-display: swap;\\n}\\n\\n@font-face {\\n font-family: \\\"HeroQuest\\\";\\n src: url(\\\"./fonts/HeroQuest.ttf\\\") format(\\\"truetype\\\");\\n font-style: normal;\\n font-weight: 400;\\n font-display: swap;\\n}\\n \"}}],[\"$\",\"$La\",null,{\"gaId\":\"G-KSVRMQ5CPG\",\"children\":[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$d\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$e\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$f\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$10\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]}]]}]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],\"$L11\"],\"globalErrorComponent\":\"$12\",\"missingSlots\":\"$W13\"}]\n"])</script><script>self.__next_f.push([1,"11:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"name\":\"theme-color\",\"content\":\"#375f8a\"}],[\"$\",\"meta\",\"2\",{\"name\":\"color-scheme\",\"content\":\"light dark\"}],[\"$\",\"meta\",\"3\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"4\",{\"children\":\"HeroQuest Card Creator\"}],[\"$\",\"meta\",\"5\",{\"name\":\"description\",\"content\":\"A browser-based tool for creating custom HeroQuest-style cards.\"}],[\"$\",\"meta\",\"6\",{\"name\":\"author\",\"content\":\"HeroQuest Card Creator\"}],[\"$\",\"meta\",\"7\",{\"name\":\"keywords\",\"content\":\"HeroQuest,card creator,card maker,tabletop,board game,print and play\"}],[\"$\",\"link\",\"8\",{\"rel\":\"canonical\",\"href\":\"https://public.markforster.info/Heroquest/Tools/card-maker/\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:title\",\"content\":\"HeroQuest Card Creator\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:description\",\"content\":\"Create and export custom HeroQuest-style cards directly in your browser.\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:url\",\"content\":\"https://public.markforster.info/Heroquest/Tools/card-maker/\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:site_name\",\"content\":\"HeroQuest Card Creator\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:locale\",\"content\":\"en_GB\"}],[\"$\",\"meta\",\"14\",{\"property\":\"og:image\",\"content\":\"https://public.markforster.info/Heroquest/Tools/card-maker/images/IMG_2912.jpg\"}],[\"$\",\"meta\",\"15\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"17\",{\"name\":\"twitter:title\",\"content\":\"HeroQuest Card Creator\"}],[\"$\",\"meta\",\"18\",{\"name\":\"twitter:description\",\"content\":\"Create and export custom HeroQuest-style cards directly in your browser.\"}],[\"$\",\"meta\",\"19\",{\"name\":\"twitter:image\",\"content\":\"https://public.markforster.info/Heroquest/Tools/card-maker/images/IMG_2912.jpg\"}],[\"$\",\"link\",\"20\",{\"rel\":\"shortcut icon\",\"href\":\"./favicon.ico\"}],[\"$\",\"link\",\"21\",{\"rel\":\"icon\",\"href\":\"./favicon.ico\"}],[\"$\",\"link\",\"22\",{\"rel\":\"apple-touch-icon\",\"href\":\"./favicon.ico\"}]]\n4:null\n"])</script></body></html>
package/out/404.html CHANGED
@@ -1,4 +1,4 @@
1
- <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="./_next/static/css/d071dca61fbb01bf.css" data-precedence="next"/><link rel="stylesheet" href="./_next/static/css/1874f9a174b17e3f.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="./_next/static/chunks/webpack-131d74db4cdb47d6.js"/><script src="./_next/static/chunks/fd9d1056-898d1c4f9326004a.js" async=""></script><script src="./_next/static/chunks/117-b8bb75121b26b6b3.js" async=""></script><script src="./_next/static/chunks/main-app-0b6a7f5b2fb24b40.js" async=""></script><script src="./_next/static/chunks/275-f9dcc3143453fdcd.js" async=""></script><script src="./_next/static/chunks/358-960ba8f02b2494a3.js" async=""></script><script src="./_next/static/chunks/app/layout-f836dac406328011.js" async=""></script><link rel="preload" href="https://www.googletagmanager.com/gtag/js?id=G-KSVRMQ5CPG" as="script"/><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><meta name="theme-color" content="#375f8a"/><meta name="color-scheme" content="light dark"/><title>HeroQuest Card Creator</title><meta name="description" content="A browser-based tool for creating custom HeroQuest-style cards."/><meta name="author" content="HeroQuest Card Creator"/><meta name="keywords" content="HeroQuest,card creator,card maker,tabletop,board game,print and play"/><link rel="canonical" href="https://public.markforster.info/Heroquest/Tools/card-maker/"/><meta property="og:title" content="HeroQuest Card Creator"/><meta property="og:description" content="Create and export custom HeroQuest-style cards directly in your browser."/><meta property="og:url" content="https://public.markforster.info/Heroquest/Tools/card-maker/"/><meta property="og:site_name" content="HeroQuest Card Creator"/><meta property="og:locale" content="en_GB"/><meta property="og:image" content="https://public.markforster.info/Heroquest/Tools/card-maker/images/IMG_2912.jpg"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="HeroQuest Card Creator"/><meta name="twitter:description" content="Create and export custom HeroQuest-style cards directly in your browser."/><meta name="twitter:image" content="https://public.markforster.info/Heroquest/Tools/card-maker/images/IMG_2912.jpg"/><link rel="shortcut icon" href="./favicon.ico"/><link rel="icon" href="./favicon.ico"/><link rel="apple-touch-icon" href="./favicon.ico"/><script src="./_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><script>
1
+ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="./_next/static/css/d071dca61fbb01bf.css" data-precedence="next"/><link rel="stylesheet" href="./_next/static/css/1874f9a174b17e3f.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="./_next/static/chunks/webpack-8dfc90ea73e2607b.js"/><script src="./_next/static/chunks/fd9d1056-898d1c4f9326004a.js" async=""></script><script src="./_next/static/chunks/117-b8bb75121b26b6b3.js" async=""></script><script src="./_next/static/chunks/main-app-0b6a7f5b2fb24b40.js" async=""></script><script src="./_next/static/chunks/444-d732bb46f1362e11.js" async=""></script><script src="./_next/static/chunks/11-4a01ce75b3953a27.js" async=""></script><script src="./_next/static/chunks/358-0ef6606063eec5f1.js" async=""></script><script src="./_next/static/chunks/app/layout-aece39f950404ab2.js" async=""></script><link rel="preload" href="https://www.googletagmanager.com/gtag/js?id=G-KSVRMQ5CPG" as="script"/><link rel="preload" href="https://static.itch.io/api.js" as="script"/><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><meta name="theme-color" content="#375f8a"/><meta name="color-scheme" content="light dark"/><title>HeroQuest Card Creator</title><meta name="description" content="A browser-based tool for creating custom HeroQuest-style cards."/><meta name="author" content="HeroQuest Card Creator"/><meta name="keywords" content="HeroQuest,card creator,card maker,tabletop,board game,print and play"/><link rel="canonical" href="https://public.markforster.info/Heroquest/Tools/card-maker/"/><meta property="og:title" content="HeroQuest Card Creator"/><meta property="og:description" content="Create and export custom HeroQuest-style cards directly in your browser."/><meta property="og:url" content="https://public.markforster.info/Heroquest/Tools/card-maker/"/><meta property="og:site_name" content="HeroQuest Card Creator"/><meta property="og:locale" content="en_GB"/><meta property="og:image" content="https://public.markforster.info/Heroquest/Tools/card-maker/images/IMG_2912.jpg"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="HeroQuest Card Creator"/><meta name="twitter:description" content="Create and export custom HeroQuest-style cards directly in your browser."/><meta name="twitter:image" content="https://public.markforster.info/Heroquest/Tools/card-maker/images/IMG_2912.jpg"/><link rel="shortcut icon" href="./favicon.ico"/><link rel="icon" href="./favicon.ico"/><link rel="apple-touch-icon" href="./favicon.ico"/><script src="./_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><script>
2
2
  (function () {
3
3
  try {
4
4
  var stored = null;
@@ -88,4 +88,4 @@
88
88
  font-weight: 400;
89
89
  font-display: swap;
90
90
  }
91
- </style><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><script src="./_next/static/chunks/webpack-131d74db4cdb47d6.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"./_next/static/css/d071dca61fbb01bf.css\",\"style\"]\n2:HL[\"./_next/static/css/1874f9a174b17e3f.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"3:I[2846,[],\"\"]\n5:I[4707,[],\"\"]\n6:I[6423,[],\"\"]\n7:I[4888,[\"275\",\"static/chunks/275-f9dcc3143453fdcd.js\",\"358\",\"static/chunks/358-960ba8f02b2494a3.js\",\"185\",\"static/chunks/app/layout-f836dac406328011.js\"],\"GoogleAnalytics\"]\n9:I[6318,[\"275\",\"static/chunks/275-f9dcc3143453fdcd.js\",\"358\",\"static/chunks/358-960ba8f02b2494a3.js\",\"185\",\"static/chunks/app/layout-f836dac406328011.js\"],\"AnalyticsProvider\"]\na:I[2672,[\"275\",\"static/chunks/275-f9dcc3143453fdcd.js\",\"358\",\"static/chunks/358-960ba8f02b2494a3.js\",\"185\",\"static/chunks/app/layout-f836dac406328011.js\"],\"default\"]\n10:I[1060,[],\"\"]\n8:T445,\n(function () {\n try {\n if (location.protocol !== \"file:\") return;\n if (!navigator.userAgent || navigator.userAgent.indexOf(\"Firefox/\") === -1) return;\n if (window.__HQCC_URL_PATCHED__) return;\n window.__HQCC_URL_PATCHED__ = true;\n\n var OriginalURL = URL;\n function PatchedURL(url, base) {\n if (base == null || base === \"null\") {\n base = window.location.href;\n }\n return new OriginalURL(url, base);\n }\n PatchedURL.prototype = OriginalURL.prototype;\n Object.getOwnPropertyNames(OriginalURL).forEach(function (prop) {\n try {\n if (!(prop in PatchedURL)) {\n Object.defineProperty(PatchedURL, prop, Object.getOwnPropertyDescriptor(OriginalURL, prop));\n }\n } catch (_err) {}\n });\n Object.getOwnPropertySymbols(OriginalURL).forEach(function (prop) {\n try {\n if (!(prop in PatchedURL)) {\n Object.defineProperty(PatchedURL, prop, Object.getOwnPropertyDescriptor(OriginalURL, prop));\n }\n } catch (_err) {}\n });\n window.URL = PatchedURL;\n } catch (_err) {}\n})();\n b:{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"}\nc:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\""])</script><script>self.__next_f.push([1,":\"top\",\"lineHeight\":\"49px\"}\nd:{\"display\":\"inline-block\"}\ne:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\n11:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L3\",null,{\"buildId\":\"P_kMzAnfZ0gmNEgFjpc2f\",\"assetPrefix\":\".\",\"urlParts\":[\"\",\"_not-found\",\"\"],\"initialTree\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},[[\"$L4\",[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null],null],null]},[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"/_not-found\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"./_next/static/css/d071dca61fbb01bf.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"./_next/static/css/1874f9a174b17e3f.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"children\":[[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n(function () {\\n try {\\n var stored = null;\\n try {\\n stored = window.localStorage.getItem(\\\"hqcc.theme\\\");\\n } catch (_err) {\\n stored = null;\\n }\\n var systemDark = false;\\n if (window.matchMedia) {\\n systemDark = window.matchMedia(\\\"(prefers-color-scheme: dark)\\\").matches;\\n }\\n var resolved = \\\"dark\\\";\\n if (stored === \\\"light\\\" || stored === \\\"dark\\\") {\\n resolved = stored;\\n } else if (stored === \\\"system\\\") {\\n resolved = systemDark ? \\\"dark\\\" : \\\"light\\\";\\n } else {\\n resolved = \\\"dark\\\";\\n }\\n document.documentElement.dataset.theme = resolved;\\n document.documentElement.style.colorScheme = resolved;\\n } catch (_err) {}\\n})();\\n \"}}],[\"$\",\"$L7\",null,{\"gaId\":\"G-KSVRMQ5CPG\"}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"$8\"}}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n@font-face {\\n font-family: \\\"Carter Sans W01\\\";\\n src: url(\\\"./fonts/Carter Sans W01 Regular.ttf\\\") format(\\\"truetype\\\");\\n font-style: normal;\\n font-weight: 400;\\n font-display: swap;\\n}\\n\\n@font-face {\\n font-family: \\\"Carter Sans W01\\\";\\n src: url(\\\"./fonts/Carter Sans W01 Medium.ttf\\\") format(\\\"truetype\\\");\\n font-style: normal;\\n font-weight: 550;\\n font-display: swap;\\n}\\n\\n@font-face {\\n font-family: \\\"Carter Sans W01\\\";\\n src: url(\\\"./fonts/Carter Sans W01 Bold.ttf\\\") format(\\\"truetype\\\");\\n font-style: normal;\\n font-weight: 700;\\n font-display: swap;\\n}\\n\\n@font-face {\\n font-family: \\\"HeroQuest\\\";\\n src: url(\\\"./fonts/HeroQuest.ttf\\\") format(\\\"truetype\\\");\\n font-style: normal;\\n font-weight: 400;\\n font-display: swap;\\n}\\n \"}}],[\"$\",\"$L9\",null,{\"gaId\":\"G-KSVRMQ5CPG\",\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$b\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$c\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$d\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$e\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]]}]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],\"$Lf\"],\"globalErrorComponent\":\"$10\",\"missingSlots\":\"$W11\"}]\n"])</script><script>self.__next_f.push([1,"f:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"name\":\"theme-color\",\"content\":\"#375f8a\"}],[\"$\",\"meta\",\"2\",{\"name\":\"color-scheme\",\"content\":\"light dark\"}],[\"$\",\"meta\",\"3\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"4\",{\"children\":\"HeroQuest Card Creator\"}],[\"$\",\"meta\",\"5\",{\"name\":\"description\",\"content\":\"A browser-based tool for creating custom HeroQuest-style cards.\"}],[\"$\",\"meta\",\"6\",{\"name\":\"author\",\"content\":\"HeroQuest Card Creator\"}],[\"$\",\"meta\",\"7\",{\"name\":\"keywords\",\"content\":\"HeroQuest,card creator,card maker,tabletop,board game,print and play\"}],[\"$\",\"link\",\"8\",{\"rel\":\"canonical\",\"href\":\"https://public.markforster.info/Heroquest/Tools/card-maker/\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:title\",\"content\":\"HeroQuest Card Creator\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:description\",\"content\":\"Create and export custom HeroQuest-style cards directly in your browser.\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:url\",\"content\":\"https://public.markforster.info/Heroquest/Tools/card-maker/\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:site_name\",\"content\":\"HeroQuest Card Creator\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:locale\",\"content\":\"en_GB\"}],[\"$\",\"meta\",\"14\",{\"property\":\"og:image\",\"content\":\"https://public.markforster.info/Heroquest/Tools/card-maker/images/IMG_2912.jpg\"}],[\"$\",\"meta\",\"15\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"17\",{\"name\":\"twitter:title\",\"content\":\"HeroQuest Card Creator\"}],[\"$\",\"meta\",\"18\",{\"name\":\"twitter:description\",\"content\":\"Create and export custom HeroQuest-style cards directly in your browser.\"}],[\"$\",\"meta\",\"19\",{\"name\":\"twitter:image\",\"content\":\"https://public.markforster.info/Heroquest/Tools/card-maker/images/IMG_2912.jpg\"}],[\"$\",\"link\",\"20\",{\"rel\":\"shortcut icon\",\"href\":\"./favicon.ico\"}],[\"$\",\"link\",\"21\",{\"rel\":\"icon\",\"href\":\"./favicon.ico\"}],[\"$\",\"link\",\"22\",{\"rel\":\"apple-touch-icon\",\"href\":\"./favicon.ico\"}]]\n4:null\n"])</script></body></html>
91
+ </style><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><script src="./_next/static/chunks/webpack-8dfc90ea73e2607b.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"./_next/static/css/d071dca61fbb01bf.css\",\"style\"]\n2:HL[\"./_next/static/css/1874f9a174b17e3f.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"3:I[2846,[],\"\"]\n5:I[4707,[],\"\"]\n6:I[6423,[],\"\"]\n7:I[4888,[\"444\",\"static/chunks/444-d732bb46f1362e11.js\",\"11\",\"static/chunks/11-4a01ce75b3953a27.js\",\"358\",\"static/chunks/358-0ef6606063eec5f1.js\",\"185\",\"static/chunks/app/layout-aece39f950404ab2.js\"],\"GoogleAnalytics\"]\n8:I[8003,[\"444\",\"static/chunks/444-d732bb46f1362e11.js\",\"11\",\"static/chunks/11-4a01ce75b3953a27.js\",\"358\",\"static/chunks/358-0ef6606063eec5f1.js\",\"185\",\"static/chunks/app/layout-aece39f950404ab2.js\"],\"\"]\na:I[6318,[\"444\",\"static/chunks/444-d732bb46f1362e11.js\",\"11\",\"static/chunks/11-4a01ce75b3953a27.js\",\"358\",\"static/chunks/358-0ef6606063eec5f1.js\",\"185\",\"static/chunks/app/layout-aece39f950404ab2.js\"],\"AnalyticsProvider\"]\nb:I[6032,[\"444\",\"static/chunks/444-d732bb46f1362e11.js\",\"11\",\"static/chunks/11-4a01ce75b3953a27.js\",\"358\",\"static/chunks/358-0ef6606063eec5f1.js\",\"185\",\"static/chunks/app/layout-aece39f950404ab2.js\"],\"default\"]\nc:I[2672,[\"444\",\"static/chunks/444-d732bb46f1362e11.js\",\"11\",\"static/chunks/11-4a01ce75b3953a27.js\",\"358\",\"static/chunks/358-0ef6606063eec5f1.js\",\"185\",\"static/chunks/app/layout-aece39f950404ab2.js\"],\"default\"]\n12:I[1060,[],\"\"]\n9:T445,\n(function () {\n try {\n if (location.protocol !== \"file:\") return;\n if (!navigator.userAgent || navigator.userAgent.indexOf(\"Firefox/\") === -1) return;\n if (window.__HQCC_URL_PATCHED__) return;\n window.__HQCC_URL_PATCHED__ = true;\n\n var OriginalURL = URL;\n function PatchedURL(url, base) {\n if (base == null || base === \"null\") {\n base = window.location.href;\n }\n return new OriginalURL(url, base);\n }\n PatchedURL.prototype = OriginalURL.prototype;\n Object.getOwnPropertyNames(OriginalURL).forEach(function (prop) {\n try {\n if (!(prop in PatchedURL)) {\n Object.defineProperty(PatchedURL, prop, Object.getOwnPropertyDescriptor(OriginalURL, prop));\n }\n } catch (_err) {}\n });\n Object.getOwnPropertySymbols(OriginalURL).forEach(function (prop) {\n try {\n if (!(prop in PatchedURL)) {\n Object.defineProper"])</script><script>self.__next_f.push([1,"ty(PatchedURL, prop, Object.getOwnPropertyDescriptor(OriginalURL, prop));\n }\n } catch (_err) {}\n });\n window.URL = PatchedURL;\n } catch (_err) {}\n})();\n d:{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"}\ne:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\nf:{\"display\":\"inline-block\"}\n10:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\n13:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L3\",null,{\"buildId\":\"S32rvNtiF_jUmVPh71Cb3\",\"assetPrefix\":\".\",\"urlParts\":[\"\",\"_not-found\",\"\"],\"initialTree\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},[[\"$L4\",[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null],null],null]},[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"/_not-found\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"./_next/static/css/d071dca61fbb01bf.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"./_next/static/css/1874f9a174b17e3f.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"children\":[[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n(function () {\\n try {\\n var stored = null;\\n try {\\n stored = window.localStorage.getItem(\\\"hqcc.theme\\\");\\n } catch (_err) {\\n stored = null;\\n }\\n var systemDark = false;\\n if (window.matchMedia) {\\n systemDark = window.matchMedia(\\\"(prefers-color-scheme: dark)\\\").matches;\\n }\\n var resolved = \\\"dark\\\";\\n if (stored === \\\"light\\\" || stored === \\\"dark\\\") {\\n resolved = stored;\\n } else if (stored === \\\"system\\\") {\\n resolved = systemDark ? \\\"dark\\\" : \\\"light\\\";\\n } else {\\n resolved = \\\"dark\\\";\\n }\\n document.documentElement.dataset.theme = resolved;\\n document.documentElement.style.colorScheme = resolved;\\n } catch (_err) {}\\n})();\\n \"}}],[\"$\",\"$L7\",null,{\"gaId\":\"G-KSVRMQ5CPG\"}],[\"$\",\"$L8\",null,{\"src\":\"https://static.itch.io/api.js\",\"strategy\":\"afterInteractive\"}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"$9\"}}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n@font-face {\\n font-family: \\\"Carter Sans W01\\\";\\n src: url(\\\"./fonts/Carter Sans W01 Regular.ttf\\\") format(\\\"truetype\\\");\\n font-style: normal;\\n font-weight: 400;\\n font-display: swap;\\n}\\n\\n@font-face {\\n font-family: \\\"Carter Sans W01\\\";\\n src: url(\\\"./fonts/Carter Sans W01 Medium.ttf\\\") format(\\\"truetype\\\");\\n font-style: normal;\\n font-weight: 550;\\n font-display: swap;\\n}\\n\\n@font-face {\\n font-family: \\\"Carter Sans W01\\\";\\n src: url(\\\"./fonts/Carter Sans W01 Bold.ttf\\\") format(\\\"truetype\\\");\\n font-style: normal;\\n font-weight: 700;\\n font-display: swap;\\n}\\n\\n@font-face {\\n font-family: \\\"HeroQuest\\\";\\n src: url(\\\"./fonts/HeroQuest.ttf\\\") format(\\\"truetype\\\");\\n font-style: normal;\\n font-weight: 400;\\n font-display: swap;\\n}\\n \"}}],[\"$\",\"$La\",null,{\"gaId\":\"G-KSVRMQ5CPG\",\"children\":[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$d\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$e\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$f\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$10\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]}]]}]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],\"$L11\"],\"globalErrorComponent\":\"$12\",\"missingSlots\":\"$W13\"}]\n"])</script><script>self.__next_f.push([1,"11:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"name\":\"theme-color\",\"content\":\"#375f8a\"}],[\"$\",\"meta\",\"2\",{\"name\":\"color-scheme\",\"content\":\"light dark\"}],[\"$\",\"meta\",\"3\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"4\",{\"children\":\"HeroQuest Card Creator\"}],[\"$\",\"meta\",\"5\",{\"name\":\"description\",\"content\":\"A browser-based tool for creating custom HeroQuest-style cards.\"}],[\"$\",\"meta\",\"6\",{\"name\":\"author\",\"content\":\"HeroQuest Card Creator\"}],[\"$\",\"meta\",\"7\",{\"name\":\"keywords\",\"content\":\"HeroQuest,card creator,card maker,tabletop,board game,print and play\"}],[\"$\",\"link\",\"8\",{\"rel\":\"canonical\",\"href\":\"https://public.markforster.info/Heroquest/Tools/card-maker/\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:title\",\"content\":\"HeroQuest Card Creator\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:description\",\"content\":\"Create and export custom HeroQuest-style cards directly in your browser.\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:url\",\"content\":\"https://public.markforster.info/Heroquest/Tools/card-maker/\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:site_name\",\"content\":\"HeroQuest Card Creator\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:locale\",\"content\":\"en_GB\"}],[\"$\",\"meta\",\"14\",{\"property\":\"og:image\",\"content\":\"https://public.markforster.info/Heroquest/Tools/card-maker/images/IMG_2912.jpg\"}],[\"$\",\"meta\",\"15\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"17\",{\"name\":\"twitter:title\",\"content\":\"HeroQuest Card Creator\"}],[\"$\",\"meta\",\"18\",{\"name\":\"twitter:description\",\"content\":\"Create and export custom HeroQuest-style cards directly in your browser.\"}],[\"$\",\"meta\",\"19\",{\"name\":\"twitter:image\",\"content\":\"https://public.markforster.info/Heroquest/Tools/card-maker/images/IMG_2912.jpg\"}],[\"$\",\"link\",\"20\",{\"rel\":\"shortcut icon\",\"href\":\"./favicon.ico\"}],[\"$\",\"link\",\"21\",{\"rel\":\"icon\",\"href\":\"./favicon.ico\"}],[\"$\",\"link\",\"22\",{\"rel\":\"apple-touch-icon\",\"href\":\"./favicon.ico\"}]]\n4:null\n"])</script></body></html>
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[11],{7239:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){let{html:t,height:i=null,width:s=null,children:a,dataNtpc:u=""}=e;return(0,n.useEffect)(()=>{u&&performance.mark("mark_feature_usage",{detail:{feature:"next-third-parties-".concat(u)}})},[u]),(0,r.jsxs)(r.Fragment,{children:[a,t?(0,r.jsx)("div",{style:{height:null!=i?"".concat(i,"px"):"auto",width:null!=s?"".concat(s,"px"):"auto"},"data-ntpc":u,dangerouslySetInnerHTML:{__html:t}}):null]})};let r=i(7437),n=i(2265)},4888:function(e,t,i){"use strict";var r;let n;Object.defineProperty(t,"__esModule",{value:!0}),t.GoogleAnalytics=function(e){let{gaId:t,debugMode:i,dataLayerName:r="dataLayer",nonce:o}=e;return void 0===n&&(n=r),(0,a.useEffect)(()=>{performance.mark("mark_feature_usage",{detail:{feature:"next-third-parties-ga"}})},[]),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(u.default,{id:"_next-ga-init",dangerouslySetInnerHTML:{__html:"\n window['".concat(r,"'] = window['").concat(r,"'] || [];\n function gtag(){window['").concat(r,"'].push(arguments);}\n gtag('js', new Date());\n\n gtag('config', '").concat(t,"' ").concat(i?",{ 'debug_mode': true }":"",");")},nonce:o}),(0,s.jsx)(u.default,{id:"_next-ga",src:"https://www.googletagmanager.com/gtag/js?id=".concat(t),nonce:o})]})},t.sendGAEvent=function(){for(var e=arguments.length,t=Array(e),i=0;i<e;i++)t[i]=arguments[i];if(void 0===n){console.warn("@next/third-parties: GA has not been initialized");return}window[n]?window[n].push(arguments):console.warn("@next/third-parties: GA dataLayer ".concat(n," does not exist"))};let s=i(7437),a=i(2265),u=(r=i(8667))&&r.__esModule?r:{default:r}},8087:function(e,t,i){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.sendGTMEvent=void 0,t.GoogleTagManager=function(e){let{gtmId:t,gtmScriptUrl:i,dataLayerName:r="dataLayer",auth:o,preview:l,dataLayer:c,nonce:h}=e;u=r;let d=new URL(i||"https://www.googletagmanager.com/gtm.js");return t&&d.searchParams.set("id",t),"dataLayer"!==r&&d.searchParams.set("l",r),o&&d.searchParams.set("gtm_auth",o),l&&(d.searchParams.set("gtm_preview",l),d.searchParams.set("gtm_cookies_win","x")),(0,s.useEffect)(()=>{performance.mark("mark_feature_usage",{detail:{feature:"next-third-parties-gtm"}})},[]),(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(a.default,{id:"_next-gtm-init",dangerouslySetInnerHTML:{__html:"\n (function(w,l){\n w[l]=w[l]||[];\n w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});\n ".concat(c?"w[l].push(".concat(JSON.stringify(c),")"):"","\n })(window,'").concat(r,"');")},nonce:h}),(0,n.jsx)(a.default,{id:"_next-gtm","data-ntpc":"GTM",src:d.href,nonce:h})]})};let n=i(7437),s=i(2265),a=(r=i(8667))&&r.__esModule?r:{default:r},u="dataLayer";t.sendGTMEvent=(e,t)=>{let i=t||u;window[i]=window[i]||[],window[i].push(e)}},8667:function(e,t,i){"use strict";i.r(t),i.d(t,{default:function(){return n.a}});var r=i(8003),n=i.n(r),s={};for(var a in r)"default"!==a&&(s[a]=(function(e){return r[e]}).bind(0,a));i.d(t,s)},8221:function(e,t){"use strict";let i;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var i in t)Object.defineProperty(e,i,{enumerable:!0,get:t[i]})}(t,{DOMAttributeNames:function(){return r},default:function(){return a},isEqualNode:function(){return s}});let r={acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv",noModule:"noModule"};function n(e){let{type:t,props:i}=e,n=document.createElement(t);for(let e in i){if(!i.hasOwnProperty(e)||"children"===e||"dangerouslySetInnerHTML"===e||void 0===i[e])continue;let s=r[e]||e.toLowerCase();"script"===t&&("async"===s||"defer"===s||"noModule"===s)?n[s]=!!i[e]:n.setAttribute(s,i[e])}let{children:s,dangerouslySetInnerHTML:a}=i;return a?n.innerHTML=a.__html||"":s&&(n.textContent="string"==typeof s?s:Array.isArray(s)?s.join(""):""),n}function s(e,t){if(e instanceof HTMLElement&&t instanceof HTMLElement){let i=t.getAttribute("nonce");if(i&&!e.getAttribute("nonce")){let r=t.cloneNode(!0);return r.setAttribute("nonce",""),r.nonce=i,i===e.nonce&&e.isEqualNode(r)}}return e.isEqualNode(t)}function a(){return{mountedInstances:new Set,updateHead:e=>{let t={};e.forEach(e=>{if("link"===e.type&&e.props["data-optimized-fonts"]){if(document.querySelector('style[data-href="'+e.props["data-href"]+'"]'))return;e.props.href=e.props["data-href"],e.props["data-href"]=void 0}let i=t[e.type]||[];i.push(e),t[e.type]=i});let r=t.title?t.title[0]:null,n="";if(r){let{children:e}=r.props;n="string"==typeof e?e:Array.isArray(e)?e.join(""):""}n!==document.title&&(document.title=n),["meta","base","link","style","script"].forEach(e=>{i(e,t[e]||[])})}}}i=(e,t)=>{let i=document.getElementsByTagName("head")[0],r=i.querySelector("meta[name=next-head-count]"),a=Number(r.content),u=[];for(let t=0,i=r.previousElementSibling;t<a;t++,i=(null==i?void 0:i.previousElementSibling)||null){var o;(null==i?void 0:null==(o=i.tagName)?void 0:o.toLowerCase())===e&&u.push(i)}let l=t.map(n).filter(e=>{for(let t=0,i=u.length;t<i;t++)if(s(u[t],e))return u.splice(t,1),!1;return!0});u.forEach(e=>{var t;return null==(t=e.parentNode)?void 0:t.removeChild(e)}),l.forEach(e=>i.insertBefore(e,r)),r.content=(a-u.length+l.length).toString()},("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3515:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var i in t)Object.defineProperty(e,i,{enumerable:!0,get:t[i]})}(t,{cancelIdleCallback:function(){return r},requestIdleCallback:function(){return i}});let i="undefined"!=typeof self&&self.requestIdleCallback&&self.requestIdleCallback.bind(window)||function(e){let t=Date.now();return self.setTimeout(function(){e({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-t))}})},1)},r="undefined"!=typeof self&&self.cancelIdleCallback&&self.cancelIdleCallback.bind(window)||function(e){return clearTimeout(e)};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8003:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var i in t)Object.defineProperty(e,i,{enumerable:!0,get:t[i]})}(t,{default:function(){return b},handleClientScriptLoad:function(){return m},initScriptLoader:function(){return g}});let r=i(7043),n=i(3099),s=i(7437),a=r._(i(4887)),u=n._(i(2265)),o=i(8701),l=i(8221),c=i(3515),h=new Map,d=new Set,f=["onLoad","onReady","dangerouslySetInnerHTML","children","onError","strategy","stylesheets"],p=e=>{if(a.default.preinit){e.forEach(e=>{a.default.preinit(e,{as:"style"})});return}if("undefined"!=typeof window){let t=document.head;e.forEach(e=>{let i=document.createElement("link");i.type="text/css",i.rel="stylesheet",i.href=e,t.appendChild(i)})}},y=e=>{let{src:t,id:i,onLoad:r=()=>{},onReady:n=null,dangerouslySetInnerHTML:s,children:a="",strategy:u="afterInteractive",onError:o,stylesheets:c}=e,y=i||t;if(y&&d.has(y))return;if(h.has(t)){d.add(y),h.get(t).then(r,o);return}let m=()=>{n&&n(),d.add(y)},g=document.createElement("script"),v=new Promise((e,t)=>{g.addEventListener("load",function(t){e(),r&&r.call(this,t),m()}),g.addEventListener("error",function(e){t(e)})}).catch(function(e){o&&o(e)});for(let[i,r]of(s?(g.innerHTML=s.__html||"",m()):a?(g.textContent="string"==typeof a?a:Array.isArray(a)?a.join(""):"",m()):t&&(g.src=t,h.set(t,v)),Object.entries(e))){if(void 0===r||f.includes(i))continue;let e=l.DOMAttributeNames[i]||i.toLowerCase();g.setAttribute(e,r)}"worker"===u&&g.setAttribute("type","text/partytown"),g.setAttribute("data-nscript",u),c&&p(c),document.body.appendChild(g)};function m(e){let{strategy:t="afterInteractive"}=e;"lazyOnload"===t?window.addEventListener("load",()=>{(0,c.requestIdleCallback)(()=>y(e))}):y(e)}function g(e){e.forEach(m),[...document.querySelectorAll('[data-nscript="beforeInteractive"]'),...document.querySelectorAll('[data-nscript="beforePageRender"]')].forEach(e=>{let t=e.id||e.getAttribute("src");d.add(t)})}function v(e){let{id:t,src:i="",onLoad:r=()=>{},onReady:n=null,strategy:l="afterInteractive",onError:h,stylesheets:f,...p}=e,{updateScripts:m,scripts:g,getIsSsr:v,appDir:b,nonce:_}=(0,u.useContext)(o.HeadManagerContext),q=(0,u.useRef)(!1);(0,u.useEffect)(()=>{let e=t||i;q.current||(n&&e&&d.has(e)&&n(),q.current=!0)},[n,t,i]);let O=(0,u.useRef)(!1);if((0,u.useEffect)(()=>{!O.current&&("afterInteractive"===l?y(e):"lazyOnload"===l&&("complete"===document.readyState?(0,c.requestIdleCallback)(()=>y(e)):window.addEventListener("load",()=>{(0,c.requestIdleCallback)(()=>y(e))})),O.current=!0)},[e,l]),("beforeInteractive"===l||"worker"===l)&&(m?(g[l]=(g[l]||[]).concat([{id:t,src:i,onLoad:r,onReady:n,onError:h,...p}]),m(g)):v&&v()?d.add(t||i):v&&!v()&&y(e)),b){if(f&&f.forEach(e=>{a.default.preinit(e,{as:"style"})}),"beforeInteractive"===l)return i?(a.default.preload(i,p.integrity?{as:"script",integrity:p.integrity,nonce:_,crossOrigin:p.crossOrigin}:{as:"script",nonce:_,crossOrigin:p.crossOrigin}),(0,s.jsx)("script",{nonce:_,dangerouslySetInnerHTML:{__html:"(self.__next_s=self.__next_s||[]).push("+JSON.stringify([i,{...p,id:t}])+")"}})):(p.dangerouslySetInnerHTML&&(p.children=p.dangerouslySetInnerHTML.__html,delete p.dangerouslySetInnerHTML),(0,s.jsx)("script",{nonce:_,dangerouslySetInnerHTML:{__html:"(self.__next_s=self.__next_s||[]).push("+JSON.stringify([0,{...p,id:t}])+")"}}));"afterInteractive"===l&&i&&a.default.preload(i,p.integrity?{as:"script",integrity:p.integrity,nonce:_,crossOrigin:p.crossOrigin}:{as:"script",nonce:_,crossOrigin:p.crossOrigin})}return null}Object.defineProperty(v,"__nextScript",{value:!0});let b=v;("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4798:function(){},3160:function(e,t,i){"use strict";i.d(t,{S:function(){return m}});var r=i(830),n=i(2585),s=i(7154),a=i(67),u=i(851);class o extends u.F{constructor(e){super(),this.abortSignalConsumed=!1,this.defaultOptions=e.defaultOptions,this.setOptions(e.options),this.observers=[],this.cache=e.cache,this.logger=e.logger||n._,this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.initialState=e.state||function(e){let t="function"==typeof e.initialData?e.initialData():e.initialData,i=void 0!==t,r=i?"function"==typeof e.initialDataUpdatedAt?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:i?null!=r?r:Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:i?"success":"loading",fetchStatus:"idle"}}(this.options),this.state=this.initialState,this.scheduleGc()}get meta(){return this.options.meta}setOptions(e){this.options={...this.defaultOptions,...e},this.updateCacheTime(this.options.cacheTime)}optionalRemove(){this.observers.length||"idle"!==this.state.fetchStatus||this.cache.remove(this)}setData(e,t){let i=(0,r.oE)(this.state.data,e,this.options);return this.dispatch({data:i,type:"success",dataUpdatedAt:null==t?void 0:t.updatedAt,manual:null==t?void 0:t.manual}),i}setState(e,t){this.dispatch({type:"setState",state:e,setStateOptions:t})}cancel(e){var t;let i=this.promise;return null==(t=this.retryer)||t.cancel(e),i?i.then(r.ZT).catch(r.ZT):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(this.initialState)}isActive(){return this.observers.some(e=>!1!==e.options.enabled)}isDisabled(){return this.getObserversCount()>0&&!this.isActive()}isStale(){return this.state.isInvalidated||!this.state.dataUpdatedAt||this.observers.some(e=>e.getCurrentResult().isStale)}isStaleByTime(e=0){return this.state.isInvalidated||!this.state.dataUpdatedAt||!(0,r.Kp)(this.state.dataUpdatedAt,e)}onFocus(){var e;let t=this.observers.find(e=>e.shouldFetchOnWindowFocus());t&&t.refetch({cancelRefetch:!1}),null==(e=this.retryer)||e.continue()}onOnline(){var e;let t=this.observers.find(e=>e.shouldFetchOnReconnect());t&&t.refetch({cancelRefetch:!1}),null==(e=this.retryer)||e.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.cache.notify({type:"observerAdded",query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter(t=>t!==e),this.observers.length||(this.retryer&&(this.abortSignalConsumed?this.retryer.cancel({revert:!0}):this.retryer.cancelRetry()),this.scheduleGc()),this.cache.notify({type:"observerRemoved",query:this,observer:e}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||this.dispatch({type:"invalidate"})}fetch(e,t){var i,n,s,u;if("idle"!==this.state.fetchStatus){if(this.state.dataUpdatedAt&&null!=t&&t.cancelRefetch)this.cancel({silent:!0});else if(this.promise)return null==(s=this.retryer)||s.continueRetry(),this.promise}if(e&&this.setOptions(e),!this.options.queryFn){let e=this.observers.find(e=>e.options.queryFn);e&&this.setOptions(e.options)}let o=(0,r.G9)(),l={queryKey:this.queryKey,pageParam:void 0,meta:this.meta},c=e=>{Object.defineProperty(e,"signal",{enumerable:!0,get:()=>{if(o)return this.abortSignalConsumed=!0,o.signal}})};c(l);let h={fetchOptions:t,options:this.options,queryKey:this.queryKey,state:this.state,fetchFn:()=>this.options.queryFn?(this.abortSignalConsumed=!1,this.options.queryFn(l)):Promise.reject("Missing queryFn for queryKey '"+this.options.queryHash+"'")};c(h),null==(i=this.options.behavior)||i.onFetch(h),this.revertState=this.state,("idle"===this.state.fetchStatus||this.state.fetchMeta!==(null==(n=h.fetchOptions)?void 0:n.meta))&&this.dispatch({type:"fetch",meta:null==(u=h.fetchOptions)?void 0:u.meta});let d=e=>{if((0,a.DV)(e)&&e.silent||this.dispatch({type:"error",error:e}),!(0,a.DV)(e)){var t,i,r,n;null==(t=(i=this.cache.config).onError)||t.call(i,e,this),null==(r=(n=this.cache.config).onSettled)||r.call(n,this.state.data,e,this)}this.isFetchingOptimistic||this.scheduleGc(),this.isFetchingOptimistic=!1};return this.retryer=(0,a.Mz)({fn:h.fetchFn,abort:null==o?void 0:o.abort.bind(o),onSuccess:e=>{var t,i,r,n;if(void 0===e){d(Error(this.queryHash+" data is undefined"));return}this.setData(e),null==(t=(i=this.cache.config).onSuccess)||t.call(i,e,this),null==(r=(n=this.cache.config).onSettled)||r.call(n,e,this.state.error,this),this.isFetchingOptimistic||this.scheduleGc(),this.isFetchingOptimistic=!1},onError:d,onFail:(e,t)=>{this.dispatch({type:"failed",failureCount:e,error:t})},onPause:()=>{this.dispatch({type:"pause"})},onContinue:()=>{this.dispatch({type:"continue"})},retry:h.options.retry,retryDelay:h.options.retryDelay,networkMode:h.options.networkMode}),this.promise=this.retryer.promise,this.promise}dispatch(e){this.state=(t=>{var i,r;switch(e.type){case"failed":return{...t,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case"pause":return{...t,fetchStatus:"paused"};case"continue":return{...t,fetchStatus:"fetching"};case"fetch":return{...t,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null!=(i=e.meta)?i:null,fetchStatus:(0,a.Kw)(this.options.networkMode)?"fetching":"paused",...!t.dataUpdatedAt&&{error:null,status:"loading"}};case"success":return{...t,data:e.data,dataUpdateCount:t.dataUpdateCount+1,dataUpdatedAt:null!=(r=e.dataUpdatedAt)?r:Date.now(),error:null,isInvalidated:!1,status:"success",...!e.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};case"error":let n=e.error;if((0,a.DV)(n)&&n.revert&&this.revertState)return{...this.revertState,fetchStatus:"idle"};return{...t,error:n,errorUpdateCount:t.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:t.fetchFailureCount+1,fetchFailureReason:n,fetchStatus:"idle",status:"error"};case"invalidate":return{...t,isInvalidated:!0};case"setState":return{...t,...e.state}}})(this.state),s.V.batch(()=>{this.observers.forEach(t=>{t.onQueryUpdate(e)}),this.cache.notify({query:this,type:"updated",action:e})})}}var l=i(5176);class c extends l.l{constructor(e){super(),this.config=e||{},this.queries=[],this.queriesMap={}}build(e,t,i){var n;let s=t.queryKey,a=null!=(n=t.queryHash)?n:(0,r.Rm)(s,t),u=this.get(a);return u||(u=new o({cache:this,logger:e.getLogger(),queryKey:s,queryHash:a,options:e.defaultQueryOptions(t),state:i,defaultOptions:e.getQueryDefaults(s)}),this.add(u)),u}add(e){this.queriesMap[e.queryHash]||(this.queriesMap[e.queryHash]=e,this.queries.push(e),this.notify({type:"added",query:e}))}remove(e){let t=this.queriesMap[e.queryHash];t&&(e.destroy(),this.queries=this.queries.filter(t=>t!==e),t===e&&delete this.queriesMap[e.queryHash],this.notify({type:"removed",query:e}))}clear(){s.V.batch(()=>{this.queries.forEach(e=>{this.remove(e)})})}get(e){return this.queriesMap[e]}getAll(){return this.queries}find(e,t){let[i]=(0,r.I6)(e,t);return void 0===i.exact&&(i.exact=!0),this.queries.find(e=>(0,r._x)(i,e))}findAll(e,t){let[i]=(0,r.I6)(e,t);return Object.keys(i).length>0?this.queries.filter(e=>(0,r._x)(i,e)):this.queries}notify(e){s.V.batch(()=>{this.listeners.forEach(({listener:t})=>{t(e)})})}onFocus(){s.V.batch(()=>{this.queries.forEach(e=>{e.onFocus()})})}onOnline(){s.V.batch(()=>{this.queries.forEach(e=>{e.onOnline()})})}}var h=i(2819);class d extends l.l{constructor(e){super(),this.config=e||{},this.mutations=[],this.mutationId=0}build(e,t,i){let r=new h.m({mutationCache:this,logger:e.getLogger(),mutationId:++this.mutationId,options:e.defaultMutationOptions(t),state:i,defaultOptions:t.mutationKey?e.getMutationDefaults(t.mutationKey):void 0});return this.add(r),r}add(e){this.mutations.push(e),this.notify({type:"added",mutation:e})}remove(e){this.mutations=this.mutations.filter(t=>t!==e),this.notify({type:"removed",mutation:e})}clear(){s.V.batch(()=>{this.mutations.forEach(e=>{this.remove(e)})})}getAll(){return this.mutations}find(e){return void 0===e.exact&&(e.exact=!0),this.mutations.find(t=>(0,r.X7)(e,t))}findAll(e){return this.mutations.filter(t=>(0,r.X7)(e,t))}notify(e){s.V.batch(()=>{this.listeners.forEach(({listener:t})=>{t(e)})})}resumePausedMutations(){var e;return this.resuming=(null!=(e=this.resuming)?e:Promise.resolve()).then(()=>{let e=this.mutations.filter(e=>e.state.isPaused);return s.V.batch(()=>e.reduce((e,t)=>e.then(()=>t.continue().catch(r.ZT)),Promise.resolve()))}).then(()=>{this.resuming=void 0}),this.resuming}}var f=i(6753),p=i(2377),y=i(8074);class m{constructor(e={}){this.queryCache=e.queryCache||new c,this.mutationCache=e.mutationCache||new d,this.logger=e.logger||n._,this.defaultOptions=e.defaultOptions||{},this.queryDefaults=[],this.mutationDefaults=[],this.mountCount=0}mount(){this.mountCount++,1===this.mountCount&&(this.unsubscribeFocus=f.j.subscribe(()=>{f.j.isFocused()&&(this.resumePausedMutations(),this.queryCache.onFocus())}),this.unsubscribeOnline=p.N.subscribe(()=>{p.N.isOnline()&&(this.resumePausedMutations(),this.queryCache.onOnline())}))}unmount(){var e,t;this.mountCount--,0===this.mountCount&&(null==(e=this.unsubscribeFocus)||e.call(this),this.unsubscribeFocus=void 0,null==(t=this.unsubscribeOnline)||t.call(this),this.unsubscribeOnline=void 0)}isFetching(e,t){let[i]=(0,r.I6)(e,t);return i.fetchStatus="fetching",this.queryCache.findAll(i).length}isMutating(e){return this.mutationCache.findAll({...e,fetching:!0}).length}getQueryData(e,t){var i;return null==(i=this.queryCache.find(e,t))?void 0:i.state.data}ensureQueryData(e,t,i){let n=(0,r._v)(e,t,i),s=this.getQueryData(n.queryKey);return s?Promise.resolve(s):this.fetchQuery(n)}getQueriesData(e){return this.getQueryCache().findAll(e).map(({queryKey:e,state:t})=>[e,t.data])}setQueryData(e,t,i){let n=this.queryCache.find(e),s=null==n?void 0:n.state.data,a=(0,r.SE)(t,s);if(void 0===a)return;let u=(0,r._v)(e),o=this.defaultQueryOptions(u);return this.queryCache.build(this,o).setData(a,{...i,manual:!0})}setQueriesData(e,t,i){return s.V.batch(()=>this.getQueryCache().findAll(e).map(({queryKey:e})=>[e,this.setQueryData(e,t,i)]))}getQueryState(e,t){var i;return null==(i=this.queryCache.find(e,t))?void 0:i.state}removeQueries(e,t){let[i]=(0,r.I6)(e,t),n=this.queryCache;s.V.batch(()=>{n.findAll(i).forEach(e=>{n.remove(e)})})}resetQueries(e,t,i){let[n,a]=(0,r.I6)(e,t,i),u=this.queryCache,o={type:"active",...n};return s.V.batch(()=>(u.findAll(n).forEach(e=>{e.reset()}),this.refetchQueries(o,a)))}cancelQueries(e,t,i){let[n,a={}]=(0,r.I6)(e,t,i);return void 0===a.revert&&(a.revert=!0),Promise.all(s.V.batch(()=>this.queryCache.findAll(n).map(e=>e.cancel(a)))).then(r.ZT).catch(r.ZT)}invalidateQueries(e,t,i){let[n,a]=(0,r.I6)(e,t,i);return s.V.batch(()=>{var e,t;if(this.queryCache.findAll(n).forEach(e=>{e.invalidate()}),"none"===n.refetchType)return Promise.resolve();let i={...n,type:null!=(e=null!=(t=n.refetchType)?t:n.type)?e:"active"};return this.refetchQueries(i,a)})}refetchQueries(e,t,i){let[n,a]=(0,r.I6)(e,t,i),u=Promise.all(s.V.batch(()=>this.queryCache.findAll(n).filter(e=>!e.isDisabled()).map(e=>{var t;return e.fetch(void 0,{...a,cancelRefetch:null==(t=null==a?void 0:a.cancelRefetch)||t,meta:{refetchPage:n.refetchPage}})}))).then(r.ZT);return null!=a&&a.throwOnError||(u=u.catch(r.ZT)),u}fetchQuery(e,t,i){let n=(0,r._v)(e,t,i),s=this.defaultQueryOptions(n);void 0===s.retry&&(s.retry=!1);let a=this.queryCache.build(this,s);return a.isStaleByTime(s.staleTime)?a.fetch(s):Promise.resolve(a.state.data)}prefetchQuery(e,t,i){return this.fetchQuery(e,t,i).then(r.ZT).catch(r.ZT)}fetchInfiniteQuery(e,t,i){let n=(0,r._v)(e,t,i);return n.behavior=(0,y.Gm)(),this.fetchQuery(n)}prefetchInfiniteQuery(e,t,i){return this.fetchInfiniteQuery(e,t,i).then(r.ZT).catch(r.ZT)}resumePausedMutations(){return this.mutationCache.resumePausedMutations()}getQueryCache(){return this.queryCache}getMutationCache(){return this.mutationCache}getLogger(){return this.logger}getDefaultOptions(){return this.defaultOptions}setDefaultOptions(e){this.defaultOptions=e}setQueryDefaults(e,t){let i=this.queryDefaults.find(t=>(0,r.yF)(e)===(0,r.yF)(t.queryKey));i?i.defaultOptions=t:this.queryDefaults.push({queryKey:e,defaultOptions:t})}getQueryDefaults(e){if(!e)return;let t=this.queryDefaults.find(t=>(0,r.to)(e,t.queryKey));return null==t?void 0:t.defaultOptions}setMutationDefaults(e,t){let i=this.mutationDefaults.find(t=>(0,r.yF)(e)===(0,r.yF)(t.mutationKey));i?i.defaultOptions=t:this.mutationDefaults.push({mutationKey:e,defaultOptions:t})}getMutationDefaults(e){if(!e)return;let t=this.mutationDefaults.find(t=>(0,r.to)(e,t.mutationKey));return null==t?void 0:t.defaultOptions}defaultQueryOptions(e){if(null!=e&&e._defaulted)return e;let t={...this.defaultOptions.queries,...this.getQueryDefaults(null==e?void 0:e.queryKey),...e,_defaulted:!0};return!t.queryHash&&t.queryKey&&(t.queryHash=(0,r.Rm)(t.queryKey,t)),void 0===t.refetchOnReconnect&&(t.refetchOnReconnect="always"!==t.networkMode),void 0===t.useErrorBoundary&&(t.useErrorBoundary=!!t.suspense),t}defaultMutationOptions(e){return null!=e&&e._defaulted?e:{...this.defaultOptions.mutations,...this.getMutationDefaults(null==e?void 0:e.mutationKey),...e,_defaulted:!0}}clear(){this.queryCache.clear(),this.mutationCache.clear()}}}}]);