PageSourceSearch

https://www.tlhannasports.com/sport/baseball/boys/

html tlhannasports.com collected 2026-10-08 10:35:52 UTC 172,637 bytes, 2,729 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en-us">
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    <style>
208        /* Template 14: the sponsor shares the .upper-side area with the social + app
209           icons, inside a narrow right column (col-md-2 ~168px at md, col-lg-2 at lg).
210           The old `width:360px` made .upper-side wider than its column, so it overflowed
211           the viewport's right edge and dragged the GAM sponsor off-screen (up to 142px
212           past the edge at 992-1200). The column is position:relative, so pin .upper-side
213           to ITS right edge: now the box grows leftward (socials reflow toward the nav)
214           and the sponsor — the rightmost, revenue-bearing element — always stays in the
215           viewport. fitPresentingSponsor() (JS below) still scales the ad to the 200px
216           box with no crop. */
217        /* Scope ONLY to the right column (last child of the header row). The LEFT
218           .upper-side holds the school logo and must not move. Desktop-nav widths only
219           (col-md-2 has no width below 992 and the absolute pin would float over the
220           mobile header). */
221        @media (min-width: 992px) {
222            .row > .col-md-2:last-child {
223                position: relative;
224            }
225            .row > .col-md-2:last-child .upper-side {
226                position: absolute;
227                top: 0;
228                right: 0;
229                width: 360px !important;
230                margin: 0 !important;
231            }
232        }
233        .presenting-sponsor .gam-presenting-sponsor-2 {
234            max-width: 200px !important;
235            max-height: none !important;
236            overflow: hidden;
237        }
238    </style>
239
240
241    
241<script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script>
241
242    
242<script>
243        window.googletag = window.googletag || { cmd: [] };
244
245        function isMobile() {
246            return window.innerWidth <= 768;
247        }
248
249        // The greedy "MORE" nav (topmenu.js, Header Style 8/9/15) lays out BEFORE the GAM
250        // presenting-sponsor iframe paints, so it never reserves the ad's width and the
251        // sponsor wraps to a line below the nav. Re-running AdjustNav() once the creative is
252        // sized makes the nav recount the sponsor <li> and tuck overflow links into MORE,
253        // keeping the sponsor inline. No-op on templates without the greedy nav (AdjustNav
254        // is undefined there), so it's safe to call unconditionally.
255        function nudgeGreedyNav() {
256            if (typeof AdjustNav === 'function') {
257                try { AdjustNav(); } catch (e) { /* greedy nav not present on this template */ }
258            }
259        }
260
261        googletag.cmd.push(function () {
262            var isMobileDevice = isMobile();
263            var REFRESH_KEY = 'refresh';
264            var REFRESH_VALUE = 'true';
265
266            // NEW: programmatic flag + refresh timing
267            var useProgrammaticAds = false;
268            // 30s is Google's minimum refresh interval for any slot AdX can fill do not lower
269            var REFRESH_MS = 30000;
270
271            // NEW: add a body class only when programmatic + mobile (for stable layout)
272            if (useProgrammaticAds && isMobileDevice) {
273                document.body.classList.add('prog-mobile-banners');
274            }
275
276            // ------- PRESENTING SPONSOR-------
277            // Define BOTH slots unconditionally. Defining a slot does NOT request an ad
278            // (only display()/refresh() does), and the responsive-fill block below
279            // displays exactly ONE at a time — so this adds no load-time impressions.
280            // The old isMobileDevice (innerWidth<=768) branch defined only one slot for
281            // the page's life; combined with CSS that switches the sponsor container at
282            // 992px, that stranded 769-991px on a visible-but-empty slot (the tablet dead
283            // zone). We now align the fill to the 992 CSS boundary (see below).
284            var sponsorSlotsById = {};
285            sponsorSlotsById['gam-presenting-sponsor-mobile'] = googletag.defineSlot('/22870419559/headerwebmobile', [[300, 75]], 'gam-presenting-sponsor-mobile')
286                .setTargeting(REFRESH_KEY, REFRESH_VALUE)
287                .addService(googletag.pubads());
288            sponsorSlotsById['gam-presenting-sponsor-2'] = googletag.defineSlot('/22870419559/headerwebdesktop', [[300, 75]], 'gam-presenting-sponsor-2')
289                .setTargeting(REFRESH_KEY, REFRESH_VALUE)
290                .addService(googletag.pubads());
291
292            // Build base arrays of allowed sizes
293            var desktopTabletProgrammatic = [[640, 100], [728, 90]];
294            var mobileProgrammatic = [[320, 50]];              // << mobile = 320x50 ONLY
295            var desktopTabletDefault = [[640, 100]];
296            var mobileDefault = [[640, 100]];
297
298            var allProgrammaticSizes = [[640, 100], [728, 90], [320, 50]];
299            var allDefaultSizes = [[640, 100]];
300
301            var bannerMapping = googletag.sizeMapping()
302                .addSize([1024, 0], useProgrammaticAds ? desktopTabletProgrammatic : desktopTabletDefault) // desktop
303                .addSize([768, 0], useProgrammaticAds ? desktopTabletProgrammatic : desktopTabletDefault) // tablet
304                .addSize([0, 0], useProgrammaticAds ? mobileProgrammatic : mobileDefault)        // phones
305                .build();
306
307            googletag.defineSlot(
308                '/22870419559/bannerweb',
309                useProgrammaticAds ? allProgrammaticSizes : allDefaultSizes,
310                'gam-banner-ad'
311            )
312                .defineSizeMapping(bannerMapping)
313                .setTargeting(REFRESH_KEY, REFRESH_VALUE)
314                .addService(googletag.pubads());
315
316            googletag.defineSlot(
317                '/22870419559/bannerweb',
318                useProgrammaticAds ? allProgrammaticSizes : allDefaultSizes,
319                'gam-banner-ad-2'
320            )
321                .defineSizeMapping(bannerMapping)
322                .setTargeting(REFRESH_KEY, REFRESH_VALUE)
323                .addService(googletag.pubads());
324
325            googletag.defineSlot('/22870419559/agent', [[300, 75]], 'gam-agent-ad')
326                .setTargeting(REFRESH_KEY, REFRESH_VALUE)
327                .addService(googletag.pubads());
328
329            googletag.pubads().setTargeting('siteid', '2579830');
330            googletag.pubads().setTargeting('isschoolpay', '1');
331
332            googletag.pubads().addEventListener('impressionViewable', function (event) {
333                var slot = event.slot;
334                if (slot.getTargeting(REFRESH_KEY).indexOf(REFRESH_VALUE) > -1) {
335                    setTimeout(function () {
336                        googletag.pubads().refresh([slot]);
337                    }, REFRESH_MS);
338                }
339            });
340
341            googletag.enableServices();
342
343            // ------- PRESENTING SPONSOR: responsive fill (AB-6152 follow-up) -------
344            // The desktop/mobile split is owned entirely by each header's NATIVE Bootstrap
345            // visibility classes (no universal @media here anymore). We fill whichever slot
346            // the CSS currently shows, and re-fill on resize so a breakpoint cross is never
347            // stranded on an empty slot. Only ONE slot is displayed at a time, so load-time
348            // impression volume is unchanged — the filled slot is always the VISIBLE (and
349            // viewable) one. For the greedy "MORE" nav the desktop sponsor is an inline <li>;
350            // nudgeGreedyNav() (called after the creative paints) re-runs AdjustNav so the nav
351            // reserves the ad's width and keeps it inline instead of wrapping it below.
352            (function () {
353                var sponsorDisplayed = { 'gam-presenting-sponsor-2': false, 'gam-presenting-sponsor-mobile': false };
354                // Is the element actually rendered (not display:none on it or any ancestor)?
355                function isShown(el) { return !!(el && (el.offsetParent !== null || el.getClientRects().length)); }
356                // Fill whichever slot the CSS currently shows. The desktop/mobile split is owned
357                // entirely by the header CSS (the @media block above sets <=992 -> mobile on the
358                // standard menus; layout 19 keeps its reserved desktop slot, etc.), so the JS just
359                // follows it — no width is hard-coded here, and template-specific breakpoints
360                // (e.g. 19's reserved slot) are honored automatically. Fall back to a 993 width
361                // split only if neither container has been laid out yet.
362                function activeSponsorId() {
363                    var d = document.getElementById('gam-presenting-sponsor-2');
364                    var m = document.getElementById('gam-presenting-sponsor-mobile');
365                    if (isShown(d)) return 'gam-presenting-sponsor-2';
366                    if (isShown(m)) return 'gam-presenting-sponsor-mobile';
367                    if (!d && !m) return null;
368                    return window.innerWidth >= 993 ? 'gam-presenting-sponsor-2' : 'gam-presenting-sponsor-mobile';
369                }
370                function fillActiveSponsor() {
371                    var id = activeSponsorId();
372                    if (!id || !document.getElementById(id)) return;   // this template doesn't render that slot
373                    var slot = sponsorSlotsById[id];
374                    if (!slot) return;
375                    if (!sponsorDisplayed[id]) {
376                        googletag.display(id);
377                        sponsorDisplayed[id] = true;
378                    } else {
379                        googletag.pubads().refresh([slot]);     // already shown once -> re-serve on return
380                    }
381                }
382                function whenReady(fn) {
383                    if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', fn);
384                    else fn();
385                }
386                whenReady(fillActiveSponsor);
387                // Re-fill the now-visible slot after a resize crosses any template's CSS breakpoint.
388                var resizeTimer;
389                window.addEventListener('resize', function () {
390                    clearTimeout(resizeTimer);
391                    resizeTimer = setTimeout(fillActiveSponsor, 200);
392                });
393            })();
394
395            // Add event listeners for responsive image handling
396            document.addEventListener('DOMContentLoaded', function () {
397                handleResponsiveImages();
398
399                // Add debounced resize handler
400                var resizeTimeout = null;
401                window.addEventListener('resize', function () {
402                    if (resizeTimeout) {
403                        clearTimeout(resizeTimeout);
404                    }
405
406                    resizeTimeout = setTimeout(function () {
407                        handleResponsiveImages();
408                    }, 250);
409                });
410            });
411
412            // Add slotRenderEnded event to handle styling right after ads render
413            googletag.pubads().addEventListener('slotRenderEnded', function (event) {
414                // Give a small delay to ensure content is available
415                setTimeout(function () {
416                    var id = event.slot.getSlotElementId();
417                    var container = document.getElementById(id);
418                    if (container) {
419                        var iframes = container.querySelectorAll('iframe[id^="google_ads_iframe"]');
420                        iframes.forEach(applyResponsiveStyles);
421                    }
422                    if (id === 'gam-presenting-sponsor-2') {
423                        // Belt-and-suspenders for the greedy nav: re-run after the creative has
424                        // settled, covering the cross-origin safe-frame path where
425                        // fitPresentingSponsor (and thus its inline nudge) can't measure the ad.
426                        setTimeout(nudgeGreedyNav, 250);
427                    }
428                }, 50);
429            });
430
431            // Function to handle responsive images
432            function handleResponsiveImages() {
433                ['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 => {
434                    var adContainer = document.querySelector(`#${adId}`);
435                    if (adContainer) {
436                        observeIframeInsertion(adContainer);
437                        var iframes = adContainer.querySelectorAll('iframe[id^="google_ads_iframe"]');
438                        iframes.forEach(applyResponsiveStyles);
439                    }
440                });
441            }
442
443            // Function to observe iframe insertion - from original code
444            function observeIframeInsertion(container) {
445                var observer = new MutationObserver(function (mutations) {
446                    mutations.forEach(function (mutation) {
447                        if (mutation.addedNodes) {
448                            mutation.addedNodes.forEach(function (node) {
449                                if (node.tagName === 'IFRAME' && node.id.startsWith('google_ads_iframe')) {
450                                    applyResponsiveStyles(node);
451                                    observeIframeChanges(node);
452                                }
453                            });
454                        }
455                    });
456                });
457
458                observer.observe(container, {
459                    childList: true,
460                    subtree: true
461                });
462            }
463
464            function applyResponsiveStyles(iframe) {
465                if (!iframe) return;
466
467                // Presenting sponsor (desktop AND mobile, ALL templates): one proportional
468                // fit — scale the creative to its reserved nav slot, no crop. (Previously this
469                // was template-19-only; every other template clipped via the default box.)
470                if (iframe.closest('.gam-presenting-sponsor-2') || iframe.closest('#gam-presenting-sponsor-mobile')) {
471                    fitPresentingSponsor(iframe);
472                    return;
473                }
474
475                // Banner / sport-banner ads — unchanged.
476                if (
477                    iframe.closest('.gam-banner-ad') ||
478                    iframe.closest('.gam-banner-ad-2') ||
479                    iframe.closest('.gam-sport-banner-ad') ||
480                    iframe.closest('.gam-sport-banner-ad-2')
481                ) {
482                    var isTemplate19 = !!document.querySelector('.sticky-header-19');
483                    var isTemplate19Banner = isTemplate19 && iframe.closest('.gam-banner-ad');
484
485                    if (isMobile() && !isTemplate19Banner) {
486                        iframe.style.width = '100%';
487                        iframe.style.height = 'auto';
488                        try {
489                            var iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
490                            // Template 19's top banner sits at the very top of the sticky
491                            // header with nothing overlapping it; the 20% push-down other
492                            // templates use just renders as dead white space above the ad.
493                            iframeDoc.querySelectorAll('img').forEach(function (img) {
494                                img.style.maxWidth = '100%';
495                                img.style.height = 'auto';
496                                img.style.marginTop = iframe.closest('.gam-banner-ad') ? '20%' : '0';
497                            });
498                        } catch (e) {
499                            console.error('Could not access iframe content:', e);
500                        }
501                    }
502
503                    // Template 19's top banner ad: pin the iframe to the creative's true
504                    // rendered height on EVERY device, not just mobile (AB-6411 — the
505                    // sticky ad row is a fixed 122px box on desktop; see main.less/
506                    // CSSStyle19). Set inline with !important so it wins regardless of
507                    // CSS state — GAM ad sizing lives here in JS, not in template CSS,
508                    // which is easy to defeat via selector specificity drift (this exact
509                    // element had multiple overlapping height:auto rules quietly taking
510                    // turns winning).
511                    if (isTemplate19Banner) {
512                        try {
513                            var iframeDoc19 = iframe.contentDocument || iframe.contentWindow.document;
514                            if (iframeDoc19.documentElement) { iframeDoc19.documentElement.style.margin = '0'; iframeDoc19.documentElement.style.padding = '0'; }
515                            if (iframeDoc19.body) { iframeDoc19.body.style.margin = '0'; iframeDoc19.body.style.padding = '0'; }
516                            var bannerImg = iframeDoc19.querySelector('img');
517                            var fitBannerHeight = function () {
518                                if (!bannerImg.naturalWidth) return;
519                                var w = iframe.getBoundingClientRect().width;
520                                var h = Math.round(w * bannerImg.naturalHeight / bannerImg.naturalWidth);
521                                if (h > 0) iframe.style.setProperty('height', h + 'px', 'important');
522                            };
523                            if (bannerImg) {
524                                bannerImg.style.maxWidth = '100%';
525                                bannerImg.style.height = 'auto';
526                                bannerImg.style.display = 'block';
527                                bannerImg.style.marginTop = '0';
528                                if (bannerImg.complete && bannerImg.naturalWidth) { fitBannerHeight(); }
529                                else { bannerImg.addEventListener('load', fitBannerHeight); }
530                            }
531                        } catch (e) {
532                            console.error('Could not access iframe content:', e);
533                        }
534                    }
535                }
536            }
537
538            // Scale the presenting sponsor to fit its reserved nav slot from the creative's
539            // TRUE dimensions, preserving aspect ratio (never crop). Generalized from the old
540            // template-19-only version so EVERY template gets the same treatment. Per the
541            // business-rules GAM section, sizing lives here in JS — CSS can't reach the creative
542            // inside the friendly iframe. The iframe still loads the native creative so GAM
543            // impression/click/viewability tracking fires correctly; we only change how it paints.
544            function fitPresentingSponsor(iframe) {
545                var container = iframe.closest('.gam-presenting-sponsor-2, #gam-presenting-sponsor-mobile');
546                if (!container) return;
547                var isMobileSlot = container.id === 'gam-presenting-sponsor-mobile';
548
549                // Target box = the slot each template reserves in its nav. Read it from the
550                // rendered container; fall back / sanity-cap so an unbounded (e.g. max-width:none)
551                // or not-yet-sized container can't blow the ad out across the nav.
552                var boxW = container.clientWidth;
553                var boxH = container.clientHeight;
554                if (!boxW || boxW < 40 || boxW > 400) boxW = isMobileSlot ? Math.max(200, window.innerWidth - 24) : 240;
555                if (!boxH || boxH < 20 || boxH > 120) boxH = isMobileSlot ? 64 : 72;
556
557                function apply(nativeW, nativeH) {
558                    if (!nativeW || !nativeH) return;
559                    // Fit WITHIN the box on both dimensions, preserving aspect ratio — no crop.
560                    var scale = Math.min(boxW / nativeW, boxH / nativeH);
561                    iframe.style.setProperty('width', nativeW + 'px', 'important');
562                    iframe.style.setProperty('height', nativeH + 'px', 'important');
563                    iframe.style.setProperty('transform', 'scale(' + scale + ')', 'important');
564                    iframe.style.transformOrigin = 'top left';
565                    // display:block so the iframe ignores inherited line-height (e.g. 85px on
566                    // template 14's .upper-side) and its own vertical-align:bottom, which push an
567                    // inline iframe DOWN inside the slot and let overflow:hidden clip the bottom.
568                    iframe.style.setProperty('display', 'block', 'important');
569                    // Collapse the container to the painted size so there's no gap or overflow.
570                    container.style.width = Math.round(nativeW * scale) + 'px';
571                    container.style.height = Math.round(nativeH * scale) + 'px';
572                    container.style.overflow = 'hidden';
573                    // Desktop sponsor sits inline in the greedy nav — now that it has a real
574                    // width, let the nav reserve it (pushes overflow links into MORE).
575                    if (!isMobileSlot) nudgeGreedyNav();
576                }
577
578                try {
579                    var doc = iframe.contentDocument || iframe.contentWindow.document;
580                    var img = doc && doc.querySelector('img');
581                    if (img) {
582                        // GAM's friendly iframe ships an 8px <body> margin that nudges the creative
583                        // down/right (then overflow:hidden crops it). Zero margins + block-level the
584                        // image to kill the inline baseline gap, then measure true dimensions.
585                        if (doc.documentElement) { doc.documentElement.style.margin = '0'; doc.documentElement.style.padding = '0'; }
586                        if (doc.body) { doc.body.style.margin = '0'; doc.body.style.padding = '0'; }
587                        img.style.display = 'block';
588                        img.style.maxWidth = 'none';
589                        img.style.width = 'auto';
590                        img.style.height = 'auto';
591                        if (img.complete && img.naturalWidth) {
592                            apply(img.naturalWidth, img.naturalHeight);
593                        } else {
594                            img.addEventListener('load', function () {
595                                apply(img.naturalWidth, img.naturalHeight);
596                            });
597                        }
598                    }
599                } catch (e) {
600                    // Cross-origin (safe-frame) creative — can't measure it; leave the CSS default.
601                    console.error('Could not size presenting sponsor:', e);
602                }
603            }
604
605            function observeIframeChanges(iframe) {
606                iframe.addEventListener('load', function () {
607                    applyResponsiveStyles(iframe);
608                });
609
610                var observer = new MutationObserver(function (mutations) {
611                    mutations.forEach(function (mutation) {
612                        if (mutation.type === 'childList' || (mutation.type === 'attributes' && mutation.attributeName === 'src')) {
613                            applyResponsiveStyles(iframe);
614                        }
615                    });
616                });
617
618                observer.observe(iframe, {
619                    childList: true,
620                    subtree: true,
621                    attributes: true,
622                    attributeFilter: ['src']
623                });
624            }
625        });
626    </script>
626
627
628        <!-- Google tag (gtag.js) -->
vendor: 73 bytes, lines 628-629
628
629        <script async src="https://www.googletagmanager.com/gtag/js?id=
629G-540PHGNH3P
vendor: 21 bytes, lines 629-630
629"></script>
630        
630<script>
631            
vendor: 171 bytes, lines 631-635
631window.dataLayer = window.dataLayer || [];
632            function gtag() { dataLayer.push(arguments); }
633            gtag('js', new Date());
634
635            gtag('config', '
635G-540PHGNH3P
vendor: 13 bytes, lines 635-636
635');
636        
636</script>
636
637    
638
639    <meta charset="utf-8" />
640    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0, user-scalable=yes" />
641    <title>T.L. Hanna High School Baseball</title>
642    <meta name="description" content="The official Baseball page for the T.L. Hanna Yellow Jackets." />
643    <meta name="keywords" content="t.l. hanna high school, yellow jackets, athletics, schedules, scores, news, broadcasting, mobile, video, rosters, photos, sports, high school" />
644    <meta property="og:image" content="https://5starassets.blob.core.windows.net/athleticsites/2579830/1162/images/eaef9e97-6c21-4696-a0c0-eb5fa3e29b4c.png">
645    <link rel="canonical" href="https://www.tlhannasports.com/sport/baseball/boys/" />
646<meta name="robots" content="index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1" />
647    
647<script type="application/ld+json">{"@context":"https://schema.org","@type":"SportsOrganization","name":"T.L. Hanna High School","url":"https://www.tlhannasports.com","logo":"https://5starassets.blob.core.windows.net/athleticsites/2579830/1162/images/eaef9e97-6c21-4696-a0c0-eb5fa3e29b4c.png","description":"The official Baseball page for the T.L. Hanna Yellow Jackets.","alternateName":"T.L. Hanna High School Yellow Jackets","address":{"@type":"PostalAddress","addressLocality":"Anderson","addressRegion":"SC"}}</script>
647
648    
648<script type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","name":"T.L. Hanna High School","url":"https://www.tlhannasports.com","potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://www.tlhannasports.com/search?keyword={search_term_string}"},"query-input":"required name=search_term_string"}}</script>
648
649
650    
651
652    
653        <!-- latest CDN compiled and minified CSS for lity (simple lightbox) -->
654        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/lity/2.3.1/lity.min.css" integrity="sha256-0SZxASYAglrmIuTx+ZYHE3hzTnCZWB7XLu+iA8AG0Z0=" crossorigin="anonymous" />
655        <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
656        <link href="/css/mm.css" rel="stylesheet" />
657        <!-- latest CDN compiled and minified CSS for slick slider -->
658        <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" />
659        <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" />
660        <!-- latest CDN compiled and minified CSS for font awesome -->
661        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css" integrity="sha256-NuCn4IvuZXdBaFKJOAcsU2Q3ZpwbdFisd5dux4jkQ5w=" crossorigin="anonymous" />
662        <link rel="stylesheet" href="/lib/yamm3/yamm/yamm.min.css" />
663        <link rel="stylesheet" href="/lib/datatables/media/css/dataTables.bootstrap.min.css" />
664        <link rel="stylesheet" href="/less/templates/14/main.min.css?v=2.4" />
665        <link rel="icon" type="image/png" href="https://5starassets.blob.core.windows.net/athleticsites/2579830/1162/images/eaef9e97-6c21-4696-a0c0-eb5fa3e29b4c.png">
666        <link href="/lib/sweetalert/dist/sweetalert.css" rel="stylesheet" />
667        <link rel="stylesheet" href="/less/Components/AIAgent.min.css" />
668    
669    
670        <style>
671    html, body{background:url(https://5starassets.blob.core.windows.net/athleticsites/2579830/1162/images/1655c56d-8eb8-493a-81e6-2a0b9611c49f.png) no-repeat fixed;background-size: cover;overflow-x: hidden;}
672    h1,h2,h3,h4,h5,h6{color: #c2b380}
673    hr {border: 0;height: 2px; background-image: linear-gradient(to right, #ccc, #c2b380, #ccc);}
674    .border-bottom-primary-thick{border-bottom: 4px solid #c2b380;}
675    .border-all-thin-primary{border: solid 1px #c2b380;}
676    .bg-primary{background-color: #c2b380;}
677    .text-primary{color: #c2b380 !important;}
678    .text-primary-font{color: #ffffff !important;}
679    .bg-gradient-primary{background-image: linear-gradient(180deg,#fff,#c2b380);}
680    .bg-gradient-primary-angle{border-color: transparent #c2b380;} 
681    .bg-gradient-primary-dark{background-image: linear-gradient(180deg,#000,#c2b380);}
682    .slick-next:before, .slick-prev:before{color: #c2b380;}
683    .navbar-inverse .navbar-nav > li > a:hover {color: #252021!important; }
684    @media (max-width: 991px) {
685        .gen-navigation .collapse.in {background-color:#c2b380;}
686        .gen-navigation nav .menu-drop ul a {color:#ffffff !important;}
687    }
688    .ticker-19-badge-today, .ticker-19-badge-upcoming, .ticker-19-badge-final { background-color: #c2b380; }
689    .ticker-19-calendar-link { background-color: #c2b380; 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; }
690    .ticker-19-calendar-link:hover { filter: brightness(1.15); }
691    .ticker-19-calendar-link i { font-size: 1.3rem !important; }
692    .ticker-19-calendar-link span { color: #fff !important; font-size: 0.7rem !important; font-weight: 700 !important; letter-spacing: 1px !important; }
693</style>
694    
695
696    
697    
698    
699</head>
700<body viewport="fixed" id="top">
701    <a href="#main-content" class="skip-link">Skip to main content</a>
702    
703        <div class="ticker-19-section" aria-label="Game Schedule">
704        <div class="ticker-19-bar">
705            <!-- Composite calendar link — LEFT side like OU -->
706                <a href="/calendar" class="ticker-19-calendar-link" aria-label="View full schedule">
707                    <i class="fa fa-calendar" aria-hidden="true"></i>
708                    <span>Composite</span>
709                </a>
710
711            <!-- Tabs -->
712            <div class="ticker-19-tabs" role="tablist">
713                <button class="ticker-19-tab active" id="ticker19-ev-btn" role="tab" aria-controls="ticker19-events" aria-selected="true" tabindex="0">Events</button>
714                <button class="ticker-19-tab" id="ticker19-res-btn" role="tab" aria-controls="ticker19-results" aria-selected="false" tabindex="0">Results</button>
715            </div>
716
717            <!-- Events Panel -->
718            <div class="ticker-19-panel active" id="ticker19-events" role="tabpanel" aria-labelledby="ticker19-ev-btn">
719                <div class="ticker-19-scroll-container">
720                    <button class="ticker-19-arrow ticker-19-arrow-left" aria-label="Previous games"><i class="fa fa-chevron-left" aria-hidden="true"></i></button>
721                    <div class="ticker-19-track events-slider-19">
722                            <div class="ticker-19-empty">No upcoming events <a href="/calendar">View calendar</a></div>
723                    </div>
724                    <button class="ticker-19-arrow ticker-19-arrow-right" aria-label="Next games"><i class="fa fa-chevron-right" aria-hidden="true"></i></button>
725                </div>
726            </div>
727
728            <!-- Results Panel -->
729            <div class="ticker-19-panel" id="ticker19-results" role="tabpanel" aria-labelledby="ticker19-res-btn" hidden>
730                <div class="ticker-19-scroll-container">
731                    <button class="ticker-19-arrow ticker-19-arrow-left" aria-label="Previous results"><i class="fa fa-chevron-left" aria-hidden="true"></i></button>
732                    <div class="ticker-19-track results-slider-19">
733                                <div class="ticker-19-card" tabindex="0" role="button" aria-expanded="false" aria-label="Volleyball result — L 0 - 3">
734                                    <div class="ticker-19-card-top">
735                                        <span class="ticker-19-date"><span class="ticker-19-badge ticker-19-badge-final" style="background-color:#c2b380;">Oct. 7</span> &middot; <span class="ticker-19-final-label">Final</span></span>
736                                    </div>
737                                    <div class="ticker-19-sport">Volleyball - Varsity</div>
738                                    <div class="ticker-19-opponent">
739                                            <img src="https://5starassets.blob.core.windows.net/mascots/generics/5.png" class="ticker-19-opp-logo" alt="Woodmont" loading="lazy" />
740                                        <span class="ticker-19-opp-name">vs Woodmont</span>
741                                        <span class="ticker-19-result-score">L 0 - 3</span>
742                                    </div>
743                                </div>
744                                <div class="ticker-19-card" tabindex="0" role="button" aria-expanded="false" aria-label="Golf result — W 159 - 179">
745                                    <div class="ticker-19-card-top">
746                                        <span class="ticker-19-date"><span class="ticker-19-badge ticker-19-badge-final" style="background-color:#c2b380;">Oct. 7</span> &middot; <span class="ticker-19-final-label">Final</span></span>
747                                    </div>
748                                    <div class="ticker-19-sport">Golf - Varsity</div>
749                                    <div class="ticker-19-opponent">
750                                            <img src="https://5starassets.blob.core.windows.net/mascots/generics/10.png" class="ticker-19-opp-logo" alt="Greenwood, Greenville" loading="lazy" />
751                                        <span class="ticker-19-opp-name">vs Greenwood, Greenville</span>
752                                        <span class="ticker-19-result-score">W 159 - 179</span>
753                                    </div>
754                                </div>
755                                <div class="ticker-19-card" tabindex="0" role="button" aria-expanded="false" aria-label="Volleyball result — W 3 - 0">
756                                    <div class="ticker-19-card-top">
757                                        <span class="ticker-19-date"><span class="ticker-19-badge ticker-19-badge-final" style="background-color:#c2b380;">Oct. 6</span> &middot; <span class="ticker-19-final-label">Final</span></span>
758                                    </div>
759                                    <div class="ticker-19-sport">Volleyball - Varsity</div>
760                                    <div class="ticker-19-opponent">
761                                            <img src="https://5starassets.blob.core.windows.net/mascots/generics/5.png" class="ticker-19-opp-logo" alt="Greenwood" loading="lazy" />
762                                        <span class="ticker-19-opp-name">vs Greenwood</span>
763                                        <span class="ticker-19-result-score">W 3 - 0</span>
764                                    </div>
765                                </div>
766                                <div class="ticker-19-card" tabindex="0" role="button" aria-expanded="false" aria-label="Volleyball result — W 3 - 0">
767                                    <div class="ticker-19-card-top">
768                                        <span class="ticker-19-date"><span class="ticker-19-badge ticker-19-badge-final" style="background-color:#c2b380;">Oct. 6</span> &middot; <span class="ticker-19-final-label">Final</span></span>
769                                    </div>
770                                    <div class="ticker-19-sport">Volleyball - Varsity</div>
771                                    <div class="ticker-19-opponent">
772                                            <img src="https://5starassets.blob.core.windows.net/mascots/generics/5.png" class="ticker-19-opp-logo" alt="Greenwood" loading="lazy" />
773                                        <span class="ticker-19-opp-name">vs Greenwood</span>
774                                        <span class="ticker-19-result-score">W 3 - 0</span>
775                                    </div>
776                                </div>
777                                <div class="ticker-19-card" tabindex="0" role="button" aria-expanded="false" aria-label="Golf result — W 1st Place">
778                                    <div class="ticker-19-card-top">
779                                        <span class="ticker-19-date"><span class="ticker-19-badge ticker-19-badge-final" style="background-color:#c2b380;">Oct. 6</span> &middot; <span class="ticker-19-final-label">Final</span></span>
780                                    </div>
781                                    <div class="ticker-19-sport">Golf - Varsity</div>
782                                    <div class="ticker-19-opponent">
783                                            <img src="https://5starassets.blob.core.windows.net/mascots/generics/10.png" class="ticker-19-opp-logo" alt="Lady Patriot Invitational" loading="lazy" />
784                                        <span class="ticker-19-opp-name">vs Lady Patriot Invitational</span>
785                                        <span class="ticker-19-result-score">W 1st Place</span>
786                                    </div>
787                                </div>
788                    </div>
789                    <button class="ticker-19-arrow ticker-19-arrow-right" aria-label="Next results"><i class="fa fa-chevron-right" aria-hidden="true"></i></button>
790                </div>
791            </div>
792        </div>
793    </div>
794    
794<script>
795        (function loadTicker() {
796            if (typeof jQuery !== 'undefined') {
797                var s = document.createElement('script');
798                s.src = '/js/UpcomingEventsStyle19.js';
799                document.body.appendChild(s);
800            } else {
801                setTimeout(loadTicker, 50);
802            }
803        })();
804    </script>
804
805
806<!-- Mobile: collapsible mini schedule (future events only) -->
807    <div class="mobile-mini-sched" id="mobileMinSched" aria-label="Upcoming events" hidden>
808            <div class="mms-filter">
809                <select id="mmsSportFilter" class="mms-sport-select" aria-label="Filter by sport">
810                    <option value="">All Sports</option>
811                        <option value="Adaptive PE">Adaptive PE</option>
812                        <option value="Baseball">Baseball</option>
813                        <option value="Basketball">Basketball</option>
814                        <option value="Bass Fishing">Bass Fishing</option>
815                        <option value="Competitive Cheer">Competitive Cheer</option>
816                        <option value="Cross Country">Cross Country</option>
817                        <option value="Flag Football">Flag Football</option>
818                        <option value="Football">Football</option>
819                        <option value="Golf">Golf</option>
820                        <option value="Lacrosse">Lacrosse</option>
821                        <option value="Soccer">Soccer</option>
822                        <option value="Softball">Softball</option>
823                        <option value="Swimming">Swimming</option>
824                        <option value="Tennis">Tennis</option>
825                        <option value="Track and Field">Track and Field</option>
826                        <option value="Volleyball">Volleyball</option>
827                        <option value="Wrestling">Wrestling</option>
828                </select>
829            </div>
830        <div class="mms-events" id="mmsEvents" aria-live="polite">
831        </div>
832        <a href="/calendar" class="mms-full-link"><i class="fa fa-calendar" aria-hidden="true"></i> Full Schedule</a>
833    </div>
834
835<style>
836    /* Game footnote (Homecoming, Senior Night, ...) under the matchup */
837    .ticker-19-footnote {
838        font-size: 0.7rem;
839        font-style: italic;
840        font-weight: 600;
841        color: #444;
842        text-align: center;
843        white-space: nowrap;
844        overflow: hidden;
845        text-overflow: ellipsis;
846        max-width: 190px;
847        margin: 1px auto 0;
848    }
849
850    /* Auto-scroll card text that overflows its max-width (JS flags with .t19-marq) */
851    .ticker-19-sport.t19-marq, .ticker-19-opp-name.t19-marq { text-overflow: clip; }
852    .t19-marq .t19-marq-inner {
853        display: inline-block;
854        white-space: nowrap;
855        animation: t19-marq-slide var(--t19-marq-dur, 6s) ease-in-out infinite alternate;
856    }
857    .ticker-19-card:hover .t19-marq .t19-marq-inner,
858    .ticker-19-card:focus-within .t19-marq .t19-marq-inner { animation-play-state: paused; }
859    @keyframes t19-marq-slide {
860        0%, 20% { transform: translateX(0); }
861        80%, 100% { transform: translateX(var(--t19-marq-shift, 0px)); }
862    }
863    @media (prefers-reduced-motion: reduce) {
864        .ticker-19-sport.t19-marq, .ticker-19-opp-name.t19-marq { text-overflow: ellipsis; }
865        .t19-marq .t19-marq-inner { animation: none; }
866    }
867
868    .mobile-cal-bar { display: none; }
869    .mobile-mini-sched { display: none; }
870    @media (max-width: 991px) {
871        .ticker-19-section { display: none !important; }
872
873        /* Calendar bar: toggle + full schedule link */
874        .mobile-cal-bar {
875            display: flex !important;
876            align-items: center;
877            justify-content: center;
878            padding: 0;
879            margin: 0;
880        }
881        .mcb-toggle {
882            flex: 1;
883            display: flex;
884            align-items: center;
885            justify-content: center;
886            gap: 8px;
887            color: #fff;
888            background: transparent;
889            border: none;
890            font-size: 1.1rem;
891            font-weight: 700;
892            text-transform: uppercase;
893            letter-spacing: 0.4px;
894            padding: 8px 14px;
895            cursor: pointer;
896        }
897        .mcb-caret {
898            transition: transform 0.2s;
899            font-size: 0.95rem;
900        }
901        .mcb-toggle[aria-expanded="true"] .mcb-caret {
902            transform: rotate(180deg);
903        }
904        .mcb-full {
905            display: flex;
906            align-items: center;
907            justify-content: center;
908            padding: 8px 16px;
909            color: rgba(255,255,255,0.9);
910            text-decoration: none;
911            border-left: 1px solid rgba(255,255,255,0.15);
912            font-size: 1.05rem;
913        }
914        .mcb-full:hover { color: #fff; text-decoration: none; }
915
916        /* Mini schedule (collapsed by default) */
917        .mobile-mini-sched {
918            background: #fff;
919            border-bottom: 1px solid #e5e7eb;
920            overflow: hidden;
921            max-height: 0;
922            transition: max-height 0.3s ease;
923        }
924        .mobile-mini-sched.mms-open {
925            display: block;
926            max-height: 1200px;
927        }
928        .mms-event {
929            display: flex;
930            align-items: center;
931            gap: 14px;
932            padding: 14px 16px;
933            border-bottom: 1px solid #f0f0f0;
934        }
935        .mms-event:last-child { border-bottom: none; }
936        .mms-date {
937            display: flex;
938            flex-direction: column;
939            align-items: center;
940            min-width: 56px;
941            flex-shrink: 0;
942        }
943        .mms-month {
944            font-size: 1rem;
945            font-weight: 700;
946            text-transform: uppercase;
947            color: #444;
948            line-height: 1;
949        }
950        .mms-day {
951            font-size: 1.85rem;
952            font-weight: 800;
953            color: #000;
954            line-height: 1.2;
955        }
956        .mms-info {
957            flex: 1;
958            min-width: 0;
959        }
960        .mms-sport {
961            display: block;
962            font-size: 1.05rem;
963            font-weight: 700;
964            text-transform: uppercase;
965            color: #444;
966            letter-spacing: 0.3px;
967        }
968        .mms-matchup {
969            display: flex;
970            align-items: center;
971            gap: 8px;
972            font-size: 1.2rem;
973            font-weight: 700;
974            color: #000;
975            white-space: nowrap;
976            overflow: hidden;
977            text-overflow: ellipsis;
978        }
979        .mms-logo {
980            width: 32px;
981            height: 32px;
982            object-fit: contain;
983            border-radius: 50%;
984            flex-shrink: 0;
985        }
986        .mms-right {
987            flex-shrink: 0;
988            text-align: right;
989        }
990        .mms-time {
991            font-size: 1.15rem;
992            font-weight: 600;
993            color: #000;
994        }
995        .mms-filter {
996            padding: 12px 16px;
997            border-bottom: 1px solid #e5e7eb;
998        }
999        .mms-sport-select {
1000            width: 100%;
1001            padding: 12px 14px;
1002            font-size: 1.2rem;
1003            font-weight: 600;
1004            border: 1px solid #d1d5db;
1005            border-radius: 4px;
1006            background: #fff;
1007            color: #000;
1008            -webkit-appearance: menulist;
1009        }
1010        .mms-sport-select option {
1011            color: #000;
1012            background: #fff;
1013            font-size: 1.2rem;
1014        }
1015        .mms-full-link {
1016            display: flex;
1017            align-items: center;
1018            justify-content: center;
1019            gap: 10px;
1020            padding: 16px;
1021            font-size: 1.2rem;
1022            font-weight: 700;
1023            text-transform: uppercase;
1024            letter-spacing: 0.5px;
1025            color: #000;
1026            text-decoration: none;
1027            border-top: 1px solid #e5e7eb;
1028        }
1029        .mms-full-link:hover { color: #1a1a1a; text-decoration: none; }
1030    }
1031</style>
1032<script>
1033document.addEventListener('DOMContentLoaded', function () {
1034    var btn = document.getElementById('mcbToggle');
1035    var sched = document.getElementById('mobileMinSched');
1036    var calBar = document.querySelector('.mobile-cal-bar');
1037    if (!btn || !sched || !calBar) return;
1038
1039    // Move the schedule right after the calendar bar so it expands downward
1040    calBar.parentNode.insertBefore(sched, calBar.nextSibling);
1041
1042    // Toggle expand/collapse
1043    btn.addEventListener('click', function () {
1044        var open = sched.classList.toggle('mms-open');
1045        sched.hidden = !open;
1046        btn.setAttribute('aria-expanded', open ? 'true' : 'false');
1047    });
1048
1049    // Sport filter: fetch filtered events from server
1050    var filter = document.getElementById('mmsSportFilter');
1051    var eventsContainer = document.getElementById('mmsEvents');
1052    if (filter && eventsContainer) {
1053        filter.addEventListener('change', function () {
1054            var sport = this.value;
1055            eventsContainer.style.opacity = '0.5';
1056            fetch('/api/mobile-events?sport=' + encodeURIComponent(sport))
1057                .then(function (r) { return r.json(); })
1058                .then(function (events) {
1059                    var html = '';
1060                    events.forEach(function (g) {
1061                        html += '<div class="mms-event" data-sport="' + (g.sport || '') + '">'
1062                            + '<div class="mms-date"><span class="mms-month">' + g.month + '</span><span class="mms-day">' + g.day + '</span></div>'
1063                            + '<div class="mms-info"><span class="mms-sport">' + g.sportLabel + '</span>'
1064                            + '<span class="mms-matchup">'
1065                            + (g.opponentLogo ? '<img src="' + g.opponentLogo + '" class="mms-logo" alt="" loading="lazy" />' : '')
1066                            + g.matchup + '</span></div>'
1067                            + '<div class="mms-right"><span class="mms-time">' + g.time + '</span></div></div>';
1068                    });
1069                    eventsContainer.innerHTML = html || '<div style="padding:18px;text-align:center;color:#555;font-size:1rem;font-weight:500;">No upcoming events</div>';
1070                    eventsContainer.style.opacity = '1';
1071                })
1072                .catch(function () { eventsContainer.style.opacity = '1'; });
1073        });
1074    }
1075});
1076</script>
1076
1077
1078    
1079    <input type="hidden" value="2579830" id="schoolId" />
1080    <input type="hidden" value="true" id="customAppSchool" />
1081    <input type="hidden" value="6/23/2025 12:00:00 AM" id="adServingDateBegins" />
1082    <div class="row">
1083        <div class="col-md-12">
1084            
1085                <div class="gen-navigation">
1086    <nav class="navbar navbar-inverse navbar-fixed-top border-bottom-primary-thick" role="navigation" data-sponsor-model="false">
1087        <div class="all-toppers">
1088                  
1089
1090
1091            <div class="row">
1092                <div class="col-lg-2 col-md-2 hidden-sm hidden-xs">
1093                    <div class="upper-side">
1094                        <a href="/" id="ps">
1095                            <img src="https://5starassets.blob.core.windows.net/athleticsites/2579830/1162/images/b74d8d02-6247-4c85-8d67-e7253bd009d6.png" class="img-responsive" aria-label="T.L. Hanna Logo" alt="T.L. Hanna Logo" />
1096                        </a>
1097                    </div>
1098                </div>
1099                <div class="col-lg-7 col-md-8 col-sm-12">
1100                    <div id="nav-container">
1101                        <div class="navbar-header">
1102                            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#mobile-toggle-button">
1103                                <span class="sr-only">Toggle navigation</span>
1104                                <span class="icon-bar"></span>
1105                                <span class="icon-bar"></span>
1106                                <span class="icon-bar"></span>
1107                            </button>
1108                            <div class="brand-wrapper">
1109                                <a class="navbar-brand" href="/">
1110                                    <img src="https://5starassets.blob.core.windows.net/athleticsites/2579830/1162/images/b74d8d02-6247-4c85-8d67-e7253bd009d6.png" class="img-responsive tag" aria-label="T.L. Hanna Logo" alt="T.L. Hanna Logo" />
1111                                </a>
1112                                <div class="presenting-sponsor hidden-md hidden-lg">
1113                                    <div class="adzone adzone-0 presenting-sponsor">
1114                                            <div class="ad-placement">
1115    <div id='gam-presenting-sponsor-mobile' class="gam_ps"></div>
1116    </div>
1117
1118                                    </div>
1119                                </div>
1120                            </div>
1121                        </div>
1122                        <div id="mobile-toggle-button" class="navbar-collapse collapse">
1123                            <ul class="nav navbar-nav" id="nav-links">
1124                                <li id="home"><a class="text-primary-font" href="/">HOME</a></li>
1125                                        <li class="dropdown">
1126                                            <a href="#" class="dropdown-toggle text-primary-font" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span>SPORTS</span> <span class="caret"></span></a>
1127                                            <ul class="dropdown-menu" id="sport-drop">
1128                                                <li>
1129                                                    <div class="menu-drop">
1130                                                            <ul>
1131                                                                    <li>
1132                                                                        <div class="row">
1133                                                                            <div class="sport-link col-lg-6 col-md-6 col-sm-6 col-xs-6">
1134                                                                                <a class="text-primary" href="/sport/adaptive pe/coed/">ADAPTIVE PE</a>
1135                                                                            </div>
1136                                                                            <div class="sport-nfo col-lg-6 col-md-6 col-sm-6 col-xs-6">
1137                                                                                <a class="text-primary" href="/sport/adaptive pe/coed/?tab=schedule" role="menuitem" aria-label="Adaptive PE - Schedules">schedules</a><span> /</span>
1138                                                                                <a class="text-primary" href="/sport/adaptive pe/coed/?tab=roster" role="menuitem" aria-label="Adaptive PE - Rosters">rosters</a><span> /</span>
1139                                                                                <a class="text-primary" href="/sport/adaptive pe/coed/?tab=news" role="menuitem" aria-label="Adaptive PE - News">news</a>
1140                                                                            </div>
1141                                                                        </div>
1142                                                                    </li>
1143                                                                    <li>
1144                                                                        <div class="row">
1145                                                                            <div class="sport-link col-lg-6 col-md-6 col-sm-6 col-xs-6">
1146                                                                                <a class="text-primary" href="/sport/baseball/boys/">BASEBALL</a>
1147                                                                            </div>
1148                                                                            <div class="sport-nfo col-lg-6 col-md-6 col-sm-6 col-xs-6">
1149                                                                                <a class="text-primary" href="/sport/baseball/boys/?tab=schedule" role="menuitem" aria-label="Baseball - Schedules">schedules</a><span> /</span>
1150                                                                                <a class="text-primary" href="/sport/baseball/boys/?tab=roster" role="menuitem" aria-label="Baseball - Rosters">rosters</a><span> /</span>
1151                                                                                <a class="text-primary" href="/sport/baseball/boys/?tab=news" role="menuitem" aria-label="Baseball - News">news</a>
1152                                                                            </div>
1153                                                                        </div>
1154                                                                    </li>
1155                                                                    <li>
1156                                                                        <div class="row">
1157                                                                            <div class="sport-link col-lg-6 col-md-6 col-sm-6 col-xs-6">
1158                                                                                <a class="text-primary" href="/sport/baseball/boys/">BASEBALL(BOYS)</a>
1159                                                                            </div>
1160                                                                            <div class="sport-nfo col-lg-6 col-md-6 col-sm-6 col-xs-6">
1161                                                                                <a class="text-primary" href="/sport/baseball/boys/?tab=schedule" role="menuitem" aria-label="Baseball(Boys) - Schedules">schedules</a><span> /</span>
1162                                                                                <a class="text-primary" href="/sport/baseball/boys/?tab=roster" role="menuitem" aria-label="Baseball(Boys) - Rosters">rosters</a><span> /</span>
1163                                                                                <a class="text-primary" href="/sport/baseball/boys/?tab=news" role="menuitem" aria-label="Baseball(Boys) - News">news</a>
1164                                                                            </div>
1165                                                                        </div>
1166                                                                    </li>
1167                                                                    <li>
1168                                                                        <div class="row">
1169                                                                            <div class="sport-link col-lg-6 col-md-6 col-sm-6 col-xs-6">
1170                                                                                <a class="text-primary" href="/sport/basketball/boys/">BASKETBALL(BOYS)</a>
1171                                                                            </div>
1172                                                                            <div class="sport-nfo col-lg-6 col-md-6 col-sm-6 col-xs-6">
1173                                                                                <a class="text-primary" href="/sport/basketball/boys/?tab=schedule" role="menuitem" aria-label="Basketball(Boys) - Schedules">schedules</a><span> /</span>
1174                                                                                <a class="text-primary" href="/sport/basketball/boys/?tab=roster" role="menuitem" aria-label="Basketball(Boys) - Rosters">rosters</a><span> /</span>
1175                                                                                <a class="text-primary" href="/sport/basketball/boys/?tab=news" role="menuitem" aria-label="Basketball(Boys) - News">news</a>
1176                                                                            </div>
1177                                                                        </div>
1178                                                                    </li>
1179                                                                    <li>
1180                                                                        <div class="row">
1181                                                                            <div class="sport-link col-lg-6 col-md-6 col-sm-6 col-xs-6">
1182                                                                                <a class="text-primary" href="/sport/basketball/girls/">BASKETBALL(GIRLS)</a>
1183                                                                            </div>
1184                                                                            <div class="sport-nfo col-lg-6 col-md-6 col-sm-6 col-xs-6">
1185                                                                                <a class="text-primary" href="/sport/basketball/girls/?tab=schedule" role="menuitem" aria-label="Basketball(Girls) - Schedules">schedules</a><span> /</span>
1186                                                                                <a class="text-primary" href="/sport/basketball/girls/?tab=roster" role="menuitem" aria-label="Basketball(Girls) - Rosters">rosters</a><span> /</span>
1187                                                                                <a class="text-primary" href="/sport/basketball/girls/?tab=news" role="menuitem" aria-label="Basketball(Girls) - News">news</a>
1188                                                                            </div>
1189                                                                        </div>
1190                                                                    </li>
1191                                                                    <li>
1192                                                                        <div class="row">
1193                                                                            <div class="sport-link col-lg-6 col-md-6 col-sm-6 col-xs-6">
1194                                                                                <a class="text-primary" href="/sport/bass fishing/coed/">BASS FISHING</a>
1195                                                                            </div>
1196                                                                            <div class="sport-nfo col-lg-6 col-md-6 col-sm-6 col-xs-6">
1197                                                                                <a class="text-primary" href="/sport/bass fishing/coed/?tab=schedule" role="menuitem" aria-label="Bass Fishing - Schedules">schedules</a><span> /</span>
1198                                                                                <a class="text-primary" href="/sport/bass fishing/coed/?tab=roster" role="menuitem" aria-label="Bass Fishing - Rosters">rosters</a><span> /</span>
1199                                                                                <a class="text-primary" href="/sport/bass fishing/coed/?tab=news" role="menuitem" aria-label="Bass Fishing - News">news</a>
1200                                                                            </div>
1201                                                                        </div>
1202                                                                    </li>
1203                                                                    <li>
1204                                                                        <div class="row">
1205                                                                            <div class="sport-link col-lg-6 col-md-6 col-sm-6 col-xs-6">
1206                                                                                <a class="text-primary" href="/sport/competitive cheer/coed/">COMPETITIVE CHEER</a>
1207                                                                            </div>
1208                                                                            <div class="sport-nfo col-lg-6 col-md-6 col-sm-6 col-xs-6">
1209                                                                                <a class="text-primary" href="/sport/competitive cheer/coed/?tab=schedule" role="menuitem" aria-label="Competitive Cheer - Schedules">schedules</a><span> /</span>
1210                                                                                <a class="text-primary" href="/sport/competitive cheer/coed/?tab=roster" role="menuitem" aria-label="Competitive Cheer - Rosters">rosters</a><span> /</span>
1211                                                                                <a class="text-primary" href="/sport/competitive cheer/coed/?tab=news" role="menuitem" aria-label="Competitive Cheer - News">news</a>
1212                                                                            </div>
1213                                                                        </div>
1214                                                                    </li>
1215                                                                    <li>
1216                                                                        <div class="row">
1217                                                                            <div class="sport-link col-lg-6 col-md-6 col-sm-6 col-xs-6">
1218                                                                                <a class="text-primary" href="/sport/cross country/coed/">CROSS COUNTRY(COED)</a>
1219                                                                            </div>
1220                                                                            <div class="sport-nfo col-lg-6 col-md-6 col-sm-6 col-xs-6">
1221                                                                                <a class="text-primary" href="/sport/cross country/coed/?tab=schedule" role="menuitem" aria-label="Cross Country(Coed) - Schedules">schedules</a><span> /</span>
1222                                                                                <a class="text-primary" href="/sport/cross country/coed/?tab=roster" role="menuitem" aria-label="Cross Country(Coed) - Rosters">rosters</a><span> /</span>
1223                                                                                <a class="text-primary" href="/sport/cross country/coed/?tab=news" role="menuitem" aria-label="Cross Country(Coed) - News">news</a>
1224                                                                            </div>
1225                                                                        </div>
1226                                                                    </li>
1227                                                                    <li>
1228                                                                        <div class="row">
1229                                                                            <div class="sport-link col-lg-6 col-md-6 col-sm-
12296 col-xs-6">
1230                                                                                <a class="text-primary" href="/sport/flag football/girls/">FLAG FOOTBALL(GIRLS)</a>
1231                                                                            </div>
1232                                                                            <div class="sport-nfo col-lg-6 col-md-6 col-sm-6 col-xs-6">
1233                                                                                <a class="text-primary" href="/sport/flag football/girls/?tab=schedule" role="menuitem" aria-label="Flag Football(Girls) - Schedules">schedules</a><span> /</span>
1234                                                                                <a class="text-primary" href="/sport/flag football/girls/?tab=roster" role="menuitem" aria-label="Flag Football(Girls) - Rosters">rosters</a><span> /</span>
1235                                                                                <a class="text-primary" href="/sport/flag football/girls/?tab=news" role="menuitem" aria-label="Flag Football(Girls) - News">news</a>
1236                                                                            </div>
1237                                                                        </div>
1238                                                                    </li>
1239                                                                    <li>
1240                                                                        <div class="row">
1241                                                                            <div class="sport-link col-lg-6 col-md-6 col-sm-6 col-xs-6">
1242                                                                                <a class="text-primary" href="/sport/football/boys/">FOOTBALL</a>
1243                                                                            </div>
1244                                                                            <div class="sport-nfo col-lg-6 col-md-6 col-sm-6 col-xs-6">
1245                                                                                <a class="text-primary" href="/sport/football/boys/?tab=schedule" role="menuitem" aria-label="Football - Schedules">schedules</a><span> /</span>
1246                                                                                <a class="text-primary" href="/sport/football/boys/?tab=roster" role="menuitem" aria-label="Football - Rosters">rosters</a><span> /</span>
1247                                                                                <a class="text-primary" href="/sport/football/boys/?tab=news" role="menuitem" aria-label="Football - News">news</a>
1248                                                                            </div>
1249                                                                        </div>
1250                                                                    </li>
1251                                                                    <li>
1252                                                                        <div class="row">
1253                                                                            <div class="sport-link col-lg-6 col-md-6 col-sm-6 col-xs-6">
1254                                                                                <a class="text-primary" href="/sport/golf/boys/">GOLF(BOYS)</a>
1255                                                                            </div>
1256                                                                            <div class="sport-nfo col-lg-6 col-md-6 col-sm-6 col-xs-6">
1257                                                                                <a class="text-primary" href="/sport/golf/boys/?tab=schedule" role="menuitem" aria-label="Golf(Boys) - Schedules">schedules</a><span> /</span>
1258                                                                                <a class="text-primary" href="/sport/golf/boys/?tab=roster" role="menuitem" aria-label="Golf(Boys) - Rosters">rosters</a><span> /</span>
1259                                                                                <a class="text-primary" href="/sport/golf/boys/?tab=news" role="menuitem" aria-label="Golf(Boys) - News">news</a>
1260                                                                            </div>
1261                                                                        </div>
1262                                                                    </li>
1263                                                                    <li>
1264                                                                        <div class="row">
1265                                                                            <div class="sport-link col-lg-6 col-md-6 col-sm-6 col-xs-6">
1266                                                                                <a class="text-primary" href="/sport/golf/girls/">GOLF(GIRLS)</a>
1267                                                                            </div>
1268                                                                            <div class="sport-nfo col-lg-6 col-md-6 col-sm-6 col-xs-6">
1269                                                                                <a class="text-primary" href="/sport/golf/girls/?tab=schedule" role="menuitem" aria-label="Golf(Girls) - Schedules">schedules</a><span> /</span>
1270                                                                                <a class="text-primary" href="/sport/golf/girls/?tab=roster" role="menuitem" aria-label="Golf(Girls) - Rosters">rosters</a><span> /</span>
1271                                                                                <a class="text-primary" href="/sport/golf/girls/?tab=news" role="menuitem" aria-label="Golf(Girls) - News">news</a>
1272                                                                            </div>
1273                                                                        </div>
1274                                                                    </li>
1275                                                                    <li>
1276                                                                        <div class="row">
1277                                                                            <div class="sport-link col-lg-6 col-md-6 col-sm-6 col-xs-6">
1278                                                                                <a class="text-primary" href="/sport/lacrosse/boys/">LACROSSE(BOYS)</a>
1279                                                                            </div>
1280                                                                            <div class="sport-nfo col-lg-6 col-md-6 col-sm-6 col-xs-6">
1281                                                                                <a class="text-primary" href="/sport/lacrosse/boys/?tab=schedule" role="menuitem" aria-label="Lacrosse(Boys) - Schedules">schedules</a><span> /</span>
1282                                                                                <a class="text-primary" href="/sport/lacrosse/boys/?tab=roster" role="menuitem" aria-label="Lacrosse(Boys) - Rosters">rosters</a><span> /</span>
1283                                                                                <a class="text-primary" href="/sport/lacrosse/boys/?tab=news" role="menuitem" aria-label="Lacrosse(Boys) - News">news</a>
1284                                                                            </div>
1285                                                                        </div>
1286                                                                    </li>
1287                                                                    <li>
1288                                                                        <div class="row">
1289                                                                            <div class="sport-link col-lg-6 col-md-6 col-sm-6 col-xs-6">
1290                                                                                <a class="text-primary" href="/sport/lacrosse/girls/">LACROSSE(GIRLS)</a>
1291                                                                            </div>
1292                                                                            <div class="sport-nfo col-lg-6 col-md-6 col-sm-6 col-xs-6">
1293                                                                                <a class="text-primary" href="/sport/lacrosse/girls/?tab=schedule" role="menuitem" aria-label="Lacrosse(Girls) - Schedules">schedules</a><span> /</span>
1294                                                                                <a class="text-primary" href="/sport/lacrosse/girls/?tab=roster" role="menuitem" aria-label="Lacrosse(Girls) - Rosters">rosters</a><span> /</span>
1295                                                                                <a class="text-primary" href="/sport/lacrosse/girls/?tab=news" role="menuitem" aria-label="Lacrosse(Girls) - News">news</a>
1296                                                                            </div>
1297                                                                        </div>
1298                                                                    </li>
1299                                                                    <li>
1300                                                                        <div class="row">
1301                                                                            <div class="sport-link col-lg-6 col-md-6 col-sm-6 col-xs-6">
1302                                                                                <a class="text-primary" href="/sport/soccer/boys/">SOCCER(BOYS)</a>
1303                                                                            </div>
1304                                                                            <div class="sport-nfo col-lg-6 col-md-6 col-sm-6 col-xs-6">
1305                                                                                <a class="text-primary" href="/sport/soccer/boys/?tab=schedule" role="menuitem" aria-label="Soccer(Boys) - Schedules">schedules</a><span> /</span>
1306                                                                                <a class="text-primary" href="/sport/soccer/boys/?tab=roster" role="menuitem" aria-label="Soccer(Boys) - Rosters">rosters</a><span> /</span>
1307                                                                                <a class="text-primary" href="/sport/soccer/boys/?tab=news" role="menuitem" aria-label="Soccer(Boys) - News">news</a>
1308                                                                            </div>
1309                                                                        </div>
1310                                                                    </li>
1311                                                                    <li>
1312                                                                        <div class="row">
1313                                                                            <div class="sport-link col-lg-6 col-md-6 col-sm-6 col-xs-6">
1314                                                                                <a class="text-primary" href="/sport/soccer/girls/">SOCCER(GIRLS)</a>
1315                                                                            </div>
1316                                                                            <div class="sport-nfo col-lg-6 col-md-6 col-sm-6 col-xs-6">
1317                                                                                <a class="text-primary" href="/sport/soccer/girls/?tab=schedule" role="menuitem" aria-label="Soccer(Girls) - Schedules">schedules</a><span> /</span>
1318                                                                                <a class="text-primary" href="/sport/soccer/girls/?tab=roster" role="menuitem" aria-label="Soccer(Girls) - Rosters">rosters</a><span> /</span>
1319                                                                                <a class="text-primary" href="/sport/soccer/girls/?tab=news" role="menuitem" aria-label="Soccer(Girls) - News">news</a>
1320                                                                            </div>
1321                                                                        </div>
1322                                                                    </li>
1323                                                                    <li>
1324                                                                        <div class="row">
1325                                                                            <div class="sport-link col-lg-6 col-md-6 col-sm-6 col-xs-6">
1326                                                                                <a class="text-primary" href="/sport/softball/girls/">SOFTBALL(GIRLS)</a>
1327                                                                            </div>
1328                                                                            <div class="sport-nfo col-lg-6 col-md-6 col-sm-6 col-xs-6">
1329                                                                                <a class="text-primary" href="/sport/softball/girls/?tab=schedule" role="menuitem" aria-label="Softball(Girls) - Schedules">schedules</a><span> /</span>
1330                                                                                <a class="text-primary" href="/sport/softball/girls/?tab=roster" role="menuitem" aria-label="Softball(Girls) - Rosters">rosters</a><span> /</span>
1331                                                                                <a class="text-primary" href="/sport/softball/girls/?tab=news" role="menuitem" aria-label="Softball(Girls) - News">news</a>
1332                                                                            </div>
1333                                                                        </div>
1334                                                                    </li>
1335                                                                    <li>
1336                                                                        <div class="row">
1337                                                                            <div class="sport-link col-lg-6 col-md-6 col-sm-6 col-xs-6">
1338                                                                                <a class="text-primary" href="/sport/swimming/coed/">SWIMMING</a>
1339                                                                            </div>
1340                                                                            <div class="sport-nfo col-lg-6 col-md-6 col-sm-6 col-xs-6">
1341                                                                                <a class="text-primary" href="/sport/swimming/coed/?tab=schedule" role="menuitem" aria-label="Swimming - Schedules">schedules</a><span> /</span>
1342                                                                                <a class="text-primary" href="/sport/swimming/coed/?tab=roster" role="menuitem" aria-label="Swimming - Rosters">rosters</a><span> /</span>
1343                                                                                <a class="text-primary" href="/sport/swimming/coed/?tab=news" role="menuitem" aria-label="Swimming - News">news</a>
1344                                                                            </div>
1345                                                                        </div>
1346                                                                    </li>
1347                                                                    <li>
1348                                                                        <div class="row">
1349                                                                            <div class="sport-link col-lg-6 col-md-6 col-sm-6 col-xs-6">
1350                                                                                <a class="text-primary" href="/sport/tennis/boys/">TENNIS(BOYS)</a>
1351                                                                            </div>
1352                                                                            <div class="sport-nfo col-lg-6 col-md-6 col-sm-6 col-xs-6">
1353                                                                                <a class="text-primary" href="/sport/tennis/boys/?tab=schedule" role="menuitem" aria-label="Tennis(Boys) - Schedules">schedules</a><span> /</span>
1354                                                                  
1354              <a class="text-primary" href="/sport/tennis/boys/?tab=roster" role="menuitem" aria-label="Tennis(Boys) - Rosters">rosters</a><span> /</span>
1355                                                                                <a class="text-primary" href="/sport/tennis/boys/?tab=news" role="menuitem" aria-label="Tennis(Boys) - News">news</a>
1356                                                                            </div>
1357                                                                        </div>
1358                                                                    </li>
1359                                                                    <li>
1360                                                                        <div class="row">
1361                                                                            <div class="sport-link col-lg-6 col-md-6 col-sm-6 col-xs-6">
1362                                                                                <a class="text-primary" href="/sport/tennis/girls/">TENNIS(GIRLS)</a>
1363                                                                            </div>
1364                                                                            <div class="sport-nfo col-lg-6 col-md-6 col-sm-6 col-xs-6">
1365                                                                                <a class="text-primary" href="/sport/tennis/girls/?tab=schedule" role="menuitem" aria-label="Tennis(Girls) - Schedules">schedules</a><span> /</span>
1366                                                                                <a class="text-primary" href="/sport/tennis/girls/?tab=roster" role="menuitem" aria-label="Tennis(Girls) - Rosters">rosters</a><span> /</span>
1367                                                                                <a class="text-primary" href="/sport/tennis/girls/?tab=news" role="menuitem" aria-label="Tennis(Girls) - News">news</a>
1368                                                                            </div>
1369                                                                        </div>
1370                                                                    </li>
1371                                                                    <li>
1372                                                                        <div class="row">
1373                                                                            <div class="sport-link col-lg-6 col-md-6 col-sm-6 col-xs-6">
1374                                                                                <a class="text-primary" href="/sport/track and field/coed/">TRACK AND FIELD</a>
1375                                                                            </div>
1376                                                                            <div class="sport-nfo col-lg-6 col-md-6 col-sm-6 col-xs-6">
1377                                                                                <a class="text-primary" href="/sport/track and field/coed/?tab=schedule" role="menuitem" aria-label="Track and Field - Schedules">schedules</a><span> /</span>
1378                                                                                <a class="text-primary" href="/sport/track and field/coed/?tab=roster" role="menuitem" aria-label="Track and Field - Rosters">rosters</a><span> /</span>
1379                                                                                <a class="text-primary" href="/sport/track and field/coed/?tab=news" role="menuitem" aria-label="Track and Field - News">news</a>
1380                                                                            </div>
1381                                                                        </div>
1382                                                                    </li>
1383                                                                    <li>
1384                                                                        <div class="row">
1385                                                                            <div class="sport-link col-lg-6 col-md-6 col-sm-6 col-xs-6">
1386                                                                                <a class="text-primary" href="/sport/volleyball/boys/">VOLLEYBALL(BOYS)</a>
1387                                                                            </div>
1388                                                                            <div class="sport-nfo col-lg-6 col-md-6 col-sm-6 col-xs-6">
1389                                                                                <a class="text-primary" href="/sport/volleyball/boys/?tab=schedule" role="menuitem" aria-label="Volleyball(Boys) - Schedules">schedules</a><span> /</span>
1390                                                                                <a class="text-primary" href="/sport/volleyball/boys/?tab=roster" role="menuitem" aria-label="Volleyball(Boys) - Rosters">rosters</a><span> /</span>
1391                                                                                <a class="text-primary" href="/sport/volleyball/boys/?tab=news" role="menuitem" aria-label="Volleyball(Boys) - News">news</a>
1392                                                                            </div>
1393                                                                        </div>
1394                                                                    </li>
1395                                                                    <li>
1396                                                                        <div class="row">
1397                                                                            <div class="sport-link col-lg-6 col-md-6 col-sm-6 col-xs-6">
1398                                                                                <a class="text-primary" href="/sport/volleyball/girls/">VOLLEYBALL(GIRLS)</a>
1399                                                                            </div>
1400                                                                            <div class="sport-nfo col-lg-6 col-md-6 col-sm-6 col-xs-6">
1401                                                                                <a class="text-primary" href="/sport/volleyball/girls/?tab=schedule" role="menuitem" aria-label="Volleyball(Girls) - Schedules">schedules</a><span> /</span>
1402                                                                                <a class="text-primary" href="/sport/volleyball/girls/?tab=roster" role="menuitem" aria-label="Volleyball(Girls) - Rosters">rosters</a><span> /</span>
1403                                                                                <a class="text-primary" href="/sport/volleyball/girls/?tab=news" role="menuitem" aria-label="Volleyball(Girls) - News">news</a>
1404                                                                            </div>
1405                                                                        </div>
1406                                                                    </li>
1407                                                                    <li>
1408                                                                        <div class="row">
1409                                                                            <div class="sport-link col-lg-6 col-md-6 col-sm-6 col-xs-6">
1410                                                                                <a class="text-primary" href="/sport/wrestling/boys/">WRESTLING(BOYS)</a>
1411                                                                            </div>
1412                                                                            <div class="sport-nfo col-lg-6 col-md-6 col-sm-6 col-xs-6">
1413                                                                                <a class="text-primary" href="/sport/wrestling/boys/?tab=schedule" role="menuitem" aria-label="Wrestling(Boys) - Schedules">schedules</a><span> /</span>
1414                                                                                <a class="text-primary" href="/sport/wrestling/boys/?tab=roster" role="menuitem" aria-label="Wrestling(Boys) - Rosters">rosters</a><span> /</span>
1415                                                                                <a class="text-primary" href="/sport/wrestling/boys/?tab=news" role="menuitem" aria-label="Wrestling(Boys) - News">news</a>
1416                                                                            </div>
1417                                                                        </div>
1418                                                                    </li>
1419                                                            </ul>
1420                                                    </div>
1421                                                </li>
1422                                            </ul>
1423                                        </li>
1424                                        <li>
1425                                                <a class="text-primary-font" href="https://wofproduction.blob.core.windows.net/embed/dfd3d68e178f4c28ae06e3dd6bc1eeea/walloffame.html" target="_blank" aria-label="go to link to HOF/Records">HOF/Records</a>
1426                                        </li>
1427                                        <li>
1428                                                <a class="text-primary-font" href="/HTtickets">TICKETS</a>
1429                                        </li>
1430                                        <li>
1431                                                <a class="text-primary-font" href="/broadcasts">BROADCASTS</a>
1432                                        </li>
1433                                        <li>
1434                                                <a class="text-primary-font" href="/news">NEWS</a>
1435                                        </li>
1436                                        <li class="dropdown" role="presentation">
1437                                            <a href="#" class="dropdown-toggle text-primary-font" data-toggle="dropdown" role="menuitem" aria-haspopup="true" aria-expanded="false">
1438                                                Game Day
1439                                            </a>
1440                                            <ul class="dropdown-menu" role="menu">
1441                                                    <li>
1442                                                            <a class="text-primary" href="https://view.gogipper.com/page/3116341" target="_blank">
1442Football Gameday Guide</a>
1443                                                    </li>
1444                                                    <li>
1445                                                            <a class="text-primary" href="https://view.gogipper.com/page/3116291" target="_blank">Fall Sports Gameday Guide</a>
1446                                                    </li>
1447                                                    <li>
1448                                                            <a class="text-primary" href="https://view.gogipper.com/page/3194454" target="_blank">Basketball/Wrestling Gameday Guide</a>
1449                                                    </li>
1450                                                    <li>
1451                                                            <a class="text-primary" href="https://view.gogipper.com/page/2793876" target="_blank">Spring Sports Gameday Guide</a>
1452                                                    </li>
1453                                                    <li>
1454                                                            <a class="text-primary" href="https://view.gogipper.com/page/3951976" target="_blank">MEDIA GUIDE</a>
1455                                                    </li>
1456                                            </ul>
1457                                        </li>
1458
1459                                <li id="more" class="hidden" role="presentation">
1460                                    <a class="dropdown-toggle text-primary-font" data-toggle="dropdown" aria-haspopup="true" href="#" role="menuitem" aria-expanded="false">
1461                                        More <span class="caret"></span>
1462                                    </a>
1463                                    <ul class="dropdown-menu dropdown-menu-right"></ul>
1464                                </li>
1465                            </ul>
1466                        </div>
1467                        <!--/.nav-collapse -->
1468                    </div>
1469                </div>
1470                <div class="col-lg-2 col-md-2 hidden-sm hidden-xs">
1471                    <div class="upper-side">
1472                        <div class="feed-wrapper">
1473            <a href="https://www.facebook.com/HailTLHanna" target="_blank" rel="noopener" aria-label="Visit our Facebook page">
1474                <i class="fa fa-facebook text-primary-font" aria-hidden="true"></i>
1475                <span class="sr-only">Facebook</span>
1476            </a>
1477            <a href="https://www.instagram.com/tlhanna_sports/?hl=en" target="_blank" rel="noopener" aria-label="Visit our Instagram page">
1478                <i class="fa fa-instagram text-primary-font" aria-hidden="true"></i>
1479                <span class="sr-only">Instagram</span>
1480            </a>
1481            <a href="https://twitter.com/TLH_Updates" target="_blank" rel="noopener" aria-label="Visit our X page">
1482                <i class="fa fa-twitter text-primary-font" aria-hidden="true"></i>
1483                <span class="sr-only">X</span>
1484            </a>
1485</div>
1486
1487                            <div class="app-icon-dl">
1488                                <a href="https://apps.apple.com/us/app/t-l-hanna-athletics/id6748661360"><img aria-label="T.L. Hanna App Icon" alt="T.L. Hanna App Icon" src="https://5starassets.blob.core.windows.net/athleticsites/2579830/1162/images/2f03d3d2-4d9a-4c8c-bd7f-0d75a3344e9f.png" class="img-responsive app-icon" /></a>
1489                            </div>
1490                            <div class="presenting-sponsor hidden-sm hidden-xs">
1491                                <div class="adzone adzone-0 presenting-sponsor">
1492                                        <div class="ad-placement">
1493    <div id='gam-presenting-sponsor-2' class="gam-presenting-sponsor-2"></div>
1494    </div>
1495
1496                                </div>
1497                            </div>
1498                    </div>
1499                </div>
1500            </div>
1501            
1502        </div>
1503        <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>
1504    </nav>
1505</div>
1506
1507            
1508        </div>
1509        <div class="clearfix"></div>
1510    </div>
1511    <div class="banner-ad-container-sticky-footer">
1512        <div class="banner-ad">
1513            <div class="banner">
1514    <div class="row">
1515        <div class="col-md-12 col-sm-12">            
1516            <div class="ad-placement">
1517                <div id='gam-banner-ad' class="gam-banner-ad">
1518                    
1518<script>
1519                        googletag.cmd.push(function () { googletag.display('gam-banner-ad'); });
1520                    </script>
1520
1521                </div>
1522            </div>
1523        </div>
1524    </div>
1525</div>
1526
1527        </div>
1528    </div>
1529    
1530
1531<link rel="stylesheet" href="/less/Components/AppDownloadCta.min.css" />
1532
1533<div class="app-download-cta" id="appDownloadCta" role="region" aria-labelledby="appDownloadCtaTitle">
1534    <button type="button" class="app-download-cta__close" id="appDownloadCtaClose" aria-label="Close">×</button>
1535    <div class="app-download-cta__icon" aria-hidden="true">📱</div>
1536    <div class="app-download-cta__title" id="appDownloadCtaTitle">
1537        Stay connected with <em>T.L. Hanna</em> athletics
1538    </div>
1539    <div class="app-download-cta__body">
1540        Get scores, schedules, and live streaming notifications.
1541    </div>
1542    <div class="app-download-cta__buttons">
1543            <a href="https://apps.apple.com/us/app/t-l-hanna-athletics/id6748661360" target="_blank" rel="noopener" aria-label="Download on the App Store">
1544                <img src="/images/dl-apple.png" alt="Download on the App Store" />
1545            </a>
1546            <a href="https://play.google.com/store/apps/details?id=mm.sctlhanna" target="_blank" rel="noopener" aria-label="Get it on Google Play">
1547                <img src="/images/dl-google.png" alt="Get it on Google Play" />
1548            </a>
1549    </div>
1550    <button type="button" class="app-download-cta__dismiss" id="appDownloadCtaHaveIt">
1551        I already have it
1552    </button>
1553</div>
1554
1555<script>
1556    (function () {
1557        var el = document.getElementById('appDownloadCta');
1558        if (!el) return;
1559
1560        var SHOW_DELAY_MS = 5000;
1561        var AUTO_HIDE_MS = 15000;
1562        var FADE_MS = 300;
1563        var COOKIE_NAME = 'mm_app_cta_dismissed';
1564        var COOKIE_DAYS = 90;
1565
1566        if (window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
1567            FADE_MS = 0;
1568        }
1569
1570        function setCookie(name, value, days) {
1571            var d = new Date();
1572            d.setTime(d.getTime() + days * 24 * 60 * 60 * 1000);
1573            document.cookie = name + '=' + value + '; expires=' + d.toUTCString() + '; path=/; SameSite=Lax';
1574        }
1575
1576        function hide() {
1577            // if keyboard focus is inside the card, hand it off before removal so it is not lost
1578            if (el.contains(document.activeElement)) {
1579                var main = document.getElementById('main-content') || document.body;
1580                if (!main.hasAttribute('tabindex')) main.setAttribute('tabindex', '-1');
1581                main.focus({ preventScroll: true });
1582            }
1583            el.classList.remove('is-visible');
1584            setTimeout(function () {
1585                if (el.parentNode) el.parentNode.removeChild(el);
1586            }, FADE_MS);
1587        }
1588
1589        var autoHideTimer = null;
1590
1591        setTimeout(function () {
1592            requestAnimationFrame(function () { el.classList.add('is-visible'); });
1593            autoHideTimer = setTimeout(hide, AUTO_HIDE_MS);
1594        }, SHOW_DELAY_MS);
1595
1596        document.getElementById('appDownloadCtaClose').addEventListener('click', function () {
1597            if (autoHideTimer) clearTimeout(autoHideTimer);
1598            hide();
1599        });
1600
1601        document.getElementById('appDownloadCtaHaveIt').addEventListener('click', function () {
1602            if (autoHideTimer) clearTimeout(autoHideTimer);
1603            setCookie(COOKIE_NAME, '1', COOKIE_DAYS);
1604            hide();
1605        });
1606
1607        // auto-hide pauses while the user is engaging (mouse over or keyboard focus inside)
1608        // and resumes with a fresh countdown when they leave (WCAG 2.2.1)
1609        function pauseAutoHide() {
1610            if (autoHideTimer) { clearTimeout(autoHideTimer); autoHideTimer = null; }
1611        }
1612
1613        function resumeAutoHideIfIdle() {
1614            setTimeout(function () {
1615                var matches = el.matches || el.msMatchesSelector;
1616                var mouseOver = matches ? matches.call(el, ':hover') : false;
1617                var focusInside = el.contains(document.activeElement);
1618                if (!mouseOver && !focusInside && el.parentNode && !autoHideTimer) {
1619                    autoHideTimer = setTimeout(hide, AUTO_HIDE_MS);
1620                }
1621            }, 0);
1622        }
1623
1624        el.addEventListener('mouseenter', pauseAutoHide);
1625        el.addEventListener('mouseleave', resumeAutoHideIfIdle);
1626        el.addEventListener('focusin', pauseAutoHide);
1627        el.addEventListener('focusout', resumeAutoHideIfIdle);
1628
1629        el.addEventListener('keydown', function (e) {
1630            if (e.key === 'Escape') {
1631                pauseAutoHide();
1632                hide();
1633            }
1634        });
1635    })();
1636</script>
1636
1637
1638    <div class="row">
1639        <div class="col-md-12" id="main-content" role="main">
1640                
1640<script>
1641        window.googletag = window.googletag || { cmd: [] };
1642        googletag.cmd.push(function () {
1643            var REFRESH_KEY = 'refresh';
1644            var REFRESH_VALUE = 'true';
1645
1646            var useProgrammaticAds = false;
1647            // 30s is Google's minimum refresh interval for any slot AdX can fill do not lower
1648            var REFRESH_MS = 30000;
1649
1650            var sport = 'baseball';
1651            var siteId = '2579830';
1652            var isSchoolPay = '1';
1653            var firstAdRendered = false;
1654
1655            // === sizes ===
1656            var baseSizes = [[300, 100], [640, 100]];
1657            var baseWith728 = useProgrammaticAds ? [[300, 100], [640, 100], [728, 90]] : baseSizes;
1658            var mobileProgrammaticOnly = [[320, 50]]; // << mobile exclusive
1659
1660            // === size mapping ===
1661            var mapping = googletag.sizeMapping()
1662                .addSize([1024, 0], baseWith728)               // desktop
1663                .addSize([768, 0], baseWith728)               // tablet
1664                .addSize([0, 0], useProgrammaticAds
1665                    ? mobileProgrammaticOnly                  // mobile = 320x50 ONLY
1666                    : baseSizes)                              // fallback mobile = 300x100 + 640x100
1667                .build();
1668
1669            googletag.defineSlot('/22870419559/sportsweb', baseWith728, 'gam-sport-banner-ad')
1670                .defineSizeMapping(mapping) 
1671                .setTargeting(REFRESH_KEY, REFRESH_VALUE)
1672                .setTargeting('siteid', siteId)
1673                .setTargeting('isschoolpay', isSchoolPay)
1674                .setTargeting('sport', sport)
1675                .addService(googletag.pubads());
1676
1677            googletag.defineSlot('/22870419559/sportsweb', baseWith728, 'gam-sport-banner-ad-2')
1678                .defineSizeMapping(mapping)
1679                .setTargeting(REFRESH_KEY, REFRESH_VALUE)
1680                .setTargeting('siteid', siteId)
1681                .setTargeting('isschoolpay', isSchoolPay)
1682                .setTargeting('sport', sport)
1683                .addService(googletag.pubads());
1684
1685            // Pool of additional in-list repeat slots (gam-sport-banner-ad-3 .. -10), same ad
1686            // unit as the slots above. ScheduleStyle views use as many of these as the
1687            // schedule length calls for (one every 4th game); unused ones simply never get
1688            // display() called and never request an ad.
1689            var SPORT_BANNER_REPEAT_MAX = 10;
1690            for (var repeatIndex = 3; repeatIndex <= SPORT_BANNER_REPEAT_MAX; repeatIndex++) {
1691                googletag.defineSlot('/22870419559/sportsweb', baseWith728, 'gam-sport-banner-ad-' + repeatIndex)
1692                    .defineSizeMapping(mapping)
1693                    .setTargeting(REFRESH_KEY, REFRESH_VALUE)
1694                    .setTargeting('siteid', siteId)
1695                    .setTargeting('isschoolpay', isSchoolPay)
1696                    .setTargeting('sport', sport)
1697                    .addService(googletag.pubads());
1698            }
1699
1700            // === rest unchanged ===
1701            googletag.pubads().addEventListener('slotRenderEnded', function (event) {
1702                var slotId = event.slot.getSlotElementId();
1703                if (slotId === 'gam-sport-banner-ad') {
1704                    var row = document.getElementById('gam-sport-banner-row');
1705                    if (!event.isEmpty) {
1706                        firstAdRendered = true;
1707                        if (row) row.style.visibility = 'visible';
1708                    } else {
1709                        if (row) row.style.visibility = 'collapse';
1710                    }
1711                }
1712                if (firstAdRendered && slotId === 'gam-sport-banner-ad-2') {
1713                    googletag.display('gam-sport-banner-ad-2');
1714                }
1715                // Repeat in-list slots (-3 and up): collapse their row on an empty response,
1716                // same as the first in-list slot above.
1717                if (/^gam-sport-banner-ad-([3-9]|10)$/.test(slotId)) {
1718                    var repeatRow = document.getElementById(slotId.replace('gam-sport-banner-ad-', 'gam-sport-banner-row-'));
1719                    if (repeatRow) repeatRow.style.visibility = event.isEmpty ? 'collapse' : 'visible';
1720                }
1721            });
1722
1723            googletag.pubads().addEventListener('impressionViewable', function (event) {
1724                var slot = event.slot;
1725                if (slot.getTargeting(REFRESH_KEY).indexOf(REFRESH_VALUE) > -1) {
1726                    setTimeout(function () { googletag.pubads().refresh([slot]); }, REFRESH_MS);
1727                }
1728            });
1729
1730            googletag.enableServices();
1731            googletag.display('gam-sport-banner-ad');
1732        });
1733    </script>
1733
1734
1735    <div class="new-team-page">
1736        <div class="team-page-container">
1737            <div class="team-header-box bg-primary">
1738                <div class="team-header-logo">
1739                    <img src="https://5starassets.blob.core.windows.net/athleticsites/2579830/1162/images/eaef9e97-6c21-4696-a0c0-eb5fa3e29b4c.png" aria-label="T.L. Hanna 1" alt="T.L. Hanna 2" />
1740                </div>
1741                <div class="team-header-text">
1742                     <span>Baseball</span>
1743                </div>
1744            </div>
1745            <div class="row">
1746                <div class="col-md-12">
1747                    
1748
1749    <div class="jumbotron-slider">
1750        <div class="row">
1751            <div class="col-md-12">
1752                <div id="myCarousel" class="carousel slide" data-ride="carousel" aria-label="T.L. Hanna Image Carousel">
1753                    <!-- Indicators -->
1754                        <ol class="carousel-indicators hidden-sm hidden-xs">
1755                                <li data-target="#myCarousel" aria-label="Go to slide 0" data-slide-to="0" class="active"></li>
1756                                <li data-target="#myCarousel" aria-label="Go to slide 1" data-slide-to="1" class=""></li>
1757                                <li data-target="#myCarousel" aria-label="Go to slide 2" data-slide-to="2" class=""></li>
1758                                <li data-target="#myCarousel" aria-label="Go to slide 3" data-slide-to="3" class=""></li>
1759                                <li data-target="#myCarousel" aria-label="Go to slide 4" data-slide-to="4" class=""></li>
1760                                <li data-target="#myCarousel" aria-label="Go to slide 5" data-slide-to="5" class=""></li>
1761                                <li data-target="#myCarousel" aria-label="Go to slide 6" data-slide-to="6" class=""></li>
1762                        </ol>
1763                    <!-- Wrapper for slides -->
1764                    <div class="carousel-inner">
1765
1766                            <div class="item active">
1767                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/bcc111be-f210-4897-a9e0-a17a3eeae46a_1920x1080.jpg" alt="Slide 0">
1768                                <div class="container">
1769                                    <div class="carousel-caption">
1770                                    </div>
1771                                </div>
1772                            </div>
1773                            <div class="item ">
1774                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/0f5e27a5-13ce-4f47-a3e0-d1d573d3cc49_1920x1080.jpg" alt="Slide 1 - The Slipper Still Fits; Cinderella Jackets Headed to State Championship Series">
1775                                <div class="container">
1776                                    <div class="carousel-caption">
1777                                            <h1 style="color: white !important" class="slider-caption">The Slipper Still Fits; Cinderella Jackets Headed to State Championship Series</h1>
1778                                    </div>
1779                                </div>
1780                            </div>
1781                            <div class="item ">
1782                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/c8c5a066-6b1f-485a-8c68-7de463abaf81_1920x1080.jpg" alt="Slide 2 - Cinderella Playoff Run Continues for Jackets With Walk Off Win">
1783                                <div class="container">
1784                                    <div class="carousel-caption">
1785                                            <h1 style="color: white !important" class="slider-caption">Cinderella Playoff Run Continues for Jackets With Walk Off Win</h1>
1786                                    </div>
1787                                </div>
1788                            </div>
1789                            <div class="item ">
1790                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/9c9d2b70-9e6b-4d92-adee-07822246de3d_1920x1080.jpg" alt="Slide 3">
1791                                <div class="container">
1792                                    <div class="carousel-caption">
1793                                    </div>
1794                                </div>
1795                            </div>
1796                            <div class="item ">
1797                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/22b49b7b-a55d-478e-8b5e-c9d7dcb6769d_1920x1080.jpg" alt="Slide 4">
1798                                <div class="container">
1799                                    <div class="carousel-caption">
1800                                    </div>
1801                                </div>
1802                            </div>
1803                            <div class="item ">
1804                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/b1112a71-bfa3-4fa6-9f0e-e573c0c9ddf8_1920x1080.jpg" alt="Slide 5">
1805                                <div class="container">
1806                                    <div class="carousel-caption">
1807                                    </div>
1808                                </div>
1809                            </div>
1810                            <div class="item ">
1811                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/1e85a1a7-20cf-4240-82b5-684fc4dd0c95_1920x1080.jpg" alt="Slide 6">
1812                                <div class="container">
1813                                    <div class="carousel-caption">
1814                                    </div>
1815                                </div>
1816                            </div>
1817
1818
1819                    </div>
1820                        <!-- Left and right controls -->
1821                        <a class="left carousel-control" href="#myCarousel" data-sli
1821de="prev" aria-label="Previous slide">
1822                            <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
1823                            <span class="sr-only">Previous</span>
1824                        </a>
1825                        <a class="right carousel-control" href="#myCarousel" data-slide="next" aria-label="Next slide">
1826                            <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
1827                            <span class="sr-only">Next</span>
1828                        </a>
1829                </div>
1830            </div>
1831        </div>
1832    </div>
1833
1834<script>
1835
1836    var isPaused = false;
1837    function toggleCarousel() {
1838        if (isPaused) {
1839            $('#myCarousel').carousel('cycle');
1840            $('#carouselPausePlayIcon').removeClass('fa-play').addClass('fa-pause');
1841            $('#carouselPausePlay').attr('aria-label', 'Pause carousel');
1842            $('#carouselPausePlay .sr-only').text('Pause');
1843        } else {
1844            $('#myCarousel').carousel('pause');
1845            $('#carouselPausePlayIcon').removeClass('fa-pause').addClass('fa-play');
1846            $('#carouselPausePlay').attr('aria-label', 'Play carousel');
1847            $('#carouselPausePlay .sr-only').text('Play');
1848        }
1849        isPaused = !isPaused;
1850    }
1851</script>
1851
1852<style>
1853
1854    .carousel-caption a
1855    {
1856        text-decoration: none !important;
1857    }
1858
1859    .slider-caption
1860    {
1861        color: white !important;
1862        font-weight: bold;
1863        text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.7);
1864    }
1865
1866    .slider-cta
1867    {
1868        display: flex;
1869        width: fit-content;
1870        margin-left: auto;
1871        align-items: center;
1872        font-size: 0.85rem;
1873        font-weight: 700;
1874        text-transform: uppercase;
1875        letter-spacing: 1.5px;
1876        color: #fff !important;
1877        background: rgba(0, 0, 0, 0.4);
1878        border: 2px solid rgba(255, 255, 255, 0.7);
1879        padding: 10px 24px;
1880        border-radius: 4px;
1881        text-decoration: none !important;
1882        transition: all 0.25s ease;
1883    }
1884
1885    .slider-cta .fa,
1886    .slider-cta svg
1887    {
1888        margin-left: 8px;
1889        transition: transform 0.25s ease;
1890    }
1891
1892    .slider-cta:hover,
1893    .slider-cta:focus
1894    {
1895        background: rgba(255, 255, 255, 0.25);
1896        border-color: #fff;
1897        color: #fff !important;
1898    }
1899
1900    .slider-cta:hover .fa,
1901    .slider-cta:hover svg
1902    {
1903        transform: translateX(4px);
1904    }
1905
1906</style>
1907
1908
1909                </div>
1910            </div>
1911            <div class="team-page-content">
1912                <section class="upcoming-events-wrapper">
1913
1914                    <div class="row">
1915                        <div class="col-md-12">
1916                            <div class="row">
1917                                <div class="col-lg-4 col-lg-push-8">
1918                                    <div class="row">
1919                                        <div class="col-md-12 sport-capsule">
1920                                            <table>
1921                                                <thead>
1922                                                    <tr>
1923                                                        <th class="bg-primary border-all-thin-primary">TEAM INFO</th>
1924                                                    </tr>
1925                                                </thead>
1926                                                <tbody>
1927                                                    <tr class="border-all-thin-primary">
1928                                                        <td><a href="?tab=schedules"><i class="fa fa-calendar"></i> Schedules</a></td>
1929                                                    </tr>
1930                                                    <tr class="border-all-thin-primary">
1931                                                        <td><a href="?tab=roster"><i class="fa fa-users"></i> Rosters</a></td>
1932                                                    </tr>
1933                                                    <tr class="border-all-thin-primary">
1934                                                        <td><a href="?tab=staff"><i class="fa fa-bullhorn"></i> Coaches</a></td>
1935                                                    </tr>
1936                                                    <tr class="border-all-thin-primary">
1937                                                        <td><a href="?tab=news"><i class="fa fa-newspaper-o"></i> News</a></td>
1938                                                    </tr>
1939                                                </tbody>
1940                                            </table>
1941                                        </div>
1942                                    </div>
1943                                    <div style="margin: 5px;" id="rectangle_1"></div>
1944                                    <div class="row">
1945                                        <div class="col-md-12">
1946                                            
1947
1948    <div class="sport-capsule">
1949        <div class="row">
1950            <div class="col-md-12">
1951                <table>
1952                    <thead>
1953                        <tr>
1954                            <th class="bg-primary border-all-thin-primary" colspan="2" scope="colgroup">ANNOUNCEMENTS</th>
1955                        </tr>
1956                    </thead>
1957                    <tbody>
1958                            <tr class="border-all-thin-primary">
1959                                <td colspan="2">No new announcements</td>
1960                            </tr>
1961                    </tbody>
1962                </table>
1963            </div>
1964        </div>
1965    </div>    
1966                                        </div>
1967                                    </div>
1968                                    <br />
1969                                    <div class="row">
1970                                        <div class="col-md-12">
1971                                            
1972
1973    <div class="sport-capsule">
1974        <div class="row">
1975            <div class="col-md-12">
1976                <table>
1977                    <thead>
1978                        <tr>
1979                            <th class="bg-primary border-all-thin-primary" scope="col">FORMS</th>
1980                        </tr>
1981                    </thead>
1982                    <tbody>
1983                                <tr class="border-all-thin-primary">
1984                                    <td><a href="https://drive.google.com/file/d/1-WrV5gb-jMi28CdCXJpkXg5bNLy0kb47/view?usp=sharing" target="_blank">2026-27 Booster Club Sponsorship Brochure</a></td>
1985                                </tr>
1986                                <tr class="border-all-thin-primary">
1987                                    <td><a href="https://5starassets.blob.core.windows.net/multi-media/2579830/hub/Athletic%20HOF%20Nomination%20Form.docx" target="_blank">TL Hanna Hall of Fame Nomination Form</a></td>
1988                                </tr>
1989                                <tr class="border-all-thin-primary">
1990                                    <td><a href="https://5starassets.blob.core.windows.net/multi-media/2579830/hub/Physical-Form%20HSL.pdf" target="_blank">2026-27 Physical Form</a></td>
1991                                </tr>
1992                    </tbody>
1993                </table>
1994            </div>
1995        </div>
1996    </div>    
1997                                        </div>
1998                                    </div>
1999                                    <br />
2000                                    <div class="row">
2001                                        <div class="col-md-12">
2002                                            
2003
2004    <div class="sport-capsule">
2005        <div class="row">
2006            <div class="col-md-12">
2007                <table>
2008                    <thead>
2009                        <tr>
2010                            <th class="bg-primary border-all-thin-primary" scope="col">LINKS</th>
2011                        </tr>
2012                    </thead>
2013                    <tbody>
2014                                <tr class="border-all-thin-primary">
2015                                    <td><a href="https://drive.google.com/file/d/15RAJmq942RgPWoDAf1BkEvz9q6R49WiZ/view?usp=sharing" target="_blank">
2015Arbiter Registration Getting Started Guide</a></td>
2016                                </tr>
2017                                <tr class="border-all-thin-primary">
2018                                    <td><a href="https://arbiter.io/" target="_blank">Arbiter Registration Page</a></td>
2019                                </tr>
2020                                <tr class="border-all-thin-primary">
2021                                    <td><a href="https://arbitersportshelp.zendesk.com/hc/en-us/articles/19923837812365-How-do-I-Register-for-the-First-Time-For-Parents" target="_blank">Arbiter Registration Help Guide</a></td>
2022                                </tr>
2023                                <tr class="border-all-thin-primary">
2024                                    <td><a href="https://wofproduction.blob.core.windows.net/embed/dfd3d68e178f4c28ae06e3dd6bc1eeea/walloffame.html#/walloffame/attract" target="_blank">TLH Hall of Fame and Records</a></td>
2025                                </tr>
2026                                <tr class="border-all-thin-primary">
2027                                    <td><a href="https://schsl.org/" target="_blank">South Carolina High School League</a></td>
2028                                </tr>
2029                                <tr class="border-all-thin-primary">
2030                                    <td><a href="https://www.youtube.com/@tlhannabroadcastchannel4268" target="_blank">TL Hanna Broadcast Channel- Youtube</a></td>
2031                                </tr>
2032                                <tr class="border-all-thin-primary">
2033                                    <td><a href="https://www.youtube.com/@tlhannaathleticsmedia664" target="_blank">TL Hanna Athletic Media- Youtube</a></td>
2034                                </tr>
2035                    </tbody>
2036                </table>
2037            </div>
2038        </div>
2039    </div>    
2040                                        </div>
2041                                    </div>
2042                                </div>
2043                                <div class="col-lg-8 col-lg-pull-4">
2044                                    <div class="row">
2045                                        <div class="col-md-12">
2046                                            <div class="filler">
2047    <div class="cd-main-content">
2048            <div class="sport-capsule">
2049                <table>
2050                    <thead>
2051                        <tr>
2052                            <th class="bg-primary">UPCOMING EVENTS</th>
2053                        </tr>
2054                    </thead>
2055                </table>
2056            </div>
2057        <span id="no-games">Currently, there are no upcoming games. Please check back or go to our composite schedule <a href="/calendar">here.</a></span>
2058    </div>
2059</div>
2060
2061                                        </div>
2062                                    </div>
2063                               
2064                                    <div class="row">
2065                                        <div class="col-md-12">
2066                                                <h1 class="news-header text-primary">Latest News</h1>
2067    <div class="row">
2068            <div class="col-md-4 col-sm-6 col-xs-12">
2069                <div class="news-detail-container border-all-thin-primary">
2070                    <div class="row">
2071                        <div class="col-md-12">
2072                            <div class="embed-responsive embed-responsive-4by3 news-detail-image-container">
2073                                    <img class="embed-responsive-item" src="https://5starassets.blob.core.windows.net/article-photos/2579830/4982f4cd-ee28-49d7-bee9-77978b91d152_640x480.jpg" alt="Jenkins, Campbell, Allred, Hall, and Boulware Brothers Inducted into TLH Hall of Fame" />
2074                            </div>
2075                        </div>
2076                    </div>
2077                    <div class="news-info">
2078                        <div class="row">
2079                            <div class="col-md-12">
2080                                <a class="text-primary" id="read-more-link" href="/news/117844">
2081                                <h2> Jenkins, Campbell, Allred, Hall, and Boulware Brothers Inducted i...</h2></a>
2082                            </div>
2083                        </div>
2084                        <div class="row">
2085                            <div class="col-md-12">
2086                                <div class="news-article-body">
2087                                    <p>
2088                                        The T. L. Hanna Athletic Hall of Fame was established to recognize those whose accomplishments have ...
2089                                    </p>
2090                                </div>
2091                            </div>
2092                        </div>
2093                   
2094                        <div class="row">
2095                            <div class="col-xs-12 col-md-12 text-center">
2096                                <hr />
2097                                <h3>9/20/2026</h3>
2098                            </div>
2099                        </div>
2100                    </div>
2101                </div>
2102            </div>
2103            <div class="col-md-4 col-sm-6 col-xs-12">
2104                <div class="news-detail-container border-all-thin-primary">
2105                    <div class="row">
2106                        <div class="col-md-12">
2107                            <div class="embed-responsive embed-responsive-4by3 news-detail-image-container">
2108                                    <img class="embed-responsive-item" src="https://5starassets.blob.core.windows.net/article-photos/2579830/7dcf1a57-0dc5-4684-83dc-dd2bc4009509_640x480.jpg" alt="TLH Hall of Fame Donations Now Accepted" />
2109                            </div>
2110                        </div>
2111                    </div>
2112                    <div class="news-info">
2113                        <div class="row">
2114                            <div class="col-md-12">
2115                                <a class="text-primary" id="read-more-link" href="/news/115660">
2116                                <h2> TLH Hall of Fame Donations Now Accepted...</h2></a>
2117                            </div>
2118                        </div>
2119                        <div class="row">
2120                            <div class="col-md-12">
2121                                <div class="news-article-body">
2122                                    <p>
2123                                        The TL Hanna Hall of Fame committee continues to recognize the outstanding work of coaches and athle...
2124                                    </p>
2125                                </div>
2126                            </div>
2127                        </div>
2128                   
2129                        <div class="row">
2130                            <div class="col-xs-12 col-md-12 text-center">
2131                                <hr />
2132                                <h3>7/29/2026</h3>
2133                            </div>
2134                        </div>
2135                    </div>
2136                </div>
2137            </div>
2138            <div class="col-md-4 col-sm-6 col-xs-12">
2139                <div class="news-detail-container border-all-thin-primary">
2140                    <div class="row">
2141                        <div class="col-md-12">
2142                            <div class="embed-responsive embed-responsive-4by3 news-detail-image-container">
2143                                    <img class="embed-responsive-item" src="https://5starassets.blob.core.windows.net/article-photos/2579830/9aaf6a78-1a77-4e83-93ad-b9f6df967db9_640x480.jpg" alt="TL Hanna Announce
2143s Hall of Fame Class of 2026" />
2144                            </div>
2145                        </div>
2146                    </div>
2147                    <div class="news-info">
2148                        <div class="row">
2149                            <div class="col-md-12">
2150                                <a class="text-primary" id="read-more-link" href="/news/115542">
2151                                <h2> TL Hanna Announces Hall of Fame Class of 2026...</h2></a>
2152                            </div>
2153                        </div>
2154                        <div class="row">
2155                            <div class="col-md-12">
2156                                <div class="news-article-body">
2157                                    <p>
2158                                        The TL Hanna Athletic Hall of Fame committee recently announced the six inductees for the Class of 2...
2159                                    </p>
2160                                </div>
2161                            </div>
2162                        </div>
2163                   
2164                        <div class="row">
2165                            <div class="col-xs-12 col-md-12 text-center">
2166                                <hr />
2167                                <h3>7/7/2026</h3>
2168                            </div>
2169                        </div>
2170                    </div>
2171                </div>
2172            </div>
2173    </div>
2174
2175                                        </div>
2176                                    </div>
2177                                </div>
2178                            </div>
2179                        </div>
2180
2181
2182                    </div>
2183                </section>
2184
2185                <section class="recent-videos-wrapper">
2186                    <div class="row">
2187                        <div class="col-md-12">
2188                            
2188<script src="https://content.jwplatform.com/libraries/Sz4mVdAk.js"></script>
2188
2189
2190                        </div>
2191                    </div>
2192                </section>
2193            
2194                <section class="photo-gallery-wrapper">
2195                    <div class="row">
2196                        <div class="col-md-12">
2197                                <div class="cd-main-content">
2198        <div class="school-box">
2199            <div class="mascot-logo bg-primary">
2200                <img src="https://5starassets.blob.core.windows.net/athleticsites/2579830/1162/images/eaef9e97-6c21-4696-a0c0-eb5fa3e29b4c.png" alt="T.L. Hanna" />
2201            </div>
2202            <div class="mascot-txt">
2203                <h1>Yellow Jackets <span>Photos</span></h1>
2204            </div>
2205        </div>
2206        <hr />
2207            <div class="photo-banner">
2208                <div class="row">
2209                    <div class="col-md-12">
2210                        <img alt="Photo Gallery Banner" src="https://5starassets.blob.core.windows.net/athleticsites/2579830/1162/images/a38b2891-61a3-4456-a877-77c3d2238625.png" class="img-responsive" />
2211                    </div>
2212                </div>
2213            </div>
2214            <hr />
2215        <div class="row">
2216            <div class="col-md-12">
2217                <div class="row">
2218                        <div class="col-md-3 col-sm-6 col-xs-12">
2219                            <div class="photo">
2220                                <a href="/TeamPhotos/team/143458" aria-label="go to Boys C Team Football photo gallery">
2221                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/fbc5453e-a953-435c-96ab-6eeee73e01fa.jpg" class="img-responsive" loading="lazy" alt="Boys C Team Football gallery" />
2222                                </a>
2223                            </div>
2224                            <div class="text-center"><span>Boys C Team Football</span></div>
2225                        </div>
2226                        <div class="col-md-3 col-sm-6 col-xs-12">
2227                            <div class="photo">
2228                                <a href="/TeamPhotos/team/143900" aria-label="go to Boys JV Baseball photo gallery">
2229                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/7e6da917-0b95-4f99-922d-6d2b697a77e6.jpg" class="img-responsive" loading="lazy" alt="Boys JV Baseball gallery" />
2230                                </a>
2231                            </div>
2232                            <div class="text-center"><span>Boys JV Baseball</span></div>
2233                        </div>
2234                        <div class="col-md-3 col-sm-6 col-xs-12">
2235                            <div class="photo">
2236                                <a href="/TeamPhotos/team/143457" aria-label="go to Boys JV Football photo gallery">
2237                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/497c9f0a-adb2-4521-a665-ff2e92de7dbe.jpg" class="img-responsive" loading="lazy" alt="Boys JV Football gallery" />
2238                                </a>
2239                            </div>
2240                            <div class="text-center"><span>Boys JV Football</span></div>
2241                        </div>
2242                        <div class="col-md-3 col-sm-6 col-xs-12">
2243                            <div class="photo">
2244                                <a href="/TeamPhotos/team/148657" aria-label="go to Boys JV Golf photo gallery">
2245                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/fee7779d-df89-4517-a3c3-ddb87b95e638.jpg" class="img-responsive" loading="lazy" alt="Boys JV Golf gallery" />
2246                                </a>
2247                            </div>
2248                            <div class="text-center"><span>Boys JV Golf</span></div>
2249                        </div>
2250                        <div class="col-md-3 col-sm-6 col-xs-12">
2251                            <div class="photo">
2252                                <a href="/TeamPhotos/team/143910" aria-label="go to Boys JV Soccer photo gallery">
2253                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/76c5803b-8382-429b-a27d-f64b25ae6a11.jpg" class="img-responsive" loading="lazy" alt="Boys JV Soccer gallery" />
2254                                </a>
2255                            </div>
2256                            <div class="text-center"><span>
2256Boys JV Soccer</span></div>
2257                        </div>
2258                        <div class="col-md-3 col-sm-6 col-xs-12">
2259                            <div class="photo">
2260                                <a href="/TeamPhotos/team/143916" aria-label="go to Boys JV Tennis photo gallery">
2261                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/3edb66b7-8589-4d80-8bb5-08ba8f618449.jpg" class="img-responsive" loading="lazy" alt="Boys JV Tennis gallery" />
2262                                </a>
2263                            </div>
2264                            <div class="text-center"><span>Boys JV Tennis</span></div>
2265                        </div>
2266                        <div class="col-md-3 col-sm-6 col-xs-12">
2267                            <div class="photo">
2268                                <a href="/TeamPhotos/team/143899" aria-label="go to Boys Varsity Baseball photo gallery">
2269                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/1f065ffc-856c-4267-bf77-154fcb3c1b95.jpg" class="img-responsive" loading="lazy" alt="Boys Varsity Baseball gallery" />
2270                                </a>
2271                            </div>
2272                            <div class="text-center"><span>Boys Varsity Baseball</span></div>
2273                        </div>
2274                        <div class="col-md-3 col-sm-6 col-xs-12">
2275                            <div class="photo">
2276                                <a href="/TeamPhotos/team/143901" aria-label="go to Boys Varsity Basketball photo gallery">
2277                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/b1235b7c-fcb5-45fb-9e2a-5993447c7157.jpg" class="img-responsive" loading="lazy" alt="Boys Varsity Basketball gallery" />
2278                                </a>
2279                            </div>
2280                            <div class="text-center"><span>Boys Varsity Basketball</span></div>
2281                        </div>
2282                        <div class="col-md-3 col-sm-6 col-xs-12">
2283                            <div class="photo">
2284                                <a href="/TeamPhotos/team/143456" aria-label="go to Boys Varsity Football photo gallery">
2285                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/d3a4ad87-03a3-4029-b703-3bee3b0eae85.jpg" class="img-responsive" loading="lazy" alt="Boys Varsity Football gallery" />
2286                                </a>
2287                            </div>
2288                            <div class="text-center"><span>Boys Varsity Football</span></div>
2289                        </div>
2290                        <div class="col-md-3 col-sm-6 col-xs-12">
2291                            <div class="photo">
2292                                <a href="/TeamPhotos/team/144009" aria-label="go to Boys Varsity Golf photo gallery">
2293                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/7d4dded1-80ad-430e-8e0d-de400d0f1470.jpg" class="img-responsive" loading="lazy" alt="Boys Varsity Golf gallery" />
2294                                </a>
2295                            </div>
2296                            <div class="text-center"><span>Boys Varsity Golf</span></div>
2297                        </div>
2298                        <div class="col-md-3 col-sm-6 col-xs-12">
2299                            <div class="photo">
2300                                <a href="/TeamPhotos/team/143909" aria-label="go to Boys Varsity Soccer photo gallery">
2301                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/b07b1c6d-b6a8-45a8-9e47-33d934b6727a.jpg" class="img-responsive" loading="lazy" alt="Boys Varsity Soccer gallery" />
2302                                </a>
2303                            </div>
2304                            <div class="text-center"><span>Boys Varsity Soccer</span></div>
2305                        </div>
2306                        <div class="col-md-3 col-sm-6 col-xs-12">
2307                            <div class="photo">
2308                                <a href="/TeamPhotos/team/143915" aria-label="go to Boys Varsity Tennis photo gallery">
2309                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/ac5a74c6-1ad3-4858-9c03-6d0cb669c92e.jpg" class="img-responsive" loading="lazy" alt="Boys Varsity Tennis gallery" />
2310                                </a>
2311                            </div>
2312                            <div class="text-center"><span>Boys Varsity Tennis</span></div>
2313                        </div>
2314                        <div class="col-md-3 col-sm-6 col-xs-12">
2315                            <div class="photo">
2316                                <a href="/TeamPhotos/team/143463" aria-label="go to Boys Varsity Volleyball photo gallery">
2317                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/969af8e5-4b49-46e7-8065-9a4e635a13cc.jpg" class="img-responsive" loading="lazy" alt="Boys Varsity Volleyball gallery" />
2318                                </a>
2319                            </div>
2320                            <div class="text-center"><span>Boys Varsity Volleyball</span></div>
2321                        </div>
2322                        <div class="col-md-3 col-sm-6 col-xs-12">
2323                            <div class="photo">
2324                                <a href="/TeamPhotos/team/143464" aria-label="go to Boys Varsity Wrestling photo gallery">
2325                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/71033bfb-ac9f-4589-ac57-efcb9313db30.jpg" class="img-responsive" loading="lazy" alt="Boys Varsity Wrestling gallery" />
2326                                </a>
2327                            </div>
2328                            <div class="text-center"><span>Boys Varsity Wrestling</span></div>
2329                        </div>
2330                        <div class="col-md-3 col-sm-6 col-xs-12">
2331                            <div class="photo">
2332                                <a href="/TeamPhotos/team/146592" aria-label="go to Coed Varsity Adaptive PE photo gallery">
2333                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/e5fb5ef3-cc0e-4878-85e2-aa6c5f4dd647.jpg" class="img-responsive" loading="lazy" alt="Coed Varsity Adaptive PE gallery" />
2334                                </a>
2335                            </div>
2336                            <div class="text-center"><span>Coed Varsity Adaptive PE</span></div>
2337                        </div>
2338                        <div class="col-md-3 col-sm-6 col-xs-12">
2339                            <div class="photo">
2340                                <a href="/TeamPhotos/team/144007" aria-label="go to Coed Varsity Competitive Cheer photo gallery">
2341                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/fbd85ce0-7a41-4082-8f12-3db2ee55f2a5.jpg" class="img-responsive" loading="lazy" alt="Coed Varsity Competitive Cheer gallery" />
2342                                </a>
2343                            </div>
2344                            <div class="text-center"><span>Coed Varsity Competitive Cheer</span></div>
2345                        </div>
2346                        <div class="col-md-3 col-sm-6 col-xs-12">
2347                            <div class="photo">
2348                                <a href="/TeamPhotos/team/143905" aria-label="go to Coed Varsity Cross Country photo gallery">
2349                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/15079e28-a73d-40e9-a9d8-68bb7ed06ff0.jpg" class="img-responsive" loading="lazy" alt="Coed Varsity Cross Country gallery" />
2350                                </a>
2351                            </div>
2352                            <div class="text-center"><span>Coed Varsity Cross Country</span></div>
2353                        </div>
2354                        <div class="col-md-3 col-sm-6 col-xs-12">
2355                            <div class="photo">
2356                                <a href="/TeamPhotos/team/143906" aria-label="go to Coed Varsity Swimming photo gallery">
2357                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/7be82327-4a4f-4fcf-a82d-847bb599dcf6.jpg" class="img-responsive" loading="lazy" alt="Coed Varsity Swimming gallery" />
2358                                </a>
2359                            </div>
2360                            <div class="text-center"><span>Coed Varsity Swimming</span></div>
2361                        </div>
2362                        <div class="col-md-3 col-sm-6 col-xs-12">
2363                            <div class="photo">
2364                                <a href="/TeamPhotos/team/143917" aria-label="go to Coed Varsity Track and Field photo gallery">
2365                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/2c2a64dd-40a3-4d55-a708-072bf8693767.jpg" class="img-responsive" loading="lazy" alt="Coed Varsity Track and Field gallery" />
2366                                </a>
2367                            </div>
2368                            <div class="text-center"><span>Coed Varsity Track and Field</span></div>
2369                        </div>
2370                        <div class="col-md-3 col-sm-6 col-xs-12">
2371                            <div class="photo">
2372                                <a href="/TeamPhotos/team/144011" aria-label="go to Girls JV Lacrosse photo gallery">
2373                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/877bd7e4-d21c-4f45-b06a-40a9269c24a4.jpg" class="img-responsive" loading="lazy" alt="Girls JV Lacrosse gallery" />
2374                                </a>
2375                            </div>
2376                            <div class="text-center"><span>Girls JV Lacrosse</span></div>
2377                        </div>
2378                        <div class="col-md-3 col-sm-6 col-xs-12">
2379                            <div class="photo">
2380                                <a href="/TeamPhotos/team/143912" aria-label="go to Girls JV Soccer photo gallery">
2381                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/fdb36551-c852-4d82-87db-92be1b207438.jpg" class="img-responsive" loading="lazy" alt="Girls JV Soccer gallery" />
2382                                </a>
2383                            </div>
2384                            <div class="text-center"><span>
2384Girls JV Soccer</span></div>
2385                        </div>
2386                        <div class="col-md-3 col-sm-6 col-xs-12">
2387                            <div class="photo">
2388                                <a href="/TeamPhotos/team/143460" aria-label="go to Girls JV Tennis photo gallery">
2389                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/a8d2fea2-1f44-4a12-bb6c-b8170f470833.jpg" class="img-responsive" loading="lazy" alt="Girls JV Tennis gallery" />
2390                                </a>
2391                            </div>
2392                            <div class="text-center"><span>Girls JV Tennis</span></div>
2393                        </div>
2394                        <div class="col-md-3 col-sm-6 col-xs-12">
2395                            <div class="photo">
2396                                <a href="/TeamPhotos/team/143462" aria-label="go to Girls JV Volleyball photo gallery">
2397                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/b0702944-8b17-4c07-9d5a-1c169c4e9441.jpg" class="img-responsive" loading="lazy" alt="Girls JV Volleyball gallery" />
2398                                </a>
2399                            </div>
2400                            <div class="text-center"><span>Girls JV Volleyball</span></div>
2401                        </div>
2402                        <div class="col-md-3 col-sm-6 col-xs-12">
2403                            <div class="photo">
2404                                <a href="/TeamPhotos/team/143903" aria-label="go to Girls Varsity Basketball photo gallery">
2405                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/9399907f-b518-4eb7-8056-8d6e0361cabb.jpg" class="img-responsive" loading="lazy" alt="Girls Varsity Basketball gallery" />
2406                                </a>
2407                            </div>
2408                            <div class="text-center"><span>Girls Varsity Basketball</span></div>
2409                        </div>
2410                        <div class="col-md-3 col-sm-6 col-xs-12">
2411                            <div class="photo">
2412                                <a href="/TeamPhotos/team/150822" aria-label="go to Girls Varsity Flag Football photo gallery">
2413                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/c55ce145-464e-477d-90b3-1a03e93a94fa.jpg" class="img-responsive" loading="lazy" alt="Girls Varsity Flag Football gallery" />
2414                                </a>
2415                            </div>
2416                            <div class="text-center"><span>Girls Varsity Flag Football</span></div>
2417                        </div>
2418                        <div class="col-md-3 col-sm-6 col-xs-12">
2419                            <div class="photo">
2420                                <a href="/TeamPhotos/team/144008" aria-label="go to Girls Varsity Golf photo gallery">
2421                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/23b4775b-7bd4-4ce8-8d37-24ae9491a62e.jpg" class="img-responsive" loading="lazy" alt="Girls Varsity Golf gallery" />
2422                                </a>
2423                            </div>
2424                            <div class="text-center"><span>Girls Varsity Golf</span></div>
2425                        </div>
2426                        <div class="col-md-3 col-sm-6 col-xs-12">
2427                            <div class="photo">
2428                                <a href="/TeamPhotos/team/143908" aria-label="go to Girls Varsity Lacrosse photo gallery">
2429                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/a202cc1b-906a-4d70-bd80-445c4f715a59.jpg" class="img-responsive" loading="lazy" alt="Girls Varsity Lacrosse gallery" />
2430                                </a>
2431                            </div>
2432                            <div class="text-center"><span>Girls Varsity Lacrosse</span></div>
2433                        </div>
2434                        <div class="col-md-3 col-sm-6 col-xs-12">
2435                            <div class="photo">
2436                                <a href="/TeamPhotos/team/143911" aria-label="go to Girls Varsity Soccer photo gallery">
2437                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/12ce85ee-d6c9-4ee5-9cbd-e883e2e8f28b.jpg" class="img-responsive" loading="lazy" alt="Girls Varsity Soccer gallery" />
2438                                </a>
2439                            </div>
2440                            <div class="text-center"><span>
2440Girls Varsity Soccer</span></div>
2441                        </div>
2442                        <div class="col-md-3 col-sm-6 col-xs-12">
2443                            <div class="photo">
2444                                <a href="/TeamPhotos/team/143913" aria-label="go to Girls Varsity Softball photo gallery">
2445                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/368e60c1-ab24-4492-a618-182db827e4e4.jpg" class="img-responsive" loading="lazy" alt="Girls Varsity Softball gallery" />
2446                                </a>
2447                            </div>
2448                            <div class="text-center"><span>Girls Varsity Softball</span></div>
2449                        </div>
2450                        <div class="col-md-3 col-sm-6 col-xs-12">
2451                            <div class="photo">
2452                                <a href="/TeamPhotos/team/143459" aria-label="go to Girls Varsity Tennis photo gallery">
2453                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/e6f4493d-ec34-48bb-a84f-b5c487101c56.jpg" class="img-responsive" loading="lazy" alt="Girls Varsity Tennis gallery" />
2454                                </a>
2455                            </div>
2456                            <div class="text-center"><span>Girls Varsity Tennis</span></div>
2457                        </div>
2458                        <div class="col-md-3 col-sm-6 col-xs-12">
2459                            <div class="photo">
2460                                <a href="/TeamPhotos/team/143461" aria-label="go to Girls Varsity Volleyball photo gallery">
2461                                    <img src="https://5starassets.blob.core.windows.net/photogallery/2579830/b5d41c3b-c46a-4bb1-b6fa-d8f9f6c08523.jpg" class="img-responsive" loading="lazy" alt="Girls Varsity Volleyball gallery" />
2462                                </a>
2463                            </div>
2464                            <div class="text-center"><span>Girls Varsity Volleyball</span></div>
2465                        </div>
2466
2467                </div>
2468            </div>
2469        </div>
2470    </div>
2471
2472                        </div>
2473                    </div>
2474                </section>
2475            </div>
2476        </div>
2477    </div>
2478
2479        </div>
2480    </div>
2481    <footer>
2482        
2483            
2484            <div class="footer bg-gradient-primary">
2485    <div class="footer-contain">
2486
2487        <div class="row">
2488            <div class="col-md-12">
2489                <div id="app-downloads">
2490                    <div id="badges">
2491                        <div class="row">
2492                            <div class="col-xs-12">
2493                                        <img alt="T.L. Hanna Custom App Icon"
2494                                             aria-label="T.L. Hanna Custom App Icon"
2495                                             src="https://5starassets.blob.core.windows.net/athleticsites/2579830/1162/images/2f03d3d2-4d9a-4c8c-bd7f-0d75a3344e9f.png"
2496                                             class="img-responsive app-icon" />
2497                            </div>
2498                        </div>
2499                        <div class="row">
2500                            <div class="col-xs-6">
2501                                    <a href="https://apps.apple.com/us/app/t-l-hanna-athletics/id6748661360" target="_blank"><img class="img-responsive download" src="/images/dl-apple.png" aria-label="Apple App Badge" alt="Apple App Badge" /></a>
2502                            </div>
2503                            <div class="col-xs-6">
2504                                <span id="googleplay">
2505                                        <a href="https://play.google.com/store/apps/details?id=mm.sctlhanna" target="_blank"><img class="img-responsive download" src="/images/dl-google.png" aria-label="Google Play App Badge" alt="Google Play App Badge" /></a>
2506                                    </span>
2507                            </div>
2508                        </div>
2509                    </div>
2510                </div>
2511            </div>
2512        </div>
2513        <div class="row">
2514            <div class="col-md-12">
2515                <div id="affiliate-imgs">
2516                    
2517                </div>
2518            </div>
2519        </div>
2520        <hr />
2521        <div class="row">
2522            <div class="col-md-12">
2523                <div id="policy">
2524                    <span class="text-primary-font">&copy; 2026 MASCOT MEDIA, LLC</span>
2525                </div>
2526            </div>
2527            <div class="col-md-12">
2528                <div class="contact-us text-primary-font">
2529                    CONTACT US
2530                        <span id="phone-remove" class="text-primary-font">(864) 260-5110</span> |
2531                    2600 N HWY 81, Anderson, SC 29621
2532                    <br />
2533                    <span>Thank you to all of our <a href="/sponsor/SponsorsPage">Sponsors!</a></span>
2534                </div>
2535            </div>
2536        </div>
2537    </div>
2538</div>
2539
2540<script type="text/javascript">
2541    //Going to check the operating system, if iOS, we will hide Google Play Icon
2542    var getOS = {
2543        iOS: function () {
2544            return navigator.platform.match(/iPhone|iPad|iPod/i);
2545        },
2546        Mac: function () {
2547            return navigator.platform.match("MacIntel");
2548        },
2549        Windows: function () {
2550            return navigator.platform.match("Win32");
2551        },
2552        Android: function () {
2553            return navigator.platform.match(/Android/i);
2554        },
2555    };
2556      if (getOS.iOS() || getOS.Mac()) {
2557        document.getElementById('googleplay').style.display = "none";
2558        }
2559     else {
2560        document.getElementById('googleplay').style.display = "inline";
2561      }
2562</script>
2562
2563        
2564    </footer>
2565    <div class="privacy-terms">
2566        <a href="http://www.mascotmedia.net/privacy-policy/" target="_blank">PRIVACY POLICY</a> |
2567        <span>&copy; 2026 MASCOT MEDIA, LLC</span>
2568    </div>
2569    <div class="ad-space">
2570    </div>
2571    
2572        
2572<script src="/js/CenterPopup.min.js"></script>
2572
2573        
2573<script src="/lib/jquery/dist/jquery.min.js"></script>
2573
2574        
2574<script src="/js/jquery.easing.1.3.js"></script>
2574
2575        
2575<script src="/js/lity.js"></script>
2575
2576        
2576<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
2576
2577        
2577<script src="/js/latestheadlines.min.js"></script>
2577
2578        <!-- CDN compiled and minified slick slider js -->
2579        
2579<script src="https://cdn.jsdelivr.net/jquery.slick/1.3.15/slick.min.js"></script>
2579
2580        
2580<script src="/lib/datatables/media/js/jquery.dataTables.min.js"></script>
2580
2581        
2581<script src="/lib/datatables/media/js/dataTables.bootstrap.min.js"></script>
2581
2582        
2582<script src="/lib/datatables-responsive/js/dataTables.responsive.min.js"></script>
2582
2583        
2583<script src="/lib/jquery.menu-aim/jquery.menu-aim.min.js"></script>
2583
2584        
2584<script src="/js/arrow-down.js"></script>
2584
2585        
2585<script src="/js/UpcomingBroadcastSideTabStyle14.min.js"></script>
2585
2586        
2586<script src="/js/topmenu5.min.js?v=2.3"></script>
2586
2587        
2587<script src="/js/StagingButtons.min.js"></script>
2587
2588        
2588<script src="/lib/sweetalert/dist/sweetalert.min.js"></script>
2588
2589        
2589<script src="/lib/slick-carousel/slick/slick.min.js"></script>
2589
2590        
2590<script src="/js/PlatinumSponsorStyle2.min.js"></script>
2590
2591        
2591<script src="/js/CommitmentsStyle1.min.js"></script>
2591
2592
2593    
2594    
2595    
2595<script src="/lib/slick-carousel/slick/slick.min.js"></script>
2595
2596    
2596<script src="/js/UpcomingEventsStyle14.min.js"></script>
2596
2597    
2597<script src="/js/recent-videos.js"></script>
2597
2598    
2598<script src="/lib/readmore-js/readmore.min.js"></script>
2598
2599    <style>
2600        body:before
2601        {
2602            content: "";
2603        }
2604    </style>
2605    <div id="fb-root"></div>
2606    
2606<script>
2607        (function (d, s, id) {
2608            var js, fjs = d.getElementsByTagName(s)[0];
2609            if (d.getElementById(id)) return;
2610            js = d.createElement(s); js.id = id;
2611            js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.9";
2612            fjs.parentNode.insertBefore(js, fjs);
2613        }(document, 'script', 'facebook-jssdk'));</script>
2613
2614    
2614<script src="/js/TeamMenuStyle3.min.js?v=1.0.0"></script>
2614
2615    
2615<script src="/lib/jQuery.print/jQuery.print.js"></script>
2615
2616    
2616<script type="text/javascript">
2617    $(document).ready(function () {
2618        var slider = document.getElementById("jumbotron-slider");
2619        if (slider == null || slider == undefined){
2620            //$(".team-capsule-wrapper").css("padding-top","100px");
2621        }
2622        $('article').readmore();
2623
2624                        $(".schedule-tab").addClass("active");
2625                        $('[id^=sub-]').attr('class', '');
2626                        $('.print-athlete').hide();
2627                        $('[id^=sub-]').addClass('form-control schedule-submenu');
2628                        $('[id^=school-year-]').attr('class', '');
2629                        $('[id^=school-year-]').addClass('schedule-school-year');
2630                                $('[id^=school-year-]').addClass('form-control');
2631
2632
2633
2634    })
2635        $(document).ready(function () {
2636            $('#games-tab').tab('show');
2637            $('#schedule-table').DataTable();
2638            $('#practice-schedule-table').DataTable();
2639        });
2640    </script>
2640
2641    
2641<script>
2642        $(function () {
2643            //var url = "https://bitdash-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8"; //on-air
2644            //var url = ""; //broadcast URL could be off-air
2645            var url = "";
2646
2647            $.ajax({
2648                url: "/home/GetVideoBroadcastUrl",
2649                type: "GET",
2650                dataType: "json",
2651                success: function (data) {
2652                    url = data.url;
2653                }
2654            });
2655
2656            if (url !== "") {
2657                $.ajax(url, {
2658                    statusCode: {
2659                        200: function () {
2660                            $('#broadcast-on').show();
2661                            $('#broadcast-off').hide();
2662                        },
2663                        404: function () {
2664                            $('#broadcast-off').show();
2665                            $('#broadcast-on').hide();
2666                        }
2667                    }
2668                });
2669            }
2670            else {
2671                $('#broadcast-off').show();
2672                $('#broadcast-on').hide();
2673            }
2674        });
2675    </script>
2675
2676
2677    
2678    
2679    
2679<script type="text/javascript">
2680        $.extend(true, $.fn.dataTable.defaults, {
2681            language: {
2682                "processing": "<i class='fa fa-refresh fa-spin fa-2x'></i><br />Loading..."
2683            }
2684        });
2685    </script>
2685
2686    
2686<script type='text/javascript'>
2687        var url = 'https://apps.apple.com/us/app/t-l-hanna-athletics/id6748661360';
2688        var regex = /([\d]{10,})/g;
2689        var meta = document.createElement('meta');
2690        meta.setAttribute('name', 'apple-itunes-app');
2691        meta.setAttribute('content', 'app-id=' + url.match(regex));
2692        document.getElementsByTagName('head')[0].appendChild(meta);
2693    </script>
2693
2694    
2694<script type="text/javascript">
2695        $(function () {
2696            $('ul.menu a').bind('click', function (event) {
2697                var $anchor = $(this);
2698
2699                $('html, body').stop().animate({
2700                    scrollTop: $($anchor.attr('href')).offset().top
2701                }, 1500, 'easeInOutExpo');
2702                event.preventDefault();
2703            });
2704        });
2705    </script>
2705
2706    <!-- Quantcast Tag -->
2707    
2707<script type="text/javascript">
2708        window._qevents = window._qevents || [];
2709        (function () {
2710            var elem = document.createElement('script');
2711            elem.src = (document.location.protocol == "https:" ? "https://secure" : "http://edge") + ".quantserve.com/quant.js";
2712            elem.async = true;
2713            elem.type = "text/javascript";
2714            var scpt = document.getElementsByTagName('script')[0];
2715            scpt.parentNode.insertBefore(elem, scpt);
2716        })();
2717        window._qevents.push({
2718            qacct: "p-L8Vz-DsnmdfCj",
2719            uid: "__INSERT_EMAIL_HERE__"
2720        });
2721    </script>
2721
2722    <noscript>
2723        <div style="display:none;">
2724            <img src="//pixel.quantserve.com/pixel/p-L8Vz-DsnmdfCj.gif" border="0" height="1" width="1" alt="Quantcast" />
2725        </div>
2726    </noscript>
2727    <!-- End Quantcast tag -->
2728</body>
2729</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.