麻豆原创

MU logo
MU logo
Gratz Field Turf Campaign

Every Pitch Starts Here: Turf for Spartan Baseball

Support the Future of 麻豆原创 Baseball, and help us raise $500,000 to install state-of-the-art turf for Manchester鈥檚 baseball team. Every gift brings us closer to a stronger foundation for Spartan Baseball.

YOUR SUPPORT HAS RAISED
500000
238989

Support Spartan Baseball From the Ground Up

Your support isn鈥檛 just about upgrading a field鈥攊t鈥檚 about transforming opportunities for our student-athletes, our fans, and our community. Here鈥檚 how:

  • Improved training year-round 鈥 consistent practice, no matter the season.

  • More home games 鈥 bringing Spartan baseball back to campus.

  • Fewer rainouts 鈥 reliable scheduling for players and fans alike.

  • Competitive advantage 鈥 a first-class field helps attract and retain talent.

  • Increased safety 鈥 advanced turf reduces injuries and keeps players in the game.

  • Lower maintenance costs 鈥 saving resources for future athletic needs.

  • Community events 鈥 a quality facility that welcomes more guests to Manchester.

MU baseball player gets ready to round third base on Gratz Field

Why Turf Matters

The Challenge Today

Right now, the Spartans average just 12鈥15 home games out of 40 each season. Weather delays and field conditions often force the team on the road, adding travel expenses and taking home-field advantage away from our athletes.

With turf, Manchester can host more games, draw more fans to campus, and create a stronger, more connected experience for the entire Spartan community.

The Vision

Every pitch, every play, every win starts with a strong foundation鈥攁nd that foundation begins with you. By supporting the Gratz Field Turf Campaign, you鈥檙e not only improving a field, you鈥檙e investing in the future of Manchester baseball.

Together, we can build a legacy that current and future student-athletes will carry forward with pride.

Giving Information & Contact

We need to raise $500,000 to make this vision a reality. Your contribution鈥攂ig or small鈥攈elps Spartan Baseball take its next step forward.

Want to learn more? Contact:
Rick Espeset
Director of Athletics & Head Baseball Coach

Subtle_Texture

It’s all made possible by you.

Thank YOUfor Being a Donor

Thank you for standing with our student-athletes. Together, we鈥檒l make Gratz Field a place where Spartan pride shines and memories are made for years to come.

MU pitcher throws baseball as first baseman prepares for the play
Subtle_Texture_gray-invert
exists --- (function ensure40pxInlineEarly() { function set40(el) { el && el.style.setProperty('padding-top', '40px', 'important'); } // If header already parsed, set now; otherwise set as soon as it appears. const hdrNow = document.getElementById(HEADER_ID); if (hdrNow) { set40(hdrNow); return; } new MutationObserver((muts, obs) => { const hdr = document.getElementById(HEADER_ID); if (hdr) { set40(hdr); obs.disconnect(); } }).observe(document.documentElement, { childList: true, subtree: true }); })(); // --- Helpers --- function hideDiviBars() { document.querySelectorAll('.divibars-container').forEach(div => { const content = (div.textContent || '').replace(/\u00A0/g, ' ').trim(); const shouldHide = !content || /all\s*clear/i.test(content) || /test/i.test(content) || /feed\s*has\s*no\s*items\.?/i.test(content); if (shouldHide) div.style.setProperty('display', 'none', 'important'); }); } function isEffectivelyVisible(el) { if (!el || !el.isConnected) return false; const target = el.querySelector('.divibars, .divibars-wrapper, .divibars-content') || el; const cs = getComputedStyle(target); if (cs.display === 'none' || cs.visibility === 'hidden' || target.hidden) return false; if (parseFloat(cs.opacity || '1') < 0.05) return false; if (target.closest('[aria-hidden="true"]')) return false; const rect = target.getBoundingClientRect(); const hasSize = (rect.width > 0 && rect.height > 0) || (target.offsetWidth > 0 && target.offsetHeight > 0); if (!hasSize) return false; const vh = window.innerHeight || document.documentElement.clientHeight; return rect.bottom > 0 && rect.top < vh; } function anyRealBannerVisible() { // A 鈥渞eal鈥 banner = visible AND not empty/test/all-clear/feed-empty return Array.from(document.querySelectorAll(CANDS)).some(el => { if (!isEffectivelyVisible(el)) return false; const txt = (el.textContent || '').replace(/\u00A0/g, ' ').trim(); if (!txt) return false; if (/all\s*clear/i.test(txt) || /test/i.test(txt) || /feed\s*has\s*no\s*items\.?/i.test(txt)) return false; return true; }); } function setForce110(on) { const root = document.documentElement; const was = root.classList.contains('divibar-force-110'); if (!!on === was) return; root.classList.add('divibar-atomic'); root.classList.toggle('divibar-force-110', !!on); // If we鈥檙e NOT forcing 110, clear any stray inline 110 the plugin may add later. if (!on) { const hdr = document.getElementById(HEADER_ID); if (hdr) hdr.style.setProperty('padding-top', '40px', 'important'); } requestAnimationFrame(() => root.classList.remove('divibar-atomic')); } // Debounced 2-frame confirmation to avoid flicker during animations let raf1 = null, raf2 = null; function scheduleRecompute() { if (raf1) return; raf1 = requestAnimationFrame(() => { raf1 = null; hideDiviBars(); const a = anyRealBannerVisible(); raf2 = requestAnimationFrame(() => { raf2 = null; const b = anyRealBannerVisible(); setForce110(a && b); }); }); } // --- Wiring --- document.addEventListener('DOMContentLoaded', scheduleRecompute); window.addEventListener('load', scheduleRecompute); window.addEventListener('resize', () => { cancelAnimationFrame(raf1); raf1 = null; cancelAnimationFrame(raf2); raf2 = null; scheduleRecompute(); }); new MutationObserver(() => scheduleRecompute()).observe(document.documentElement, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class', 'aria-hidden'] }); document.addEventListener('transitionend', e => { if (e.target && e.target.closest(CANDS)) scheduleRecompute(); }); document.addEventListener('animationend', e => { if (e.target && e.target.closest(CANDS)) scheduleRecompute(); }); document.addEventListener('click', function (e) { const btn = e.target && e.target.closest('.divibars-close'); if (!btn) return; setTimeout(() => { const bar = btn.closest('.divibars-container, [class*="divibar"]'); if (bar) bar.style.setProperty('display', 'none', 'important'); scheduleRecompute(); }, 200); }, true); // Initial pass scheduleRecompute(); })();