1<!DOCTYPE html> 2<html lang="en"> 3 <head> 4
4<script> 5 self["MonacoEnvironment"] = (function (paths) { 6 return { 7 globalAPI: false, 8 getWorkerUrl : function (moduleId, label) { 9 var result = paths[label]; 10 if (/^((http:)|(https:)|(file:)|(\/\/))/.test(result)) { 11 var currentUrl = String(window.location); 12 var currentOrigin = currentUrl.substr(0, currentUrl.length - window.location.hash.length - window.location.search.length - window.location.pathname.length); 13 if (result.substring(0, currentOrigin.length) !== currentOrigin) { 14 var js = '/*' + label + '*/importScripts("' + result + '");'; 15 var blob = new Blob([js], { type: 'application/javascript' }); 16 return URL.createObjectURL(blob); 17 } 18 } 19 return result; 20 } 21 }; 22 })({ 23 "editorWorkerService": "/monacoeditorwork/editor.worker.bundle.js", 24 "typescript": "/monacoeditorwork/ts.worker.bundle.js", 25 "json": "/monacoeditorwork/json.worker.bundle.js", 26 "css": "/monacoeditorwork/css.worker.bundle.js", 27 "html": "/monacoeditorwork/html.worker.bundle.js", 28 "javascript": "/monacoeditorwork/ts.worker.bundle.js", 29 "less": "/monacoeditorwork/css.worker.bundle.js", 30 "scss": "/monacoeditorwork/css.worker.bundle.js", 31 "handlebars": "/monacoeditorwork/html.worker.bundle.js", 32 "razor": "/monacoeditorwork/html.worker.bundle.js" 33}); 34 </script>
34 35 <!-- Runtime config â must execute before the Vite module scripts read 36 window.__APP_CONFIG__. `defer` keeps that order (deferred classic 37 scripts and module scripts run in document order after parsing) while 38 unblocking the HTML parser, so asset preloads start immediately 39 instead of stalling ~160ms (p75) on this API round trip. 40 Back on the .js path: Render's extension-keyed edge cache rule twice 41 pinned a wrong body under this URL despite `no-store` (2026-08-20 and 42 2026-08-24); Render has since removed that cache rule for us, so the 43 suffix is safe again. If poisoning recurs: bump the `?v=` cache key, 44 or switch the src to the extension-less /api/frontend-config route 45 (kept serving as an escape hatch). --> 46
46<script defer="" src="/api/frontend-config.js?v=3"> 47 </script>
47 48 <!-- Usercentrics CMP --> 49
49<script type="application/javascript"> 50 var isBypassEnabled = document.cookie.split(';').some(function(cookie) { 51 return cookie.trim().indexOf('no_cmp=') === 0; 52 }); 53 var UC_UI_SUPPRESS_CMP_DISPLAY = isBypassEnabled; 54 </script>
54 55
55<script async="" src="https://accounts.google.com/gsi/client"> 56 </script>
56 57 <meta charset="utf-8"/> 58 <!-- Platform favicon: a real multi-size ICO (16/32/48) of the current sun 59 mark, served from public/. This is the ONLY rel="icon" link, and it 60 must stay that way â App.js rewrites the first match for backoffice. 61 Crawlers and link scrapers read this tag (and probe /favicon.ico 62 directly) with no JS, so the brand has to be correct statically. --> 63 <link href="https://media.base44.com/images/public/6992bd1bf436375ccf1da7fe/f09c5651d_logo.png" rel="icon" sizes="any"/> 64
64<script> 65 // Pre-paint theme stamp for the demo Appearance (demo-appearance-themes) 66 // cohort: on a hard load the theme is applied by React (DemoThemeApplier) 67 // only after auth resolves, so the document boots light â a white flash, 68 // then light route skeletons (the FOUC this removes). DemoThemeApplier 69 // persists 'demo-display-theme-applied' only while the feature is active, 70 // so every other cohort (flag-off, native, backoffice, runtime apps) 71 // never sets it and this stays a no-op. React stays the source of truth 72 // after mount: DemoThemeApplier 73 // re-applies or clears these exact attributes. Keys must stay byte-identical 74 // with components/settings/useDemoTheme.ts â BOOT_STAMP_CONTRACT there is 75 // asserted against this file by useDemoTheme.spec.ts, so update both. 76 // 77 // Kill-switch caveat: the marker is written while the feature is active and 78 // only cleared once /me resolves. On the FIRST load after a user loses the 79 // flag â or after the kill switch is flipped mid-incident â this still 80 // stamps dark, then React settles to light: one darkâlight flash, which 81 // self-heals from the next load on. Flipping the switch does not repaint 82 // already-open tabs pre-paint; it collapses them on their next load. 83 try { 84 if (localStorage.getItem('demo-display-theme-applied') === '1') { 85 var demoTheme = localStorage.getItem('demo-display-theme'); 86 var demoDark = demoTheme === 'dark' || 87 (demoTheme === 'system' && window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches); 88 if (demoDark) { 89 var demoRoot = document.documentElement; 90 demoRoot.setAttribute('data-ds', 'base44'); 91 demoRoot.setAttribute('data-theme', 'dark'); 92 demoRoot.classList.add('dark'); 93 // Kill the pre-CSS white document flash; the app paints over it. 94 demoRoot.style.backgroundColor = '#09090b'; 95 } 96 } 97 } catch (e) {} 98 </script>
98 99 <meta content="width=device-width, initial-scale=1.0, viewport-fit=cover" name="viewport"/> 100 <meta content="#000000" name="theme-color"/> 101 <meta content="A platform for managing sports referees, team assignments, and match schedules. " name="description"/> 102 <meta content="yes" name="mobile-web-app-capable"/> 103 <meta content="black" name="apple-mobile-web-app-status-bar-style"/> 104 <meta content="Officiate" name="apple-mobile-web-app-title"/> 105 <link href="https://media.base44.com/images/public/6992bd1bf436375ccf1da7fe/f09c5651d_logo.png" rel="apple-touch-icon" sizes="180x180"/> 106 <link href="https://athletica-officiate-cf1da7fe.base44.app/manifest.json" rel="manifest"/> 107 <title> 108 Officiate 109 </title> 110 <!-- Open Graph / Facebook --> 111 <meta content="website" property="og:type"/> 112 <meta content="https://athletica-officiate-cf1da7fe.base44.app/login" property="og:url"/> 113 <meta content="Officiate" property="og:title"/> 114 <meta content="Officiate" property="og:site_name"/> 115 <meta content="A platform for managing sports referees, team assignments, and match schedules. " property="og:description"/> 116 <meta content="https://media.base44.com/images/public/6992bd1bf436375ccf1da7fe/f09c5651d_logo.png/v1/fill/w_1200,h_630/f09c5651d_logo.png" property="og:image"/> 117 <meta content="1200" property="og:image:width"/> 118 <meta content="630" property="og:image:height"/> 119 <meta content="Base44 link preview" property="og:image:alt"/> 120 <!-- Twitter --> 121 <meta content="summary_large_image" name="twitter:card"/> 122 <meta content="https://athletica-officiate-cf1da7fe.base44.app/login" name="twitter:url"/> 123 <meta content="Officiate" name="twitter:title"/> 124 <meta content="A platform for managing sports referees, team assignments, and match schedules. " name="twitter:description"/> 125 <meta content="https://media.base44.com/images/public/6992bd1bf436375ccf1da7fe/f09c5651d_logo.png/v1/fill/w_1200,h_630/f09c5651d_logo.png" name="twitter:image"/> 126 <meta content="Base44 link preview" name="twitter:image:alt"/> 127
127<script crossorigin="" src="/static/index-D96eRrlv.js" type="module"> 128 </script>
128 129 <link crossorigin="" href="/static/rolldown-runtime-C0FnF6B9.js" rel="modulepreload"/> 130 <link crossorigin="" href="/static/runtime-QtgwY_nV.js" rel="modulepreload"/> 131 <link crossorigin="" href="/static/backend-CC2lXJt_.js" rel="modulepreload"/> 132 <link crossorigin="" href="/static/vendor-react-Ccu8BlQU.js" rel="modulepreload"/> 133 <link crossorigin="" href="/static/preload-helper-BZ1Pz5am.js" rel="modulepreload"/> 134 <link crossorigin="" href="/static/vendor-data-D4IPhVFk.js" rel="modulepreload"/> 135 <link crossorigin="" href="/static/errorReporting-C8KVtz7O.js" rel="modulepreload"/> 136 <link crossorigin="" href="/static/i18n-pkgydE_c.js" rel="modulepreload"/> 137 <link crossorigin="" href="/static/vendor-utils-C8Ev1Z53.js" rel="modulepreload"/> 138 <link crossorigin="" href="/static/mixpanelUtils-CtEUaRBr.js" rel="modulepreload"/> 139 <link crossorigin="" href="/static/bridge-Cq_Szqk4.js" rel="modulepreload"/> 140 <link crossorigin="" href="/static/axiosClient-DnVO32-R.js" rel="modulepreload"/> 141 <link crossorigin="" href="/static/domainValidation-FMKryCR2.js" rel="modulepreload"/> 142 <link crossorigin="" href="/static/vendor-ui-C97dD7rv.js" rel="modulepreload"/> 143 <link crossorigin="" href="/static/base-DLGBKAFy.js" rel="modulepreload"/> 144 <link crossorigin="" href="/static/AuthAPI-C4-6oDY6.js" rel="modulepreload"/> 145 <link crossorigin="" href="/static/useDesignSystem-CehPfIkU.js" rel="modulepreload"/> 146 <link crossorigin="" href="/static/logoutReturnPath-HjtsxsFd.js" rel="modulepreload"/> 147 <link crossorigin="" href="/static/AuthContext-BwFq1txD.js" rel="modulepreload"/> 148 <link crossorigin="" href="/static/dist-XEn2s_wS.js" rel="modulepreload"/> 149 <link crossorigin="" href="/static/featureFlags-DkMoeXMw.js" rel="modulepreload"/> 150 <link crossorigin="" href="/static/useHideNativeBottomTabs-C_i-vpDp.js" rel="modulepreload"/> 151 <link crossorigin="" href="/static/native-mobile-app-DhQk5gto.js" rel="modulepreload"/> 152 <link crossorigin="" href="/static/prop-types-D9WxI36-.js" rel="modulepreload"/> 153 <link crossorigin="" href="/static/esm-BcdKrTNz.js" rel="modulepreload"/> 154 <link crossorigin="" href="/static/use-mobile-CaU875wk.js" rel="modulepreload"/> 155 <link crossorigin="" href="/static/create-zustand-store-BANj7DdM.js" rel="modulepreload"/> 156 <link crossorigin="" href="/static/persist-to-storage-BFlqrUp_.js" rel="modulepreload"/> 157 <link crossorigin="" href="/static/actions.middleware-D_eRWZoy.js" rel="modulepreload"/> 158 <link crossorigin="" href="/static/WorkspaceAPI-NXczXWIe.js" rel="modulepreload"/> 159 <link crossorigin="" href="/static/useWorkspaceUnlockState-CC8XdN-l.js" rel="modulepreload"/> 160 <link crossorigin="" href="/static/WorkspaceContext-SU9dVSL0.js" rel="modulepreload"/> 161 <link crossorigin="" href="/static/usePlatform-C2eTT50O.js" rel="modulepreload"/> 162 <link crossorigin="" href="/static/react-BanELCRV.js" rel="modulepreload"/> 163 <link crossorigin="" href="/static/useFeatureFlags-BRZVRkZF.js" rel="modulepreload"/> 164 <link crossorigin="" href="/static/utils-CrD3uvwO.js" rel="modulepreload"/> 165 <link crossorigin="" href="/static/toast-8IacIur2.js" rel="modulepreload"/> 166 <link crossorigin="" href="/static/index-BGSEU5bQ.css" rel="stylesheet"/> 167
167<script id="base44-runtime-tailwind-config"> 168 window.tailwind = window.tailwind || {}; window.tailwind.config = { darkMode: 'class' }; 169 </script>
169 170
170<script id="base44-runtime-tailwind-cdn" src="https://cdn.tailwindcss.com"> 171 </script>
171 172
172<script> 173 (function () { 174 var titles = {"/accountsettings": "Account Settings | Athletica Officiate", "/account-settings": "Account Settings | Athletica Officiate", "/availability": "Availability | Athletica Officiate", "/notifications": "Notifications | Athletica Officiate", "/performance": "Performance | Athletica Officiate", "/scheduling": "Scheduling | Athletica Officiate", "/team-dashboard": "Team Dashboard | Athletica Officiate", "/teamdashboard": "Team Dashboard | Athletica Officiate", "/testsetup": "Test Setup | Athletica Officiate", "/test-setup": "Test Setup | Athletica Officiate", "/login": "Login | Officiate", "/register": "Register | Officiate", "/forgot-password": "Forgot Password | Officiate", "/reset-password": "Reset Password | Officiate", "/": "Officiate", "/events": "Events | Officiate", "/smartimport": "Smart Import | Officiate", "/smart-import": "Smart Import | Officiate", "/account": "Account | Officiate", "/display-preferences": "Display Preferences | Officiate", "/displaypreferences": "Display Preferences | Officiate", "/dashboard-preferences": "Dashboard Preferences | Officiate", "/dashboardpreferences": "Dashboard Preferences | Officiate", "/notificationpreferences": "Notification Preferences | Officiate", "/notification-preferences": "Notification Preferences | Officiate", "/parent-connect": "Parent Connect | Officiate", "/parentconnect": "Parent Connect | Officiate", "/privacypreferences": "Privacy Preferences | Officiate", "/privacy-preferences": "Privacy Preferences | Officiate", "/home": "Officiate"}; 175 // PascalCase boundaries -> "-", mirroring _PASCAL_BOUNDARY_RE without lookbehind 176 // (old Safari fails to PARSE a lookbehind, taking the whole script down). 177 var dashed = function (s) { 178 return s.replace(/([a-z0-9])([A-Z])/g, "$1-$2").replace(/([A-Z])([A-Z][a-z])/g, "$1-$2"); 179 }; 180 var decode = function (s) { 181 // A %2F inside ONE segment must not become a structural separator: /blog/foo%2Fbar is a 182 // dynamic slug, and letting it split would match a static /blog/foo/bar and write ITS title. 183 try { var d = decodeURIComponent(s); return d.indexOf("/") < 0 ? d : s; } catch (e) { return s; } 184 }; 185 var segments = function (path) { return path.split("/").filter(Boolean).map(decode); }; 186 var norm = function (path) { 187 var parts = segments(path).map(function (s) { return dashed(s).toLowerCase(); }); 188 return parts.length ? "/" + parts.join("/") : "/"; 189 }; 190 var lastPath = location.pathname, written = document.title, on = true; 191 var sync = function () { 192 // Path only: a hash/query change is the same page, and the SDK strips its own auth 193 // params with replaceState -- neither must clobber a server-rendered title in place. 194 if (!on || location.pathname === lastPath) return; 195 lastPath = location.pathname; 196 if (document.title !== written) { on = false; return; } 197 // Write ONLY a title the map proves. An unmapped path is a dynamic route (/blog/:slug) the 198 // map cannot carry, and writing a placeholder there is destructive, not merely vague: the 199 // prerender worker runs no setUserAgent, so its capture browser reads as human and executes 200 // this script, and coordinator.js's settle wait explicitly tolerates a full navigation -- 201 // a redirect landing on an unmapped path would bake the placeholder into the stored 202 // snapshot. Leaving the title alone degrades to today's behavior instead. 203 // Exact lookup only. A dash-stripped retry here would let a genuinely different /set-up 204 // claim /setup: the map carries a dash-free key only where a PascalCase boundary put the 205 // dashes there, and the client cannot tell the two apart. The map emits every reachable 206 // shape per segment instead (_client_url_variants). 207 var title = titles[norm(location.pathname)]; 208 if (title === undefined) return; 209 document.title = title; 210 // Re-read: the setter stores verbatim but the getter strips and collapses whitespace, so 211 // keeping the assigned string would make the next sync() read our own write as the app's. 212 written = document.title; 213 }; 214 var wrap = function (fn) { 215 // The history entry is already pushed by the time sync() runs, so a throw here would 216 // surface inside the host app's router and break navigation. This is injected into apps 217 // we cannot test, so it swallows rather than trusting the trace. 218 return function () { 219 var r = fn.apply(this, arguments);
220 try { sync(); } catch (e) {} 221 return r; 222 }; 223 }; 224 history.pushState = wrap(history.pushState); 225 history.replaceState = wrap(history.replaceState); 226 window.addEventListener("popstate", sync); 227})(); 228 </script>
228 229 <link href="https://athletica-officiate-cf1da7fe.base44.app/login" rel="canonical"/> 230
230<script data-seo-source="builder" type="application/ld+json"> 231 {"name": "Athletica Officiate", "@context": "https://schema.org", "@type": "WebSite", "url": "https://officiate.athletica-fit.com"} 232 </script>
232 233
233<script data-seo-source="builder" type="application/ld+json"> 234 {"name": "Athletica Officiate", "logo": "https://media.base44.com/images/public/6992bd1bf436375ccf1da7fe/91149de68_Appmysiteofficiate.png", "@context": "https://schema.org", "@type": "Organization", "url": "https://officiate.athletica-fit.com"} 235 </script>
235 236
236<script data-seo-source="builder" type="application/ld+json"> 237 {"@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [{"@type": "ListItem", "position": 1, "name": "Home", "item": "https://athletica-officiate-cf1da7fe.base44.app/"}, {"@type": "ListItem", "position": 2, "name": "Login | Officiate", "item": "https://athletica-officiate-cf1da7fe.base44.app/login"}]} 238 </script>
238 239 <meta content="noindex, follow" name="robots"/> 240 </head> 241 <body> 242 <noscript> 243 You need to enable JavaScript to run this app. 244 </noscript> 245 <div id="root"> 246 <div data-seo-source="builder" id="seo-snapshot" style="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;"> 247 <main> 248 <header> 249 <h1> 250 Officiate 251 </h1> 252 <p> 253 A platform for managing sports referees, team assignments, and match schedules. 254 </p> 255 </header> 256 <nav aria-label="Pages"> 257 <h2> 258 Pages 259 </h2> 260 <ul> 261 <li> 262 <a href="/"> 263 Home 264 </a> 265 </li> 266 <li> 267 <a href="/AccountSettings"> 268 Account Settings 269 </a> 270 â Account Settings on Athletica Officiate. A platform for managing sports referees, team assignments, and match schedules. 271 </li> 272 <li> 273 <a href="/Availability"> 274 Availability 275 </a> 276 â Availability on Athletica Officiate. A platform for managing sports referees, team assignments, and match schedules. 277 </li> 278 <li> 279 <a href="/Notifications"> 280 Notifications 281 </a> 282 â Notifications on Athletica Officiate. A platform for managing sports referees, team assignments, and match schedules. 283 </li> 284 <li> 285 <a href="/Performance"> 286 Performance 287 </a> 288 â Performance on Athletica Officiate. A platform for managing sports referees, team assignments, and match schedules. 289 </li> 290 <li> 291 <a href="/Scheduling"> 292 Scheduling 293 </a> 294 â Scheduling on Athletica Officiate. A platform for managing sports referees, team assignments, and match schedules. 295 </li> 296 <li> 297 <a href="/TeamDashboard"> 298 Team Dashboard 299 </a> 300 â Team Dashboard on Athletica Officiate. A platform for managing sports referees, team assignments, and match schedules. 301 </li> 302 <li> 303 <a href="/TestSetup"> 304 Test Setup 305 </a> 306 â Test Setup on Athletica Officiate. A platform for managing sports referees, team assignments, and match schedules. 307 </li> 308 <li> 309 <a href="/login"> 310 Login 311 </a> 312 â Login on Officiate. A platform for managing sports referees, team assignments, and match schedules. 313 </li> 314 <li> 315 <a href="/register"> 316 Register 317 </a> 318 â Register on Officiate. A platform for managing sports referees, team assignments, and match schedules. 319 </li> 320 <li> 321 <a href="/forgot-password"> 322 Forgot Password 323 </a> 324 â Forgot Password on Officiate. A platform for managing sports referees, team assignments, and match schedules. 325 </li> 326 <li> 327 <a href="/reset-password"> 328 Reset Password 329 </a> 330 â Reset Password on Officiate. A platform for managing sports referees, team assignments, and match schedules. 331 </li> 332 <li> 333 <a href="/Events"> 334 Events 335 </a> 336 â Events on Officiate. A platform for managing sports referees, team assignments, and match schedules. 337 </li> 338 <li> 339 <a href="/SmartImport"> 340 Smart Import 341 </a> 342 â Smart Import on Officiate. A platform for managing sports referees, team assignments, and match schedules. 343 </li> 344 <li> 345 <a href="/Account"> 346 Account 347 </a> 348 â Account on Officiate. A platform for managing sports referees, team assignments, and match schedules. 349 </li> 350 <li> 351 <a href="/DisplayPreferences"> 352 Display Preferences 353 </a> 354 â Display Preferences on Officiate. A platform for managing sports referees, team assignments, and match schedules. 355 </li> 356 <li> 357 <a href="/DashboardPreferences"> 358 Dashboard Preferences 359 </a> 360 â Dashboard Preferences on Officiate. A platform for managing sports referees, team assignments, and match sc
360hedules. 361 </li> 362 <li> 363 <a href="/NotificationPreferences"> 364 Notification Preferences 365 </a> 366 â Notification Preferences on Officiate. A platform for managing sports referees, team assignments, and match schedules. 367 </li> 368 <li> 369 <a href="/ParentConnect"> 370 Parent Connect 371 </a> 372 â Parent Connect on Officiate. A platform for managing sports referees, team assignments, and match schedules. 373 </li> 374 <li> 375 <a href="/PrivacyPreferences"> 376 Privacy Preferences 377 </a> 378 â Privacy Preferences on Officiate. A platform for managing sports referees, team assignments, and match schedules. 379 </li> 380 </ul> 381 </nav> 382 </main> 383 </div> 384 </div> 385 </body> 386</html>
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.