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 & universities</a></li><li><a href="#audience">Corporate L&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.