PageSourceSearch

https://www.tigerathletics.net/sponsors

html tigerathletics.net collected 2026-10-04 02:44:30 UTC 136,668 bytes, 2,195 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3<head>
4<style>
5    .gam-sport-banner-ad iframe,
6    .gam-sport-banner-ad-2 iframe
7    {
8        width: 100%;
9        height: auto;
10    }
11
12    .prog-mobile-banners #gam-banner-ad,
13    .prog-mobile-banners #gam-banner-ad-2
14    {
15        min-height: 100px;
16        display: flex;
17        align-items: center;
18        justify-content: center;
19    }
20
21    /* Desktop presenting sponsor: cap at native 300x75. */
22    .gam-presenting-sponsor-2,
23    .gam_ps {
24        max-width: 300px;
25        max-height: 75px;
26        margin: 0 auto;
27        overflow: hidden;
28    }
29
30    .gam-presenting-sponsor-2 iframe,
31    .gam_ps iframe {
32        width: 100%;
33        height: 100%;
34    }
35
36    /* Layout 19 desktop presenting sponsor.
37       The slot is defined as a fixed 300x75 (defineSlot below), so give the iframe its
38       full 300x75 viewport and paint it at 2/3 (200x50) with a transform — same pattern
39       as the mobile slot. The old width:200px!important squeezed the iframe VIEWPORT to
40       200 while the creative document inside stayed 300 wide, clipping the right third
41       of every creative ("Piedmont" -> "Piedm"). The container rules reserve the flex
42       slot so the priority nav measures correctly before the ad loads; GAM tracking is
43       unaffected (the creative loads at native size, it just paints smaller). */
44    .presenting-sponsor-desktop-19 {
45        width: 212px;
46        min-width: 212px;
47        overflow: hidden;
48    }
49    .presenting-sponsor-desktop-19 .gam-presenting-sponsor-2 {
50        width: 200px;
51        height: 50px;
52        max-width: 200px;
53        max-height: 50px;
54        overflow: hidden;
55        position: relative;
56    }
57    .presenting-sponsor-desktop-19 .gam-presenting-sponsor-2 iframe {
58        width: 300px !important;
59        /* beat the generic img/iframe max-width:100% (would cap the viewport at the
60           200px container and clip the creative's right third) */
61        max-width: none !important;
62        height: 75px !important;
63        transform: scale(0.6667);
64        transform-origin: top left;
65        border: 0;
66    }
67
68    /* AB-6152: Bootstrap-3 header menus (Style 4/8/9/15/17) render the desktop
69       sponsor inside .presenting-sponsor-mobile-menu, whose template LESS floats
70       #gam-presenting-sponsor-2 off-screen (margin:0 -200px auto; width:250px) — so
71       it's hidden until you scroll and can run off the side / drop below the nav.
72       This GAM <style> loads BEFORE template main.css, so a class rule can't beat the
73       LESS on source order; we beat it on SPECIFICITY by including the slot id
74       (.class #id = 1,1,0 > the LESS .a .b .c = 0,3,0). Pin the slot to the same
75       200x50 right-aligned, clipped box template 19 uses so it stays in the viewport,
76       in both the rest and .fixedbar states. Scoped to .presenting-sponsor-mobile-menu,
77       so template 19 (.presenting-sponsor-desktop-19) is untouched. */
78    /* DIV wrapper = Style 15 family (the wrap is a div after the menu ul).
79       Absolute + translateY instead of float:right — the float top-aligned the
80       50px slot in the ~76px menu bar, so it rode visibly higher than the nav
81       links ("doesn't line up"). The nearest positioned ancestor is the header
82       .container (position:relative), which spans the bar's full height, so
83       top:50% centers the sponsor on the same line as the links in both the
84       resting and .fixedbar states. */
85    div.presenting-sponsor-mobile-menu #gam-presenting-sponsor-2 {
86        position: absolute;
87        right: 15px;
88        top: 50%;
89        transform: translateY(-50%);
90        float: none;
91        width: 200px;
92        max-width: 200px;
93        height: 50px;
94        max-height: 50px;
95        margin: 0;
96        overflow: hidden;
97    }
98    /* AB-6152 follow-up (template 5 / Style 15 family): the absolute rule above only
99       holds if an ancestor of the slot is positioned, so right:15px/top:50% anchor to
100       the header .container. Template 5's main.less sets `.custom-nav .navbar
101       { position: inherit }`, which makes the navbar STATIC and removes BS3's default
102       position:relative — so in the resting (unscrolled) state NO ancestor is
103       positioned and the slot anchors to the viewport, dropping the sponsor on top of
104       the nav links. (Scrolled, the position:fixed .fixedbar became the containing
105       block and it looked fine — hence the intermittent behavior.) Re-establish the
106       containing block AB-6152 assumes, for both states. Scoped to .custom-nav so only
107       the Style 15 header family is affected; a no-op for the li-variant (Style 8/9),
108       whose slot is position:relative (in-flow), not absolute. */
109    .custom-nav #nav-container {
110        position: relative;
111    }
112    /* AB-6152 follow-up #2 (Style-15 family, all-dropdown navs): when the greedy collapser
113       in topmenu2.js runs out of movable items — every remaining item is a .dropdown, which
114       it won't nest into MORE — but the nav still reaches the presenting sponsor, it tags the
115       header .nav-compact (then .nav-compact-2 if one tier isn't enough). That tightens the
116       nav just enough to clear the ad. Applied ONLY in that jammed case and cleared on resize,
117       so sparse navs keep their full padding and text size (and the larger-text preference).
118       Tier 1 trims horizontal padding only — text size is untouched; tier 2 is the last resort
119       and only then nudges letter-spacing. Loaded before template main.css, so we win on
120       specificity (id + 2 classes) + !important, same as the rules above. */
121    .custom-nav.nav-compact #nav-links > li > a {
122        padding-left: 9px !important;
123        padding-right: 9px !important;
124    }
125    .custom-nav.nav-compact.nav-compact-2 #nav-links > li > a {
126        padding-left: 5px !important;
127        padding-right: 5px !important;
128        letter-spacing: -0.2px;
129    }
130    /* LI wrapper = Style 8/9 (the sponsor is an inline li in the greedy #nav-links).
131       Keep it in flow — the nav JS reserves its width; absolute would collapse the li. */
132    li.presenting-sponsor-mobile-menu #gam-presenting-sponsor-2 {
133        float: right;
134        width: 200px;
135        max-width: 200px;
136        height: 50px;
137        max-height: 50px;
138        margin: 0;
139        overflow: hidden;
140        position: relative;
141    }
142    .presenting-sponsor-mobile-menu #gam-presenting-sponsor-2 iframe {
143        /* Full 300x75 viewport scaled to 200x50 — a 200px viewport clips the right
144           third of the 300-wide creative document (same bug as the t19 rule above). */
145        width: 300px !important;
146        max-width: none !important;
147        height: 75px !important;
148        transform: scale(0.6667);
149        transform-origin: top left;
150        border: 0;
151    }
152
153    /* Mobile presenting sponsor: GAM serves a 300x75 creative, so visually
154       scale the whole iframe down to fit the header next to the logo + nav
155       + hamburger. The iframe still loads at native 300x75 so impressions,
156       click tracking, and viewability reporting fire correctly — it just
157       paints smaller. (Pattern ported from the State Association sites.) */
158    #gam-presenting-sponsor-mobile {
159        width: 200px;
160        height: 50px;
161        overflow: hidden;
162        position: relative;
163        margin: 0;
164    }
165    #gam-presenting-sponsor-mobile iframe {
166        width: 300px !important;
167        max-width: none !important;
168        height: 75px !important;
169        transform: scale(0.6667);
170        transform-origin: top left;
171        border: 0;
172    }
173    @media (max-width: 380px) {
174        #gam-presenting-sponsor-mobile {
175            width: 160px;
176            height: 40px;
177        }
178        #gam-presenting-sponsor-mobile iframe {
179            transform: scale(0.5333);
180        }
181    }
182
183    /* Template 19 mobile: the sponsor has its own full-width row below the nav,
184       so don't clamp it to the inline box the other templates use.
185       Class+id specificity beats the bare #id rules above, including the 380px breakpoint. */
186    .presenting-sponsor-mobile-19 #gam-presenting-sponsor-mobile {
187        width: auto;
188        max-width: 100%;
189        height: 64px;
190    }
191
192    /* ===== PRESENTING SPONSOR FOLLOWS EACH TEMPLATE'S NATIVE NAV =====
193       No universal breakpoint. The desktop slot (.gam-presenting-sponsor-2) shows while
194       the header is in desktop mode and the mobile slot (#gam-presenting-sponsor-mobile)
195       shows once it collapses — exactly the Bootstrap visibility classes each header
196       already carries (BS3: hidden-sm hidden-xs / hidden-md hidden-lg; BS4/5: d-none
197       d-md-block / d-block d-md-none). The JS below fills whichever slot the CSS shows,
198       so per-template breakpoints are honored automatically. For the greedy "MORE" nav
199       (Style 8/9/15) the desktop sponsor is an inline <li>; nudgeGreedyNav() re-runs
200       AdjustNav() after the GAM creative paints so the nav reserves the ad's real width
201       and pushes overflow links into MORE instead of wrapping the sponsor below the nav.
202       (An earlier "force mobile sponsor at <=992 everywhere" rule lived here; it was
203       reverted because it misplaced the mobile slot on desktop-nav templates.) */
204
205</style>
206
207
208
209        
209<script src="https://adklip.net/prebid/mascotmedia.js"></script>
209
210    
210<script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script>
210
211    
211<script>
212        window.googletag = window.googletag || { cmd: [] };
213
214        function isMobile() {
215            return window.innerWidth <= 768;
216        }
217
218        // The greedy "MORE" nav (topmenu.js, Header Style 8/9/15) lays out BEFORE the GAM
219        // presenting-sponsor iframe paints, so it never reserves the ad's width and the
220        // sponsor wraps to a line below the nav. Re-running AdjustNav() once the creative is
221        // sized makes the nav recount the sponsor <li> and tuck overflow links into MORE,
222        // keeping the sponsor inline. No-op on templates without the greedy nav (AdjustNav
223        // is undefined there), so it's safe to call unconditionally.
224        function nudgeGreedyNav() {
225            if (typeof AdjustNav === 'function') {
226                try { AdjustNav(); } catch (e) { /* greedy nav not present on this template */ }
227            }
228        }
229
230        googletag.cmd.push(function () {
231            var isMobileDevice = isMobile();
232            var REFRESH_KEY = 'refresh';
233            var REFRESH_VALUE = 'true';
234
235            // NEW: programmatic flag + refresh timing
236            var useProgrammaticAds = true;
237            // 30s is Google's minimum refresh interval for any slot AdX can fill do not lower
238            var REFRESH_MS = 30000;
239
240            // NEW: add a body class only when programmatic + mobile (for stable layout)
241            if (useProgrammaticAds && isMobileDevice) {
242                document.body.classList.add('prog-mobile-banners');
243            }
244
245            // ------- PRESENTING SPONSOR-------
246            // Define BOTH slots unconditionally. Defining a slot does NOT request an ad
247            // (only display()/refresh() does), and the responsive-fill block below
248            // displays exactly ONE at a time — so this adds no load-time impressions.
249            // The old isMobileDevice (innerWidth<=768) branch defined only one slot for
250            // the page's life; combined with CSS that switches the sponsor container at
251            // 992px, that stranded 769-991px on a visible-but-empty slot (the tablet dead
252            // zone). We now align the fill to the 992 CSS boundary (see below).
253            var sponsorSlotsById = {};
254            sponsorSlotsById['gam-presenting-sponsor-mobile'] = googletag.defineSlot('/22870419559/headerwebmobile', [[300, 75]], 'gam-presenting-sponsor-mobile')
255                .setTargeting(REFRESH_KEY, REFRESH_VALUE)
256                .addService(googletag.pubads());
257            sponsorSlotsById['gam-presenting-sponsor-2'] = googletag.defineSlot('/22870419559/headerwebdesktop', [[300, 75]], 'gam-presenting-sponsor-2')
258                .setTargeting(REFRESH_KEY, REFRESH_VALUE)
259                .addService(googletag.pubads());
260
261            // Build base arrays of allowed sizes
262            var desktopTabletProgrammatic = [[640, 100], [728, 90]];
263            var mobileProgrammatic = [[320, 50]];              // << mobile = 320x50 ONLY
264            var desktopTabletDefault = [[640, 100]];
265            var mobileDefault = [[640, 100]];
266
267            var allProgrammaticSizes = [[640, 100], [728, 90], [320, 50]];
268            var allDefaultSizes = [[640, 100]];
269
270            var bannerMapping = googletag.sizeMapping()
271                .addSize([1024, 0], useProgrammaticAds ? desktopTabletProgrammatic : desktopTabletDefault) // desktop
272                .addSize([768, 0], useProgrammaticAds ? desktopTabletProgrammatic : desktopTabletDefault) // tablet
273                .addSize([0, 0], useProgrammaticAds ? mobileProgrammatic : mobileDefault)        // phones
274                .build();
275
276            googletag.defineSlot(
277                '/22870419559/bannerweb',
278                useProgrammaticAds ? allProgrammaticSizes : allDefaultSizes,
279                'gam-banner-ad'
280            )
281                .defineSizeMapping(bannerMapping)
282                .setTargeting(REFRESH_KEY, REFRESH_VALUE)
283                .addService(googletag.pubads());
284
285            googletag.defineSlot(
286                '/22870419559/bannerweb',
287                useProgrammaticAds ? allProgrammaticSizes : allDefaultSizes,
288                'gam-banner-ad-2'
289            )
290                .defineSizeMapping(bannerMapping)
291                .setTargeting(REFRESH_KEY, REFRESH_VALUE)
292                .addService(googletag.pubads());
293
294            googletag.defineSlot('/22870419559/agent', [[300, 75]], 'gam-agent-ad')
295                .setTargeting(REFRESH_KEY, REFRESH_VALUE)
296                .addService(googletag.pubads());
297
298            googletag.pubads().setTargeting('siteid', '2636178');
299            googletag.pubads().setTargeting('isschoolpay', '0');
300
301            googletag.pubads().addEventListener('impressionViewable', function (event) {
302                var slot = event.slot;
303                if (slot.getTargeting(REFRESH_KEY).indexOf(REFRESH_VALUE) > -1) {
304                    setTimeout(function () {
305                        googletag.pubads().refresh([slot]);
306                    }, REFRESH_MS);
307                }
308            });
309
310            googletag.enableServices();
311
312            // ------- PRESENTING SPONSOR: responsive fill (AB-6152 follow-up) -------
313            // The desktop/mobile split is owned entirely by each header's NATIVE Bootstrap
314            // visibility classes (no universal @media here anymore). We fill whichever slot
315            // the CSS currently shows, and re-fill on resize so a breakpoint cross is never
316            // stranded on an empty slot. Only ONE slot is displayed at a time, so load-time
317            // impression volume is unchanged — the filled slot is always the VISIBLE (and
318            // viewable) one. For the greedy "MORE" nav the desktop sponsor is an inline <li>;
319            // nudgeGreedyNav() (called after the creative paints) re-runs AdjustNav so the nav
320            // reserves the ad's width and keeps it inline instead of wrapping it below.
321            (function () {
322                var sponsorDisplayed = { 'gam-presenting-sponsor-2': false, 'gam-presenting-sponsor-mobile': false };
323                // Is the element actually rendered (not display:none on it or any ancestor)?
324                function isShown(el) { return !!(el && (el.offsetParent !== null || el.getClientRects().length)); }
325                // Fill whichever slot the CSS currently shows. The desktop/mobile split is owned
326                // entirely by the header CSS (the @media block above sets <=992 -> mobile on the
327                // standard menus; layout 19 keeps its reserved desktop slot, etc.), so the JS just
328                // follows it — no width is hard-coded here, and template-specific breakpoints
329                // (e.g. 19's reserved slot) are honored automatically. Fall back to a 993 width
330                // split only if neither container has been laid out yet.
331                function activeSponsorId() {
332                    var d = document.getElementById('gam-presenting-sponsor-2');
333                    var m = document.getElementById('gam-presenting-sponsor-mobile');
334                    if (isShown(d)) return 'gam-presenting-sponsor-2';
335                    if (isShown(m)) return 'gam-presenting-sponsor-mobile';
336                    if (!d && !m) return null;
337                    return window.innerWidth >= 993 ? 'gam-presenting-sponsor-2' : 'gam-presenting-sponsor-mobile';
338                }
339                function fillActiveSponsor() {
340                    var id = activeSponsorId();
341                    if (!id || !document.getElementById(id)) return;   // this template doesn't render that slot
342                    var slot = sponsorSlotsById[id];
343                    if (!slot) return;
344                    if (!sponsorDisplayed[id]) {
345                        googletag.display(id);
346                        sponsorDisplayed[id] = true;
347                    } else {
348                        googletag.pubads().refresh([slot]);     // already shown once -> re-serve on return
349                    }
350                }
351                function whenReady(fn) {
352                    if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', fn);
353                    else fn();
354                }
355                whenReady(fillActiveSponsor);
356                // Re-fill the now-visible slot after a resize crosses any template's CSS breakpoint.
357                var resizeTimer;
358                window.addEventListener('resize', function () {
359                    clearTimeout(resizeTimer);
360                    resizeTimer = setTimeout(fillActiveSponsor, 200);
361                });
362            })();
363
364            // Add event listeners for responsive image handling
365            document.addEventListener('DOMContentLoaded', function () {
366                handleResponsiveImages();
367
368                // Add debounced resize handler
369                var resizeTimeout = null;
370                window.addEventListener('resize', function () {
371                    if (resizeTimeout) {
372                        clearTimeout(resizeTimeout);
373                    }
374
375                    resizeTimeout = setTimeout(function () {
376                        handleResponsiveImages();
377                    }, 250);
378                });
379            });
380
381            // Add slotRenderEnded event to handle styling right after ads render
382            googletag.pubads().addEventListener('slotRenderEnded', function (event) {
383                // Give a small delay to ensure content is available
384                setTimeout(function () {
385                    var id = event.slot.getSlotElementId();
386                    var container = document.getElementById(id);
387                    if (container) {
388                        var iframes = container.querySelectorAll('iframe[id^="google_ads_iframe"]');
389                        iframes.forEach(applyResponsiveStyles);
390                    }
391                    if (id === 'gam-presenting-sponsor-2') {
392                        // Belt-and-suspenders for the greedy nav: re-run after the creative has
393                        // settled, covering the cross-origin safe-frame path where
394                        // fitPresentingSponsor (and thus its inline nudge) can't measure the ad.
395                        setTimeout(nudgeGreedyNav, 250);
396                    }
397                }, 50);
398            });
399
400            // Function to handle responsive images
401            function handleResponsiveImages() {
402                ['gam-banner-ad', 'gam-banner-ad-2', 'gam-sport-banner-ad', 'gam-sport-banner-ad-2', 'gam-presenting-sponsor-2', 'gam-presenting-sponsor-mobile'].forEach(adId => {
403                    var adContainer = document.querySelector(`#${adId}`);
404                    if (adContainer) {
405                        observeIframeInsertion(adContainer);
406                        var iframes = adContainer.querySelectorAll('iframe[id^="google_ads_iframe"]');
407                        iframes.forEach(applyResponsiveStyles);
408                    }
409                });
410            }
411
412            // Function to observe iframe insertion - from original code
413            function observeIframeInsertion(container) {
414                var observer = new MutationObserver(function (mutations) {
415                    mutations.forEach(function (mutation) {
416                        if (mutation.addedNodes) {
417                            mutation.addedNodes.forEach(function (node) {
418                                if (node.tagName === 'IFRAME' && node.id.startsWith('google_ads_iframe')) {
419                                    applyResponsiveStyles(node);
420                                    observeIframeChanges(node);
421                                }
422                            });
423                        }
424                    });
425                });
426
427                observer.observe(container, {
428                    childList: true,
429                    subtree: true
430                });
431            }
432
433            function applyResponsiveStyles(iframe) {
434                if (!iframe) return;
435
436                // Presenting sponsor (desktop AND mobile, ALL templates): one proportional
437                // fit — scale the creative to its reserved nav slot, no crop. (Previously this
438                // was template-19-only; every other template clipped via the default box.)
439                if (iframe.closest('.gam-presenting-sponsor-2') || iframe.closest('#gam-presenting-sponsor-mobile')) {
440                    fitPresentingSponsor(iframe);
441                    return;
442                }
443
444                // Banner / sport-banner ads — unchanged.
445                if (
446                    iframe.closest('.gam-banner-ad') ||
447                    iframe.closest('.gam-banner-ad-2') ||
448                    iframe.closest('.gam-sport-banner-ad') ||
449                    iframe.closest('.gam-sport-banner-ad-2')
450                ) {
451                    var isTemplate19 = !!document.querySelector('.sticky-header-19');
452                    var isTemplate19Banner = isTemplate19 && iframe.closest('.gam-banner-ad');
453
454                    if (isMobile() && !isTemplate19Banner) {
455                        iframe.style.width = '100%';
456                        iframe.style.height = 'auto';
457                        try {
458                            var iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
459                            // Template 19's top banner sits at the very top of the sticky
460                            // header with nothing overlapping it; the 20% push-down other
461                            // templates use just renders as dead white space above the ad.
462                            iframeDoc.querySelectorAll('img').forEach(function (img) {
463                                img.style.maxWidth = '100%';
464                                img.style.height = 'auto';
465                                img.style.marginTop = iframe.closest('.gam-banner-ad') ? '20%' : '0';
466                            });
467                        } catch (e) {
468                            console.error('Could not access iframe content:', e);
469                        }
470                    }
471
472                    // Template 19's top banner ad: pin the iframe to the creative's true
473                    // rendered height on EVERY device, not just mobile (AB-6411 — the
474                    // sticky ad row is a fixed 122px box on desktop; see main.less/
475                    // CSSStyle19). Set inline with !important so it wins regardless of
476                    // CSS state — GAM ad sizing lives here in JS, not in template CSS,
477                    // which is easy to defeat via selector specificity drift (this exact
478                    // element had multiple overlapping height:auto rules quietly taking
479                    // turns winning).
480                    if (isTemplate19Banner) {
481                        try {
482                            var iframeDoc19 = iframe.contentDocument || iframe.contentWindow.document;
483                            if (iframeDoc19.documentElement) { iframeDoc19.documentElement.style.margin = '0'; iframeDoc19.documentElement.style.padding = '0'; }
484                            if (iframeDoc19.body) { iframeDoc19.body.style.margin = '0'; iframeDoc19.body.style.padding = '0'; }
485                            var bannerImg = iframeDoc19.querySelector('img');
486                            var fitBannerHeight = function () {
487                                if (!bannerImg.naturalWidth) return;
488                                var w = iframe.getBoundingClientRect().width;
489                                var h = Math.round(w * bannerImg.naturalHeight / bannerImg.naturalWidth);
490                                if (h > 0) iframe.style.setProperty('height', h + 'px', 'important');
491                            };
492                            if (bannerImg) {
493                                bannerImg.style.maxWidth = '100%';
494                                bannerImg.style.height = 'auto';
495                                bannerImg.style.display = 'block';
496                                bannerImg.style.marginTop = '0';
497                                if (bannerImg.complete && bannerImg.naturalWidth) { fitBannerHeight(); }
498                                else { bannerImg.addEventListener('load', fitBannerHeight); }
499                            }
500                        } catch (e) {
501                            console.error('Could not access iframe content:', e);
502                        }
503                    }
504                }
505            }
506
507            // Scale the presenting sponsor to fit its reserved nav slot from the creative's
508            // TRUE dimensions, preserving aspect ratio (never crop). Generalized from the old
509            // template-19-only version so EVERY template gets the same treatment. Per the
510            // business-rules GAM section, sizing lives here in JS — CSS can't reach the creative
511            // inside the friendly iframe. The iframe still loads the native creative so GAM
512            // impression/click/viewability tracking fires correctly; we only change how it paints.
513            function fitPresentingSponsor(iframe) {
514                var container = iframe.closest('.gam-presenting-sponsor-2, #gam-presenting-sponsor-mobile');
515                if (!container) return;
516                var isMobileSlot = container.id === 'gam-presenting-sponsor-mobile';
517
518                // Target box = the slot each template reserves in its nav. Read it from the
519                // rendered container; fall back / sanity-cap so an unbounded (e.g. max-width:none)
520                // or not-yet-sized container can't blow the ad out across the nav.
521                var boxW = container.clientWidth;
522                var boxH = container.clientHeight;
523                if (!boxW || boxW < 40 || boxW > 400) boxW = isMobileSlot ? Math.max(200, window.innerWidth - 24) : 240;
524                if (!boxH || boxH < 20 || boxH > 120) boxH = isMobileSlot ? 64 : 72;
525
526                function apply(nativeW, nativeH) {
527                    if (!nativeW || !nativeH) return;
528                    // Fit WITHIN the box on both dimensions, preserving aspect ratio — no crop.
529                    var scale = Math.min(boxW / nativeW, boxH / nativeH);
530                    iframe.style.setProperty('width', nativeW + 'px', 'important');
531                    iframe.style.setProperty('height', nativeH + 'px', 'important');
532                    iframe.style.setProperty('transform', 'scale(' + scale + ')', 'important');
533                    iframe.style.transformOrigin = 'top left';
534                    // display:block so the iframe ignores inherited line-height (e.g. 85px on
535                    // template 14's .upper-side) and its own vertical-align:bottom, which push an
536                    // inline iframe DOWN inside the slot and let overflow:hidden clip the bottom.
537                    iframe.style.setProperty('display', 'block', 'important');
538                    // Collapse the container to the painted size so there's no gap or overflow.
539                    container.style.width = Math.round(nativeW * scale) + 'px';
540                    container.style.height = Math.round(nativeH * scale) + 'px';
541                    container.style.overflow = 'hidden';
542                    // Desktop sponsor sits inline in the greedy nav — now that it has a real
543                    // width, let the nav reserve it (pushes overflow links into MORE).
544                    if (!isMobileSlot) nudgeGreedyNav();
545                }
546
547                try {
548                    var doc = iframe.contentDocument || iframe.contentWindow.document;
549                    var img = doc && doc.querySelector('img');
550                    if (img) {
551                        // GAM's friendly iframe ships an 8px <body> margin that nudges the creative
552                        // down/right (then overflow:hidden crops it). Zero margins + block-level the
553                        // image to kill the inline baseline gap, then measure true dimensions.
554                        if (doc.documentElement) { doc.documentElement.style.margin = '0'; doc.documentElement.style.padding = '0'; }
555                        if (doc.body) { doc.body.style.margin = '0'; doc.body.style.padding = '0'; }
556                        img.style.display = 'block';
557                        img.style.maxWidth = 'none';
558                        img.style.width = 'auto';
559                        img.style.height = 'auto';
560                        if (img.complete && img.naturalWidth) {
561                            apply(img.naturalWidth, img.naturalHeight);
562                        } else {
563                            img.addEventListener('load', function () {
564                                apply(img.naturalWidth, img.naturalHeight);
565                            });
566                        }
567                    }
568                } catch (e) {
569                    // Cross-origin (safe-frame) creative — can't measure it; leave the CSS default.
570                    console.error('Could not size presenting sponsor:', e);
571                }
572            }
573
574            function observeIframeChanges(iframe) {
575                iframe.addEventListener('load', function () {
576                    applyResponsiveStyles(iframe);
577                });
578
579                var observer = new MutationObserver(function (mutations) {
580                    mutations.forEach(function (mutation) {
581                        if (mutation.type === 'childList' || (mutation.type === 'attributes' && mutation.attributeName === 'src')) {
582                            applyResponsiveStyles(iframe);
583                        }
584                    });
585                });
586
587                observer.observe(iframe, {
588                    childList: true,
589                    subtree: true,
590                    attributes: true,
591                    attributeFilter: ['src']
592                });
593            }
594        });
595    </script>
595
596
597    <!-- End GPT Tag -->
598        <!-- Google tag (gtag.js) -->
vendor: 73 bytes, lines 598-599
598
599        <script async src="https://www.googletagmanager.com/gtag/js?id=
599G-K3Y2DS54H3
vendor: 21 bytes, lines 599-600
599"></script>
600        
600<script>
601            
vendor: 171 bytes, lines 601-605
601window.dataLayer = window.dataLayer || [];
602            function gtag() { dataLayer.push(arguments); }
603            gtag('js', new Date());
604
605            gtag('config', '
605G-K3Y2DS54H3
vendor: 13 bytes, lines 605-606
605');
606        
606</script>
606
607    
608
609    <meta charset="utf-8" />
610    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=2.0, user-scalable=yes" />
611    <title>Triangle Math and Science Academy (Apex, NC) Athletics</title>
612    <meta name="description" />
613    <meta name="keywords" />
614    <meta property="og:image" content="https://5starassets.blob.core.windows.net/athleticsites/2636178/643/images/73d485c7-3090-4c81-b105-46b424d2ea9c.png">
615    <link rel="canonical" href="https://www.tigerathletics.net/sponsors" />
616<meta name="robots" content="index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1" />
617    
617<script type="application/ld+json">{"@context":"https://schema.org","@type":"SportsOrganization","name":"Triangle Math and Science Academy","url":"https://www.tigerathletics.net","logo":"https://5starassets.blob.core.windows.net/athleticsites/2636178/643/images/73d485c7-3090-4c81-b105-46b424d2ea9c.png","alternateName":"Triangle Math and Science Academy Tigers","address":{"@type":"PostalAddress","addressLocality":"Apex","addressRegion":"NC"}}</script>
617
618    
618<script type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","name":"Triangle Math and Science Academy","url":"https://www.tigerathletics.net","potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://www.tigerathletics.net/search?keyword={search_term_string}"},"query-input":"required name=search_term_string"}}</script>
618
619
620    
621
622    
623        
623<script src="https://unpkg.com/focus-visible/dist/focus-visible.min.js"></script>
623
624
625        <!-- fonts now reside in the less config file -->
626        <!-- latest CDN compiled and minified CSS for lity (simple lightbox) -->
627        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/lity/2.3.1/lity.min.css" integrity="sha256-0SZxASYAglrmIuTx+ZYHE3hzTnCZWB7XLu+iA8AG0Z0=" crossorigin="anonymous" />
628        <!-- latest CDN compiled and minified CSS for font awesome -->
629        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css" integrity="sha256-NuCn4IvuZXdBaFKJOAcsU2Q3ZpwbdFisd5dux4jkQ5w=" crossorigin="anonymous" />
630        <!-- latest CDN compiled and minified CSS for slick slider -->
631        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.min.css" integrity="sha256-UK1EiopXIL+KVhfbFa8xrmAWPeBjMVdvYMYkTAEv/HI=" crossorigin="anonymous" />
632        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick-theme.min.css" integrity="sha256-4hqlsNP9KM6+2eA8VUT0kk4RsMRTeS7QGHIM+MZ5sLY=" crossorigin="anonymous" />
633        <!-- latest CDN compiled and minified CSS for bootstrap 3 -->
634        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
635        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
636        <!-- locally stored compiled and minified CSS for yamm -->
637        <link rel="stylesheet" href="/lib/yamm3/yamm/yamm.min.css" />
638        <!-- locally stored compiled and minified CSS for datatables -->
639        <link rel="stylesheet" href="/lib/datatables/media/css/dataTables.bootstrap.min.css" />
640        <!-- creates browser icon using schools mascot logo -->
641        <link rel="icon" type="image/png" href="https://5starassets.blob.core.windows.net/athleticsites/2636178/643/images/73d485c7-3090-4c81-b105-46b424d2ea9c.png">
642        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ekko-lightbox/3.3.0/ekko-lightbox.min.css" integrity="sha512-vC3vvXGPI9bplTilrP7d0YKtmHrMAH4q9dF6QSfIL/uOFIMsHu2wkmAITtFRkNisTKt1e4EAhIiXpyXJgiJW4Q==" crossorigin="anonymous" referrerpolicy="no-referrer" />        <!-- created CSS from less config file; compiled, minified and stored locally -->
643        <link rel="stylesheet" href="/less/templates/5/main.min.css?v=2.3" />
644
645        <link href="/lib/sweetalert/dist/sweetalert.css" rel="stylesheet" />
646        <link rel="stylesheet" href="/less/Components/AIAgent.min.css?v=639266606703723180" />
647
648    
649    
650        <style>
651        .navbar-nav > li > a:hover{color: #b62424 !important;}
652</style>
653<style>
654        h1, h2, h3, h4, h5, h6 {color: #003da5;}
655        ul li a {color: #003da5;}
656        table tr{color:#003da5;}
657        .header-topper:before{background:#003da5;}
658        .header-topper .row:before {background:#003da5;}
659        .border-right-xl-secondary{border-right: 20px solid #b62424;}
660        /* resused */
661        .bg-primary{background-color: #003da5;}
662        .bg-secondary{background-color: #b62424;}
663        .text-primary{color: #003da5 !important;}
664        .text-primary-font{color: #ffffff !important;}
665        .text-secondary{color: #b62424 !important;}
666        .border-all-thin-primary {border: solid 1px #003da5; }
667        .border-right-xl-secondary{border-right: 20px solid #b62424;}
668        .border-right-xl-primary{border-right: 20px solid #003da5;}
669        .bg-gradient-primary-dark{background-image: linear-gradient(180deg,#000,#003da5);}
670    .ticker-19-badge-today, .ticker-19-badge-upcoming, .ticker-19-badge-final { background-color: #003da5; }
671    .ticker-19-calendar-link { background-color: #003da5; color: #fff !important; min-width: 80px !important; padding: 0 20px !important; border: none !important; border-right: 3px solid rgba(255,255,255,0.3) !important; font-size: 1rem !important; font-weight: 700 !important; text-transform: uppercase !important; letter-spacing: 1px !important; gap: 4px !important; }
672    .ticker-19-calendar-link:hover { filter: brightness(1.15); }
673    .ticker-19-calendar-link i { font-size: 1.3rem !important; }
674    .ticker-19-calendar-link span { color: #fff !important; font-size: 0.7rem !important; font-weight: 700 !important; letter-spacing: 1px !important; }
675</style>
676
677    
678
679    
680    
681</head>
682<body viewport="fixed">
683    <a href="#main-content" class="skip-link">Skip to Main Content</a>
684    
685        <div class="ticker-19-section" aria-label="Game Schedule">
686        <div class="ticker-19-bar">
687            <!-- Composite calendar link — LEFT side like OU -->
688                <a href="/calendar" class="ticker-19-calendar-link" aria-label="View full schedule">
689                    <i class="fa fa-calendar" aria-hidden="true"></i>
690                    <span>Composite</span>
691                </a>
692
693            <!-- Tabs -->
694            <div class="ticker-19-tabs" role="tablist">
695                <button class="ticker-19-tab active" id="ticker19-ev-btn" role="tab" aria-controls="ticker19-events" aria-selected="true" tabindex="0">Events</button>
696                <button class="ticker-19-tab" id="ticker19-res-btn" role="tab" aria-controls="ticker19-results" aria-selected="false" tabindex="0">Results</button>
697            </div>
698
699            <!-- Events Panel -->
700            <div class="ticker-19-panel active" id="ticker19-events" role="tabpanel" aria-labelledby="ticker19-ev-btn">
701                <div class="ticker-19-scroll-container">
702                    <button class="ticker-19-arrow ticker-19-arrow-left" aria-label="Previous games"><i class="fa fa-chevron-left" aria-hidden="true"></i></button>
703                    <div class="ticker-19-track events-slider-19">
704                                <div class="ticker-19-card" tabindex="0" role="button" aria-expanded="false" aria-label="Soccer vs Voyager Academy — Oct. 5">
705                                    <div class="ticker-19-card-top">
706                                        <span class="ticker-19-date"><span class="ticker-19-badge ticker-19-badge-today" style="background-color:#003da5;">Oct. 5</span> &middot; 6:30 PM</span>
707                                    </div>
708                                    <div class="ticker-19-sport">Mens Soccer - Varsity</div>
709                                    <div class="ticker-19-opponent">
710                                            <img src="https://5starassets.blob.core.windows.net/mascots/generics/4.png" class="ticker-19-opp-logo" alt="Voyager Academy" loading="lazy" />
711                                        <span class="ticker-19-opp-name">vs Voyager Academy</span>
712                                    </div>
713                                </div>
714                                <div class="ticker-19-card" tabindex="0" role="button" aria-expanded="false" aria-label="Volleyball vs Raleigh Charter — Oct. 5">
715                                    <div class="ticker-19-card-top">
716                                        <span class="ticker-19-date"><span class="ticker-19-badge ticker-19-badge-today" style="background-color:#003da5;">Oct. 5</span> &middot; 4:30 PM</span>
717                                    </div>
718                                    <div class="ticker-19-sport">Womens Volleyball - Varsity</div>
719                                    <div class="ticker-19-opponent">
720                                            <img src="https://5starassets.blob.core.windows.net/mascots/generics/5.png" class="ticker-19-opp-logo" alt="Raleigh Charter" loading="lazy" />
721                                        <span class="ticker-19-opp-name">vs Raleigh Charter</span>
722                                    </div>
723                                </div>
724                                <div class="ticker-19-card" tabindex="0" role="button" aria-expanded="false" aria-label="Volleyball vs Raleigh Charter — Oct. 5">
725                                    <div class="ticker-19-card-top">
726                                        <span class="ticker-19-date"><span class="ticker-19-badge ticker-19-badge-today" style="background-color:#003da5;">Oct. 5</span> &middot; 6:00 PM</span>
727                                    </div>
728                                    <div class="ticker-19-sport">Womens Volleyball - Varsity</div>
729                                    <div class="ticker-19-opponent">
730                                            <img src="https://5starassets.blob.core.windows.net/mascots/generics/5.png" class="ticker-19-opp-logo" alt="Raleigh Charter" loading="lazy" />
731                                        <span class="ticker-19-opp-name">vs Raleigh Charter</span>
732                                    </div>
733                                </div>
734                                <div class="ticker-19-card" tabindex="0" role="button" aria-expanded="false" aria-label="Football vs Wake Prep Academy — Oct. 8">
735                                    <div class="ticker-19-card-top">
736                                        <span class="ticker-19-date"><span class="ticker-19-badge ticker-19-badge-today" style="background-color:#003da5;">Oct. 8</span> &middot; 7:00 PM</span>
737                                    </div>
738                                    <div class="ticker-19-sport">Football - Varsity</div>
739                                    <div class="ticker-19-opponent">
740                                            <img src="https://5starassets.blob.core.windows.net/mascots/generics/1.png" class="ticker-19-opp-logo" alt="Wake Prep Academy" loading="lazy" />
741                                        <span class="ticker-19-opp-name">vs Wake Prep Academy</span>
742                                    </div>
743                                </div>
744                                <div class="ticker-19-card" tabindex="0" role="button" aria-expanded="false" aria-label="Soccer vs Research Triangle Charter Academy — Oct. 12">
745                                    <div class="ticker-19-card-top">
746                                        <span class="ticker-19-date"><span class="ticker-19-badge ticker-19-badge-today" style="background-color:#003da5;">Oct. 12</span> &middot; 6:30 PM</span>
747                                    </div>
748                                    <div class="ticker-19-sport">Mens Soccer - Varsity</div>
749                                    <div class="ticker-19-opponent">
750                                            <img src="https://5starassets.blob.core.windows.net/mascots/generics/4.png" class="ticker-19-opp-logo" alt="Research Triangle Charter Academy" loading="lazy" />
751                                        <span class="ticker-19-opp-name">vs Research Triangle Charter Academy</span>
752                                    </div>
753                                </div>
754                                <div class="ticker-19-card" tabindex="0" role="button" aria-expanded="false" aria-label="Soccer at Roxboro Community — Oct. 14">
755                                    <div class="ticker-19-card-top">
756                                        <span class="ticker-19-date"><span class="ticker-19-badge ticker-19-badge-today" style="background-color:#003da5;">Oct. 14</span> &middot; 6:00 PM</span>
757                                    </div>
758                                    <div class="ticker-19-sport">Mens Soccer - Varsity</div>
759                                    <div class="ticker-19-opponent">
760                                            <img src="https://5starassets.blob.core.windows.net/mascots/generics/4.png" class="ticker-19-opp-logo" alt="Roxboro Community" loading="lazy" />
761                                        <span class="ticker-19-opp-name">at Roxboro Community</span>
762                                    </div>
763                                </div>
764                                <div class="ticker-19-card" tabindex="0" role="button" aria-expanded="false" aria-label="Soccer at NCSSM: Durham — Oct. 16">
765                                    <div class="ticker-19-card-top">
766                                        <span class="ticker-19-date"><span class="ticker-19-badge ticker-19-badge-today" style="background-color:#003da5;">Oct. 16</span> &middot; 6:00 PM</span>
767                                    </div>
768                                    <div class="ticker-19-sport">Mens Soccer - Varsity</div>
769                                    <div class="ticker-19-opponent">
770                                            <img src="https://5starassets.blob.core.windows.net/mascots/generics/4.png" class="ticker-19-opp-logo" alt="NCSSM: Durham" loading="lazy" />
771                                        <span class="ticker-19-opp-name">at NCSSM: Durham</span>
772                                    </div>
773                                </div>
774                                <div class="ticker-19-card" tabindex="0" role="button" aria-expanded="false" aria-label="Tennis at 2A Mid East Regional — Oct. 16">
775                                    <div class="ticker-19-card-top">
776                                        <span class="ticker-19-date"><span class="ticker-19-badge ticker-19-badge-today" style="background-color:#003da5;">Oct. 16</span> &middot; 12:00 PM</span>
777                                    </div>
778                                    <div class="ticker-19-sport">Womens Tennis - Varsity</div>
779                                    <div class="ticker-19-opponent">
780                                            <img src="https://5starassets.blob.core.windows.net/app-sport-icons/12/aa9a4e04-8415-4f0e-81e5-fda8d3e7ef15_.png" class="ticker-19-opp-logo" alt="2A Mid East Regional" loading="lazy" />
781                                        <span class="ticker-19-opp-name">at 2A Mid East Regional</span>
782                                    </div>
783                                </div>
784                                <div class="ticker-19-card" tabindex="0" role="button" aria-expanded="false" aria-label="Football vs Hobgood Charter — Oct. 16">
785                                    <div class="ticker-19-card-top">
786                                        <span class="ticker-19-date"><span class="ticker-19-badge ticker-19-badge-today" style="background-color:#003da5;">Oct. 16</span> &middot; 7:00 PM</span>
787                                    </div>
788                                    <div class="ticker-19-sport">Football - Varsity</div>
789                                    <div class="ticker-19-opponent">
790                                            <img src="https://5starassets.blob.core.windows.net/mascots/generics/1.png" class="ticker-19-opp-logo" alt="Hobgood Charter" loading="lazy" />
791                                        <span class="ticker-19-opp-name">vs Hobgood Charter</span>
792                                    </div>
793                                </div>
794                                <div class="ticker-19-card" tabindex="0" role="button" aria-expanded="false" aria-label="Tennis at 2A Mid East Regional — Oct. 17">
795                                    <div class="ticker-19-card-top">
796                                        <span class="ticker-19-date"><span class="ticker-19-badge ticker-19-badge-today" style="background-color:#003da5;">Oct. 17</span> &middot; 8:00 AM</span>
797                                    </div>
798                                    <div class="ticker-19-sport">Womens Tennis - Varsity</div>
799                                    <div class="ticker-19-opponent">
800                                            <img src="https://5starassets.blob.core.windows.net/app-sport-icons/12/aa9a4e04-8415-4f0e-81e5-fda8d3e7ef15_.png" class="ticker-19-opp-logo" alt="2A Mid East Regional" loading="lazy" />
801                                        <span class="ticker-19-opp-name">at 2A Mid East Regional</span>
802                                    </div>
803                                </div>
804                    </div>
805                    <button class="ticker-19-arrow ticker-19-arrow-right" aria-label="Next games"><i class="fa fa-chevron-right" aria-hidden="true"></i></button>
806                </div>
807            </div>
808
809            <!-- Results Panel -->
810            <div class="ticker-19-panel" id="ticker19-results" role="tabpanel" aria-labelledby="ticker19-res-btn" hidden>
811                <div class="ticker-19-scroll-container">
812                    <button class="ticker-19-arrow ticker-19-arrow-left" aria-label="Previous results"><i class="fa fa-chevron-left" aria-hidden="true"></i></button>
813                    <div class="ticker-19-track results-slider-19">
814                            <div class="ticker-19-empty">No recent results</div>
815                    </div>
816                    <button class="ticker-19-arrow ticker-19-arrow-right" aria-label="Next results"><i class="fa fa-chevron-right" aria-hidden="true"></i></button>
817                </div>
818            </div>
819        </div>
820    </div>
821    
821<script>
822        (function loadTicker() {
823            if (typeof jQuery !== 'undefined') {
824                var s = document.createElement('script');
825                s.src = '/js/UpcomingEventsStyle19.js';
826                document.body.appendChild(s);
827            } else {
828                setTimeout(loadTicker, 50);
829            }
830        })();
831    </script>
831
832
833<!-- Mobile: collapsible mini schedule (future events only) -->
834    <div class="mobile-mini-sched" id="mobileMinSched" aria-label="Upcoming events" hidden>
835            <div class="mms-filter">
836                <select id="mmsSportFilter" class="mms-sport-select" aria-label="Filter by sport">
837                    <option value="">All Sports</option>
838                        <option value="Baseball">Baseball</option>
839                        <option value="Basketball">Basketball</option>
840                        <option value="Football">Football</option>
841                        <option value="Golf">Golf</option>
842                        <option value="Soccer">Soccer</option>
843                        <option value="Tennis">Tennis</option>
844                        <option value="Volleyball">Volleyball</option>
845                </select>
846            </div>
847        <div class="mms-events" id="mmsEvents" aria-live="polite">
848                <div class="mms-event" data-sport="Soccer">
849                    <div class="mms-date">
850                        <span class="mms-month">OCT</span>
851                        <span class="mms-day">5</span>
852                    </div>
853                    <div class="mms-info">
854                        <span class="mms-sport">Mens Soccer - Varsity</span>
855                        <span class="mms-matchup">
856                                <img src="https://5starassets.blob.core.windows.net/mascots/generics/4.png" class="mms-logo" alt="" loading="lazy" />
857                            vs Voyager Academy
858                        </span>
859                    </div>
860                    <div class="mms-right">
861                        <span class="mms-time">6:30 PM</span>
862                    </div>
863                </div>
864                <div class="mms-event" data-sport="Volleyball">
865                    <div class="mms-date">
866                        <span class="mms-month">OCT</span>
867                        <span class="mms-day">5</span>
868                    </div>
869                    <div class="mms-info">
870                        <span class="mms-sport">Womens Volleyball - Varsity</span>
871                        <span class="mms-matchup">
872                                <img src="https://5starassets.blob.core.windows.net/mascots/generics/5.png" class="mms-logo" alt="" loading="lazy" />
873                            vs Raleigh Charter
874                        </span>
875                    </div>
876                    <div class="mms-right">
877                        <span class="mms-time">4:30 PM</span>
878                    </div>
879                </div>
880                <div class="mms-event" data-sport="Volleyball">
881                    <div class="mms-date">
882                        <span class="mms-month">OCT</span>
883                        <span class="mms-day">5</span>
884                    </div>
885                    <div class="mms-info">
886                        <span class="mms-sport">Womens Volleyball - Varsity</span>
887                        <span class="mms-matchup">
888                                <img src="https://5starassets.blob.core.windows.net/mascots/generics/5.png" class="mms-logo" alt="" loading="lazy" />
889                            vs Raleigh Charter
890                        </span>
891                    </div>
892                    <div class="mms-right">
893                        <span class="mms-time">6:00 PM</span>
894                    </div>
895                </div>
896                <div class="mms-event" data-sport="Football">
897                    <div class="mms-date">
898                        <span class="mms-month">OCT</span>
899                        <span class="mms-day">8</span>
900                    </div>
901                    <div class="mms-info">
902                        <span class="mms-sport">Football - Varsity</span>
903                        <span class="mms-matchup">
904                                <img src="https://5starassets.blob.core.windows.net/mascots/generics/1.png" class="mms-logo" alt="" loading="lazy" />
905                            vs Wake Prep Academy
906                        </span>
907                    </div>
908                    <div class="mms-right">
909                        <span class="mms-time">7:00 PM</span>
910                    </div>
911                </div>
912                <div class="mms-event" data-sport="Soccer">
913                    <div class="mms-date">
914                        <span class="mms-month">OCT</span>
915                        <span class="mms-day">12</span>
916                    </div>
917                    <div class="mms-info">
918                        <span class="mms-sport">Mens Soccer - Varsity</span>
919                        <span class="mms-matchup">
920                                <img src="https://5starassets.blob.core.windows.net/mascots/generics/4.png" class="mms-logo" alt="" loading="lazy" />
921                            vs Research Triangle Charter Academy
922                        </span>
923                    </div>
924                    <div class="mms-right">
925                        <span class="mms-time">6:30 PM</span>
926                    </div>
927                </div>
928                <div class="mms-event" data-sport="Soccer">
929                    <div class="mms-date">
930                        <span class="mms-month">OCT</span>
931                        <span class="mms-day">14</span>
932                    </div>
933                    <div class="mms-info">
934                        <span class="mms-sport">Mens Soccer - Varsity</span>
935                        <span class="mms-matchup">
936                                <img src="https://5starassets.blob.core.windows.net/mascots/generics/4.png" class="mms-logo" alt="" loading="lazy" />
937                            at Roxboro Community
938                        </span>
939                    </div>
940                    <div class="mms-right">
941                        <span class="mms-time">6:00 PM</span>
942                    </div>
943                </div>
944                <div class="mms-event" data-sport="Soccer">
945                    <div class="mms-date">
946                        <span class="mms-month">OCT</span>
947                        <span class="mms-day">16</span>
948                    </div>
949                    <div class="mms-info">
950                        <span class="mms-sport">Mens Soccer - Varsity</span>
951                        <span class="mms-matchup">
952                                <img src="https://5starassets.blob.core.windows.net/mascots/generics/4.png" class="mms-logo" alt="" loading="lazy" />
953                            at NCSSM: Durham
954                        </span>
955                    </div>
956                    <div class="mms-right">
957                        <span class="mms-time">6:00 PM</span>
958                    </div>
959                </div>
960                <div class="mms-event" data-sport="Tennis">
961                    <div class="mms-date">
962                        <span class="mms-month">OCT</span>
963                        <span class="mms-day">16</span>
964                    </div>
965                    <div class="mms-info">
966                        <span class="mms-sport">Womens Tennis - Varsity</span>
967                        <span class="mms-matchup">
968                                <img src="https://5starassets.blob.core.windows.net/app-sport-icons/12/aa9a4e04-8415-4f0e-81e5-fda8d3e7ef15_.png" class="mms-logo" alt="" loading="lazy" />
969                            at 2A Mid East Regional
970                        </span>
971                    </div>
972                    <div class="mms-right">
973                        <span class="mms-time">12:00 PM</span>
974                    </div>
975                </div>
976                <div class="mms-event" data-sport="Football">
977                    <div class="mms-date">
978                        <span class="mms-month">OCT</span>
979                        <span class="mms-day">16</span>
980                    </div>
981                    <div class="mms-info">
982                        <span class="mms-sport">Football - Varsity</span>
983                        <span class="mms-matchup">
984                                <img src="https://5starassets.blob.core.windows.net/mascots/generics/1.png" class="mms-logo" alt="" loading="lazy" />
985                            vs Hobgood Charter
986                        </span>
987                    </div>
988                    <div class="mms-right">
989                        <span class="mms-time">7:00 PM</span>
990                    </div>
991                </div>
992                <div class="mms-event" data-sport="Tennis">
993                    <div class="mms-date">
994                        <span class="mms-month">OCT</span>
995                        <span class="mms-day">17</span>
996                    </div>
997                    <div class="mms-info">
998                        <span class="mms-sport">Womens Tennis - Varsity</span>
999                        <span class="mms-matchup">
1000                                <img src="https://5starassets.blob.core.windows.net/app-sport-icons/12/aa9a4e04-8415-4f0e-81e5-fda8d3e7ef15_.png" class="mms-logo" alt="" loading="lazy" />
1001                            at 2A Mid East Regional
1002                        </span>
1003                    </div>
1004                    <div class="mms-right">
1005                        <span class="mms-time">8:00 AM</span>
1006                    </div>
1007                </div>
1008        </div>
1009        <a href="/calendar" class="mms-full-link"><i class="fa fa-calendar" aria-hidden="true"></i> Full Schedule</a>
1010    </div>
1011
1012<style>
1013    /* Game footnote (Homecoming, Senior Night, ...) under the matchup */
1014    .ticker-19-footnote {
1015        font-size: 0.7rem;
1016        font-style: italic;
1017        font-weight: 600;
1018        color: #444;
1019        text-align: center;
1020        white-space: nowrap;
1021        overflow: hidden;
1022        text-overflow: ellipsis;
1023        max-width: 190px;
1024        margin: 1px auto 0;
1025    }
1026
1027    /* Auto-scroll card text that overflows its max-width (JS flags with .t19-marq) */
1028    .ticker-19-sport.t19-marq, .ticker-19-opp-name.t19-marq { text-overflow: clip; }
1029    .t19-marq .t19-marq-inner {
1030        display: inline-block;
1031        white-space: nowrap;
1032        animation: t19-marq-slide var(--t19-marq-dur, 6s) ease-in-out infinite alternate;
1033    }
1034    .ticker-19-card:hover .t19-marq .t19-marq-inner,
1035    .ticker-19-card:focus-within .t19-marq .t19-marq-inner { animation-play-state: paused; }
1036    @keyframes t19-marq-slide {
1037        0%, 20% { transform: translateX(0); }
1038        80%, 100% { transform: translateX(var(--t19-marq-shift, 0px)); }
1039    }
1040    @media (prefers-reduced-motion: reduce) {
1041        .ticker-19-sport.t19-marq, .ticker-19-opp-name.t19-marq { text-overflow: ellipsis; }
1042        .t19-marq .t19-marq-inner { animation: none; }
1043    }
1044
1045    .mobile-cal-bar { display: none; }
1046    .mobile-mini-sched { display: none; }
1047    @media (max-width: 991px) {
1048        .ticker-19-section { display: none !important; }
1049
1050        /* Calendar bar: toggle + full schedule link */
1051        .mobile-cal-bar {
1052            display: flex !important;
1053            align-items: center;
1054            justify-content: center;
1055            padding: 0;
1056            margin: 0;
1057        }
1058        .mcb-toggle {
1059            flex: 1;
1060            display: flex;
1061            align-items: center;
1062            justify-content: center;
1063            gap: 8px;
1064            color: #fff;
1065            background: transparent;
1066            border: none;
1067            font-size: 1.1rem;
1068            font-weight: 700;
1069            text-transform: uppercase;
1070            letter-spacing: 0.4px;
1071            padding: 8px 14px;
1072            cursor: pointer;
1073        }
1074        .mcb-caret {
1075            transition: transform 0.2s;
1076            font-size: 0.95rem;
1077        }
1078        .mcb-toggle[aria-expanded="true"] .mcb-caret {
1079            transform: rotate(180deg);
1080        }
1081        .mcb-full {
1082            display: flex;
1083            align-items: center;
1084            justify-content: center;
1085            padding: 8px 16px;
1086            color: rgba(255,255,255,0.9);
1087            text-decoration: none;
1088            border-left: 1px solid rgba(255,255,255,0.15);
1089            font-size: 1.05rem;
1090        }
1091        .mcb-full:hover { color: #fff; text-decoration: none; }
1092
1093        /* Mini schedule (collapsed by default) */
1094        .mobile-mini-sched {
1095            background: #fff;
1096            border-bottom: 1px solid #e5e7eb;
1097            overflow: hidden;
1098            max-height: 0;
1099            transition: max-height 0.3s ease;
1100        }
1101        .mobile-mini-sched.mms-open {
1102            display: block;
1103            max-height: 1200px;
1104        }
1105        .mms-event {
1106            display: flex;
1107            align-items: center;
1108            gap: 14px;
1109            padding: 14px 16px;
1110            border-bottom: 1px solid #f0f0f0;
1111        }
1112        .mms-event:last-child { border-bottom: none; }
1113        .mms-date {
1114            display: flex;
1115            flex-direction: column;
1116            align-items: center;
1117            min-width: 56px;
1118            flex-shrink: 0;
1119        }
1120        .mms-month {
1121            font-size: 1rem;
1122            font-weight: 700;
1123            text-transform: uppercase;
1124            color: #444;
1125            line-height: 1;
1126        }
1127        .mms-day {
1128            font-size: 1.85rem;
1129            font-weight: 800;
1130            color: #000;
1131            line-height: 1.2;
1132        }
1133        .mms-info {
1134            flex: 1;
1135            min-width: 0;
1136        }
1137        .mms-sport {
1138            display: block;
1139            font-size: 1.05rem;
1140            font-weight: 700;
1141            text-transform: uppercase;
1142            color: #444;
1143            letter-spacing: 0.3px;
1144        }
1145        .mms-matchup {
1146            display: flex;
1147            align-items: center;
1148            gap: 8px;
1149            font-size: 1.2rem;
1150            font-weight: 700;
1151            color: #000;
1152            white-space: nowrap;
1153            overflow: hidden;
1154            text-overflow: ellipsis;
1155        }
1156        .mms-logo {
1157            width: 32px;
1158            height: 32px;
1159            object-fit: contain;
1160            border-radius: 50%;
1161            flex-shrink: 0;
1162        }
1163        .mms-right {
1164            flex-shrink: 0;
1165            text-align: right;
1166        }
1167        .mms-time {
1168            font-size: 1.15rem;
1169            font-weight: 600;
1170            color: #000;
1171        }
1172        .mms-filter {
1173            padding: 12px 16px;
1174            border-bottom: 1px solid #e5e7eb;
1175        }
1176        .mms-sport-select {
1177            width: 100%;
1178            padding: 12px 14px;
1179            font-size: 1.2rem;
1180            font-weight: 600;
1181            border: 1px solid #d1d5db;
1182            border-radius: 4px;
1183            background: #fff;
1184            color: #000;
1185            -webkit-appearance: menulist;
1186        }
1187        .mms-sport-select option {
1188            color: #000;
1189            background: #fff;
1190            font-size: 1.2rem;
1191        }
1192        .mms-full-link {
1193            display: flex;
1194            align-items: center;
1195            justify-content: center;
1196            gap: 10px;
1197            padding: 16px;
1198            font-size: 1.2rem;
1199            font-weight: 700;
1200            text-transform: uppercase;
1201            letter-spacing: 0.5px;
1202            color: #000;
1203            text-decoration: none;
1204            border-top: 1px solid #e5e7eb;
1205        }
1206        .mms-full-link:hover { color: #1a1a1a; text-decoration: none; }
1207    }
1208</style>
1209<script>
1210document.addEventListener('DOMContentLoaded', function () {
1211    var btn = document.getElementById('mcbToggle');
1212    var sched = document.getElementById('mobileMinSched');
1213    var calBar = document.querySelector('.mobile-cal-bar');
1214    if (!btn || !sched || !calBar) return;
1215
1216    // Move the schedule right after the calendar bar so it expands downward
1217    calBar.parentNode.insertBefore(sched, calBar.nextSibling);
1218
1219    // Toggle expand/collapse
1220    btn.addEventListener('click', function () {
1221        var open = sched.classList.toggle('mms-open');
1222        sched.hidden = !open;
1223        btn.setAttribute('aria-expanded', open ? 'true' : 'false');
1224    });
1225
1226    // Sport filter: fetch filtered events from server
1227    var filter = document.getElementById('mmsSportFilter');
1228    var eventsContainer = document.getElementById('mmsEvents');
1229    if (filter && eventsContainer) {
1230        filter.addEventListener('change', function () {
1231            var sport = this.value;
1232            eventsContainer.style.opacity = '0.5';
1233            fetch('/api/mobile-events?sport=' + encodeURIComponent(sport))
1234                .then(function (r) { return r.json(); })
1235                .then(function (events) {
1236                    var html = '';
1237                    events.forEach(function (g) {
1238                        html += '<div class="mms-event" data-sport="' + (g.sport || '') + '">'
1239                            + '<div class="mms-date"><span class="mms-month">' + g.month + '</span><span class="mms-day">' + g.day + '</span></div>'
1240                            + '<div class="mms-info"><span class="mms-sport">' + g.sportLabel + '</span>'
1241                            + '<span class="mms-matchup">'
1242                            + (g.opponentLogo ? '<img src="' + g.opponentLogo + '" class="mms-logo" alt="" loading="lazy" />' : '')
1243                            + g.matchup + '</span></div>'
1244                            + '<div class="mms-right"><span class="mms-time">' + g.time + '</span></div></div>';
1245                    });
1246                    eventsContainer.innerHTML = html || '<div style="padding:18px;text-align:center;color:#555;font-size:1rem;font-weight:500;">No upcoming events</div>';
1247                    eventsContainer.style.opacity = '1';
1248                })
1249                .catch(function () { eventsContainer.style.opacity = '1'; });
1250        });
1251    }
1252});
1253</script>
1253
1254
1255    
1256    <input type="hidden" value="2636178" id="schoolId" />
1257    <input type="hidden" value="true" id="customAppSchool" />
1258    <input type="hidden" value="6/7/2023 12:00:00 AM" id="adServingDateBegins" />
1259    <header>
1260        
1261
1262
1263            <div class="row">
1264                <div class="col-md-12">
1265                    
1266                </div>
1267            </div>
1268        <div class="header-topper">
1269            <div class="row">
1270                <h1 class="site-title"><small>&nbsp;&nbsp;&nbsp;<i>THE OFFICIAL SITE OF </i></small><br /><i>Triangle Math and Science Academy Athletics</i></h1>
1271            </div>
1272        </div>
1273        <div class="row">
1274            <div class="col-md-12">
1275                <div class="main-menu-container bg-primary" id="fixedscroll">
1276                    <div class="fixed-menu-container">
1277                        <div class="header-social-media">
1278                            <div class="feed-wrapper">
1279            <a href="https://www.facebook.com/groups/415203722899282/" target="_blank" rel="noopener" aria-label="Visit our Facebook page">
1280                <i class="fa fa-facebook text-primary-font" aria-hidden="true"></i>
1281                <span class="sr-only">Facebook</span>
1282            </a>
1283            <a href="https://www.instagram.com/tmsa_tiger_athletics/" target="_blank" rel="noopener" aria-label="Visit our Instagram page">
1284                <i class="fa fa-instagram text-primary-font" aria-hidden="true"></i>
1285                <span class="sr-only">Instagram</span>
1286            </a>
1287            <a href="https://twitter.com/tmsathletics" target="_blank" rel="noopener" aria-label="Visit our X page">
1288                <i class="fa fa-twitter text-primary-font" aria-hidden="true"></i>
1289                <span class="sr-only">X</span>
1290            </a>
1291</div>
1292
1293                        </div>
1294                        <div id="center">
1295                            <div class="header-gfx border-right-xl-secondary">
1296                                <a href="/" aria-label="Return to TMSA Home Page" tabindex="0">
1297                                    <img src="https://5starassets.blob.core.windows.net/athleticsites/2636178/643/images/6acd1123-94d5-4039-856d-23f231d45ffb.png" aria-label="TMSA" alt="TMSA Logo" />
1298                                    <span class="mk-blank">-</span>
1299                                </a>
1300                            </div>
1301
1302                            <div class="primary-line border-right-xl-primary"></div>
1303                        </div>
1304                        <div class="">
1305                            
1306                                <nav class="custom-nav" role="navigation" aria-label="Main Navigation" data-sponsor-model="true">
1307    <div class="navbar yamm navbar-static-top">
1308        <div class="container" id="nav-container">
1309            <div class="navbar-header">
1310                <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
1311                    <span class="sr-only">Toggle navigation</span>
1312                    <span class="icon-bar bg-secondary"></span>
1313                    <span class="icon-bar bg-secondary"></span>
1314                    <span class="icon-bar bg-secondary"></span>
1315                </button>
1316                <a class="navbar-brand" href="/" aria-label="Return to TMSA Home Page">
1317                    <img src="https://5starassets.blob.core.windows.net/athleticsites/2636178/643/images/fe44320c-d909-4fb7-abe6-5193f330861e.png" class="img-responsive tag" aria-label="TMSA Logo" alt="TMSA Logo" />
1318                </a>
1319                    <div class="presenting-sponsor hidden-md hidden-lg">
1320                        <div class="adzone adzone-0 presenting-sponsor">
1321                                <div class="ad-placement">
1322    <div id='gam-presenting-sponsor-mobile' class="gam_ps"></div>
1323    </div>
1324
1325                        </div>
1326                    </div>
1327                </div>
1328            <div id="navbar" class="navbar-collapse collapse" aria-expanded="false">
1329                <ul class="nav navbar-nav" id="nav-links" role="menubar">
1330                  
1331                            <li role="presentation">
1332                                    <a class="slanted-btn text-primary-font" href="/sponsors" role="menuitem" tabindex="0"><span>
1332Sponsors</span></a>
1333                            </li>
1334                            <li class="dropdown yamm-fw" role="presentation">
1335                                <a href="#" data-toggle="dropdown" class="dropdown-toggle text-primary-font" role="menuitem" aria-haspopup="true" aria-expanded="false" tabindex="0">SPORTS</a>
1336                                    <ul id="dropdown2" class="dropdown-menu two-columns" role="menu">
1337                                            <li role="menuitem">
1338                                                <div class="sport-link-nfo">
1339                                                    <div class="row">
1340                                                        <div class="col-xs-12 col-sm-6">
1341                                                            <div class="link">
1342                                                                <a class="text-primary" href="/sport/baseball/mens/" role="menuitem" tabindex="0" aria-label="Baseball go to Main Team Page">BASEBALL</a>
1343                                                            </div>
1344                                                        </div>
1345                                                        <div class="hidden-xs col-sm-6">
1346                                                            <div class="nfo">
1347                                                                <a class="text-primary" href="/sport/baseball/mens/?tab=schedule" role="menuitem" aria-label="Baseball - Schedules" tabindex="0">Schedules</a><span> /</span>
1348                                                                <a class="text-primary" href="/sport/baseball/mens/?tab=roster" role="menuitem" aria-label="Baseball - Rosters" tabindex="0">Rosters</a><span> /</span>
1349                                                                <a class="text-primary" href="/sport/baseball/mens/?tab=news" role="menuitem" aria-label="Baseball - News" tabindex="0">News</a>
1350                                                            </div>
1351                                                        </div>
1352                                                    </div>
1353                                                </div>
1354                                            </li>
1355                                            <li role="menuitem">
1356                                                <div class="sport-link-nfo">
1357                                                    <div class="row">
1358                                                        <div class="col-xs-12 col-sm-6">
1359                                                            <div class="link">
1360                                                                <a class="text-primary" href="/sport/basketball/boys/" role="menuitem" tabindex="0" aria-label="Basketball(Boys) go to Main Team Page">BASKETBALL(BOYS)</a>
1361                                                            </div>
1362                                                        </div>
1363                                                        <div class="hidden-xs col-sm-6">
1364                                                            <div class="nfo">
1365                                                                <a class="text-primary" href="/sport/basketball/boys/?tab=schedule" role="menuitem" aria-label="Basketball(Boys) - Schedules" tabindex="0">Schedules</a><span> /</span>
1366                                                                <a class="text-primary" href="/sport/basketball/boys/?tab=roster" role="menuitem" aria-label="Basketball(Boys) - Rosters" tabindex="0">Rosters</a><span> /</span>
1367                                                                <a class="text-primary" href="/sport/basketball/boys/?tab=news" role="menuitem" aria-label="Basketball(Boys) - News" tabindex="0">News</a>
1368                                                            </div>
1369                                                        </div>
1370                                                    </div>
1371                                                </div>
1372                                            </li>
1373                                            <li role="menuitem">
1374                                                <div class="sport-link-nfo">
1375                                                    <div class="row">
1376                                                        <div class="col-xs-12 col-sm-6">
1377                                                            <div class="link">
1378                                                                <a class="text-primary" href="/sport/basketball/girls/" role="menuitem" tabindex="0" aria-label="Basketball(Girls) go to Main Team Page">BASKETBALL(GIRLS)</a>
1379                                                            </div>
1380                                                        </div>
1381                                                        <div class="hidden-xs col-sm-6">
1382                                                            <div class="nfo">
1383                                                                <a class="text-primary" href="/sport/basketball/girls/?tab=schedule" role="menuitem" aria-label="Basketball(Girls) - Schedules" tabindex="0">Schedules</a><span> /</span>
1384                                                                <a class="text-primary" href="/sport/basketball/girls/?tab=roster" role="menuitem" aria-label="Basketball(Girls) - Rosters" tabindex="0">Rosters</a><span> /</span>
1385                                                                <a class="text-primary" href="/sport/basketball/girls/?tab=news" role="menuitem" aria-label="Basketball(Girls) - News" tabindex="0">News</a>
1386                                                            </div>
1387                                                        </div>
1388                                                    </div>
1389                                                </div>
1390                                            </li>
1391                                            <li role="menuitem">
1392                                                <div class="sport-link-nfo">
1393                                                    <div class="row">
1394                                                        <div class="col-xs-12 col-sm-6">
1395                                                            <div class="link">
1396                                                                <a class="text-primary" href="/sport/basketball/mens/" role="menuitem" tabindex="0" aria-label="Basketball(Mens) go to Main Team Page">BASKETBALL(MENS)</a>
1397                                                            </div>
1398                                                        </div>
1399                                                        <div class="hidden-xs col-sm-6">
1400                                                            <div class="nfo">
1401                                                                <a class="text-primary" href="/sport/basketball/mens/?tab=schedule" role="menuitem" aria-label="Basketball(Mens) - Schedules" tabindex="0">Schedules</a><span> /</span>
1402                                                                <a class="text-primary" href="/sport/basketball/mens/?tab=roster" role="menuitem" aria-label="Basketball(Mens) - Rosters" tabindex="0">Rosters</a><span> /</span>
1403                                                                <a class="text-primary" href="/sport/basketball/mens/?tab=news" role="menuitem" aria-label="Basketball(Mens) - News" tabindex="0">News</a>
1404                                                            </div>
1405                                                        </div>
1406                                                    </div>
1407                                                </div>
1408                                            </li>
1409                                            <li role="menuitem">
1410                                                <div class="sport-link-nfo">
1411                                                    <div class="row">
1412                                                        <div class="col-xs-12 col-sm-6">
1413                                                            <div class="link">
1414                                                                <a class="text-primary" href="/sport/basketball/womens/" role="menuitem" tabindex="0" aria-label="Basketball(Womens) go to Main Team Page">BASKETBALL(WOMENS)</a>
1415                                                            </div>
1416                                                        </div>
1417                                                        <div class="hidden-xs col-sm-6">
1418                                                            <div class="nfo">
1419                                                                <a class="text-primary" href="/sport/basketball/womens/?tab=schedule" role="menuitem" aria-label="Basketball(Womens) - Schedules" tabindex="0">Schedules</a><span> /</span>
1420                                                                <a class="text-primary" href="/sport/basketball/womens/?tab=roster" role="menuitem" aria-label="Basketball(Womens) - Rosters" tabindex="0">Rosters</a><span> /</span>
1421                                                                <a class="text-primary" href="/sport/basketball/womens/?tab=news" role="menuitem" aria-label="Basketball(Womens) - News" tabindex="0">News</a>
1422                                                            </div>
1423                                                        </div>
1424                                                    </div>
1425                                                </div>
1426                                            </li>
1427                                            <li role="menuitem">
1428                                                <div class="sport-link-nfo">
1429                                                    <div class="row">
1430                                                        <div class="col-xs-12 col-sm-6">
1431                                                            <div class="link">
1432                                                                <a class="text-primary" href="/sport/football/boys/" role="menuitem" tabindex="0" aria-label="Football go to Main Team Page">FOOTBALL</a>
1433                                                            </div>
1434                                                        </div>
1435                                                        <div class="hidden-xs col-sm-6">
1436                                                            <div class="nfo">
1437                                                                <a class="text-primary" href="/sport/football/boys/?tab=schedule" role="menuitem" aria-label="Football - Schedules" tabindex="0">Schedules</a><span> /</span>
1438                                                                <a class="text-primary" href="/sport/football/boys/?tab=roster" role="menuitem" aria-label="Football - Rosters" tabindex="0">Rosters</a><span> /</span>
1439                                                                <a class="text-primary" href="/sport/football/boys/?tab=news" role="menuitem" aria-label="Football - News" tabindex="0">News</a>
1440                                                            </div>
1441                                                        </div>
1442                                                    </div>
1443                                                </div>
1444                                            </li>
1445                                            <li role="menuitem">
1446                                                <div class="sport-link-nfo">
1447                                                    <div class="row">
1448                                                        <div class="col-xs-12 col-sm-6">
1449                                                            <div class="link">
1450                                                                <a class="text-primary" href="/sport/football/boys/" role="menuitem" tabindex="0" aria-label="Football(Boys) go to Main Team Page">FOOTBALL(BOYS)</a>
1451                                                            </div>
1452                                                        </div>
1453                                                        <div class="hidden-xs col-sm-6">
1454                                                            <div class="nfo">
1455                                                                <a class="text-primary" href="/sport/football/boys/?tab=schedule" role="menuitem" aria-label="Football(Boys) - Schedules" tabindex="0">Schedules</a><span> /</span>
1456                                                                <a class="text-primary" href="/sport/football/boys/?tab=roster" role="menuitem" aria-label="Football(Boys) - Rosters" tabindex="0">Rosters</a><span> /</span>
1457                                                                <a class="text-primary" href="/sport/football/boys/?tab=news" role="menuitem" aria-label="Football(Boys) - News" tabindex="0">News</a>
1458                                                            </div>
1459                                                        </div>
1460                                                    </div>
1461                                                </div>
1462                                            </li>
1463                                            <li role="menuitem">
1464                                                <div class="sport-link-nfo">
1465                                                    <div class="row">
1466                                                        <div class="col-xs-12 col-sm-6">
1467                                                            <div class="link">
1468                                                                <a class="text-primary" href="/sport/golf/mens/" role="menuitem" tabindex="0" aria-label="Golf(Mens) go to Main Team Page">GOLF(MENS)</a>
1469                                                            </div>
1470                                                        </div>
1471                                                        <div class="hidden-xs col-sm-6">
1472                                                            <div class="nfo">
1473                                                                <a class="text-primary" href="/sport/golf/mens/?tab=schedule" role="menuitem" aria-label="Golf(Mens) - Schedules" tabindex="0">Schedules</a><span> /</span>
1474                                                                <a class="text-primary" href="/sport/golf/mens/?tab=roster" role="menuitem" aria-label="Golf(Mens) - Rosters" tabindex="0">Rosters</a><span> /</span>
1475                                                                <a class="text-primary" href="/sport/golf/mens/?tab=news" role="menuitem" aria-label="Golf(Mens) - News" tabindex="0">News</a>
1476                                                            </div>
1477                                                        </div>
1478                                                    </div>
1479                                                </div>
1480                                            </li>
1481                                            <li role="menuitem">
1482                                                <div class="sport-link-nfo">
1483                                                    <div class="row">
1484                                                        <div class="col-xs-12 col-sm-6">
1485                                                            <div class="link">
1486                                                                <a class="text-primary" href="/sport/soccer/boys/" role="menuitem" tabindex="0" aria-label="Soccer(Boys) go to Main Team Page">SOCCER(BOYS)</a>
1487                                                            </div>
1488                                                        </div>
1489                                                        <div class="hidden-xs col-sm-6">
1490                                                            <div class="nfo">
1491                                                                <a class="text-primary" href="/sport/soccer/boys/?tab=schedule" role="menuitem" aria-label="Soccer(Boys) - Schedules" tabindex="0">Schedules</a><span> /</span>
1492              
1492                                                  <a class="text-primary" href="/sport/soccer/boys/?tab=roster" role="menuitem" aria-label="Soccer(Boys) - Rosters" tabindex="0">Rosters</a><span> /</span>
1493                                                                <a class="text-primary" href="/sport/soccer/boys/?tab=news" role="menuitem" aria-label="Soccer(Boys) - News" tabindex="0">News</a>
1494                                                            </div>
1495                                                        </div>
1496                                                    </div>
1497                                                </div>
1498                                            </li>
1499                                            <li role="menuitem">
1500                                                <div class="sport-link-nfo">
1501                                                    <div class="row">
1502                                                        <div class="col-xs-12 col-sm-6">
1503                                                            <div class="link">
1504                                                                <a class="text-primary" href="/sport/soccer/girls/" role="menuitem" tabindex="0" aria-label="Soccer(Girls) go to Main Team Page">SOCCER(GIRLS)</a>
1505                                                            </div>
1506                                                        </div>
1507                                                        <div class="hidden-xs col-sm-6">
1508                                                            <div class="nfo">
1509                                                                <a class="text-primary" href="/sport/soccer/girls/?tab=schedule" role="menuitem" aria-label="Soccer(Girls) - Schedules" tabindex="0">Schedules</a><span> /</span>
1510                                                                <a class="text-primary" href="/sport/soccer/girls/?tab=roster" role="menuitem" aria-label="Soccer(Girls) - Rosters" tabindex="0">Rosters</a><span> /</span>
1511                                                                <a class="text-primary" href="/sport/soccer/girls/?tab=news" role="menuitem" aria-label="Soccer(Girls) - News" tabindex="0">News</a>
1512                                                            </div>
1513                                                        </div>
1514                                                    </div>
1515                                                </div>
1516                                            </li>
1517                                            <li role="menuitem">
1518                                                <div class="sport-link-nfo">
1519                                                    <div class="row">
1520                                                        <div class="col-xs-12 col-sm-6">
1521                                                            <div class="link">
1522                                                                <a class="text-primary" href="/sport/soccer/mens/" role="menuitem" tabindex="0" aria-label="Soccer(Mens) go to Main Team Page">SOCCER(MENS)</a>
1523                                                            </div>
1524                                                        </div>
1525                                                        <div class="hidden-xs col-sm-6">
1526                                                            <div class="nfo">
1527                                                                <a class="text-primary" href="/sport/soccer/mens/?tab=schedule" role="menuitem" aria-label="Soccer(Mens) - Schedules" tabindex="0">Schedules</a><span> /</span>
1528                                                                <a class="text-primary" href="/sport/soccer/mens/?tab=roster" role="menuitem" aria-label="Soccer(Mens) - Rosters" tabindex="0">Rosters</a><span> /</span>
1529                                                                <a class="text-primary" href="/sport/soccer/mens/?tab=news" role="menuitem" aria-label="Soccer(Mens) - News" tabindex="0">News</a>
1530                                                            </div>
1531                                                        </div>
1532                                                    </div>
1533                                                </div>
1534                                            </li>
1535                                            <li role="menuitem">
1536                                                <div class="sport-link-nfo">
1537                                                    <div class="row">
1538                                                        <div class="col-xs-12 col-sm-6">
1539                                                            <div class="link">
1540                                                                <a class="text-primary" href="/sport/soccer/womens/" role="menuitem" tabindex="0" aria-label="Soccer(Womens) go to Main Team Page">SOCCER(WOMENS)</a>
1541                                                            </div>
1542                                                        </div>
1543                                                        <div class="hidden-xs col-sm-6">
1544                                                            <div class="nfo">
1545                                                                <a class="text-primary" href="/sport/soccer/womens/?tab=schedule" role="menuitem" aria-label="Soccer(Womens) - Schedules" tabindex="0">Schedules</a><span> /</span>
1546                                                                <a class="text-primary" href="/sport/soccer/womens/?tab=roster" role="menuitem" aria-label="Soccer(Womens) - Rosters" tabindex="0">Rosters</a><span> /</span>
1547                                                                <a class="text-primary" href="/sport/soccer/womens/?tab=news" role="menuitem" aria-label="Soccer(Womens) - News" tabindex="0">News</a>
1548                                                            </div>
1549                                                        </div>
1550                                                    </div>
1551                                                </div>
1552                                            </li>
1553                                            <li role="menuitem">
1554                                                <div class="sport-link-nfo">
1555                                                    <div class="row">
1556                                                        <div class="col-xs-12 col-sm-6">
1557                                                            <div class="link">
1558                                                                <a class="text-primary" href="/sport/tennis/mens/" role="menuitem" tabindex="0" aria-label="Tennis(Mens) go to Main Team Page">TENNIS(MENS)</a>
1559                                                            </div>
1560                                                        </div>
1561                                                        <div class="hidden-xs col-sm-6">
1562                                                            <div class="nfo">
1563                                                                <a class="text-primary" href="/sport/tennis/mens/?tab=schedule" role="menuitem" aria-label="Tennis(Mens) - Schedules" tabindex="0">Schedules</a><span> /</span>
1564                                                                <a class="text-primary" href="/sport/tennis/mens/?tab=roster" role="menuitem" aria-label="Tennis(Mens) - Rosters" tabindex="0">Rosters</a><span> /</span>
1565                                                                <a class="text-primary" href="/sport/tennis/mens/?tab=news" role="menuitem" aria-label="Tennis(Mens) - News" tabindex="0">News</a>
1566                                                            </div>
1567                                                        </div>
1568                                                    </div>
1569                                                </div>
1570                                            </li>
1571                                            <li role="menuitem">
1572                                                <div class="sport-link-nfo">
1573                                                    <div class="row">
1574                                                        <div class="col-xs-12 col-sm-6">
1575                                                            <div class="link">
1576                                                                <a class="text-primary" href="/sport/tennis/womens/" role="menuitem" tabindex="0" aria-label="Tennis(Womens) go to Main Team Page">TENNIS(WOMENS)</a>
1577                                                            </div>
1578                                                        </div>
1579                                                        <div class="hidden-xs col-sm-6">
1580                                                            <div class="nfo">
1581                                                                <a class="text-primary" href="/sport/tennis/womens/?tab=schedule" role="menuitem" aria-label="Tennis(Womens) - Schedules" tabindex="0">Schedules</a><span> /</span>
1582                                                                <a class="text-primary" href="/sport/tennis/womens/?tab=roster" role="menuitem" aria-label="Tennis(Womens) - Rosters" tabindex="0">Rosters</a><span> /</span>
1583                                                                <a class="text-primary" href="/sport/tennis/womens/?tab=news" role="menuitem" aria-label="Tennis(Womens) - News" tabindex="0">News</a>
1584                                                            </div>
1585                                                        </div>
1586                                                    </div>
1587                                                </div>
1588                                            </li>
1589                                            <li role="menuitem">
1590                                                <div class="sport-link-nfo">
1591                                                    <div class="row">
1592                                                        <div class="col-xs-12 col-sm-6">
1593                                                            <div class="link">
1594                                                                <a class="text-primary" href="/sport/volleyball/girls/" role="menuitem" tabindex="0" aria-label="Volleyball(Girls) go to Main Team Page">VOLLEYBALL(GIRLS)</a>
1595                                                            </div>
1596                                                        </div>
1597                                                        <div class="hidden-xs col-sm-6">
1598                                                            <div class="nfo">
1599                                                                <a class="text-primary" href="/sport/volleyball/girls/?tab=schedule" role="menuitem" aria-label="Volleyball(Girls) - Schedules" tabindex="0">Schedules</a><span> /</span>
1600                                                                <a class="text-primary" href="/sport/volleyball/girls/?tab=roster" role="menuitem" aria-label="Volleyball(Girls) - Rosters" tabindex="0">Rosters</a><span> /</span>
1601                                                                <a class="text-primary" href="/sport/volleyball/girls/?tab=news" role="menuitem" aria-label="Volleyball(Girls) - News" tabindex="0">News</a>
1602                                                            </div>
1603                                                        </div>
1604                                                    </div>
1605                                                </div>
1606                                            </li>
1607                                            <li role="menuitem">
1608                                                <div class="sport-link-nfo">
1609                                                    <div class="row">
1610                                                        <div class="col-xs-12 col-sm-6">
1611                                                            <div class="link">
1612                                                                <a class="text-primary" href="/sport/volleyball/mens/" role="menuitem" tabindex="0" aria-label="Volleyball(Mens) go to Main Team Page">VOLLEYBALL(MENS)</a>
1613                                                            </div>
1614                                                        </div>
1615                                                        <div class="hidden-xs col-sm-6">
1616                                                            <div class="nfo">
1617                                                                <a class="text-primary" href="/sport/volleyball/mens/?tab=schedule" role="menuitem" aria-label="Volleyball(Mens) - Schedules" tabindex="0">Schedules</a><span> /</span>
1618                                                                <a class="text-primary" href="/sport/volleyball/mens/?tab=roster" role="menuitem" aria-label="Volleyball(Mens) - Rosters" tabindex="0">Rosters</a><span> /</span>
1619                                                                <a class="text-primary" href="/sport/volleyball/mens/?tab=news" role="menuitem" aria-label="Volleyball(Mens) - News" tabindex="0">News</a>
1620                                                            </div>
1621                                                        </div>
1622                                                    </div>
1623                                                </div>
1624                                            </li>
1625                                            <li role="menuitem">
1626                                                <div class="sport-link-nfo">
1627                                                    <div class="row">
1628                                                        <div class="col-xs-12 col-sm-6">
1629                                                            <div class="link">
1630                                                                <a class="text-primary" href="/sport/volleyball/womens/" role="menuitem" tabindex="0" aria-label="Volleyball(Womens) go to Main Team Page">VOLLEYBALL(WOMENS)</a>
1631                                                            </div>
1632                                                        </div>
1633                                                        <div class="hidden-xs col-sm-6">
1634                                                            <div class="nfo">
1635                                                                <a class="text-primary" href="/sport/volleyball/womens/?tab=schedule" role="menuitem" aria-label="Volleyball(Womens) - Schedules" tabindex="0">Schedules</a><span> /</span>
1636                                                                <a class="text-primary" href="/sport/volleyball/womens/?tab=roster" role="menuitem" aria-label="Volleyball(Womens) - Rosters" tabindex="0">Rosters</a><span> /</span>
1637                                                                <a class="text-primary" href="/sport/volleyball/womens/?tab=news" role="menuitem" aria-label="Volleyball(Womens) - News" tabindex="0">News</a>
1638                                                            </div>
1639                                                        </div>
1640                                                    </div>
1641                                                </div>
1642                                            </li>
1643                                    </ul>
1644                            </li>
1645                            <li class="dropdown" role="presentation">
1646                                <a href="#" class="dropdown-toggle dropdown-text text-primary-font" data-toggle="dropdown" role="menuitem" aria-haspopup="true" aria-expanded="false" tabindex="0">
1647                                    ATHLETIC FORMS
1648                                </a>
1649                                <ul class="dropdown-menu two-columns dr-text" role="menu">
1650                                        <li role="presentation">
1651                                                <a class="text-primary" style="padding:10px" href="https://max.dragonflyathletics.com/maxweb/max-cover/login" role="menuitem" tabindex="0" aria-label="DragonFly (Sign-Up) (opens in a new tab
1651)">DragonFly (Sign-Up)</a>
1652                                        </li>
1653                                        <li role="presentation">
1654                                                <a class="text-primary" style="padding:10px" href="https://www.dragonflymax.com/academy/parents" role="menuitem" tabindex="0" aria-label="The Parent&#x27;s Guide to DragonFly (opens in a new tab)">The Parent&#x27;s Guide to DragonFly</a>
1655                                        </li>
1656                                </ul>
1657                            </li>
1658                            <li class="dropdown" role="presentation">
1659                                <a href="#" class="dropdown-toggle dropdown-text text-primary-font" data-toggle="dropdown" role="menuitem" aria-haspopup="true" aria-expanded="false" tabindex="0">
1660                                    STUDENTS/PARENTS
1661                                </a>
1662                                <ul class="dropdown-menu two-columns dr-text" role="menu">
1663                                        <li role="presentation">
1664                                                <a class="text-primary" style="padding:10px" href="https://docs.google.com/document/d/1u5jMHyXG1i-plq-okZqa9tnvkT_LNJcQLVT-iQ7jDsU/edit?usp=sharing" role="menuitem" tabindex="0" aria-label="Athletics Code of Conduct (opens in a new tab)">Athletics Code of Conduct</a>
1665                                        </li>
1666                                        <li role="presentation">
1667                                                <a class="text-primary" style="padding:10px" href="https://docs.google.com/document/d/1Kdp7IBEf_sfrRgy6-VJKrSEaV2l6fZgp/edit" role="menuitem" tabindex="0" aria-label="Important Athletic Information (opens in a new tab)">Important Athletic Information</a>
1668                                        </li>
1669                                        <li role="presentation">
1670                                                <a class="text-primary" style="padding:10px" href="/mission-and-vision" role="menuitem" tabindex="0">Mission and Vision</a>
1671                                        </li>
1672                                        <li role="presentation">
1673                                                <a class="text-primary" style="padding:10px" href="/required-student-athlete-education-vi
1673deos" role="menuitem" tabindex="0">Required Student-Athlete Education Videos</a>
1674                                        </li>
1675                                        <li role="presentation">
1676                                                <a class="text-primary" style="padding:10px" href="/required-parent-education-videos" role="menuitem" tabindex="0">Required Parent Education Videos</a>
1677                                        </li>
1678                                        <li role="presentation">
1679                                                <a class="text-primary" style="padding:10px" href="/nchsaa-information" role="menuitem" tabindex="0">NCHSAA Information</a>
1680                                        </li>
1681                                        <li role="presentation">
1682                                                <a class="text-primary" style="padding:10px" href="https://docs.google.com/document/d/1OJOAj-F5OxDord7oceS0UZEcEW9ELWjeJpiO0AMKbYw/edit?usp=sharing" role="menuitem" tabindex="0" aria-label="Varsity Lettering (opens in a new tab)">Varsity Lettering</a>
1683                                        </li>
1684                                        <li role="presentation">
1685                                                <a class="text-primary" style="padding:10px" href="https://www.jostens.com/apps/store/productDetail/2767325/Triangle-Math-and-Science-Academy-High-School/-/1174894562/CATALOG_REPOSITORY/WEB-Version/1882867269/" role="menuitem" tabindex="0" aria-label="Varsity Letter Jackets (opens in a new tab)">Varsity Letter Jackets</a>
1686                                        </li>
1687                                        <li role="presentation">
1688                                                <a class="text-primary" style="padding:10px" href="http://fs.ncaa.org/Docs/eligibility_center/Student_Resources/CBSA.pdf" role="menuitem" tabindex="0" aria-label="NCAA Guide for the College-Bound Student-Athlete (opens in a new tab)">NCAA Guide for the College-Bound Student-Athlete</a>
1689                                        </li>
1690                                        <li role="presentation">
1691                                                <a class="text-primary" style="padding:10px" href="https://cdn1.sportngin.com/attachments/document/9503-1787554/NCAA__Initial-Eligibility_Brochure.pdf#_ga=2.200515304.755742196.1655132360-749786580.1654716455" role="menuitem" tabindex="0" aria-label="NCAA Eligibility Brochure (opens in a new tab)">NCAA Eligibility Brochure</a>
1692                                        </li>
1693                                        <li role="presentation">
1694                                                <a class="text-primary" style="padding:10px" href="https://web3.ncaa.org/hsportal/exec/homeAction" role="menuitem" tabindex="0" aria-label="NCAA ELIGIBILITY CENTER (HIGH SCHOOL PORTAL) (opens in a new tab)">NCAA ELIGIBILITY CENTER (HIGH SCHOOL PORTAL)</a>
1695                                        </li>
1696                                        <li role="presentation">
1697                                                <a class="text-primary" style="padding:10px" href="/sportsmanship-video" role="menuitem" tabindex="0">Sportsmanship Video</a>
1698                                        </li>
1699                                        <li role="presentation">
1700                                                <a class="text-primary" style="padding:10px" href="/tmsa-spirit-store" role="menuitem" tabindex="0">TMSA Spirit Store</a>
1701                                        </li>
1702                                        <li role="presentation">
1703                                                <a class="text-primary" style="padding:10px" href="/athletics-newsletter" role="menuitem" tabindex="0">Athletics Newsletter</a>
1704                                        </li>
1705                                </ul>
1706                            </li>
1707                            <li class="dropdown" role="presentation">
1708                                <a href="#" class="dropdown-toggle dropdown-text text-primary-font" data-toggle="dropdown" role="menuitem" aria-haspopup="true" aria-expanded="false" tabindex="0">
1709                                    TICKETING
1710                                </a>
1711                                <ul class="dropdown-menu two-columns dr-text" role="menu">
1712                                        <li role="presentation">
1713                                                <a class="text-primary" style="padding:10px" href="https://gofan.co/app/school/NC86475" role="menuitem" tabindex="0" aria-label="Tickets (opens in a new tab)">Tickets</a>
1714                                        </li>
1715                                </ul>
1716                            </li>
1717                            <li class="dropdown" role="presentation">
1718                                <a href="#" class="dropdown-toggle dropdown-text text-primary-font" data-toggle="dropdown" role="menuitem" aria-haspopup="true" aria-expanded="false" tabindex="0">
1719                                    INSIDE ATHLETICS
1720                                </a>
1721                                <ul class="dropdown-menu two-columns dr-text" role="menu">
1722                                        <li role="presentation">
1723                                                <a class="text-primary" style="padding:10px" href="/news" role="menuitem" tabindex="0">NEWS</a>
1724                                        </li>
1725                                        <li role="presentation">
1726                                                <a class="text-primary" style="padding:10px" href="/directory" role="menuitem" tabindex="0">Staff Directory</a>
1727                                        </li>
1728                                        <li role="presentation">
1729                                                <a class="text-primary" style="padding:10px" href="/photos" role="menuitem" tabindex="0">PHOTOS</a>
1730                                        </li>
1731                                        <li role="presentation">
1732                                                <a class="text-primary" style="padding:10px" href="https://www.maxpreps.com/nc/cary/triangle-math-and-science-tigers/" role="menuitem" tabindex="0" aria-label="MaxPreps (opens in a new tab)">MaxPreps</a>
1733                                        </li>
1734                                        <li role="presentation">
1735                                                <a class="text-primary" style="padding:10px" href="/facilities" role="menuitem" tabindex="0">FACILITIES</a>
1736                                        </li>
1737                                        <li role="presentation">
1738                                                <a class="text-primary" style="padding:10px" href="/socialmedia" role="menuitem" tabindex="0">SOCIAL MEDIA</a>
1739                                        </li>
1740                                        <li role="presentation">
1741                                                <a class="text-primary" style="padding:10px" href="/broadcasts" role="menuitem" tabindex="0">BROADCASTS</a>
1742                                        </li>
1743                                        <li role="presentation">
1744                                                <a class="text-primary" style="padding:10px" href="/championships" role="menuitem" tabindex="0">CHAMPIONSHIPS</a>
1745                                        </li>
1746                                        <li role="presentation">
1747                                                <a class="text-primary" style="padding:10px" href="/alumni" role="menuitem" tabindex="0">ALUMNI</a>
1748                                        </li>
1749                                        <li role="presentation">
1750                                                <a class="text-primary" style="padding:10px" href="/boosterclub" role="menuitem" tabindex="0">BOOSTER CLUB</a>
1751                                        </li>
1752                                        <li role="presentation">
1753                                                <a class="text-primary" style="padding:10px" href="/tmsa-sponsorship-opportunities" role="menuitem" tabindex="0">
1753TMSA Sponsorship Opportunities</a>
1754                                        </li>
1755                                        <li role="presentation">
1756                                                <a class="text-primary" style="padding:10px" href="/student-athletes-of-the-week" role="menuitem" tabindex="0">Student-Athletes of the Week</a>
1757                                        </li>
1758                                </ul>
1759                            </li>
1760                            <li class="dropdown" role="presentation">
1761                                <a href="#" class="dropdown-toggle dropdown-text text-primary-font" data-toggle="dropdown" role="menuitem" aria-haspopup="true" aria-expanded="false" tabindex="0">
1762                                    ACADEMICS
1763                                </a>
1764                                <ul class="dropdown-menu two-columns dr-text" role="menu">
1765                                        <li role="presentation">
1766                                                <a class="text-primary" style="padding:10px" href="/academics" role="menuitem" tabindex="0">ACADEMICS</a>
1767                                        </li>
1768                                </ul>
1769                            </li>
1770                    <li id="more" class="hidden" role="presentation">
1771                        <a class="dropdown-toggle text-primary-font" data-toggle="dropdown" aria-haspopup="true" href="#" role="menuitem" aria-expanded="false" tabindex="0">
1772                            More <span class="caret"></span>
1773                        </a>
1774                        <ul class="dropdown-menu dropdown-menu-right" role="menu"></ul>
1775                    </li>
1776                </ul>
1777
1778                    <div class="presenting-sponsor-mobile-menu hidden-sm hidden-xs">
1779                        <div class="adzone adzone-0 presenting-sponsor">
1780                                <div class="ad-placement">
1781    <div id='gam-presenting-sponsor-2' class="gam-presenting-sponsor-2"></div>
1782    </div>
1783
1784                        </div>
1785                    </div>
1786            </div>
1787        </div>
1788    </div>
1789    <div class="mobile-cal-bar bg-primary"><button type="button" class="mcb-toggle" id="mcbToggle" aria-expanded="false"><i class="fa fa-calendar"></i> Calendar <i class="fa fa-caret-down mcb-caret"></i></button><a href="/calendar" class="mcb-full"><i class="fa fa-arrow-right"></i></a></div>
1790</nav>
1791
1792<!--Centerville-->
1793
1794                            
1795                        </div>
1796                        <div class="clearfix"></div>
1797                    </div>
1798                </div>
1799            </div>
1800        </div>
1801        <div class="row">
1802            <div class="col-md-12">
1803                
1804            </div>
1805        </div>
1806    </header>
1807    <div class="banner-ad-container-sticky-footer">
1808        <div class="banner-ad">
1809            <div class="banner">
1810    <div class="row">
1811        <div class="col-md-12 col-sm-12">            
1812            <div class="ad-placement">
1813                <div id='gam-banner-ad' class="gam-banner-ad">
1814                    
1814<script>
1815                        googletag.cmd.push(function () { googletag.display('gam-banner-ad'); });
1816                    </script>
1816
1817                </div>
1818            </div>
1819        </div>
1820    </div>
1821</div>
1822
1823        </div>
1824    </div>
1825    
1826
1827<link rel="stylesheet" href="/less/Components/AppDownloadCta.min.css" />
1828
1829<div class="app-download-cta" id="appDownloadCta" role="region" aria-labelledby="appDownloadCtaTitle">
1830    <button type="button" class="app-download-cta__close" id="appDownloadCtaClose" aria-label="Close">×</button>
1831    <div class="app-download-cta__icon" aria-hidden="true">📱</div>
1832    <div class="app-download-cta__title" id="appDownloadCtaTitle">
1833        Stay connected with <em>TMSA</em> athletics
1834    </div>
1835    <div class="app-download-cta__body">
1836        Get scores, schedules, and live streaming notifications.
1837    </div>
1838    <div class="app-download-cta__buttons">
1839            <a href="https://apps.apple.com/us/app/tmsa-athletics/id1623888200" target="_blank" rel="noopener" aria-label="Download on the App Store">
1840                <img src="/images/dl-apple.png" alt="Download on the App Store" />
1841            </a>
1842            <a href="https://play.google.com/store/apps/details?id=mm.nctriangleacademy" target="_blank" rel="noopener" aria-label="Get it on Google Play">
1843                <img src="/images/dl-google.png" alt="Get it on Google Play" />
1844            </a>
1845    </div>
1846    <button type="button" class="app-download-cta__dismiss" id="appDownloadCtaHaveIt">
1847        I already have it
1848    </button>
1849</div>
1850
1851<script>
1852    (function () {
1853        var el = document.getElementById('appDownloadCta');
1854        if (!el) return;
1855
1856        var SHOW_DELAY_MS = 5000;
1857        var AUTO_HIDE_MS = 15000;
1858        var FADE_MS = 300;
1859        var COOKIE_NAME = 'mm_app_cta_dismissed';
1860        var COOKIE_DAYS = 90;
1861
1862        if (window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
1863            FADE_MS = 0;
1864        }
1865
1866        function setCookie(name, value, days) {
1867            var d = new Date();
1868            d.setTime(d.getTime() + days * 24 * 60 * 60 * 1000);
1869            document.cookie = name + '=' + value + '; expires=' + d.toUTCString() + '; path=/; SameSite=Lax';
1870        }
1871
1872        function hide() {
1873            // if keyboard focus is inside the card, hand it off before removal so it is not lost
1874            if (el.contains(document.activeElement)) {
1875                var main = document.getElementById('main-content') || document.body;
1876                if (!main.hasAttribute('tabindex')) main.setAttribute('tabindex', '-1');
1877                main.focus({ preventScroll: true });
1878            }
1879            el.classList.remove('is-visible');
1880            setTimeout(function () {
1881                if (el.parentNode) el.parentNode.removeChild(el);
1882            }, FADE_MS);
1883        }
1884
1885        var autoHideTimer = null;
1886
1887        setTimeout(function () {
1888            requestAnimationFrame(function () { el.classList.add('is-visible'); });
1889            autoHideTimer = setTimeout(hide, AUTO_HIDE_MS);
1890        }, SHOW_DELAY_MS);
1891
1892        document.getElementById('appDownloadCtaClose').addEventListener('click', function () {
1893            if (autoHideTimer) clearTimeout(autoHideTimer);
1894            hide();
1895        });
1896
1897        document.getElementById('appDownloadCtaHaveIt').addEventListener('click', function () {
1898            if (autoHideTimer) clearTimeout(autoHideTimer);
1899            setCookie(COOKIE_NAME, '1', COOKIE_DAYS);
1900            hide();
1901        });
1902
1903        // auto-hide pauses while the user is engaging (mouse over or keyboard focus inside)
1904        // and resumes with a fresh countdown when they leave (WCAG 2.2.1)
1905        function pauseAutoHide() {
1906            if (autoHideTimer) { clearTimeout(autoHideTimer); autoHideTimer = null; }
1907        }
1908
1909        function resumeAutoHideIfIdle() {
1910            setTimeout(function () {
1911                var matches = el.matches || el.msMatchesSelector;
1912                var mouseOver = matches ? matches.call(el, ':hover') : false;
1913                var focusInside = el.contains(document.activeElement);
1914                if (!mouseOver && !focusInside && el.parentNode && !autoHideTimer) {
1915                    autoHideTimer = setTimeout(hide, AUTO_HIDE_MS);
1916                }
1917            }, 0);
1918        }
1919
1920        el.addEventListener('mouseenter', pauseAutoHide);
1921        el.addEventListener('mouseleave', resumeAutoHideIfIdle);
1922        el.addEventListener('focusin', pauseAutoHide);
1923        el.addEventListener('focusout', resumeAutoHideIfIdle);
1924
1925        el.addEventListener('keydown', function (e) {
1926            if (e.key === 'Escape') {
1927                pauseAutoHide();
1928                hide();
1929            }
1930        });
1931    })();
1932</script>
1932
1933
1934    <div class="row">
1935        <div class="col-md-12">
1936            <div class="content-wrapper" id="main-content" role="main">
1937                
1938<div class="row">
1939    <div id="custom-bg" class="col-md-12">
1940        <div class="container">
1941    <!-- Content description for screen readers -->
1942    <div class="content-description visually-hidden">
1943        <p>This section contains dynamically generated content. Its purpose may vary depending on the context. Please refer to the following content for more information.</p>
1944    </div>
1945    
1946    <!-- Dynamically generated content -->
1947    <div class="custom-page-content">
1948        <div id="dynamic-content" aria-live="polite">
1949            <p><a href="https://elementrealtygroup.net/" target="_blank"><b style=""><font color="#0000ff">Element Realty Group</font></b></a><br><img src="https://5starassets.blob.core.windows.net/athleticsites/2636178/20da1c08-c3f1-46ae-8062-861866dd99de.png" style="width: 900px;"><br></p>
1950        </div>
1951    </div>
1952</div>
1953<style>
1954    .visually-hidden
1955    {
1956        position: absolute !important;
1957        clip: rect(1px, 1px, 1px, 1px);
1958        padding: 0 !important;
1959        border: 0 !important;
1960        height: 1px !important;
1961        width: 1px !important;
1962        overflow: hidden !important;
1963    }
1964
1965    .custom-page-content img
1966    {
1967        max-width: 100%;
1968        height: auto;
1969    }
1970/*
1971    .custom-page-content table
1972    {
1973        width: 100%;
1974        overflow-x: auto;
1975        display: block;
1976    }*/
1977
1978    .custom-page-content
1979    {
1980        overflow-x: auto;
1981    }
1982
1983
1984        .custom-page-content iframe
1985        {
1986            max-width: 100%;
1987            max-height: 100%;
1988            border: none;
1989        }
1990
1991</style>
1992
1993    </div>
1994</div>
1995
1996
1997            </div>
1998        </div>
1999    </div>
2000
2001    <div class="full-width-container primary-background secondary-bottom-border bg-primary">
2002        
2003            <div class="footer">
2004    <div class="contact-us">
2005        <div class="widget padded-box">
2006            <p class="address">
2007                CONTACT US
2008                    <span id="phone-remove">919-335-0262</span> |
2009                3501 DROPSEED DR., Apex, NC 27502
2010            </p>
2011            <br />
2012            <p style="color: white; text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000;">Thank you to all of our <a style="color: white; text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000; text-decoration: underline;" aria-label="Visit our Sponsors Page" href="/sponsor/SponsorsPage">Sponsors!</a></p>
2013            <!-- app promotion -->
2014            <div class="footer-items">
2015                <div class="row">
2016                    <div class="col-md-12">
2017                        <div id="app-downloads">
2018                            <div id="badges">
2019                                <div class="row">
2020                                    <div class="col-sm-12">
2021                                            <a href="https://apps.apple.com/us/app/tmsa-athletics/id1623888200" target="_blank"><img class="img-responsive download" src="/images/dl-apple.png" aria-label="navigate to apple app store to download app" alt="Apple App Store Badge" /></a>
2022
2023                                                <img aria-label="TMSA"
2024                                                     alt="TMSA app logo"
2025                                                     src="https://5starassets.blob.core.windows.net/athleticsites/2636178/643/images/97aa5ba1-4ab1-4e01-9916-d5c7aa924435.png"
2026                                                     class="img-responsive app-icon" />
2027                                        <span id="googleplay">
2028                                                <a href="https://play.google.com/store/apps/details?id=mm.nctriangleacademy" target="_blank"><img class="img-responsive download" src="/images/dl-google.png" aria-label="navigate to google play store to download school app" alt="Google Play Store Badge" /></a>
2029                                        </span>
2030                                    </div>
2031                                </div>
2032                            </div>
2033                        </div>
2034                    </div>
2035                </div>
2036
2037            </div>
2038        </div>
2039        <div class="feeder-schools-footer bg-primary">
2040        </div>
2041    </div>
2042
2043</div>
2044<script type="text/javascript">
2045    //Going to check the operating system, and if it is iOS, we will hide Google Play Icon bc it causes issues with App Store approvals
2046    var getOS = {
2047        iOS: function () {
2048            return navigator.platform.match(/iPhone|iPad|iPod/i);
2049        },
2050        Mac: function () {
2051            return navigator.platform.match("MacIntel");
2052        },
2053        Windows: function () {
2054            return navigator.platform.match("Win32");
2055        },
2056    };
2057    if (getOS.iOS()) {
2058        document.getElementById('googleplay').style.display = "none";
2059    }
2060    if (getOS.Mac()) {
2061        //console.log( 'Is an iOS');
2062        document.getElementById('googleplay').style.display = "none";
2063    }
2064    else {
2065        document.getElementById('googleplay').style.display = "inline";
2066    }
2067</script>
2067
2068
2069        
2070    </div>
2071    <div class="container-fluid primary-background bg-primary secondary-bottom-border">
2072    <div class="platinum-partner-container">
2073        <div class="row">
2074            <div class="col-md-12 off-set-md-2">
2075                <span class="plat-part-text">PLATINUM PARTNERS</span>
2076                <hr/>
2077                <div class="sponsor-slider slider">
2078                        <div class="item">
2079                            <a href="https://elementrealtygroup.net/" target="_blank" aria-label="go to Element Realty Group website in another tab"><img src="https://5starassets.blob.core.windows.net/athleticsites/2636178/images/0854bda5-530e-4988-9ab4-498e7e680678.png" class="img-responsive" alt="Element Realty Group logo" loading="lazy"/></a>
2080                        </div>
2081                    </div>
2082
2083                </div>
2084            </div>
2085        </div>
2086    </div>
2087    <style>
2088        /* the slides */
2089        .slick-slide {
2090            margin: 0 27px;
2091        }
2092        /* the parent */
2093        .slick-list {
2094            margin: 0 -27px;
2095        }
2096
2097    </style>
2098
2099    <div class="full-width-container primary-background secondary-bottom-border">
2100        
2101            <div class="footer bg-primary">
2102    <div class="widget padded-box">
2103        <div class="footer-items">
2104            <div class="row">
2105                <div class="col-md-12">
2106                    
2107                </div>
2108            </div>
2109        </div>
2110    </div>
2111</div>
2112        
2113    </div>
2114
2115    <div class="privacy-terms">
2116        <a href="http://www.mascotmedia.net/privacy-policy/" target="_blank" aria-label="Go to Mascot Media Privacy Policy">PRIVACY POLICY</a> |
2117        <a href="/Home/Accessibility" aria-label="Go to Mascot Media Accessibility Statement">ACCESSIBILITY</a>
2118        <span>&copy; 2026 MASCOT MEDIA, LLC</span>
2119    </div>
2120
2121    <div class="ad-space">
2122    </div>
2123    
2124        <!-- CDN compiled and minified jquery 2.2.0 -->
2125        
2125<script src="https://code.jquery.com/jquery-2.2.0.min.js" integrity="sha256-ihAoc6M/JPfrIiIeayPE9xjin4UWjsx2mjW/rtmxLM4=" crossorigin="anonymous"></script>
2125
2126        <!-- CDN compiled and minified slick slider js -->
2127        
2127<script src="https://cdn.jsdelivr.net/jquery.slick/1.3.15/slick.min.js"></script>
2127
2128        <!-- CDN compiled and minified lity lightbox js -->
2129        
2129<script src="https://cdnjs.cloudflare.com/ajax/libs/lity/2.3.1/lity.min.js" integrity="sha256-3VzI8FuSG20IfvIDKRptBR+1d4T6G57eDIf6ZEO13iY=" crossorigin="anonymous"></script>
2129
2130        <!-- fixed navbar scrolling -->
2131        
2131<script type="text/javascript" src="/js/scrollfixed.min.js"></script>
2131
2132        <!-- CDN compiled and minified bootstrap 3 js -->
2133        
2133<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
2133
2134        
2134<script src="https://cdnjs.cloudflare.com/ajax/libs/ekko-lightbox/3.3.0/ekko-lightbox.min.js" integrity="sha512-J82mHQM4P5UsCSAAIYxj/UQyM/VsH/+ija5xaWr2BirVfRJHNktjd4IzGKBJMbhnvqoRUb/B+WgphcOObaaNEQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
2134
2135        <!-- locally stored compiled and minified js files for datatables -->
2136        
2136<script src="/lib/datatables/media/js/jquery.dataTables.min.js"></script>
2136
2137        
2137<script src="/lib/datatables/media/js/dataTables.bootstrap.min.js"></script>
2137
2138        
2138<script src="/lib/datatables-responsive/js/dataTables.responsive.min.js"></script>
2138
2139        
2139<script src="/js/UpcomingBroadcastSideTabStyle14.min.js"></script>
2139
2140        
2140<script src="/lib/jquery.menu-aim/jquery.menu-aim.min.js"></script>
2140
2141        
2141<script src="/js/topmenu2.min.js?v=1.1"></script>
2141
2142        <!-- stripe js -->
2143        
2143<script src="https://js.stripe.com/v3/"></script>
2143
2144        <!-- in-house ad rotator -->
2145        
2145<script src="/js/StagingButtons.min.js"></script>
2145
2146        
2146<script src="/lib/sweetalert/dist/sweetalert.min.js"></script>
2146
2147        
2147<script src="/lib/slick-carousel/slick/slick.min.js"></script>
2147
2148        
2148<script src="/js/PlatinumSponsorStyle2.min.js"></script>
2148
2149        
2149<script src="/js/CommitmentsStyle1.min.js"></script>
2149
2150
2151
2152
2153    
2154    
2155    
2155<script type="text/javascript">
2156        $.extend(true, $.fn.dataTable.defaults, {
2157            language: {
2158                "processing": "<i class='fa fa-refresh fa-spin fa-2x'></i><br />Loading..."
2159            }
2160        });
2161    </script>
2161
2162
2163    
2163<script type='text/javascript'>
2164        var url = 'https://apps.apple.com/us/app/tmsa-athletics/id1623888200';
2165        var regex = /([\d]{10,})/g;
2166        var meta = document.createElement('meta');
2167            meta.setAttribute('name', 'apple-itunes-app');
2168            meta.setAttribute('content', 'app-id=' + url.match(regex));
2169        document.getElementsByTagName('head')[0].appendChild(meta);
2170    </script>
2170
2171
2172    <!-- Quantcast Tag -->
2173    
2173<script type="text/javascript">
2174        window._qevents = window._qevents || [];
2175        (function () {
2176            var elem = document.createElement('script');
2177            elem.src = (document.location.protocol == "https:" ? "https://secure" : "http://edge") + ".quantserve.com/quant.js";
2178            elem.async = true;
2179            elem.type = "text/javascript";
2180            var scpt = document.getElementsByTagName('script')[0];
2181            scpt.parentNode.insertBefore(elem, scpt);
2182        })();
2183        window._qevents.push({
2184            qacct: "p-L8Vz-DsnmdfCj",
2185            uid: "__INSERT_EMAIL_HERE__"
2186        });
2187    </script>
2187
2188    <noscript>
2189        <div style="display:none;">
2190            <img src="//pixel.quantserve.com/pixel/p-L8Vz-DsnmdfCj.gif" border="0" height="1" width="1" alt="Quantcast" />
2191        </div>
2192    </noscript>
2193    <!-- End Quantcast tag -->
2194</body>
2195</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.