PageSourceSearch

https://magibox.ai/apply

html magibox.ai collected 2026-10-05 14:04:06 UTC 113,505 bytes, 547 lines download raw bytes

1<!DOCTYPE html><html class="__variable_newsreader_0kl6abh __variable_inter_141arv0 __variable_jetbrains_mono_1oeauku"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/assets/index-BxiNFTqZ.css" data-rsc-css-href="/assets/index-BxiNFTqZ.css" data-precedence="vite-rsc/importer-resources"/><link rel="modulepreload" fetchPriority="low" href="/assets/index-D8ZtqKNp.js"/><link rel="modulepreload" href="/assets/global-error-BiXP-tUD.js" crossorigin=""/><link rel="modulepreload" href="/assets/framework-Cf0-05k2.js" crossorigin=""/><link rel="modulepreload" href="/assets/rolldown-runtime-QTnfLwEv.js" crossorigin=""/><link rel="modulepreload" href="/assets/url-utils-BQKFb685.js" crossorigin=""/><link rel="modulepreload" href="/assets/error-DlTiRDhc.js" crossorigin=""/><link rel="modulepreload" href="/assets/error-MQ5TkV_R.js" crossorigin=""/><link rel="modulepreload" href="/assets/ErrorState-CKJRhYhy.js" crossorigin=""/><link rel="modulepreload" href="/assets/react-client-0Vw_Giza.js" crossorigin=""/><link rel="modulepreload" href="/assets/react-DWYTht9E.js" crossorigin=""/><link rel="modulepreload" href="/assets/button-DwZixn1y.js" crossorigin=""/><link rel="modulepreload" href="/assets/utils-B6KiDbIe.js" crossorigin=""/><link rel="modulepreload" href="/assets/dist-DMZGJ-A4.js" crossorigin=""/><link rel="modulepreload" href="/assets/layout-segment-context-CE-PRpOd.js" crossorigin=""/><link rel="modulepreload" href="/assets/NextIntlClientProvider-BSZqshGw.js" crossorigin=""/><link rel="modulepreload" href="/assets/QueryProvider-Cosf71Tu.js" crossorigin=""/><link rel="modulepreload" href="/assets/QueryClientProvider-C5L_pDjd.js" crossorigin=""/><link rel="modulepreload" href="/assets/ThemeProvider-XMh3z0Lv.js" crossorigin=""/><link rel="modulepreload" href="/assets/tooltip-DztC-6IE.js" crossorigin=""/><link rel="modulepreload" href="/assets/dist-6OGuJaNd.js" crossorigin=""/><link rel="modulepreload" href="/assets/dist-CgMJE28s.js" crossorigin=""/><link rel="modulepreload" href="/assets/dist-Di8qRXqu.js" crossorigin=""/><link rel="modulepreload" href="/assets/dist-DQ6ogTiA.js" crossorigin=""/><link rel="modulepreload" href="/assets/dist-DVPPZBOi.js" crossorigin=""/><link rel="modulepreload" href="/assets/dist-BK8Suqni.js" crossorigin=""/><link rel="modulepreload" href="/assets/dist-DZMuTO_A.js" crossorigin=""/><link rel="modulepreload" href="/assets/LocaleProvider-Clrda8tP.js" crossorigin=""/><link rel="modulepreload" href="/assets/dayjs.min-DkeatCsa.js" crossorigin=""/><link rel="modulepreload" href="/assets/store-CyhEMNCH.js" crossorigin=""/><link rel="modulepreload" href="/assets/middleware-Dx6bK755.js" crossorigin=""/><link rel="modulepreload" href="/assets/page-DXfafm0I.js" crossorigin=""/><link rel="modulepreload" href="/assets/request-CmLOwSvt.js" crossorigin=""/><link rel="modulepreload" href="/assets/Icon-rhutMkgU.js" crossorigin=""/><link rel="modulepreload" href="/assets/locales-IQ_Y1ObJ.js" crossorigin=""/><link rel="modulepreload" href="/assets/building-2-DjVOjiHl.js" crossorigin=""/><link rel="modulepreload" href="/assets/shield-check-CKRytwkw.js" crossorigin=""/><link rel="modulepreload" href="/assets/navigation-C8uLm5YZ.js" crossorigin=""/><link rel="modulepreload" href="/assets/BaseLink-Cz-eH9J1.js" crossorigin=""/><link rel="modulepreload" href="/assets/auth-BiOtM-tJ.js" crossorigin=""/><link rel="modulepreload" href="/assets/Footer-DTaiupa8.js" crossorigin=""/><link rel="modulepreload" href="/assets/MarketingRuntime-BUtMMi4q.js" crossorigin=""/><link rel="modulepreload" href="/assets/Nav-CJft-zWz.js" crossorigin=""/><link rel="modulepreload" href="/assets/layout-dashboard-BTx5HEs4.js" crossorigin=""/><link rel="modulepreload" href="/assets/dropdown-menu-DbozoYDl.js" crossorigin=""/><link rel="modulepreload" href="/assets/dist-DPJkedU_.js" crossorigin=""/><link rel="modulepreload" href="/assets/dist-D5OjMmKo.js" crossorigin=""/><link rel="modulepreload" href="/assets/es2015-Dmx3NPtd.js" crossorigin=""/><link rel="modulepreload" href="/assets/dist-GEewB3aa.js" crossorigin=""/><link rel="modulepreload" href="/assets/user-CNJwMl0I.js" crossorigin=""/><link rel="modulepreload" href="/assets/UserAvatar-C7XSQKLq.js" crossorigin=""/><link rel="modulepreload" href="/assets/avatar-CMnEXw1o.js" crossorigin=""/><link rel="modulepreload" href="/assets/sonner-lX2Sge0z.js" crossorigin=""/><link rel="modulepreload" href="/assets/dist-DWI3IreG.js" crossorigin=""/><title>MagiBox · Encrypted content for educators</title><meta name="description" content="The encrypted content platform for serious educators. Built in Singapore, deployed across Southeast Asia and Australia."/><meta property="og:title" content="MagiBox · Encrypted content for educators"/><meta property="og:description" content="Teach anywhere. Keep everything."/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary"/><meta name="twitter:title" content="MagiBox · Encrypted content for educators"/><meta name="twitter:description" content="Teach anywhere. Keep everything."/><link rel="icon" href="https://magibox.ai/favicon.ico"/>
1<script>self.__VINEXT_RSC_PARAMS__={"locale":"en"}</script>
1<script>self.__VINEXT_RSC_NAV__={"pathname":"/en/apply","searchParams":[]}</script>
1<link rel="modulepreload" href="/assets/index-D8ZtqKNp.js" />
2<link rel="preload" href="/assets/_vinext_fonts/newsreader-a6a633d2a76e/newsreader-cdecad9c.woff2" as="font" type="font/woff2" crossorigin />
3<link rel="preload" href="/assets/_vinext_fonts/newsreader-a6a633d2a76e/newsreader-a239d8f4.woff2" as="font" type="font/woff2" crossorigin />
4<link rel="preload" href="/assets/_vinext_fonts/newsreader-a6a633d2a76e/newsreader-2415edd0.woff2" as="font" type="font/woff2" crossorigin />
5<link rel="preload" href="/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-dc3886d4.ttf" as="font" type="font/ttf" crossorigin />
6<link rel="preload" href="/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-0b29b453.ttf" as="font" type="font/ttf" crossorigin />
7<link rel="preload" href="/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-9d0af44a.ttf" as="font" type="font/ttf" crossorigin />
8<link rel="preload" href="/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-1e6d76eb.ttf" as="font" type="font/ttf" crossorigin />
9<link rel="preload" href="/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-dc295d33.ttf" as="font" type="font/ttf" crossorigin />
10<link rel="preload" href="/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-313a9b5f.ttf" as="font" type="font/ttf" crossorigin />
11<link rel="preload" href="/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-456bc9d1.ttf" as="font" type="font/ttf" crossorigin />
12<link rel="preload" href="/assets/_vinext_fonts/jetbrains-mono-80382cb6cd33/jetbrains-mono-982bf4a9.woff2" as="font" type="font/woff2" crossorigin />
13<link rel="preload" href="/assets/_vinext_fonts/jetbrains-mono-80382cb6cd33/jetbrains-mono-ffa6bbab.woff2" as="font" type="font/woff2" crossorigin />
14<link rel="preload" href="/assets/_vinext_fonts/jetbrains-mono-80382cb6cd33/jetbrains-mono-9cb20f35.woff2" as="font" type="font/woff2" crossorigin />
15<link rel="preload" href="/assets/_vinext_fonts/jetbrains-mono-80382cb6cd33/jetbrains-mono-8ea5e194.woff2" as="font" type="font/woff2" crossorigin />
16<link rel="preload" href="/assets/_vinext_fonts/jetbrains-mono-80382cb6cd33/jetbrains-mono-76306ee8.woff2" as="font" type="font/woff2" crossorigin />
17<link rel="preload" href="/assets/_vinext_fonts/jetbrains-mono-80382cb6cd33/jetbrains-mono-1cd702cd.woff2" as="font" type="font/woff2" crossorigin />
18<style data-vinext-fonts>/* vietnamese */
19@font-face {
20  font-family: 'Newsreader';
21  font-style: normal;
22  font-weight: 400;
23  font-display: swap;
24  src: url(/assets/_vinext_fonts/newsreader-a6a633d2a76e/newsreader-cdecad9c.woff2) format('woff2');
25  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
26}
27/* latin-ext */
28@font-face {
29  font-family: 'Newsreader';
30  font-style: normal;
31  font-weight: 400;
32  font-display: swap;
33  src: url(/assets/_vinext_fonts/newsreader-a6a633d2a76e/newsreader-a239d8f4.woff2) format('woff2');
34  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
35}
36/* latin */
37@font-face {
38  font-family: 'Newsreader';
39  font-style: normal;
40  font-weight: 400;
41  font-display: swap;
42  src: url(/assets/_vinext_fonts/newsreader-a6a633d2a76e/newsreader-2415edd0.woff2) format('woff2');
43  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
44}
45/* vietnamese */
46@font-face {
47  font-family: 'Newsreader';
48  font-style: normal;
49  font-weight: 500;
50  font-display: swap;
51  src: url(/assets/_vinext_fonts/newsreader-a6a633d2a76e/newsreader-cdecad9c.woff2) format('woff2');
52  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
53}
54/* latin-ext */
55@font-face {
56  font-family: 'Newsreader';
57  font-style: normal;
58  font-weight: 500;
59  font-display: swap;
60  src: url(/assets/_vinext_fonts/newsreader-a6a633d2a76e/newsreader-a239d8f4.woff2) format('woff2');
61  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1D
61BF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
62}
63/* latin */
64@font-face {
65  font-family: 'Newsreader';
66  font-style: normal;
67  font-weight: 500;
68  font-display: swap;
69  src: url(/assets/_vinext_fonts/newsreader-a6a633d2a76e/newsreader-2415edd0.woff2) format('woff2');
70  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
71}
72/* vietnamese */
73@font-face {
74  font-family: 'Newsreader';
75  font-style: normal;
76  font-weight: 600;
77  font-display: swap;
78  src: url(/assets/_vinext_fonts/newsreader-a6a633d2a76e/newsreader-cdecad9c.woff2) format('woff2');
79  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
80}
81/* latin-ext */
82@font-face {
83  font-family: 'Newsreader';
84  font-style: normal;
85  font-weight: 600;
86  font-display: swap;
87  src: url(/assets/_vinext_fonts/newsreader-a6a633d2a76e/newsreader-a239d8f4.woff2) format('woff2');
88  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
89}
90/* latin */
91@font-face {
92  font-family: 'Newsreader';
93  font-style: normal;
94  font-weight: 600;
95  font-display: swap;
96  src: url(/assets/_vinext_fonts/newsreader-a6a633d2a76e/newsreader-2415edd0.woff2) format('woff2');
97  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
98}
99/* vietnamese */
100@font-face {
101  font-family: 'Newsreader';
102  font-style: normal;
103  font-weight: 700;
104  font-display: swap;
105  src: url(/assets/_vinext_fonts/newsreader-a6a633d2a76e/newsreader-cdecad9c.woff2) format('woff2');
106  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
107}
108/* latin-ext */
109@font-face {
110  font-family: 'Newsreader';
111  font-style: normal;
112  font-weight: 700;
113  font-display: swap;
114  src: url(/assets/_vinext_fonts/newsreader-a6a633d2a76e/newsreader-a239d8f4.woff2) format('woff2');
115  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
116}
117/* latin */
118@font-face {
119  font-family: 'Newsreader';
120  font-style: normal;
121  font-weight: 700;
122  font-display: swap;
123  src: url(/assets/_vinext_fonts/newsreader-a6a633d2a76e/newsreader-2415edd0.woff2) format('woff2');
124  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
125}
126
127@font-face {
128  font-family: 'Newsreader Fallback';
129  src: local("Times New Roman");
130  ascent-override: 69.68%;
131  descent-override: 25.12%;
132  line-gap-override: 0.00%;
133  size-adjust: 105.48%;
134}
135
136.__font_newsreader_0kl6abh { font-family: 'Newsreader', 'Newsreader Fallback'; font-style: normal; }
137
138.__variable_newsreader_0kl6abh { --font-display: 'Newsreader', 'Newsreader Fallback'; }
139
140/* cyrillic-ext */
141@font-face {
142  font-family: 'Inter';
143  font-style: normal;
144  font-weight: 400;
145  font-display: swap;
146  src: url(/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-dc3886d4.ttf) format('woff2');
147  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
148}
149/* cyrillic */
150@font-face {
151  font-family: 'Inter';
152  font-style: normal;
153  font-weight: 400;
154  font-display: swap;
155  src: url(/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-0b29b453.ttf) format('woff2');
156  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
157}
158/* greek-ext */
159@font-face {
160  font-family: 'Inter';
161  font-style: normal;
162  font-weight: 400;
163  font-display: swap;
164  src: url(/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-9d0af44a.ttf) format('woff2');
165  unicode-range: U+1F00-1FFF;
166}
167/* greek */
168@font-face {
169  font-family: 'Inter';
170  font-style: normal;
171  font-weight: 400;
172  font-display: swap;
173  src: url(/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-1e6d76eb.ttf) format('woff2');
174  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
175}
176/* vietnamese */
177@font-face {
178  font-family: 'Inter';
179  font-style: normal;
180  font-weight: 400;
181  font-display: swap;
182  src: url(/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-dc295d33.ttf) format('woff2');
183  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
184}
185/* latin-ext */
186@font-face {
187  font-family: 'Inter';
188  font-style: normal;
189  font-weight: 400;
190  font-display: swap;
191  src: url(/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-313a9b5f.ttf) format('woff2');
192  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1D
192BF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
193}
194/* latin */
195@font-face {
196  font-family: 'Inter';
197  font-style: normal;
198  font-weight: 400;
199  font-display: swap;
200  src: url(/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-456bc9d1.ttf) format('woff2');
201  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
202}
203/* cyrillic-ext */
204@font-face {
205  font-family: 'Inter';
206  font-style: normal;
207  font-weight: 500;
208  font-display: swap;
209  src: url(/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-dc3886d4.ttf) format('woff2');
210  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
211}
212/* cyrillic */
213@font-face {
214  font-family: 'Inter';
215  font-style: normal;
216  font-weight: 500;
217  font-display: swap;
218  src: url(/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-0b29b453.ttf) format('woff2');
219  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
220}
221/* greek-ext */
222@font-face {
223  font-family: 'Inter';
224  font-style: normal;
225  font-weight: 500;
226  font-display: swap;
227  src: url(/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-9d0af44a.ttf) format('woff2');
228  unicode-range: U+1F00-1FFF;
229}
230/* greek */
231@font-face {
232  font-family: 'Inter';
233  font-style: normal;
234  font-weight: 500;
235  font-display: swap;
236  src: url(/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-1e6d76eb.ttf) format('woff2');
237  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
238}
239/* vietnamese */
240@font-face {
241  font-family: 'Inter';
242  font-style: normal;
243  font-weight: 500;
244  font-display: swap;
245  src: url(/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-dc295d33.ttf) format('woff2');
246  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
247}
248/* latin-ext */
249@font-face {
250  font-family: 'Inter';
251  font-style: normal;
252  font-weight: 500;
253  font-display: swap;
254  src: url(/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-313a9b5f.ttf) format('woff2');
255  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
256}
257/* latin */
258@font-face {
259  font-family: 'Inter';
260  font-style: normal;
261  font-weight: 500;
262  font-display: swap;
263  src: url(/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-456bc9d1.ttf) format('woff2');
264  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
265}
266/* cyrillic-ext */
267@font-face {
268  font-family: 'Inter';
269  font-style: normal;
270  font-weight: 600;
271  font-display: swap;
272  src: url(/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-dc3886d4.ttf) format('woff2');
273  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
274}
275/* cyrillic */
276@font-face {
277  font-family: 'Inter';
278  font-style: normal;
279  font-weight: 600;
280  font-display: swap;
281  src: url(/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-0b29b453.ttf) format('woff2');
282  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
283}
284/* greek-ext */
285@font-face {
286  font-family: 'Inter';
287  font-style: normal;
288  font-weight: 600;
289  font-display: swap;
290  src: url(/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-9d0af44a.ttf) format('woff2');
291  unicode-range: U+1F00-1FFF;
292}
293/* greek */
294@font-face {
295  font-family: 'Inter';
296  font-style: normal;
297  font-weight: 600;
298  font-display: swap;
299  src: url(/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-1e6d76eb.ttf) format('woff2');
300  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
301}
302/* vietnamese */
303@font-face {
304  font-family: 'Inter';
305  font-style: normal;
306  font-weight: 600;
307  font-display: swap;
308  src: url(/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-dc295d33.ttf) format('woff2');
309  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
310}
311/* latin-ext */
312@font-face {
313  font-family: 'Inter';
314  font-style: normal;
315  font-weight: 600;
316  font-display: swap;
317  src: url(/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-313a9b5f.ttf) format('woff2');
318  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1D
318BF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
319}
320/* latin */
321@font-face {
322  font-family: 'Inter';
323  font-style: normal;
324  font-weight: 600;
325  font-display: swap;
326  src: url(/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-456bc9d1.ttf) format('woff2');
327  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
328}
329/* cyrillic-ext */
330@font-face {
331  font-family: 'Inter';
332  font-style: normal;
333  font-weight: 700;
334  font-display: swap;
335  src: url(/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-dc3886d4.ttf) format('woff2');
336  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
337}
338/* cyrillic */
339@font-face {
340  font-family: 'Inter';
341  font-style: normal;
342  font-weight: 700;
343  font-display: swap;
344  src: url(/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-0b29b453.ttf) format('woff2');
345  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
346}
347/* greek-ext */
348@font-face {
349  font-family: 'Inter';
350  font-style: normal;
351  font-weight: 700;
352  font-display: swap;
353  src: url(/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-9d0af44a.ttf) format('woff2');
354  unicode-range: U+1F00-1FFF;
355}
356/* greek */
357@font-face {
358  font-family: 'Inter';
359  font-style: normal;
360  font-weight: 700;
361  font-display: swap;
362  src: url(/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-1e6d76eb.ttf) format('woff2');
363  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
364}
365/* vietnamese */
366@font-face {
367  font-family: 'Inter';
368  font-style: normal;
369  font-weight: 700;
370  font-display: swap;
371  src: url(/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-dc295d33.ttf) format('woff2');
372  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
373}
374/* latin-ext */
375@font-face {
376  font-family: 'Inter';
377  font-style: normal;
378  font-weight: 700;
379  font-display: swap;
380  src: url(/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-313a9b5f.ttf) format('woff2');
381  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
382}
383/* latin */
384@font-face {
385  font-family: 'Inter';
386  font-style: normal;
387  font-weight: 700;
388  font-display: swap;
389  src: url(/assets/_vinext_fonts/inter-0c6ec1a12c79/inter-456bc9d1.ttf) format('woff2');
390  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
391}
392
393@font-face {
394  font-family: 'Inter Fallback';
395  src: local("Arial");
396  ascent-override: 90.44%;
397  descent-override: 22.52%;
398  line-gap-override: 0.00%;
399  size-adjust: 107.12%;
400}
401
402.__font_inter_141arv0 { font-family: 'Inter', 'Inter Fallback'; font-style: normal; }
403
404.__variable_inter_141arv0 { --font-sans: 'Inter', 'Inter Fallback'; }
405
406/* cyrillic-ext */
407@font-face {
408  font-family: 'JetBrains Mono';
409  font-style: normal;
410  font-weight: 400;
411  font-display: swap;
412  src: url(/assets/_vinext_fonts/jetbrains-mono-80382cb6cd33/jetbrains-mono-982bf4a9.woff2) format('woff2');
413  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
414}
415/* cyrillic */
416@font-face {
417  font-family: 'JetBrains Mono';
418  font-style: normal;
419  font-weight: 400;
420  font-display: swap;
421  src: url(/assets/_vinext_fonts/jetbrains-mono-80382cb6cd33/jetbrains-mono-ffa6bbab.woff2) format('woff2');
422  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
423}
424/* greek */
425@font-face {
426  font-family: 'JetBrains Mono';
427  font-style: normal;
428  font-weight: 400;
429  font-display: swap;
430  src: url(/assets/_vinext_fonts/jetbrains-mono-80382cb6cd33/jetbrains-mono-9cb20f35.woff2) format('woff2');
431  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
432}
433/* vietnamese */
434@font-face {
435  font-family: 'JetBrains Mono';
436  font-style: normal;
437  font-weight: 400;
438  font-display: swap;
439  src: url(/assets/_vinext_fonts/jetbrains-mono-80382cb6cd33/jetbrains-mono-8ea5e194.w
439off2) format('woff2');
440  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
441}
442/* latin-ext */
443@font-face {
444  font-family: 'JetBrains Mono';
445  font-style: normal;
446  font-weight: 400;
447  font-display: swap;
448  src: url(/assets/_vinext_fonts/jetbrains-mono-80382cb6cd33/jetbrains-mono-76306ee8.woff2) format('woff2');
449  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
450}
451/* latin */
452@font-face {
453  font-family: 'JetBrains Mono';
454  font-style: normal;
455  font-weight: 400;
456  font-display: swap;
457  src: url(/assets/_vinext_fonts/jetbrains-mono-80382cb6cd33/jetbrains-mono-1cd702cd.woff2) format('woff2');
458  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
459}
460/* cyrillic-ext */
461@font-face {
462  font-family: 'JetBrains Mono';
463  font-style: normal;
464  font-weight: 500;
465  font-display: swap;
466  src: url(/assets/_vinext_fonts/jetbrains-mono-80382cb6cd33/jetbrains-mono-982bf4a9.woff2) format('woff2');
467  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
468}
469/* cyrillic */
470@font-face {
471  font-family: 'JetBrains Mono';
472  font-style: normal;
473  font-weight: 500;
474  font-display: swap;
475  src: url(/assets/_vinext_fonts/jetbrains-mono-80382cb6cd33/jetbrains-mono-ffa6bbab.woff2) format('woff2');
476  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
477}
478/* greek */
479@font-face {
480  font-family: 'JetBrains Mono';
481  font-style: normal;
482  font-weight: 500;
483  font-display: swap;
484  src: url(/assets/_vinext_fonts/jetbrains-mono-80382cb6cd33/jetbrains-mono-9cb20f35.woff2) format('woff2');
485  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
486}
487/* vietnamese */
488@font-face {
489  font-family: 'JetBrains Mono';
490  font-style: normal;
491  font-weight: 500;
492  font-display: swap;
493  src: url(/assets/_vinext_fonts/jetbrains-mono-80382cb6cd33/jetbrains-mono-8ea5e194.woff2) format('woff2');
494  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
495}
496/* latin-ext */
497@font-face {
498  font-family: 'JetBrains Mono';
499  font-style: normal;
500  font-weight: 500;
501  font-display: swap;
502  src: url(/assets/_vinext_fonts/jetbrains-mono-80382cb6cd33/jetbrains-mono-76306ee8.woff2) format('woff2');
503  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
504}
505/* latin */
506@font-face {
507  font-family: 'JetBrains Mono';
508  font-style: normal;
509  font-weight: 500;
510  font-display: swap;
511  src: url(/assets/_vinext_fonts/jetbrains-mono-80382cb6cd33/jetbrains-mono-1cd702cd.woff2) format('woff2');
512  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
513}
514
515@font-face {
516  font-family: 'JetBrains Mono Fallback';
517  src: local("Arial");
518  ascent-override: 75.79%;
519  descent-override: 22.29%;
520  line-gap-override: 0.00%;
521  size-adjust: 134.59%;
522}
523
524.__font_jetbrains_mono_1oeauku { font-family: 'JetBrains Mono', 'JetBrains Mono Fallback'; font-style: normal; }
525
526.__variable_jetbrains_mono_1oeauku { --font-mono: 'JetBrains Mono', 'JetBrains Mono Fallback'; }
527</style>
528</head><body>
528<script>((e, i, s, u, m, a, l, h) => {
529	let d = document.documentElement, w = ["light", "dark"];
530	function p(n) {
531		(Array.isArray(e) ? e : [e]).forEach((y) => {
532			let k = y === "class", S = k && a ? m.map((f) => a[f] || f) : m;
533			k ? (d.classList.remove(...S), d.classList.add(a && a[n] ? a[n] : n)) : d.setAttribute(y, n);
534		}), R(n);
535	}
536	function R(n) {
537		h && w.includes(n) && (d.style.colorScheme = n);
538	}
539	function c() {
540		return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
541	}
542	if (u) p(u);
543	else try {
544		let n = localStorage.getItem(i) || s;
545		p(l && n === "system" ? c() : n);
546	} catch (n) {}
547})("class","theme","dark","dark",["light","dark"],null,true,true)</script>
547<div class="mkt"><nav class="nav nav-dark" id="nav"><a href="/" class="wordmark on-dark"><span>Magi</span><span class="accent">Box</span></a><div class="nav-links"><a href="#capabilities">Product</a><a href="#audience">Solutions</a><a href="#pricing">Pricing</a><a href="#faq">FAQ</a></div><div class="nav-right"><a href="/login" class="nav-login">Login</a><a href="/apply" class="btn-aurora nav-cta">Apply now</a><button class="mobile-toggle" aria-label="Menu" id="mobile-toggle"><span></span><span></span><span></span></button></div></nav></div><main class="marketing-root m-apply-page"><section class="m-apply-shell" style="padding-top:72px" aria-labelledby="apply-title"><div class="m-apply-copy"><div class="m-apply-kicker"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-building2 lucide-building-2" aria-hidden="true"><path d="M10 12h4"></path><path d="M10 8h4"></path><path d="M14 21v-3a2 2 0 0 0-4 0v3"></path><path d="M6 10H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2"></path><path d="M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16"></path></svg><span>BECOME A PARTNER</span></div><h1 id="apply-title" class="m-apply-title display">Bring MagiBox to your market</h1><p class="m-apply-sub">Tell us about your brand and region. Our partnership team reviews every application personally.</p><div class="m-apply-access"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield-check" aria-hidden="true"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path><path d="m9 12 2 2 4-4"></path></svg><div><strong>No console role yet</strong><p>If you arrived here after sign-in, your account is active but has not been assigned as admin, partner, or teacher.</p></div></div><div class="m-apply-timeline" aria-label="Application steps"><div class="m-apply-step"><span class="m-apply-step-index">01</span><div><strong>Tell us the market</strong><p>Brand, region, contact, expected scale.</p></div></div><div class="m-apply-step"><span class="m-apply-step-index">02</span><div><strong>Partnership call</strong><p>A real discussion about territory and rollout.</p></div></div><div class="m-apply-step"><span class="m-apply-step-index">03</span><div><strong>Console setup</strong><p>Approved partners receive the partner console.</p></div></div></div><div class="m-apply-note"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock3 lucide-clock-3" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M12 6v6h4"></path></svg><span>Applications go to the partnership team. We review the market fit, then open the right console after approval.</span></div></div><div class="m-apply-card"><form class="m-demo-form m-apply-form" noValidate=""><div class="m-demo-eyebrow">BECOME A PARTNER</div><h2 id="m-franchise-title" class="m-demo-title display">Submit application</h2><p class="m-demo-sub">Leave the partner details here. The team will reply by email.</p><input type="text" tabindex="-1" autoComplete="off" class="m-demo-honeypot" aria-hidden="true" name="website" value=""/><div class="m-demo-grid"><label class="m-demo-field "><span class="m-demo-label">Brand / company<span class="m-demo-req"> *</span></span><input type="text" required="" maxLength="120" class="m-demo-input" value=""/></label><label class="m-demo-field "><span class="m-demo-label">Contact name<span class="m-demo-req"> *</span></span><input type="text" required="" maxLength="80" class="m-demo-input" value=""/></label><label class="m-demo-field "><span class="m-demo-label">Phone<span class="m-demo-req"> *</span></span><input type="tel" required="" maxLength="40" class="m-demo-input" placeholder="+65 8000 0000" value=""/></label><label class="m-demo-field "><span class="m-demo-label">Work email<span class="m-demo-req"> *</span></span><input type="email" required="" maxLength="200" class="m-demo-input" value=""/></label><label class="m-demo-field "><span class="m-demo-label">Country<span class="m-demo-req"> *</span></span><select required="" class="m-demo-input"><option value="Singapore" selected="">Singapore</option><option value="Malaysia">Malaysia</option><option value="Thailand">Thailand</option><option value="Indonesia">Indonesia</option><option value="Vietnam">Vietnam</option><option value="Philippines">Philippines</option><option value="Australia">Australia</option><option value="New Zealand">New Zealand</option><option value="Hong Kong">Hong Kong</option><option value="Taiwan">Taiwan</option><option value="Japan">Japan</option><option value="South Korea">South Korea</option><option value="India">India</option><option value="United Arab Emirates">United Arab Emirates</option><option value="Saudi Arabia">Saudi Arabia</option><option value="United Kingdom">United Kingdom</option><option value="United States">United States</option><option value="Canada">Canada</option><option value="Brazil">Brazil</option><option value="Mexico">Mexico</option><option value="Other">Other</option></select></label><label class="m-demo-field "><span class="m-demo-label">Expected scale<span class="m-demo-hint"> · <!-- -->optional</span></span><input type="number" min="1" max="100000" class="m-demo-input" placeholder="e.g. 10 campuses" value=""/></label><label class="m-demo-field is-full"><span class="m-demo-label">Tell us about your plans<span class="m-demo-hint"> · <!-- -->optional</span></span><textarea rows="3" maxLength="2000" class="m-demo-input m-demo-textarea" placeholder="Territory, timeline, existing courses…"></textarea></label></div><div class="m-demo-actions"><button type="submit" class="m-aurora-btn"><span style="position:relative;z-index:1">Submit application</span></button></div><div class="m-demo-fineprint">We only use your details to review your application.</div></form></div></section></main><div class="mkt"><footer class="footer"><div style="max-width:1280px;margin:0 auto"><div class="top"><div><div class="word"><span style="color:#fff">Magi</span><span class="accent" style="background:var(--aurora);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;font-weight:600">Box</span><span class="zh">魔力盒子</span></div><div class="desc">Encrypted content for serious educators. Built in Singapore, deployed across Southeast Asia and Australia.</div></div><div class="locations">Singapore · Kuala Lumpur · Sydney</div></div><div class="cols"><div class="col"><div class="col-title">Product</div><ul><li><a href="#capabilities">Features</a></li><li><a href="#pricing">Pricing</a></li><li><a href="/download">Download</a></li><li><a href="/login">Login</a></li></ul></div><div class="col"><div class="col-title">Solutions</div><ul><li><a href="#audience">Cross-border brands</a></li><li><a href="#audience">Multi-campus chains</a></li><li><a href="#audience">Solo teachers</a></li><li><a href="#audience">Schools &amp; universities</a></li><li><a href="#audience">Corporate L&amp;D</a></li><li><a href="#audience">Multi-location display</a></li></ul></div><div class="col"><div class="col-title">Company</div><ul><li><a href="#audience">About</a></li><li><a href="/security-policy">Trust report</a></li></ul></div><div class="col"><div class="col-title">Connect</div><ul><li><a href="mailto:[email protected]">[email protected]</a></li></ul></div></div><div class="legal"><div>Powered by TAFA Holding · © 2026</div><div style="display:flex;gap:24px"><a href="/privacy">Privacy</a><a href="/terms">Terms</a><a href="/security-policy">Security</a><a href="/pdpa">PDPA</a></div></div></div></footer></div>
547<section aria-label="Notifications alt+T" tabindex="-1" aria-live="polite" aria-relevant="additions text" aria-atomic="false"></section>
547<script type="module" src="/assets/index-D8ZtqKNp.js" id="_R_" async=""></script>
547</body></html>
547<script>self.__VINEXT_RSC_CHUNKS__=self.__VINEXT_RSC_CHUNKS__||[];self.__VINEXT_RSC_CHUNKS__.push("2:I[\"b72e7bff95a4\",[],\"Children\",1]\n5:I[\"06fab0bb51be\",[],\"ErrorBoundary\",1]\n6:I[\"65c11b515bcb\",[],\"default\",1]\n7:I[\"96e769995773\",[],\"LayoutSegmentProvider\",1]\n8:I[\"b72e7bff95a4\",[],\"Slot\",1]\n9:I[\"782fd804d300\",[],\"default\",1]\na:I[\"3e6c4f142dfa\",[],\"default\",1]\nb:I[\"06fab0bb51be\",[],\"RedirectBoundary\",1]\n:HL[\"/assets/index-BxiNFTqZ.css\",\"style\"]\n")</script>
547<script>self.__VINEXT_RSC_CHUNKS__=self.__VINEXT_RSC_CHUNKS__||[];self.__VINEXT_RSC_CHUNKS__.push("0:{\"__route\":\"route:/en/apply\",\"__interceptionContext\":null,\"__layoutIds\":[\"layout:/\",\"layout:/[locale]\",\"layout:/[locale]/(marketing)\"],\"__rootLayout\":\"/\",\"page:/en/apply\":\"$L1\",\"layout:/\":[[[[\"$\",\"link\",\"css:/assets/index-BxiNFTqZ.css\",{\"rel\":\"stylesheet\",\"precedence\":\"vite-rsc/importer-resources\",\"href\":\"/assets/index-BxiNFTqZ.css\",\"data-rsc-css-href\":\"/assets/index-BxiNFTqZ.css\"}],\"$undefined\"],[\"$\",\"html\",null,{\"className\":\"__variable_newsreader_0kl6abh __variable_inter_141arv0 __variable_jetbrains_mono_1oeauku\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"$L2\",null,{}]}]}]],null],\"layout:/[locale]\":\"$L3\",\"layout:/[locale]/(marketing)\":\"$L4\",\"route:/en/apply\":[[[\"$\",\"meta\",null,{\"charSet\":\"utf-8\"}],[[\"$\",\"title\",\"0\",{\"children\":\"MagiBox · Encrypted content for educators\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"The encrypted content platform for serious educators. Built in Singapore, deployed across Southeast Asia and Australia.\"}],[\"$\",\"meta\",\"2\",{\"property\":\"og:title\",\"content\":\"MagiBox · Encrypted content for educators\"}],[\"$\",\"meta\",\"3\",{\"property\":\"og:description\",\"content\":\"Teach anywhere. Keep everything.\"}],[\"$\",\"meta\",\"4\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"5\",{\"name\":\"twitter:card\",\"content\":\"summary\"}],[\"$\",\"meta\",\"6\",{\"name\":\"twitter:title\",\"content\":\"MagiBox · Encrypted content for educators\"}],[\"$\",\"meta\",\"7\",{\"name\":\"twitter:description\",\"content\":\"Teach anywhere. Keep everything.\"}],[\"$\",\"link\",\"8\",{\"rel\":\"icon\",\"href\":\"https://magibox.ai/favicon.ico\"}]],[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]],[\"$\",\"$L5\",null,{\"fallback\":\"$6\",\"children\":[\"$\",\"$L7\",null,{\"segmentMap\":{\"children\":[\"en\",\"(marketing)\",\"apply\"]},\"children\":[\"$\",\"$L8\",null,{\"id\":\"layout:/\",\"parallelSlots\":\"$undefined\",\"children\":[\"$\",\"$L5\",null,{\"resetKey\":\"locale|en|d\",\"fallback\":\"$9\",\"children\":[\"$\",\"$L7\",null,{\"segmentMap\":{\"children\":[\"(marketing)\",\"apply\"]},\"children\":[\"$\",\"$L8\",null,{\"id\":\"layout:/[locale]\",\"parallelSlots\":\"$undefined\",\"children\":[\"$\",\"$L5\",null,{\"resetKey\":\"apply\",\"fallback\":\"$a\",\"children\":[\"$\",\"$L7\",null,{\"segmentMap\":{\"children\":[\"apply\"]},\"children\":[\"$\",\"$L8\",null,{\"id\":\"layout:/[locale]/(marketing)\",\"parallelSlots\":\"$undefined\",\"children\":[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"$L7\",null,{\"segmentMap\":{\"children\":[]},\"children\":[\"$\",\"$L8\",null,{\"id\":\"page:/en/apply\"}]}]}]}]}]}]}]}]}]}]}]}]],\"__layoutFlags\":{\"layout:/[locale]/(marketing)\":\"s\",\"layout:/[locale]\":\"d\",\"layout:/\":\"s\"},\"__artifactCompatibility\":{\"schemaVersion\":1,\"graphVersion\":\"app-route-graph:108tz301784jmc\",\"deploymentVersion\":\"fb5cff5a-1dbc-4acf-aeb7-5e7cbfb1b943\",\"appElementsSchemaVersion\":1,\"rscPayloadSchemaVersion\":1,\"rootBoundaryId\":\"/\",\"renderEpoch\":null},\"__renderObservation\":{\"schemaVersion\":1,\"output\":{\"kind\":\"app-rsc\",\"mountedSlotsFingerprint\":null,\"renderEpoch\":null,\"rootBoundaryId\":\"/\",\"routeId\":\"route:/en/apply\"},\"completeness\":\"partial\",\"boundaryOutcome\":{\"kind\":\"unknown\"},\"requestApis\":[{\"kind\":\"connection\",\"status\":\"unknown\"},{\"kind\":\"cookies\",\"status\":\"unknown\"},{\"kind\":\"draftMode\",\"status\":\"unknown\"},{\"kind\":\"headers\",\"status\":\"observed\"},{\"kind\":\"params\",\"status\":\"observed\"},{\"kind\":\"searchParams\",\"status\":\"unknown\"}],\"dynamicFetches\":[],\"cacheTags\":[\"/en/apply\",\"_N_T_/[locale]/(marketing)/apply/layout\",\"_N_T_/[locale]/(marketing)/apply/page\",\"_N_T_/[locale]/(marketing)/layout\",\"_N_T_/[locale]/layout\",\"_N_T_/en/apply\",\"_N_T_/layout\"],\"pathTags\":[\"/en
547/apply\"],\"cacheability\":\"unknown\",\"downgrade\":{\"target\":\"freshRender\",\"reasons\":[{\"code\":\"CP_DOWNGRADE_CACHEABILITY_UNKNOWN\",\"target\":\"freshRender\"},{\"code\":\"CP_DOWNGRADE_INCOMPLETE_OBSERVATION\",\"completeness\":\"partial\",\"target\":\"freshRender\"},{\"code\":\"CP_DOWNGRADE_UNKNOWN_REQUEST_API\",\"requestApi\":\"connection\",\"target\":\"freshRender\"},{\"code\":\"CP_DOWNGRADE_UNKNOWN_REQUEST_API\",\"requestApi\":\"cookies\",\"target\":\"freshRender\"},{\"code\":\"CP_DOWNGRADE_UNKNOWN_REQUEST_API\",\"requestApi\":\"draftMode\",\"target\":\"freshRender\"},{\"code\":\"CP_DOWNGRADE_PRIVATE_REQUEST_API\",\"requestApi\":\"headers\",\"target\":\"private\"},{\"code\":\"CP_DOWNGRADE_PUBLIC_REQUEST_API\",\"requestApi\":\"params\",\"target\":\"publicVariant\"},{\"code\":\"CP_DOWNGRADE_UNKNOWN_REQUEST_API\",\"requestApi\":\"searchParams\",\"target\":\"freshRender\"}],\"fallback\":{\"kind\":\"breakerFallback\",\"code\":\"CP_PRIVATE_DYNAMIC_DOWNGRADE\",\"mode\":\"renderFresh\",\"scope\":\"affectedOutput\",\"fields\":{\"reasonCodes\":[\"CP_DOWNGRADE_CACHEABILITY_UNKNOWN\",\"CP_DOWNGRADE_INCOMPLETE_OBSERVATION\",\"CP_DOWNGRADE_UNKNOWN_REQUEST_API\",\"CP_DOWNGRADE_UNKNOWN_REQUEST_API\",\"CP_DOWNGRADE_UNKNOWN_REQUEST_API\",\"CP_DOWNGRADE_PRIVATE_REQUEST_API\",\"CP_DOWNGRADE_PUBLIC_REQUEST_API\",\"CP_DOWNGRADE_UNKNOWN_REQUEST_API\"],\"target\":\"freshRender\"}},\"isPublicCacheCandidate\":false}}}\n3:[\"$Lc\",null]\n4:[[[[\"$\",\"link\",\"css:/assets/index-BxiNFTqZ.css\",{\"rel\":\"stylesheet\",\"precedence\":\"vite-rsc/importer-resources\",\"href\":\"/assets/index-BxiNFTqZ.css\",\"data-rsc-css-href\":\"/assets/index-BxiNFTqZ.css\"}],\"$undefined\"],[\"$\",\"$L2\",null,{}]],null]\nd:I[\"01f43c51c4f4\",[],\"default\",1]\n1:[\"$\",\"$Ld\",null,{\"params\":\"$@e\",\"searchParams\":\"$@f\"}]\ne:{\"locale\":\"en\"}\nf:{}\n10:I[\"1443b972b643\",[],\"default\",1]\n")</script>
547<script>self.__VINEXT_RSC_CHUNKS__=self.__VINEXT_RSC_CHUNKS__||[];self.__VINEXT_RSC_CHUNKS__.push("c:[\"$\",\"$L10\",null,{\"formats\":\"$undefined\",\"locale\":\"en\",\"messages\":{\"brand\":{\"name\":\"MagiBox\",\"tagline\":\"Integrated Training-School Platform\",\"console\":\"HQ Admin Console\",\"enterprise\":\"ENTERPRISE CONSOLE\",\"copyright\":\"© MagiBox\"},\"common\":{\"loading\":\"Loading...\",\"confirm\":\"Confirm\",\"cancel\":\"Cancel\",\"save\":\"Save\",\"submit\":\"Submit\",\"add\":\"Add\",\"create\":\"Create\",\"edit\":\"Edit\",\"delete\":\"Delete\",\"detail\":\"Details\",\"search\":\"Search\",\"filter\":\"Filter\",\"reset\":\"Reset\",\"refresh\":\"Refresh\",\"upload\":\"Upload\",\"download\":\"Download\",\"enable\":\"Enable\",\"disable\":\"Disable\",\"actions\":\"Actions\",\"status\":\"Status\",\"all\":\"All\",\"yes\":\"Yes\",\"no\":\"No\",\"name\":\"Name\",\"phone\":\"Phone\",\"email\":\"Email\",\"address\":\"Address\",\"remark\":\"Remark\",\"createdAt\":\"Created\",\"updatedAt\":\"Updated\",\"expiresAt\":\"Expires\",\"viewAll\":\"View all\",\"seeMore\":\"See more\",\"empty\":\"No data\",\"success\":\"Success\",\"failed\":\"Failed\",\"pageError\":\"Something went wrong\",\"unknownError\":\"Unexpected error. Please try again.\",\"retry\":\"Retry\",\"welcome\":\"Welcome\",\"welcomeBack\":\"Welcome back\",\"today\":\"Today\",\"days\":\"days\",\"item\":\"item(s)\",\"pcs\":\"\",\"persons\":\"\",\"devices\":\"\",\"pieces\":\"\",\"permanent\":\"Permanent\",\"expired\":\"Expired\",\"expiring\":\"Expiring\",\"normal\":\"Normal\",\"pending\":\"Pending\",\"approved\":\"Approved\",\"rejected\":\"Rejected\",\"enabled\":\"Enabled\",\"disabled\":\"Disabled\",\"handle\":\"Handle\",\"validation\":{\"required\":\"This field is required\",\"invalidPhone\":\"Invalid phone number\",\"invalidEmail\":\"Invalid email address\",\"tooLong\":\"At most {max} characters\",\"tooShort\":\"At least {min} characters\",\"selectRequired\":\"Please select an option\",\"invalidNumber\":\"Please enter a number\",\"outOfRange\":\"Enter a number between {min} and {max}\",\"positiveInteger\":\"Enter a whole number greater than 0\",\"endBeforeStart\":\"End date cannot be earlier than start date\"}},\"nav\":{\"dashboard\":\"Dashboard\",\"content\":\"Content\",\"campusOps\":\"Campus Operations\",\"messages\":\"Messages\",\"announcements\":\"Announcements\",\"campus\":\"Campuses\",\"campusTeachers\":\"Teachers\",\"devices\":\"Devices\",\"securityAudit\":\"Security Audit\",\"coursesPackages\":\"Course Packs\",\"coursesAuth\":\"Authorization\",\"studentWorks\":\"Student Works\",\"todos\":\"Tasks\",\"users\":\"Staff\",\"usersList\":\"Staff List\",\"usersRoles\":\"Roles \u0026 Permissions\",\"settings\":\"Settings\",\"portalOverview\":\"Overview\",\"portalCourses\":\"Courses\",\"portalTeachers\":\"Teachers\",\"portalRoles\":\"Roles\",\"portalDevices\":\"Devices\",\"portalWorks\":\"Student Works\",\"teacherDashboard\":\"Dashboard\",\"teacherCourses\":\"My Courses\",\"teacherProgress\":\"Progress\",\"teacherWorks\":\"Student Works\",\"profile\":\"Profile\",\"pendingN\":\"{n} pending\",\"pendingSome\":\"Has pending items\"},\"header\":{\"searchTooltip\":\"Global search (⌘K)\",\"notifyNone\":\"No pending tasks\",\"notifyN\":\"{n, plural, one {{n} pending task} other {{n} pending tasks}}\",\"profile\":\"Profile\",\"logout\":\"Sign out\",\"campus\":{\"current\":\"Current campus\",\"listLabel\":\"Assigned campuses\",\"currentTag\":\"Current\",\"switchLabel\":\"Switch campus, currently {campus}\",\"switched\":\"Switched to {campus}\",\"loadFailed\":\"Failed to load campuses\",\"retry\":\"Retry\",\"fallback\":\"Campus #{id}\"},\"role\":{\"admin\":\"Admin\",\"super\":\"Super Admin\",\"researcher\":\"Course Specialist\",\"leader\":\"Course Lead\",\"operator\":\"Operations\",\"franchisee\":\"Partner\",\"master\":\"Campus Master\",\"teacher\":\"Teacher\"}},\"login\":{\"signInLabel\":\"SIGN IN\",\"welcomeBack\":\"Welcome back\",\"subtitle\":\"Sign in with your account (phone or email) and password.\",\"phone\":\"Phone / Email\",\"password\":\"Password\",\"phonePlaceholder\":\"Enter your phone or email\",\"passwordPlaceholder\":\"••••••••\",\"showPassword\":\"Show password\",\"hidePassword\":\"Hide password\",\"phoneRequired\":\"Please enter your phone or email\",\"passwordRequired\":\"Please enter your password\",\"submit\":\"Sign In\",\"submitting\":\"Signing in…\",\"welcomeUser\":\"Welcome back, {name}\",\"heroTitleA\":\"The digital backbone\",\"heroTitleB\":\"for franchise schools\",\"heroSub\":\"End-to-end courseware lifecycle · multi-device sync · encrypted delivery\",\"feat1Title\":\"Unified courseware delivery\",\"feat1Sub\":\"PC · Mobile · TV\",\"feat2Title\":\"Multi-campus license control\",\"feat2Sub\":\"Devices + Geo + Term\",\"feat3Title\":\"Screenshot \u0026 record protection\",\"feat3Sub\":\"OS-level DRM encryption\",\"demoLabel\":\"Demo account\",\"demoText\":\"Phone {phone} · Password {pwd}\",\"email\":\"Email\",\"emailPlaceholder\":\"Enter your email\",\"emailRequired\":\"Please enter your email\",\"signInWithGoogle\":\"Sign in with Google\",\"orDivider\":\"or\",\"selfRegisterHint\":\"Don't have an account?\",\"selfRegisterLink\":\"Sign up now\",\"registerHint\":\"Want to become a partner?\",\"registerLink\":\"Apply for franchise\",\"registerPageTitle\":\"Create your account\",\"registerPageSubtitle\":\"Sign up first — you can sign in once an administrator grants 
547your access\",\"name\":\"Name\",\"namePlaceholder\":\"Enter your name\",\"nameRequired\":\"Please enter your name\",\"confirmPassword\":\"Confirm password\",\"confirmPasswordPlaceholder\":\"Re-enter your password\",\"confirmPasswordRequired\":\"Please confirm your password\",\"passwordMismatch\":\"Passwords do not match\",\"passwordTooShort\":\"Password must be at least 6 characters\",\"registerSubmit\":\"Sign Up\",\"registerSubmitting\":\"Signing up…\",\"registerSuccess\":\"Registration successful! Please wait for an administrator to grant access, then sign in.\",\"registerFail\":\"Registration failed. Please try again.\",\"backToLoginHint\":\"Already have an account?\",\"backToLoginLink\":\"Sign in\",\"suspendedTitle\":\"Account suspended\",\"suspendedDesc\":\"This account has been suspended and cannot access the system. Contact head office to restore it.\",\"authFailed\":\"Sign-in failed. Please try again.\",\"chooseCampusTitle\":\"Choose a campus\",\"chooseCampusDescription\":\"Choose the campus for this session. Every request is checked against your active assignment.\",\"campusFallback\":\"Campus #{id}\"},\"dashboard\":{\"badge\":\"Dashboard · {date}\",\"welcomeName\":\"Welcome back, {name}\",\"summary\":\"{n, plural, one {{n} task needs your attention today} other {{n} tasks need your attention today}}\",\"summaryWithExpire\":\"{todo, plural, one {{todo} task} other {{todo} tasks}} pending · {port, plural, one {{port} license} other {{port} licenses}} expiring soon\",\"viewAllTodos\":\"View all tasks\",\"createPackage\":\"New Course Pack\",\"cards\":{\"campuses\":\"Total Campuses\",\"activePorts\":\"Active Licenses\",\"packages\":\"Course Packs\",\"teachers\":\"Teachers\",\"pendingDevices\":\"Devices Pending\",\"works\":\"Student Works\",\"expiringTag\":\"{n} expiring\",\"needApproval\":\"Awaiting principal approval\",\"thisWeekUp\":\"+{n} this week\",\"live\":\"Live\"},\"portAlerts\":{\"title\":\"License Expiry Alerts\",\"empty\":\"No upcoming expirations\",\"expired\":\"Expired\",\"daysLeft\":\"{n}d left\"},\"todos\":{\"title\":\"Tasks\",\"empty\":\"No pending tasks\"},\"storage\":{\"title\":\"Storage\",\"remaining\":\"{gb} GB free · healthy\"},\"quick\":{\"title\":\"Quick Actions\",\"campus\":\"Campus\",\"package\":\"Pack\",\"device\":\"Device\",\"staff\":\"Staff\"}},\"campus\":{\"addDirect\":\"Add Direct-Operated Campus\",\"addFranchise\":\"Add Franchise Campus\",\"name\":\"Campus Name\",\"address\":\"Address\",\"owner\":\"Principal\",\"ownerPhone\":\"Principal Phone\",\"enrollment\":\"Enrollment\",\"enrollmentOk\":\"Open\",\"enrollmentFull\":\"Capacity Reached\",\"daysLeft\":\"Days Left\",\"pendingDevices\":\"Devices Pending\",\"authCount\":\"Authorizations\",\"teacherCount\":\"Teachers\",\"contractStart\":\"Contract Start\",\"renew\":\"Renew License\",\"suspend\":\"Suspend\"},\"course\":{\"package\":\"Course Pack\",\"bigPackage\":\"Master Pack\",\"subPackage\":\"Module\",\"courseware\":\"Lesson\",\"create\":\"New Course Pack\",\"createSub\":\"New Module\",\"createCourseware\":\"New Lesson\",\"publish\":\"Publish\",\"audit\":\"Review\",\"pass\":\"Approve\",\"reject\":\"Send Back\",\"fullPackageAuth\":\"Full Pack\",\"coverImage\":\"Cover Image\",\"intro\":\"Description\",\"attachment\":\"Attachments\",\"levels2\":\"2-Level\",\"levels3\":\"3-Level\",\"statusDraft\":\"Draft\",\"statusUnpublished\":\"Unpublished\",\"statusPending\":\"Pending Review\",\"statusApproved\":\"Approved\"},\"credential\":{\"title\":{\"created\":\"Account created\",\"reset\":\"Password reset\",\"reinstated\":\"Reinstated — pass on the new password\"},\"hint\":{\"created\":\"Hand these credentials to the account holder. The password is shown in plain text only once and cannot be retrieved after you close this dialog.\",\"reset\":\"The new password is active and the old one stopped working immediately. Hand these credentials over — shown only once.\",\"reinstated\":\"Their old password was revoked while they were disabled. They need the new password below to sign in again — shown only once.\",\"linked\":\"This account had already self-registered, so it keeps its existing password and no new one was generated — tell them to sign in with the password they already have.\",\"linkedGoogle\":\"This account signed up with Google, so there is no password to hand over — tell them to use \\\"Sign in with Google\\\".\"},\"login\":\"Login\",\"password\":\"New password\",\"initialPassword\":\"Initial password\",\"copy\":\"Copy\",\"copied\":\"Copied\",\"copyFailed\":\"Copy failed — please select and copy manually\",\"done\":\"Done\"},\"device\":{\"title\":\"Device Management\",\"code\":\"Device Code\",\"deviceName\":\"Device Name\",\"location\":\"Location\",\"lastOnline\":\"Last Online\",\"applicant\":\"Requested By\",\"pc\":\"PC\",\"app\":\"Mobile\",\"tv\":\"TV\",\"approve\":\"Approve\",\"suspend\":\"Disable\"},\"download\":{\"title\":\"Download MagiBox AI\",\"desktopHeading\":\"Desktop\",\"desktopComingSoon\":\"Coming soon\",\"windows\":\"Windows\",\"windowsDesc\":\"Windows 10 / 11 (64-bit)\",\"macArm\":\"macOS (Apple Silicon)\",\"macArmDesc\":\"M1 / M2 / M3 / M4\",\"macIntel\":\"macOS (Intel)\",\"macIntelDesc\":\"Intel-based Mac\",\"tvHeading\":\"Classroom TV\",\"tvSubheading\":\"For setting up a new TV. After that the TV updates itself — no USB drive needed.\",\"tvVersion\":\"Version {version}\",\"tvSize\":\"{size} MB\",\"tvDownloadApk\":\"Download APK\",\"tvWhatsNew\":\"What's new\",\"tvChecksum\":\"File checksum (SHA-256)\",\"tvChecksumHint\":\"Check this before installing to confirm the file was not corrupted while downloading or copying.\",\"tvUnavailable\":\"TV version information is unavailable right now. Please try again later.\",\"tvStepsHeading\":\"Installation steps\",\"tvStep1\":\"Prepare a USB drive formatted as FAT32 or exFAT.\",\"tvStep2\":\"Copy the downloaded APK onto the drive.\",\"tvStep3\":\"Plug the drive into the TV's USB port.\",\"tvStep4\":\"On the TV, open the file manager, find the APK on the drive, and press OK to install.\",\"tvStep5\":\"Open MagiBox once installed — the TV will show a six-digit code.\",\"tvStep6\":\"Enter that c
547ode on the Connect TV page in the console to bind the campus and classroom.\",\"tvUnknownSourceTitle\":\"If the TV blocks apps from unknown sources\",\"tvUnknownSourceBody\":\"On the TV, go to Settings → Accounts \u0026 Security → Install apps from unknown sources, allow it, then retry.\"},\"studentWorks\":{\"title\":\"Student Works\",\"studentName\":\"Student\",\"teacher\":\"Mentor\",\"createdDate\":\"Created On\",\"note\":\"Note\",\"recommend\":\"Submit to HQ\"},\"todos\":{\"title\":\"Tasks\",\"type\":\"Type\",\"submitter\":\"Submitted By\",\"handle\":\"Handle\"},\"tvAuth\":{\"title\":\"Connect a TV\",\"subtitle\":\"Enter the six-digit code shown on the TV.\",\"codeLabel\":\"TV code\",\"codePlaceholder\":\"000 000\",\"continue\":\"Continue\",\"loadingTitle\":\"Checking the TV\",\"loadingDescription\":\"This will only take a moment.\",\"activationBadge\":\"Device activation\",\"teacherLoginBadge\":\"Teacher login\",\"activationTitle\":\"Activate this TV\",\"activationDescription\":\"Confirm the campus and classroom for this TV.\",\"teacherLoginTitle\":\"Start class on this TV\",\"teacherLoginDescription\":\"Confirm that you want to teach with the current account.\",\"campusLabel\":\"Campus\",\"campusPlaceholder\":\"Select a campus\",\"deviceNameLabel\":\"Device name\",\"deviceNamePlaceholder\":\"Classroom TV\",\"locationLabel\":\"Classroom\",\"locationPlaceholder\":\"Room name\",\"accountLabel\":\"Current account\",\"confirmActivation\":\"Confirm activation\",\"startClass\":\"Start class\",\"cancelConnection\":\"Cancel connection\",\"submitting\":\"Connecting\",\"successTitle\":\"TV connected\",\"activationSuccess\":\"The TV is now activated.\",\"teacherLoginSuccess\":\"Your class session is ready.\",\"locationProofTitle\":\"Campus range check\",\"locationProofBeforeStart\":\"Starting the class checks your phone location once to confirm you are within the allowed campus range.\",\"deniedTitle\":\"Connection cancelled\",\"deniedDescription\":\"The TV will show a new code.\",\"connectAnother\":\"Connect another TV\",\"invalidTitle\":\"Invalid code\",\"invalidDescription\":\"Check the code and try again.\",\"expiredTitle\":\"Code expired\",\"expiredDescription\":\"Get a new code from the TV.\",\"forbiddenTitle\":\"This TV needs a campus admin to activate it\",\"forbiddenDescription\":\"Your account cannot activate this TV. Hand the phone to your campus supervisor or admin so they can scan the TV's QR code, or sign in again with an admin account.\",\"errorNoSelfServe\":\"You cannot resolve this yourself and retrying will not help. Contact head office.\",\"errorTitle\":\"Connection failed\",\"errorDescription\":\"Try again without submitting twice.\",\"networkTitle\":\"Connection unavailable\",\"networkDescription\":\"Check your network, then try again. You have not been signed out.\",\"rateLimitTitle\":\"Too many attempts\",\"rateLimitDescription\":\"Wait about 1 minute, then try this code again.\",\"serverTitle\":\"Service unavailable\",\"serverDescription\":\"The service is temporarily unavailable. Try again shortly.\",\"deviceQuotaTitle\":\"Campus device quota is full\",\"deviceQuotaDescription\":\"A new pairing code will not help. Disable a device you no longer use, or ask HQ to raise this campus quota.\",\"conflictTitle\":\"Request already handled\",\"conflictDescription\":\"Get a new code from the TV and preview it again.\",\"accountChangedTitle\":\"Account changed\",\"accountChangedDescription\":\"Your signed-in account changed. Preview the code again before approving it.\",\"serviceExpiredTitle\":\"Campus service expired\",\"serviceExpiredDescription\":\"This campus's service period has ended, so the TV cannot connect right now. Contact head office to renew, then try again.\",\"retry\":\"Retry\",\"reenterCode\":\"Re-enter the code\",\"switchAccount\":\"Sign in with a different account\",\"useAnotherCode\":\"Use another code\",\"backToDashboard\":\"Back to dashboard\",\"securityNotice\":\"Only approve the TV in front of you.\",\"alreadyHandledTitle\":\"Code already handled\",\"alreadyHandledDescription\":\"This code was already approved or denied. Get a new code from the TV and scan again.\",\"credentialStaleTitle\":\"Device credential updated\",\"credentialStaleDescription\":\"This TV credential was refreshed elsewhere, so this code no longer works. Get a new code from the TV.\",\"dataIncompleteTitle\":\"Incomplete pairing record\",\"dataIncompleteDescription\":\"The server record 
547is missing required data — a new code will not help. Send HQ the TV name and the current time so they can investigate.\",\"notActivatedTitle\":\"This TV is not activated yet\",\"notActivatedDescription\":\"A campus principal or HQ has to activate this TV before teachers can sign in on it.\",\"wrongCampusTitle\":\"Account does not belong to this campus\",\"wrongCampusDescription\":\"Switch to an account with access to this campus, or pick the campus your account belongs to.\",\"noPermissionTitle\":\"Your account lacks this permission\",\"noPermissionDescription\":\"Activating a TV needs a campus principal, franchisee, or HQ account. Switch accounts and try again.\",\"deviceOtherCampusTitle\":\"This TV belongs to another campus\",\"deviceOtherCampusDescription\":\"This TV is still registered to {campus}. Signing in with a different account or getting a new code will not help — ask head office to move the device to this campus first, then activate it again.\",\"deviceOtherCampusUnknownName\":\"another campus\",\"deviceDisabledTitle\":\"This TV has been disabled\",\"deviceDisabledDescription\":\"This TV was disabled, so it cannot be activated. Ask head office to re-enable it, then try again.\",\"locationDeniedTitle\":\"Location is blocked\",\"locationDeniedIntro\":\"This site's location permission was turned off. The browser will not ask again, so it has to be restored by hand:\",\"locationHelpWechat\":\"Tap 「…」 at the top right and open this page in the system browser. If it still fails, enable Location under WeChat → Me → Settings → Privacy → Authorisation.\",\"locationHelpIosSafari\":\"Tap 「ᴀA」 on the left of the address bar → Website Settings → Location → Allow. Then check Settings → Privacy \u0026 Security → Location Services → Safari.\",\"locationHelpAndroidChrome\":\"Tap the icon on the left of the address bar → Permissions / Site settings → Location → Allow. Then make sure Location is on in the phone's quick settings.\",\"locationHelpDesktop\":\"Click the icon at the far left of the address bar → Site settings → Location → Allow, then reload this page.\",\"locationHelpIosThirdparty\":\"Start with the system layer: iPhone Settings → Privacy \u0026 Security → Location Services → find this browser → \\\"While Using the App\\\". Then in the browser, tap the icon on the left of the address bar → Site settings → Location → Allow.\",\"locationPrimeTitle\":\"A location prompt is coming\",\"locationPrimeDescription\":\"When you tap Start class, the browser asks for permission once, to confirm you are inside the campus range. Taken once, never during the class.\",\"locationHelpUnknown\":\"Set Location to Allow for this site in the browser's site settings, then reload this page.\",\"locationRetryAfterGrant\":\"I've allowed it — try again\",\"locationUnavailableTitle\":\"Cannot get a location right now\",\"locationUnavailableDescription\":\"The phone returned no position. Check that system location is on and you are not in a weak-signal spot, then try again.\",\"locationTimeoutTitle\":\"Location timed out\",\"locationTimeoutDescription\":\"No position within 10 seconds. Moving near a window or outdoors usually fixes it.\",\"locationUnsupportedTitle\":\"This browser has no location support\",\"locationUnsupportedDescription\":\"Open this page in the phone's own browser, then start the class.\",\"locationRequiredTitle\":\"Phone location unavailable\",\"locationRequiredDescription\":\"Allow browser location access, then start the class again.\",\"locationStaleTitle\":\"Phone location expired\",\"locationStaleDescription\":\"Get your current location again, then retry.\",\"campusLocationMissingTitle\":\"Campus location not configured\",\"campusLocationMissingDescription\":\"Ask head office to set the campus location and allowed range.\",\"outsideGeoFenceTitle\":\"Outside the campus range\",\"outsideGeoFenceDescription\":\"Your phone is about {distance} m from campus with {accuracy} m accuracy, outside the allowed {radius} m range. Return to campus and try again.\"},\"settings\":{\"title\":\"Settings\"}
547,\"pages\":{\"campusAll\":{\"title\":\"Campus Management\",\"desc\":\"Manage direct-operated \u0026 franchise campuses · filter by type\",\"bread\":[\"Campuses\",\"Campus List\"],\"tabs\":{\"applications\":\"Applications\",\"list\":\"Campuses\"}},\"campusDirect\":{\"title\":\"Direct-Operated Campuses\",\"desc\":\"Operated by HQ · unified accounts · all data owned by HQ\",\"bread\":[\"Campuses\",\"Direct-Operated\"]},\"campusTable\":{\"type\":{\"direct\":\"Direct-Operated\",\"franchise\":\"Franchise\"},\"stat\":{\"directCount\":\"Direct-Operated Campuses\",\"franchiseCount\":\"Franchise Campuses\",\"teachers\":\"Total Teachers\",\"pending\":\"Devices Pending\",\"expiring\":\"Expiring Soon\",\"totalCount\":\"Total Campuses\"},\"columns\":{\"no\":\"No.\",\"userInfo\":\"Campus Info\",\"authCount\":\"Authorizations\",\"pendingDevices\":\"Pending Devices\",\"daysLeft\":\"Days Left\",\"teachers\":\"Teachers\",\"enrollStatus\":\"Enrollment\",\"contractStart\":\"Contract Start\",\"createdAt\":\"Created\",\"type\":\"Type\"},\"group\":{\"pending\":\"{n} pending devices\",\"partnerStat\":\"{campuses} campuses · {teachers} teachers\",\"partnerCampusesOnly\":\"{n, plural, one {# campus} other {# campuses}}\",\"noCampus\":\"No campuses yet\",\"noMatch\":\"No campuses match the current filters ({n} in total)\"},\"forever\":\"Perpetual\",\"daysN\":\"{n}d\",\"personN\":\"{n}\",\"enroll\":{\"open\":\"Open\",\"closed\":\"Capacity Reached\"},\"enrollDetail\":{\"open\":\"Open\",\"closed\":\"Closed\"},\"searchPh\":\"Search partners, campus name, city, or phone\",\"totalPartners\":\"{n, plural, one {# partner} other {# partners}}\",\"exportScope\":\"Exports every campus under the partners on this page\",\"action\":{\"view\":\"View\",\"edit\":\"Edit\",\"refresh\":\"Refresh\",\"enable\":\"Enable\",\"disable\":\"Disable\",\"export\":\"Export\",\"import\":\"Import\"},\"addBtnZh\":\"Add {label} Campus\",\"msg\":{\"updated\":\"Campus updated\",\"createdZh\":\"{label} campus created\",\"logoUploadFailed\":\"The campus was saved, but the logo upload failed. Choose the image again and save.\",\"disabled\":\"Campus disabled\",\"enabled\":\"Campus enabled\",\"failed\":\"Operation failed. Please try again.\",\"deleteFailed\":\"Delete failed\"},\"modal\":{\"editTitleZh\":\"Edit {label} Campus\",\"addTitleZh\":\"Add {label} Campus\",\"save\":\"Save\",\"create\":\"Create\",\"nameLabel\":\"Campus Name\",\"namePh\":\"e.g. Singapore Central\",\"nameRequired\":\"Please enter campus name\",\"required\":\"Required\",\"typeLabel\":\"Type\",\"partnerEmpty\":\"No partners yet — use \\\"New partner\\\" in the toolbar above first.\",\"ownerLabel\":\"Principal Name\",\"ownerPh\":\"Principal name\",\"logoLabel\":\"Campus Logo (optional)\",\"logoPh\":\"Choose image\",\"logoUploadTip\":\"PNG, JPG, or WebP, up to 2 MiB. The image is uploaded to R2 when you save.\",\"logoInvalidType\":\"Choose a PNG, JPG, or WebP image\",\"logoTooLarge\":\"Logo must be no larger than 2 MiB\",\"phoneLabel\":\"Principal Phone\",\"phonePh\":\"Principal phone\",\"phoneRequired\":\"Please enter phone\",\"countryLabel\":\"Country\",\"countryPh\":\"Select country\",\"countrySearchPh\":\"Search country or ISO code\",\"countryEmpty\":\"No country or region found\",\"provinceLabel\":\"State / Province\",\"provincePh\":\"Select state / province\",\"provinceNa\":\"Not applicable\",\"cityLabel\":\"City\",\"cityPh\":\"City name\",\"cityRequired\":\"Please enter city\",\"addressLabel\":\"Address\",\"addressPh\":\"Full street address\",\"portReminderLabel\":\"License-expiry reminder (days)\",\"portReminderTip\":\"Days in advance to push the expiry reminder.\",\"enrollLabel\":\"Enrollment\",\"enrollTip\":\"PRD §3.1: Open / Capacity reached (mark over-capacity campuses for ops follow-up).\",\"contractLabel\":\"Contract Start Date\",\"contractRequired\":\"Franchise campuses require a contract start date.\",\"introLabel\":\"Description (optional)\",\"introPh\":\"Highlights, capacity, etc.\",\"partnerLabel\":\"Partner\",\"partnerPh\":\"Select a partner\",\"partnerLockedHint\":\"Direct-operated campuses always belong to HQ.\",\"partnerMissing\":\"The HQ-direct owner entity does not exist yet, so a direct-operated campus cannot be created. Ask an administrator to run the initialization.\",\"partnerInvalidForType\":\"This campus's stored owner does not match its type — please reselect a partner.\"},\"drawer\":{\"info\":\"Details\",\"stats\":\"Stats\",\"viewDescription\":\"View campus details, service, data, and device security\",\"createDescription\":\"Add the basic details first; other settings unlock after creation\",\"editDescription\":\"Update the basic details, then save to return to viewing\",\"type\":\"Type\",\"phone\":\"Phone\",\"country\":\"Country\",\"province\":\"State / Province\",\"city\":\"City\",\"address\":\"Address\",\"enroll\":\"Enrollment\",\"portReminder\":\"License Reminder\",\"portReminderN\":\"{n, plural, one {# day in advance} other {# days in advance}}\",\"createdAt\":\"Created\",\"authTotal\":\"Course packages\",\"pendingDeviceTotal\":\"Devices pending\",\"teacherTotal\":\"Teachers\",\"configured\":\"Configured\",\"edit\":\"Edit\",\"validity\":\"Service \u0026 grants\",\"saveFirst\":\"Save the campus details before configuring this section\"},\"filter\":{\"all\":\"All\",\"active\":\"Active\",\"disabled\":\"Disabled\"},\"aria\":{\"view\":\"View details\",\"edit\":\"Edit campus\",\"enable\":\"Enable campus\",\"disable\":\"Disable campus\",\"refresh\":\"Refresh\"},\"confirmEnable\":{\"title\":\"Enable this campus?\",\"desc\":\"The campus will be re-activated. Teachers under this campus will regain access.\"},\"confirmDisable\":{\"title\":\"Disable {name}?\",\"desc\":\"{name} will be disabled and hidden from the active list. All teachers under this campus will lose access.\"},\"empty\":{\"title\":\"No partners found\",\"desc\":\"No partners match the current filters.\"},\"export\":{\"empty\":\"No records to export\",\"headers\":[\"Name\",\"Type\",\"Contact\",\"Phone\",\"Country\",\"Province\",\"City\",\"Enroll Status\",\"Teachers\",\"Days Left\",\"Contract Start\",\"Created At\"]},\"import\":{\"title\":\"Import campuses (CSV)\",\"desc\":\"Prepare a CSV file with the following columns. A master account will be auto-created from the contact phone.\",\"exampleTitle\":\"Example\",\"csvHeaders\":[\"Type (1=Direct, 2=Franchise)\",\"Campus Name\",\"Contact Name\",\"Contact Phone\",\"Country\",\"Province\",\"City\",\"Address\",\"Contract Start (YYYY-
547MM-DD, franchise only)\"],\"csvSample\":[\"1\",\"Demo Campus\",\"John Smith\",\"13800000000\",\"China\",\"Guangdong\",\"Shenzhen\",\"No.1 Road\"],\"previewColumns\":[\"Type\",\"Campus Name\",\"Contact\",\"Phone\",\"Province\",\"City\",\"Address\",\"Contract Start\"],\"previewRows\":[[\"1\",\"Star Art Center\",\"John\",\"13800001111\",\"Guangdong\",\"Shenzhen\",\"No.1 Road\",\"—\"],[\"2\",\"Rainbow Kids Art\",\"Jane\",\"13900002222\",\"Zhejiang\",\"Hangzhou\",\"West Lake Rd\",\"2026-01-01\"]],\"noteTypeLabel\":\"Type\",\"noteTypeValue\":\"1 = Direct-Operated, 2 = Franchise\",\"noteContractLabel\":\"Contract Start\",\"noteContractValue\":\"Required for franchise (type=2), format: YYYY-MM-DD\",\"notePhoneLabel\":\"Phone\",\"notePhoneValue\":\"Will be used as the master login account\",\"partnerLabel\":\"Partner (applies to all rows)\",\"partnerPh\":\"Select a partner\",\"downloadTemplate\":\"Download template\",\"importing\":\"Importing...\",\"selectPartnerFirst\":\"Select a partner first\",\"noDataRows\":\"No data rows found\",\"typeInvalid\":\"Type must be 1 or 2\",\"nameContactRequired\":\"Name/Contact required\",\"contractRequired\":\"Contract start required (franchise)\",\"createFailed\":\"Create failed\",\"rowError\":\"Row {lineNo}: {reason}\",\"imported\":\"{n, plural, one {Imported # campus} other {Imported # campuses}}\",\"partial\":\"Success {ok} / Failed {failed}. \",\"parseFailed\":\"Failed to parse file\"}},\"campusFranchise\":{\"title\":\"Franchise Campuses\",\"desc\":\"Independently operated · separate accounts · courseware delivered via licensing · contract start date required\",\"bread\":[\"Campuses\",\"Franchises\"]},\"teachers\":{\"group\":{\"noPartner\":\"No partner\",\"partnerStat\":\"{campuses} campuses · {teachers} teachers on this page\"},\"title\":\"Teachers\",\"desc\":\"Cross-campus roster · monthly teaching stats · suspend or reactivate\",\"bread\":[\"Campuses\",\"Teachers\"],\"add\":\"Add Teacher\",\"addTitle\":\"Add Teacher\",\"editTitle\":\"Edit Teacher\",\"stats\":{\"total\":\"Active Teachers\",\"principals\":\"Principals\",\"monthLessons\":\"Lessons This Month\",\"monthHours\":\"Hours This Month\"},\"columns\":{\"teacher\":\"Teacher\",\"email\":\"Email\",\"campus\":\"Campus\",\"gender\":\"Gender\",\"monthLessons\":\"Lessons (mo.)\",\"monthMinutes\":\"Hours (mo.)\",\"cumLessons\":\"Total Lessons\",\"status\":\"Status\",\"lastLogin\":\"Last Login\",\"lessons\":\"Total Lessons\",\"joined\":\"Joined\"},\"principal\":\"Principal\",\"teacher\":\"Teacher\",\"genderM\":\"Male\",\"genderF\":\"Female\",\"active\":\"Active\",\"suspended\":\"Suspended\",\"enable\":\"Activate\",\"disable\":\"Suspend\",\"resetPassword\":{\"action\":\"Reset password\",\"title\":\"Reset login password?\",\"desc\":\"A new random password will be generated for \\\"{name}\\\". The old one stops working immediately and every signed-in session is logged out. The new password is shown only once — pass it on in person.\"},\"searchPh\":\"Search by name or phone\",\"campusAll\":\"All campuses\",\"pickCampus\":\"Select campus\",\"total\":\"{n, plural, one {# teacher} other {# teachers}}\",\"lessons\":\"{n}\",\"hourMin\":\"{h}h {m}m\",\"form\":{\"campus\":\"Campus\",\"name\":\"Full Name\",\"namePh\":\"Teacher name\",\"phone\":\"Phone (login)\",\"phonePh\":\"11-digit phone\",\"phoneInvalid\":\"Invalid phone format\",\"isPrincipal\":\"Principal?\",\"defaultPwdHint\":\"A random initial password is generated automatically and shown once on creation. Share it with the teacher and remind them to change it after first login.\"},\"msg\":{\"updated\":\"Teacher updated\",\"created\":\"Teacher created.\",\"disabled\":\"Teacher suspended\",\"confirmDisable\":\"Suspend this teacher account?\",\"enabled\":\"Teacher reactivated\",\"confirmEnable\":\"Reactivate this teacher account?\"},\"filterStatus\":\"Filter by status\",\"detail\":{\"thisMonthLessons\":\"Lessons (this month)\",\"cumLessons\":\"Total Lessons\",\"thisMonthHours\":\"Hours (this month)\",\"phone\":\"Phone\",\"email\":\"Email\",\"campus\":\"Campus\",\"status\":\"Status\",\"lastLogin\":\"Last Login\",\"joinedAt\":\"Joined\"},\"empty\":{\"title\":\"No teachers found\",\"desc\":\"No teachers match the current filters.\"}},\"devices\":{\"title\":\"Device Management\",\"desc\":\"Approve campus PC / mobile devices and manage paired TV devices\",\"bread\":[\"Devices\"],\"pen
547ding\":\"Pending Requests\",\"approved\":\"Authorized\",\"typeLabel\":{\"pc\":\"PC\",\"app\":\"Mobile\",\"tv\":\"TV\",\"web\":\"Web\"},\"statusLabel\":{\"0\":\"Pending\",\"1\":\"Active\",\"2\":\"Disabled\"},\"stat\":{\"total\":\"All Devices\",\"pending\":\"Pending\",\"active\":\"Active\",\"disabled\":\"Disabled\"},\"banner\":{\"title\":\"{n, plural, one {# device awaiting approval} other {# devices awaiting approval}}\",\"sub\":\"Devices cannot access courseware until approved.\",\"cta\":\"Review now\"},\"columns\":{\"device\":\"Device\",\"deviceType\":\"Type\",\"clientVersion\":\"Client version\",\"people\":\"People\",\"currentTeacher\":\"Current Teacher\",\"status\":\"Status\",\"appliedAt\":\"Requested\"},\"people\":{\"requested\":\"requested\",\"inUse\":\"in use\"},\"group\":{\"noPartner\":\"No partner\",\"pending\":\"{n} pending\",\"partnerStat\":\"{campuses} campuses · {devices} devices\",\"campusStat\":\"{n}\",\"quotaUnlimited\":\"{used}/∞\"},\"filterCampus\":\"All campuses\",\"filterStatus\":\"All statuses\",\"searchPh\":\"Search device, requester, or fingerprint\",\"unnamed\":\"Unnamed device\",\"versionUnknown\":\"Not reported\",\"lastOnline\":{\"never\":\"Never\",\"neverOnline\":\"Never online\"},\"action\":{\"approve\":\"Approve\",\"reject\":\"Reject\",\"suspend\":\"Disable\",\"reactivate\":\"Re-enable\",\"detail\":\"Details\",\"approveLong\":\"Approve\",\"rejectLong\":\"Reject Request\",\"resetWifiBaseline\":\"Re-register WiFi environment\",\"transfer\":\"Move to another campus\"},\"confirmDisable\":\"Disable this device? It will no longer be able to sign in.\",\"confirmReactivate\":\"Re-enable this device? It will be able to sign in / play courseware again.\",\"total\":\"{n, plural, one {# device} other {# devices}}\",\"msg\":{\"approved\":\"Device approved\",\"rejected\":\"Device request rejected\",\"disabled\":\"Device disabled\",\"reactivated\":\"Device re-enabled\",\"wifiBaselineReset\":\"The previous WiFi environment was cleared and will be registered at the next teacher sign-in\",\"transferred\":\"Device moved\"},\"reject\":{\"title\":\"Reject Device Request\",\"body\":\"Once rejected, this device cannot sign in. A manager must re-enable it before it can be used again. Continue?\",\"confirm\":\"Reject\"},\"drawer\":{\"title\":\"Device Details\",\"description\":\"Review device status and manage security for this device.\",\"type\":\"Device Type\",\"campus\":\"Campus\",\"requester\":\"Requester\",\"currentTeacher\":\"Current Teacher\",\"location\":\"Location\",\"fingerprint\":\"Fingerprint\",\"lastOnline\":\"Last Online\",\"approvedAt\":\"Approved\",\"appliedAt\":\"Requested\",\"pendingTitle\":\"Pending Approval\",\"pendingHint\":\"This device is waiting for administrator approval. Once approved, the teacher can use it normally.\",\"wifiEnvironment\":\"WiFi environment fingerprint\",\"wifiRegisteredAt\":\"Registered at {time}. Re-register only after confirming the campus router changed.\",\"wifiNotRegistered\":\"Not registered yet. The first valid class check will register it when environment protection is enabled.\",\"transferCampus\":\"Campus assignment\",\"transferHint\":\"Move this device to another campus when it has been relocated. The TV picks up the new campus by itself; its history stays with the campus where it happened.\"},\"resetWifiBaseline\":{\"title\":\"Re-register this TV WiFi environment?\",\"description\":\"This clears only this TV's previous environment. At the next teacher sign-in, at least 4 valid access points are required to register the new environment. Protection remains enabled for every other TV at this campus.\",\"confirm\":\"Confirm re-registration\"},\"transfer\":{\"placeholder\":\"Pick the new campus\",\"title\":\"Move this device to another campus?\",\"description\":\"The device will be registered to {campus}. The TV switches over on its own within about 15 minutes — nobody has to re-activate it on site. Any class running on it ends now, so the teacher has to scan and start class again. Its network baseline is cleared and re-registered on the next lesson.\",\"confirm\":\"Move device\"}},\"campusLocation\":{\"title\":\"Campus location and course range\",\"description\":\"Select a country and enter a city, then search for a specific address. You can also use the current location or pick on the map.\",\"searchPlaceholder\":\"Enter a street, building number, or campus name\",\"search\":\"Search\",\"results\":\"Address search results\",\"noResults\":\"No address found. Add a street, building number, or campus name.\",\"searchContextRequired\":\"Select a country and enter a city first\",\"current\":\"Current location\",\"radius\":\"Allowed course range\",\"customRadius\":\"Custom range in meters\",\"pickPoint\":\"Search or choose the campus location on the map\",\"selected\":\"Campus center set with a {radius} m allowed range\",\"locationFailed\":\"Current location is unavailable. Allow browser location access and try again.\",\"mapFailed\":\"The map could not load. Check the network and try again.\",\"notSet\":\"No campus location set yet. \\\"Disable outside campus range\\\" cannot be enforced here until you set one in campus edit.\"},\"deviceSecurity\":{\"title\":\"Device Security\",\"description\":\"{campus} · Manage course access and protection by teaching client\",\"selectFirst\":\"Select a campus to configure device security\",\"o
547pen\":\"Device Security\",\"campus\":{\"label\":\"Campus\",\"placeholder\":\"Select a campus\"},\"clients\":{\"web\":\"Web\",\"tv\":\"TV\",\"desktop\":\"Desktop\",\"app\":\"App\"},\"clientSettings\":\"{client} settings\",\"quota\":{\"label\":\"Device quota\",\"hint\":\"Number of TVs this campus may activate\",\"placeholder\":\"Enter TV count\"},\"webAccess\":{\"label\":\"Allow courses on Web\",\"hint\":\"When off, this campus cannot open courses in a browser\"},\"fullscreenLogo\":{\"label\":\"Fullscreen logo\",\"hint\":\"Show the uploaded campus logo during courses; identity watermark remains as fallback\"},\"range\":{\"label\":\"Disable outside campus range\",\"hint\":\"Block course use when the device leaves the campus range\"},\"needsWebAccess\":\"Turn on “Allow courses on web” first\",\"wifiMatch\":{\"label\":\"Network match threshold\",\"hint\":\"Share of registered hotspots that must still be visible to count as on-site. Lower it for malls where hotspots change often, raise it for standalone sites. Range 20-90.\",\"needsSwitch\":\"Turn on “Disable outside campus network” first\"},\"wifiRange\":{\"label\":\"Disable outside campus network\",\"hint\":\"Block course use once the TV leaves the Wi-Fi environment it was installed in. Recognises the site by nearby routers, for TVs with no location hardware.\"},\"unavailable\":\"Not available yet\",\"empty\":\"Select a campus first\",\"loading\":\"Loading device security settings\",\"loadFailed\":\"Could not load device security settings. Refresh and try again.\",\"save\":\"Save settings\",\"messages\":{\"loadFailed\":\"Could not load device security settings\",\"saved\":\"Device security settings saved\",\"saveFailed\":\"Could not save device security settings\",\"invalidQuota\":\"Enter a whole-number TV quota from 0 to 9999\",\"invalidWifiMatch\":\"Enter a whole-number network match threshold from 20 to 90\"}},\"coursesExplorer\":{\"title\":\"Course Explorer\",\"desc\":\"Drag files to upload, right-click to create a chapter — every change saves instantly\",\"bread\":[\"Course Explorer\"],\"close\":\"Close\",\"description\":\"Description\",\"packageDescPlaceholder\":\"Package description\",\"coverUrl\":\"Cover Image URL\",\"coverUrlPlaceholder\":\"Cover image link\",\"chapterDescPlaceholder\":\"Chapter description\",\"modTutorial\":\"Tutorial\",\"modReview\":\"Review\",\"modHomework\":\"Homework\",\"stampDraft\":\"Draft\",\"stampReady\":\"Draft (ready to submit)\",\"stampApproved\":\"Approved\",\"approve\":\"Approve\",\"durationSeconds\":\"Duration: {seconds}s\",\"noFiles\":\"No files attached\",\"belongsToChapter\":\"Chapter: {name}\",\"chapterStatus\":\"Chapter status: \",\"allPackages\":\"All Packages\",\"newPackageDefaultName\":\"New Package\",\"newChapterDefaultName\":\"New Chapter\",\"toastSaved\":\"Saved\",\"toastRenameFailed\":\"Rename failed\",\"toastSaveFailed\":\"Save failed\",\"toastApproved\":\"Published\",\"toastDeleted\":\"Deleted\",\"toastActionFailed\":\"Action failed\",\"toastCreated\":\"Created\",\"toastCreateFailed\":\"Create failed\",\"toastDownloadFailed\":\"Unable to download the file. Please retry.\",\"toastUploadFailed\":\"{name} upload failed\",\"toastPptUploaded\":\"PPT uploaded; fallback slides are being generated\",\"toastPptRenderRetried\":\"Fallback slide generation restarted\",\"toastOpenChapterFirst\":\"Open a chapter first before dragging in files\",\"toastSubPackageNotFound\":\"Sub-package not found — it may have been deleted\",\"uploadProgress\":\"Uploading\",\"preview\":\"Preview\",\"pptRenderGenerating\":\"Generating fallback slides\",\"pptRenderReady\":\"Fallback slides ready · {count} pages\",\"pptRenderFailed\":\"Fallback slide generation failed\",\"pptRenderFailedWithCode\":\"Fallback slide generation failed ({code})\",\"pptRenderRetry\":\"Generate again\",\"addChapter\":\"New Chapter\",\"addCourseware\":\"Upload Courseware\",\"emptyPackageHint\":\"Click \\\"New Chapter\\\" above to add your first chapter\",\"emptyChapterHint\":\"Drag files here to upload, or click \\\"Upload Courseware\\\"\",\"emptyRootHint\":\"Right-click or use the button below to create a course package\",\"addPackage\"
547:\"New Package\",\"deletePackageTitle\":\"Delete Package\",\"deleteChapterTitle\":\"Delete Chapter\",\"deleteCourseTitle\":\"Delete Courseware\",\"deleteConfirmMessage\":\"Are you sure you want to delete \\\"{name}\\\"? This action cannot be undone.\",\"deleteCancel\":\"Cancel\",\"deleteConfirm\":\"Confirm Delete\",\"uploadFailed\":\"Upload failed, please try again\"},\"coursesAuth\":{\"title\":\"Authorization\",\"desc\":\"Course authorizations by campus · billing / geo / screen protection\",\"bread\":[\"Courseware\",\"Authorization\"],\"newAuth\":\"New License\",\"batchAuth\":\"Bulk Authorize\",\"columns\":{\"franchisee\":\"Franchisee\",\"campus\":\"Campus\",\"packageSub\":\"Pack / Module\",\"window\":\"Authorization period\",\"expiresAt\":\"Expires\",\"security\":\"Security\"},\"fullPack\":\"Full Pack\",\"now\":\"Now\",\"forever\":\"Perpetual\",\"expired\":\"Expired\",\"daysLeftN\":\"{n}d left\",\"sec\":{\"screenshot\":\"No Screenshot\",\"screenrec\":\"No Recording\",\"none\":\"No restrictions\"},\"authModes\":{\"title\":\"PRD §8.1 · Three Authorization Modes\",\"a\":{\"title\":\"One Pack → Many Campuses\",\"desc\":\"Grant one pack to multiple campuses\",\"example\":\"Roll out a new course nationwide\"},\"b\":{\"title\":\"One Campus → Many Packs\",\"desc\":\"Grant several master packs to one campus at once\",\"example\":\"Onboarding a new campus\"},\"c\":{\"title\":\"One Campus → Specific Modules\",\"desc\":\"Only grant selected modules to a campus\",\"example\":\"Franchise buying per-module\"},\"applies\":\"Use case\"},\"search\":\"Search campus or course pack\",\"total\":\"{n, plural, one {# grant} other {# grants}}\",\"action\":{\"edit\":\"Edit\",\"revoke\":\"Revoke\"},\"confirmRevoke\":\"Revoke this authorization?\",\"modal\":{\"editTitle\":\"Edit Authorization\",\"createTitle\":\"New Authorization\",\"save\":\"Save\",\"authorize\":\"Authorize\",\"campus\":\"Campus\",\"pickCampus\":\"Select a campus\",\"package\":\"Course Pack\",\"pickPackage\":\"Select a pack\",\"sub\":\"Module\",\"pickSub\":\"Select a pack first\",\"window\":\"Authorization period\",\"permanent\":\"Permanent\",\"to\":\"to\",\"startPh\":\"Available now\",\"endPh\":\"Pick end date\",\"windowHint\":\"Available from the start date through the end date, inclusive\",\"secSection\":\"Security Policy\",\"screenshot\":\"Block Screenshot\",\"screenrec\":\"Block Recording\",\"overwriteWarn\":\"This campus already has this package authorized. Saving will overwrite its authorization period and security settings.\"},\"picker\":{\"placeholder\":\"Choose a package and scope\",\"search\":\"Search packages, modules, or courses\",\"loading\":\"Loading course catalog\",\"loadFailed\":\"Could not load the course catalog\",\"empty\":\"No matching courses\",\"scope\":{\"full\":\"Full package\",\"selected\":\"Selected modules\"},\"fullSummary\":\"{package} · Full package\",\"selectedSummary\":\"{package} · {count} modules selected\",\"selectPackage\":\"Select package {package}\",\"moduleCount\":\"{count} modules\",\"courseCount\":\"{count} courses\",\"durationMinutes\":\"{count} min\",\"noModules\":\"This package has no modules\",\"fullHint\":\"All courses in {package} will be authorized\",\"selectedHint\":\"{count} modules selected\",\"chooseHint\":\"Choose a package first\",\"needPackage\"
547:\"Select a package\",\"needModule\":\"Select at least one module for a scoped authorization\"},\"batch\":{\"title\":\"Bulk Authorize\",\"ok\":\"Authorize All\",\"info\":\"The same authorization settings will be applied to every selected campus.\",\"pickCampuses\":\"Campuses\",\"campusesPh\":\"Select one or more campuses\",\"needAtLeastOne\":\"Select at least one campus\",\"successN\":\"{n, plural, one {Granted to # campus} other {Granted to # campuses}}\",\"failed\":\"Bulk authorization failed\"},\"msg\":{\"updated\":\"Authorization updated\",\"created\":\"Authorization created\"},\"requests\":{\"title\":\"Pending requests\",\"subtitle\":\"Course / renewal requests from franchise campuses — enabled automatically on approval\",\"colCampus\":\"Campus\",\"colKind\":\"Type\",\"colDetail\":\"Request\",\"colNote\":\"Note\",\"colTime\":\"Requested at\",\"kindCourse\":\"Course\",\"kindRenewal\":\"Renewal\",\"renewalYearsN\":\"Renew {n} yr\",\"approve\":\"Approve\",\"reject\":\"Reject\",\"approveConfirm\":\"Approve this request?\",\"approveCourseHint\":\"The requested course packs will be enabled for this campus automatically.\",\"approveRenewalHint\":\"The campus port will be renewed automatically.\",\"rejectTitle\":\"Reject request\",\"rejectHint\":\"The request will be closed; the campus can submit again.\",\"rejectReasonPh\":\"Reason for rejection (optional, kept for the record)\",\"msgApproved\":\"Approved and enabled\",\"msgRejected\":\"Rejected\"},\"detail\":{\"title\":\"Campus authorizations\",\"trigger\":\"View all authorizations for this campus\",\"totalN\":\"{n} authorizations\",\"expiringN\":\"{n} expiring within {days} days\",\"expiredN\":\"{n} expired\",\"empty\":\"No authorizations for this campus yet\",\"loadFailed\":\"Could not load authorization details. Try again.\"}},\"security\":{\"accessTrail\":{\"title\":\"Content Access Trail\",\"desc\":\"Who previewed / played / downloaded which courseware, when and from which IP — trace the leak source by time window if paid content spreads\",\"colTime\":\"Time\",\"colActor\":\"Actor\",\"colAction\":\"Action\",\"colCourse\":\"Courseware\",\"colIp\":\"IP\",\"actionPreview\":\"Preview\",\"actionPlay\":\"Play\",\"actionDownload\":\"Download\",\"roleHq\":\"HQ\",\"roleCampus\":\"Campus\",\"empty\":\"No access records yet\",\"prev\":\"Prev\",\"next\":\"Next\",\"searchPlaceholder\":\"Search by courseware or actor…\"}},\"audit\":{\"title\":\"Security Audit\",\"description\":\"Review security events from Desktop, App, TV, and Web in one place\",\"filters\":{\"searchPlaceholder\":\"Search by actor, campus, or courseware\",\"search\":\"Search\",\"client\":\"Client\",\"allClients\":\"All clients\",\"kind\":\"Event type\",\"allKinds\":\"All events\",\"lesson\":\"Lesson access\",\"file\":\"Courseware access\",\"campus\":\"Campus\",\"allCampuses\":\"All campuses\",\"from\":\"From\",\"to\":\"To\"},\"columns\":{\"time\":\"Time\",\"client\":\"Client\",\"actor\":\"Actor\",\"campus\":\"Campus\",\"region\":\"Region\",\"event\":\"Event\",\"result\":\"Result\",\"actions\":\"Actions\"},\"client\":{\"pc\":\"Desktop\",\"app\":\"App\",\"tv\":\"TV\",\"web\":\"Web\",\"unknown\":\"Unknown client\"},\"event\":{\"lessonAccess\":\"Lesson access\",\"preview\":\"Preview courseware\",\"play\":\"Play courseware\",\"download\":\"Download courseware\"},\"result\":{\"allowed\":\"Allowed\",\"warning\":\"Warning\",\"blocked\":\"Blocked\"},\"geo\":{\"ok\":\"Within range\",\"warn\":\"Outside warning range\",\"block\":\"Outside allowed range\",\"nogps\":\"No location\",\"disabled\":\"Disabled\"},\"detail\":{\"title\":\"{client} audit detail\",\"view\":\"View details\",\"course\":\"Courseware\",\"deviceId\":\"Device ID\",\"coordinates\":\"Coordinates\",\"distance\":\"Distance (m)\",\"geoLevel\":\"Location result\",\"conflict\":\"Concurrent session\",\"ip\":\"IP address\",\"userAgent\":\"Browser / client\",\"userType\":\"User type\",\"region\":\"Region\",\"regionVerdict\":\"Region check\"},\"regionVerdict\":{\"match\":\"Matches\",\"foreign\":\"Cross-border\",\"unknown\":\"Unknown\"},\"loading\":\"Loading audit records…\",\"empty\":\"No audit records match the current filters\",\"error\":\"Failed to load: {message}\",\"retry\":\"Retry\",\"refresh\":\"Refresh\",\"export\":\"Export current page\",\"exportEmpty\":\"No audit records to export\",\"total\":\"{total} records\",\"page\":\"Page {page} of {totalPages}\",\"prev\":\"Previous\",\"next\":\"Next\",\"noCampus\":\"No campus\",\"noRegion\":\"No region data\",\"unknown\":\"Unknown\",\"yes\":\"Yes\",\"no\":\"No\"},\"studentWorks\":{\"title\":\"Student Works\",\"desc\":\"Review student works submitted by campuses · feature or send back\",\"bread\":[\"Student Works\"],\"refresh\":\"Refresh\",\"stat\":{\"total\":\"Total\",\"pending\":\"Pending\",\"accepted\":\"Featured\",\"rejected\":\"Returned\"},\"filterLabel\":\"Filter\",\"filterCampus\":\"By campus\",\"filterStatus\":\"By status\",\"empty\":\"No submitted works yet\",\"total\":\"{n, plural, one {# work} other {# works}}\",\"meta\":{\"course\":\"Course\",\"date\":\"Work Date\",\"note\":\"Note\"},\"action\":{\"accept\":\"Feature\",\"reject\":\"Return\"},\"reject\":{\"title\":\"Return this work?\",\"body\":\"After returning, the campus can edit or withdraw the submission.\",\"confirm\":\"Return\"},\"msg\":{\"accepted\":\"Featured\",\"rejected\":\"Returned\"},\"statusLabel\":{\"0\":\"Pending\",\"1\":\"Featured\",\"2\":\"Returned\"},\"mock\":{\"students\":[\"Student 1\",\"Student 2\",\"Student 3\",\"Student 4\",\"Student 5\",\"Student 6\"],\"courses\":[\"Creative Art (Beginner)\",\"Coding for Kids\",\"Vocal Foundations\",\"Dance Foundations\"],\"sampleNote\":\"Bold composition with creative color palette.\"}},\"todos\":{\"title\":\"Tasks\",\"desc\":\"Task summary · review / device / location change / license expiry / course \u0026 renewal requests\",\"bread\":[\"Tasks\"],\"tabAll\":\"All\",\"tabPending\":\"Pending\",\"tabDone\":\"Resolved\",\"empty\":\"No pending tasks\",\"refresh\":\"Refresh\",\"typeLabel\":{\"course_audit\":\"Courseware Review\",\"device_apply\":\"Device Request\",\"port_expire\":\"License Expiry\",\"course_request\":\"Course Request\",\"renewal_request\":\"Renewal Request\",\"device_over_quota\":\"Device over quota\",\"device_wifi_changed\":\"Device network changed\",\"franchise_application\":\"Franchise Application\",\"expansion_request\":\"Campus Expansion\",\"lesson_foreign_ip\":\"Cross-border lesson\"},\"action\":{\"markDone\":\"Mark Done\",\"ignore\":\"Dismiss\",\"confirmIgnore\":\"Dismiss this task?\",\"ignoreHint\":\"Dismissed tasks are hidden, but the underlying record 
547is preserved.\"},\"statusDone\":\"Resolved\",\"statusIgnored\":\"Dismissed\",\"msg\":{\"marked\":\"Marked as done\",\"ignored\":\"Dismissed\"}},\"usersList\":{\"title\":\"Staff\",\"desc\":\"Manage HQ staff · departments · roles \u0026 permissions · onboarding \u0026 resignation\",\"bread\":[\"Staff\",\"Staff List\"],\"add\":\"Add Staff\",\"addTitle\":\"Add Staff\",\"editTitle\":\"Edit Staff\",\"columns\":{\"staff\":\"Member\",\"email\":\"Email\",\"department\":\"Department\",\"role\":\"Role\",\"status\":\"Status\",\"credential\":\"Password\",\"lastLogin\":\"Last Login\",\"createdAt\":\"Created\"},\"credential\":{\"set\":\"Set\",\"unset\":\"Not set\",\"google\":\"Google sign-in\"},\"stat\":{\"total\":\"Total Staff\",\"active\":\"Active\",\"roles\":\"Roles\",\"depts\":\"Departments\"},\"active\":\"Active\",\"resigned\":\"Resigned\",\"searchPh\":\"Search by name or phone\",\"total\":\"{n, plural, one {# staff member} other {# staff members}}\",\"action\":{\"edit\":\"Edit\",\"resign\":\"Resign\",\"reinstate\":\"Reinstate\",\"resetPassword\":\"Reset password\"},\"resetPasswordConfirm\":{\"title\":\"Reset login password?\",\"desc\":\"A new random password will be generated for \\\"{name}\\\". The old one stops working immediately and every signed-in session is logged out. The new password is shown only once — pass it on in person.\"},\"resignConfirm\":{\"title\":\"Mark this staff member as resigned?\",\"desc\":\"Resigned staff can no longer sign in.\"},\"reinstateConfirm\":{\"title\":\"Reinstate this staff member?\",\"desc\":\"Reinstated staff can sign in again.\"},\"msg\":{\"updated\":\"Staff updated\",\"created\":\"Staff account created\",\"resigned\":\"Marked as resigned\",\"reinstated\":\"Staff reinstated\",\"deptCreated\":\"Department created\"},\"form\":{\"name\":\"Full Name\",\"namePh\":\"Staff name\",\"phone\":\"Phone\",\"phonePh\":\"Login phone number\",\"phoneInvalid\":\"Invalid phone format\",\"role\":\"Role\",\"rolePh\":\"Select a role\",\"dept\":\"Department\",\"deptPh\":\"Select a department\",\"emailLabel\":\"Email (optional)\",\"emailPh\":\"Work email\",\"save\":\"Save\",\"create\":\"Create\",\"newDept\":\"New dept\",\"newDeptPh\":\"Department name\"},\"assign\":{\"pickUser\":\"Select a registered user\",\"hint\":\"Only registered accounts without an assigned role appear here. Have new staff register first, then return to assign an HQ role.\",\"searchPh\":\"Search name / phone / email\",\"empty\":\"No accounts are available to add. Make sure the person has registered and does not already have a role.\",\"pickRequired\":\"Please select a registered user first\",\"roleRequired\":\"Please select a role\"},\"tabs\":{\"staff\":\"Staff\",\"depts\":\"Departments\"}},\"roles\":{\"systemNames\":{\"super_admin\":\"Super Admin\",\"admin\":\"Admin\",\"franchisee\":\"Partner\",\"teacher\":\"Teacher\"}},\"usersRoles\":{\"title\":\"Roles \u0026 Permissions\",\"desc\":\"Configure staff access · changes apply to bound staff immediately\",\"bread\":[\"Staff\",\"Roles \u0026 Permissions\"],\"stat\":{\"total\":\"Total Roles\",\"system\":\"System Roles\",\"permissions\":\"Total Permissions\",\"modules\":\"Permission Groups\"},\"typeSystem\":\"System\",\"usageLabel\":\"Members\",\"allPerms\":\"All permissions\",\"allPerms
547Desc\":\"Full access to every operation\",\"permCountDesc\":\"{n, plural, one {# permission} other {# permissions}}\",\"action\":{\"editPerms\":\"Edit Permissions\",\"editRole\":\"Edit Role\",\"deleteRole\":\"Delete Role\",\"createRole\":\"Create Role\"},\"modal\":{\"editTitle\":\"Edit Permissions — {name}\",\"save\":\"Save\",\"permSection\":\"Permissions\",\"createRoleTitle\":\"Create Role\",\"editRoleTitle\":\"Edit Role\",\"roleName\":\"Role Name\",\"roleNamePlaceholder\":\"e.g. Content Editor\",\"roleDesc\":\"Description\",\"roleDescPlaceholder\":\"Role description (optional)\"},\"msg\":{\"updated\":\"Permissions updated\",\"roleCreated\":\"Role created\",\"roleUpdated\":\"Role updated\",\"roleDeleted\":\"Role deleted\"},\"deleteConfirm\":{\"title\":\"Confirm Delete Role\",\"desc\":\"This action cannot be undone. Are you sure you want to delete the role \\\"{name}\\\"?\",\"hasUsers\":\"Cannot delete: role has active users\"}},\"usersDepts\":{\"title\":\"Departments\",\"desc\":\"Org-chart display only · does not grant system permissions (permissions are controlled by Roles \u0026 Permissions).\",\"add\":\"Add Department\",\"stat\":{\"total\":\"Departments\",\"users\":\"Total Members\",\"empty\":\"Empty\",\"avg\":\"Avg. Members\"},\"columns\":{\"name\":\"Department\",\"description\":\"Description\",\"users\":\"Members\",\"createdAt\":\"Created\"},\"personUnit\":\"{n}\",\"total\":\"{n, plural, one {# department} other {# departments}}\",\"action\":{\"edit\":\"Edit\",\"delete\":\"Delete\"},\"confirmDelete\":\"Delete this department?\",\"cantDelete\":\"Cannot delete — staff are still assigned to this department.\",\"modal\":{\"editTitle\":\"Edit Department\",\"createTitle\":\"New Department\",\"save\":\"Save\",\"create\":\"Create\",\"nameLabel\":\"Department Name\",\"namePh\":\"Department name\",\"descLabel\":\"Description\",\"descPh\":\"What this department does\"},\"msg\":{\"updated\":\"Department updated\",\"created\":\"Department created\",\"deleted\":\"Department deleted\"},\"mockDepts\":[{\"name\":\"Engineering\",\"description\":\"Builds and maintains the platform.\"},{\"name\":\"Course Research\",\"description\":\"Designs and quality-checks courseware.\"},{\"name\":\"Operations\",\"description\":\"Day-to-day campus support.\"},{\"name\":\"Finance\",\"description\":\"Finance, billing, and license authorization.\"},{\"name\":\"Marketing\",\"description\":\"Brand and student-acquisition campaigns.\"}]},\"applications\":{\"title\":\"Partner Applications\",\"desc\":\"Review franchise applications, approve to provision a campus, or reject.\",\"bread\":[\"Home\",\"Partner Applications\"],\"stat\":{\"total\":\"Total\",\"pending\":\"Pending\",\"approved\":\"Approved\",\"rejected\":\"Rejected\"},\"status\":{\"pending\":\"Pending\",\"approved\":\"Approved\",\"rejected\":\"Rejected\"},\"filter\":{\"statusPlaceholder\":\"Status\"},\"table\":{\"brand\":\"Brand / Contact\",\"phone\":\"Phone\",\"country\":\"Country\",\"scale\":\"Scale\",\"submitted\":\"Submitted\",\"scaleUnit\"
547:\"{count} teacher(s)\",\"campusProvisioned\":\"Campus #{id}\",\"source\":\"Source\",\"sourcePublic\":\"Public application\",\"sourceExpansion\":\"Campus expansion\"},\"action\":{\"approve\":\"Approve\",\"reject\":\"Reject\"},\"pagination\":{\"total\":\"Total {n}\"},\"empty\":{\"title\":\"No applications found\",\"desc\":\"No partner applications match the current filter yet.\"},\"modal\":{\"approve\":{\"title\":\"Approve \u0026 provision campus\",\"hint\":\"On approval, a campus will be created and a master account issued to the partner.\",\"confirm\":\"Approve\"},\"reject\":{\"title\":\"Reject application\",\"desc\":\"Optionally provide a reason. It will be recorded on the application.\",\"reasonPlaceholder\":\"Reason for rejection (optional)\",\"confirm\":\"Reject\"}},\"msg\":{\"operationFailed\":\"Operation failed, please retry\",\"applicationRejected\":\"Application rejected\",\"approved\":\"Approved. Campus created.\",\"approvedWithCampus\":\"Approved. Campus #{id} created.\"}},\"settings\":{\"title\":\"Settings\",\"desc\":\"HQ shared settings · contact / maps / storage\",\"bread\":[\"Settings\"],\"tabs\":{\"system\":\"System\"},\"system\":{\"contactPhone\":\"Support Phone\",\"contactEmail\":\"Support Email\",\"mapService\":\"Campus map service\",\"geoapifyKey\":\"Geoapify API Key\",\"geoapifyKeyPlaceholder\":\"Paste the Geoapify API Key\",\"geoapifyHint\":\"Used for campus address search and reverse geocoding. The key stays in HQ system settings and is used only by the Worker.\",\"save\":\"Save System Settings\",\"msgSaved\":\"System settings saved\",\"msgFailed\":\"Save failed\"}},\"profile\":{\"title\":\"Profile\",\"desc\":\"Update your name, phone number, and login password\",\"basic\":\"Basic Info\",\"nameLabel\":\"Name\",\"nameRequired\":\"Please enter a name\",\"phoneLabel\":\"Phone\",\"phoneInvalid\":\"Invalid phone number format\",\"emailLabel\":\"Email\",\"emailHint\":\"Email is your login credential; contact an admin to change it\",\"saveBasic\":\"Save\",\"basicUpdated\":\"Profile updated\",\"password\":\"Login Password\",\"noPassword\":\"This account has no password set yet; contact an admin to reset it\",\"oldPwd\":\"Current Password\",\"oldPwdRequired\":\"Please enter the current password\",\"oldPwdWrong\":\"Current password is incorrect\",\"newPwd\":\"New Password\",\"newPwdRule\":\"At least 8 characters, including both letters and digits\",\"newPwdSame\":\"New password must differ from the current password\",\"confirmPwd\":\"Confirm New Password\",\"pwdMismatch\":\"The two passwords do not match\",\"savePwd\":\"Change Password\",\"pwdUpdated\":\"Password updated; other devices have been signed out\"}},\"portal\":{\"page\":{\"title\":\"Franchise Console\",\"sub\":\"FRANCHISE\",\"logout\":\"Sign out\",\"campus\":\"Campus\",\"nav\":{\"overview\":\"Overview\",\"courses\":\"Courses\",\"teachers\":\"Teachers\",\"devices\":\"Devices\",\"works\":\"Student Works\"},\"loadFail\":\"Failed to load, please retry\",\"retry\":\"Retry\"},\"overview\":{\"authStatus\":\"Authorization\",\"active\":\"Active\",\"expired\":\"Expired\",\"suspended\":\"Suspended\",\"daysLeft\":\"Days left\",\"days\":\"days\",\"expiresAt\":\"Expires on\",\"noPort\":\"No port provisioned for this campus\",\"storage\":\"Storage used\",\"accounts\":\"Total accounts\",\"principals\":\"Principals / masters\",\"teachers\":\"Teaching team\",\"teachersSub\":\"{n, plural, one {{n} principal / master} other {{n} principals / masters}}\",\"devices\":\"Teaching devices\",\"devicesActive\":\"Active\",\"devicesPending\":\"{n} pending approval\",\"courses\":\"Authorized courses\",\"coursePacks\":\"course packs\",\"avgProgress\":\"{p}% avg progress\",\"works\":\"Student works\",\"worksSub\":\"Uploaded in total\",\"quickTitle\":\"Quick start\",\"quickSub\":\"Three steps to your first class — tap through in order.\",\"qTeachers\":\"Add teachers\",\"qDevices\":\"Approve devices\",\"qCourses\":\"View courses\",\"expiringSoonTitle\":\"Port expiring soon\",\"expiredTitle\":\"Port expired\",\"expiringSoonDesc\":\"Your campus port expires in {d} days. Please contact HQ to renew before teaching is affected.\",\"expiredDesc\":\"Your campus port has expired. The teaching app cannot access encrypted content. Please contact HQ to renew.\",\"renewTitle\":\"Renew / Contact\",\"renewDesc\":\"To renew, please contact HQ support. We will arrange renewal and re-activation.\",\"requestRenewal\":\"Request renewal\",\"pendingBanner\":\"{n, plural, one {{n} request under review} other {{n} requests under review}}\",\"contact\":\"Contact\",\"contactFallback\":\"Please contact your HQ account manager\",\"healthy\":\"Authorization healthy\",\"healthyDesc\":\"Your port is active with plenty of days remaining.\",\"loadFail\":\"Failed to load, please retry\"},\"courses\":{\"title\":\"Authorized courses\",\"sub\":\"Courses HQ has authorized for this campus. Course videos are protected and play only inside the Teaching App.\",\"assign\":\"Assign courses to teacher\",\"request\":\"Request courses\",\"empty\":\"No authorized courses\",\"emptyHint\":\"Contact HQ to enable course authorization, or view via an approved device in the Teaching App.\",\"deviceGate\":\"The course catalog is fetched through an approved teaching device. Sign in on the Teaching App to view full courseware.\",\"units\":\"units\",\"courses\":\"items\",\"progress\":\"Progress\",\"playInApp\":\"Play in the app\",\"webNoPlay\":\"Video does not play on web\",\"fail\":\"Failed to load\",\"video\":\"Video\",\"pdf\":\"PDF\",\"ppt\":\"Slides\"},\"teachers\":{\"title\":\"Teachers\",\"sub\":\"Manage teacher accounts, roles and course grants for this campus.\",\"add\":\"Add teacher\",\"name\":\"Name\",\"phone\":\"Phone\",\"role\":\"Role\",\"status\":\"Status\",\"actions\":\"Actions\",\"master\":\"Master\",\"admin\":\"Admin\",\"member\":\"Member\",\"active\":\"Active\",\"disabled\":\"Disabled\",\"edit\":\"Edit\",\"disable\":\"Disable\",\"assign\":\"Assign courses\",\"disableConfirm\":\"Disable this teacher? They will no longer be able to sign in to the app.\",\"addTitle\":\"Add teacher\",\"editTitle\":\"Edit teacher\",\"password\":\"Initial password\",\"passwordPh\":\"Leave blank to auto-generate\",\"save\":\"Save\",\"cancel\":\"Cancel\",\"okAdd\":\"Teacher added\",\"okEdit\":\"Saved\",\"okDisable\":\"Teacher disabled\",\"fail\":\"Operation failed\",\"noPerm\":\"Only a master or admin can manage teachers. This is a read-only view for you.\",\"phoneRule\":\"Enter a valid 11-digit phone number\",\"nameRule\":\"Please enter a name\"},\"devices\":{\"title\":\"Devices\",\"sub\":\"Approve and disable teaching devices for this campus. Pending devices are highlighted.\",\"name\":\"Device name\",\"type\":\"Type\",\"status\":\"Status\",\"lastOnline\":\"Last online\",\"actions\":\"Actions\",\"pending\":\"Pending\",\"active\":\"Active\",\"disabled\":\"Disabled\",\"approve\":\"Approve\",\"reject\":\"Reject\",\"disable\":\"Disable\",\"disableConfirm\":\"Disabling revokes courseware access immediately. Continue?\",\"rejectTitle\":\"Reject device request\",\"rejectPh\":\"Reason for rejection (optional)\",\"okApprove\":\"Device approved\",\"okReject\":\"Request rejected\",\"okDisable\":\"Device disabled\",\"fail\":\"Operation failed\",\"noPerm\":\"Only a master or admin can approve devices. This is a read-only view for you.\",\"pendingBadge\":\" pending\",\"confirm\":\"Confirm\",\"cancel\":\"Cancel\",\"never\":\"Never\"},\"studentWorks\":{\"title\":\"Student works\",\"sub\":\"Manage this campus's student works and recommend the best ones to HQ.\",\"all\":\"All\",\"recommended\":\"Recommended\",\"recommend\":\"Recommend to HQ\",\"recommended2\":\"Recommended\",\"empty\":\"No works yet\",\"by\":\"By\",\"recTitle\":\"Recommend work to HQ\",\"recNote\":\"Recommendation note\",\"recNotePh\":\"Briefly explain why (required)\",\"submit\":\"Submit\",\"cancel\":\"Cancel\",\"ok\":\"Recommended to HQ\",\"needNote\":\"Please write a recommendation note\",\"fail\":\"Operation failed\",\"hqPending\":\"Pending at HQ\",\"hqAccepted\":\"Accepted\",\"hqRejected\":\"Returned\"},\"assignCourse\":{\"title\":\"Assign courses to a teacher\",\"pickTeacher\":\"Select teacher\",\"pickTeacherPh\":\"Choose a teacher\",\"pickPackages\":\"Packages to authorize\",\"noPackages\":\"No packages available\",\"save\":\"Save grants\",\"cancel\":\"Cancel\",\"ok\":\"Teacher grants updated\",\"needTeacher\":\"Please select a teacher first\",\"fail\":\"Operation failed\",\"loadingGrants\":\"Loading current grants…\",\"hint\":\"Checking a package grants the whole package to the teacher; unchecking revokes it.\"},\"requestCourse\":{\"title\":\"Request courses\",\"hint\":\"Select the course packs you need; HQ will enable them for this campus after approval.\",\"note\":\"Note (optional)\",\"notePh\":\"Add a reason or preferred activation time…\",\"submit\":\"Submit request\",\"cancel\":\"Cancel\",\"granted\":\"Granted\",\"pending\":\"Pending\",\"ok\":\"Request submitted, awaiting HQ approval\",\"needPick\":\"Please select at least one course pack\",\"allGranted\":\"All courses are already enabled for this campus\",\"fail\":\"Submit failed\",\"loading\":\"Loading course catalog…\"},\"requestRenewal\":{\"title\":\"Request renewal\",\"hint\":\"Choose the renewal term; HQ will extend this campus port after approval.\",\"years\":\"Renewal term\",\"yearUnit\"
547:\"year(s)\",\"note\":\"Note (optional)\",\"notePh\":\"Add any details about your renewal…\",\"submit\":\"Submit request\",\"cancel\":\"Cancel\",\"ok\":\"Renewal request submitted, awaiting HQ approval\",\"fail\":\"Submit failed\"}},\"marketing\":{\"account\":{\"console\":\"Console\",\"profile\":\"Profile\",\"apply\":\"Apply to franchise\",\"logout\":\"Log out\",\"menuLabel\":\"Account menu\"},\"legal\":{\"lastUpdated\":\"Last updated\",\"questionsTitle\":\"Questions?\",\"questionsDesc\":\"If anything here is unclear, our team is happy to help. Reach out and we will get back to you.\",\"disclaimer\":\"This page is provided for general information and does not constitute legal advice.\"},\"franchise\":{\"eyebrow\":\"BECOME A PARTNER\",\"title\":\"Bring MagiBox to your market\",\"sub\":\"Tell us about your brand and region. Our partnership team reviews every application personally.\",\"accessTitle\":\"No console role yet\",\"accessText\":\"If you arrived here after sign-in, your account is active but has not been assigned as admin, partner, or teacher.\",\"stepsLabel\":\"Application steps\",\"steps\":[[\"01\",\"Tell us the market\",\"Brand, region, contact, expected scale.\"],[\"02\",\"Partnership call\",\"A real discussion about territory and rollout.\"],[\"03\",\"Console setup\",\"Approved partners receive the partner console.\"]],\"reviewText\":\"Applications go to the partnership team. We review the market fit, then open the right console after approval.\",\"formSub\":\"Leave the partner details here. The team will reply by email.\",\"fieldCompany\":\"Brand / company\",\"fieldName\":\"Contact name\",\"fieldPhone\":\"Phone\",\"fieldPhonePlaceholder\":\"+65 8000 0000\",\"fieldEmail\":\"Work email\",\"fieldEmailLocked\":\"Locked to your sign-in email\",\"fieldCountry\":\"Country\",\"fieldScale\":\"Expected scale\",\"fieldScaleHint\":\"optional\",\"fieldScalePlaceholder\":\"e.g. 10 campuses\",\"fieldNotes\":\"Tell us about your plans\",\"fieldNotesHint\":\"optional\",\"fieldNotesPlaceholder\":\"Territory, timeline, existing courses…\",\"cancel\":\"Cancel\",\"submit\":\"Submit application\",\"submitting\":\"Sending…\",\"fineprint\":\"We only use your details to review your application.\",\"successTitle\":\"Application received\",\"successText\":\"Thanks — our partnership team will reply to\",\"successDone\":\"Done\"}},\"franchisee\":{\"addBtn\":\"New partner\",\"status\":{\"disabled\":\"Disabled\"},\"modal\":{\"addTitle\":\"New partner\",\"editTitle\":\"Edit partner\",\"nameLabel\":\"Brand / Company name\",\"namePh\":\"e.g. ACME Learning\",\"contactLabel\":\"Contact name\",\"contactPh\":\"Person in charge\",\"phoneLabel\":\"Phone\",\"phonePh\":\"Login phone (optional)\",\"emailLabel\":\"Email\",\"emailPh\":\"Login email (optional)\",\"emailLockedHint\":\"The login email can't be changed here — this field is only a copy in the partner record and doesn't affect how they sign in.\",\"hint\":\"Phone or email becomes the partner's login account.\",\"nameRequired\":\"Brand / company name is required\",\"contactRequired\":\"Contact name is required\",\"loginRequired\":\"Phone or email is required (it is the login account)\",\"create\":\"Create\",\"save\":\"Save\"},\"resetPassword\":{\"action\":\"Reset password\",\"title\":\"Reset the contact's login password?\",\"desc\":\"A new password is generated, the old one stops working immediately, and all active sessions are signed out. The new password is shown only once — hand it over in person.\"},\"disable\":{\"title\":\"Disable this partner?\",\"desc\":\"The partner will be disabled and hidden from selectable lists. Existing campuses keep their data; you can re-enable later.\"}}}
547,\"now\":\"$undefined\",\"timeZone\":\"UTC\",\"children\":\"$L11\"}]\n12:I[\"fa9543d33205\",[],\"default\",1]\n13:I[\"08d56bbfc4d3\",[],\"default\",1]\n14:I[\"d7e280f2dbdf\",[],\"default\",1]\n15:I[\"c72798c35bbe\",[],\"Toaster\",1]\n11:[\"$\",\"$L12\",null,{\"children\":[\"$\",\"$L13\",null,{\"locale\":\"en\",\"children\":[[\"$\",\"$L14\",null,{\"children\":[\"$\",\"$L2\",null,{}]}],[\"$\",\"$L15\",null,{}]]}]}]\n")</script>
547<script>self.__VINEXT_RSC_DONE__=true</script>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.