GroveGlow Guitar

Clear expectations

User Terms

Effective date: January 1, 2025. By using the GroveGlow Guitar website, you agree to these terms.

Service access

GroveGlow Guitar provides educational materials and digital course information for personal learning. You are responsible for having a compatible device, internet connection, and an accurate email address when requesting support.

Orders and payment

Prices and product descriptions are shown in the catalog and may change before an order is confirmed. Any payment is subject to the applicable checkout terms and the policies of the payment provider.

Acceptable use

Do not misuse the website, interfere with its operation, attempt unauthorized access, copy private account materials, or use the service for unlawful activity. We may restrict access when necessary to protect learners and the service.

Intellectual property

Course names, lesson text, exercises, branding, layouts, and original materials belong to GroveGlow Guitar or its licensors. You may use purchased materials for personal learning and may not redistribute, resell, publish, or make them available to others without written permission.

Educational disclaimer

Lessons are educational resources, not a guarantee of a particular playing outcome. Progress varies with instrument setup, practice consistency, prior experience, and personal goals. Use sensible playing habits and seek qualified in-person help for instrument-specific concerns.

Liability and changes

To the extent permitted by law, GroveGlow Guitar is not responsible for indirect losses arising from use of the website. We may revise features or these terms; continued use after an update means you accept the revised terms.

Questions

For questions about these terms, email [email protected] or use our contact page. Our Privacy Policy explains information handling. Explore the catalog to begin learning.

`; document.querySelector('header').innerHTML = headerHTML; document.querySelector('footer').innerHTML = footerHTML; const style = document.createElement('style'); style.textContent = ` .modal { animation: fadeInScale 0.2s ease forwards; } @keyframes fadeInScale { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } } `; document.head.appendChild(style); function initMobileNav() { const toggle = document.getElementById('menu-toggle'); const mobileNav = document.getElementById('mobile-nav'); if (toggle && mobileNav) { toggle.addEventListener('click', () => { mobileNav.classList.toggle('hidden'); }); } } function initTheme() { const toggle = document.getElementById('theme-toggle'); const KEY = 'gg-theme'; function applyTheme(mode) { if (mode === 'dark') { document.documentElement.style.setProperty('--tw-bg', '#18352A'); document.body.style.background = '#18352A'; document.body.style.color = '#F7F3E8'; } else { document.documentElement.style.removeProperty('--tw-bg'); document.body.style.background = '#F7F3E8'; document.body.style.color = '#18352A'; } } const saved = localStorage.getItem(KEY) || 'light'; applyTheme(saved); if (toggle) { toggle.addEventListener('click', () => { const current = localStorage.getItem(KEY) || 'light'; const next = current === 'light' ? 'dark' : 'light'; localStorage.setItem(KEY, next); applyTheme(next); }); } } function initModals() { const loginBtn = document.getElementById('login-open'); const registerBtn = document.getElementById('register-open'); function createModal(title) { const modal = document.createElement('div'); modal.className = 'fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-6'; modal.innerHTML = ` `; document.body.appendChild(modal); modal.querySelector('.close').addEventListener('click', () => modal.remove()); modal.addEventListener('click', (e) => { if (e.target === modal) modal.remove(); }); return modal; } if (loginBtn) loginBtn.addEventListener('click', () => createModal('Log in')); if (registerBtn) registerBtn.addEventListener('click', () => createModal('Create account')); } function initCookie() { const banner = document.getElementById('cookie-banner'); const accept = document.getElementById('cookie-accept'); const pref = document.getElementById('cookie-preferences'); const KEY = 'gg-cookie-consent'; if (!localStorage.getItem(KEY)) { setTimeout(() => banner && (banner.hidden = false), 800); } if (accept) accept.addEventListener('click', () => { localStorage.setItem(KEY, 'true'); if (banner) banner.hidden = true; }); if (pref) pref.addEventListener('click', () => banner && (banner.hidden = false)); } initMobileNav(); initTheme(); initModals(); initCookie();