Our team is here to support you throughout the application process. Fill out the form below and we’ll reply within 2–3 business days.

Our team is here to support you throughout the application process. Use the form below to contact us with questions about eligibility, project fit, budgets, or how to apply. 

Contact Us — The Eeyou EcoFund /* ===== Design tokens ===== */ :root { --ef-forest: #1f4733; /* deep forest green — primary */ --ef-forest-dark: #163524; --ef-forest-soft: #2f6b4e; --ef-gold: #c89a3f; /* warm amber accent */ --ef-gold-soft: #e6c989; --ef-cream: #faf7f2; /* warm off-white background */ --ef-paper: #ffffff; --ef-ink: #1a1f1b; /* near-black text */ --ef-ink-soft: #4a524c; --ef-rule: #d9d3c7; /* subtle warm divider */ --ef-rule-soft: #ece7dc; --ef-error: #9c2b2b; --ef-error-bg: #fbeaea; --ef-success: #2f6b4e; --ef-success-bg: #e7f1ea; --ef-shadow-modal: 0 30px 80px -20px rgba(22, 53, 36, 0.45), 0 10px 25px -10px rgba(22, 53, 36, 0.25); --ef-shadow-focus: 0 0 0 3px rgba(200, 154, 63, 0.35); --ef-radius-sm: 4px; --ef-radius-md: 8px; --ef-radius-lg: 14px; --ef-sans: 'Manrope', system-ui, -apple-system, sans-serif; --ef-serif: 'Fraunces', Georgia, 'Times New Roman', serif; } /* ===== Reset / base (scoped where reasonable) ===== */ * { box-sizing: border-box; } html, body { margin: 0; padding: 0; } body { font-family: var(--ef-sans); color: var(--ef-ink); background: var(--ef-cream); line-height: 1.55; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } /* ===== Demo page (just to show the trigger in context) ===== */ .demo-wrap { max-width: 760px; margin: 0 auto; padding: 72px 24px 120px; } .demo-eyebrow { font-family: var(--ef-sans); text-transform: uppercase; letter-spacing: 0.12em; font-size: 12px; font-weight: 600; color: var(--ef-forest); margin-bottom: 12px; } .demo-wrap h1 { font-family: var(--ef-serif); font-weight: 500; font-size: clamp(32px, 4.5vw, 48px); letter-spacing: -0.01em; line-height: 1.1; margin: 0 0 20px; color: var(--ef-forest-dark); } .demo-wrap p { font-size: 17px; color: var(--ef-ink-soft); max-width: 58ch; margin: 0 0 28px; } /* ===== Trigger button ===== */ .ef-btn-open { display: inline-flex; align-items: center; gap: 10px; padding: 14px 26px; font-family: var(--ef-sans); font-size: 15px; font-weight: 600; letter-spacing: 0.01em; color: var(--ef-paper); background: var(--ef-forest); border: 1px solid var(--ef-forest); border-radius: var(--ef-radius-md); cursor: pointer; transition: background 180ms ease, transform 180ms ease, box-shadow 180ms ease; } .ef-btn-open:hover { background: var(--ef-forest-dark); transform: translateY(-1px); } .ef-btn-open:focus-visible { outline: none; box-shadow: var(--ef-shadow-focus); } .ef-btn-open svg { width: 18px; height: 18px; stroke-width: 2; } /* ===== Modal overlay ===== */ .ef-modal-overlay { position: fixed; inset: 0; background: rgba(22, 53, 36, 0.55); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); display: none; align-items: flex-start; justify-content: center; padding: 24px 16px; overflow-y: auto; z-index: 1000; opacity: 0; transition: opacity 220ms ease; } .ef-modal-overlay.is-open { display: flex; opacity: 1; } /* ===== Modal panel ===== */ .ef-modal { width: 100%; max-width: 680px; background: var(--ef-paper); border-radius: var(--ef-radius-lg); box-shadow: var(--ef-shadow-modal); position: relative; margin: auto; overflow: hidden; transform: translateY(12px) scale(0.98); transition: transform 260ms cubic-bezier(0.2, 0.9, 0.3, 1.1); } .ef-modal-overlay.is-open .ef-modal { transform: translateY(0) scale(1); } /* Decorative top accent bar */ .ef-modal::before { content: ''; display: block; height: 5px; background: linear-gradient(90deg, var(--ef-forest) 0%, var(--ef-forest-soft) 45%, var(--ef-gold) 100%); } /* ===== Modal header ===== */ .ef-modal-header { padding: 28px 32px 20px; border-bottom: 1px solid var(--ef-rule-soft); position: relative; } .ef-modal-eyebrow { font-size: 11px; text-transform: uppercase; letter-spacing: 0.14em; font-weight: 600; color: var(--ef-forest-soft); margin-bottom: 8px; } .ef-modal-title { font-family: var(--ef-serif); font-weight: 500; font-size: 26px; line-height: 1.2; letter-spacing: -0.01em; color: var(--ef-forest-dark); margin: 0 0 8px; } .ef-modal-subtitle { margin: 0; font-size: 14.5px; color: var(--ef-ink-soft); max-width: 55ch; } .ef-modal-close { position: absolute; top: 18px; right: 18px; width: 36px; height: 36px; border: none; background: transparent; color: var(--ef-ink-soft); cursor: pointer; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; transition: background 160ms ease, color 160ms ease; } .ef-modal-close:hover { background: var(--ef-rule-soft); color: var(--ef-ink); } .ef-modal-close:focus-visible { outline: none; box-shadow: var(--ef-shadow-focus); } .ef-modal-close svg { width: 20px; height: 20px; } /* ===== Form body ===== */ .ef-form { padding: 24px 32px 8px; } .ef-fieldset { border: none; padding: 0; margin: 0 0 20px; } .ef-legend { font-family: var(--ef-serif); font-weight: 600; font-size: 15px; color: var(--ef-forest-dark); text-transform: uppercase; letter-spacing: 0.08em; padding: 0 0 8px; margin: 0 0 14px; border-bottom: 1px solid var(--ef-rule); width: 100%; } .ef-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px 16px; margin-bottom: 14px; } .ef-row--single { grid-template-columns: 1fr; } .ef-field { display: flex; flex-direction: column; gap: 6px; } .ef-field label { font-size: 13px; font-weight: 600; color: var(--ef-ink); } .ef-field .ef-hint { font-size: 12.5px; color: var(--ef-ink-soft); font-weight: 400; } .ef-req { color: var(--ef-error); margin-left: 2px; } .ef-input, .ef-select, .ef-textarea { font-family: var(--ef-sans); font-size: 15px; color: var(--ef-ink); padding: 11px 13px; background: var(--ef-paper); border: 1px solid var(--ef-rule); border-radius: var(--ef-radius-sm); transition: border-color 150ms ease, box-shadow 150ms ease, background 150ms ease; width: 100%; } .ef-input::placeholder, .ef-textarea::placeholder { color: #a3a39a; } .ef-input:hover, .ef-select:hover, .ef-textarea:hover { border-color: var(--ef-forest-soft); } .ef-input:focus, .ef-select:focus, .ef-textarea:focus { outline: none; border-color: var(--ef-forest); box-shadow: var(--ef-shadow-focus); } .ef-textarea { resize: vertical; min-height: 120px; } .ef-select { appearance: none; background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3e%3cpath d='M1 1l5 5 5-5' stroke='%231f4733' stroke-width='2' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3e%3c/svg%3e"); background-repeat: no-repeat; background-position: right 14px center; padding-right: 36px; } /* Error state */ .ef-field.has-error .ef-input, .ef-field.has-error .ef-select, .ef-field.has-error .ef-textarea { border-color: var(--ef-error); background: var(--ef-error-bg); } .ef-error-msg { font-size: 12.5px; color: var(--ef-error); font-weight: 500; display: none; align-items: center; gap: 6px; } .ef-field.has-error .ef-error-msg { display: flex; } .ef-error-msg svg { width: 14px; height: 14px; flex-shrink: 0; } /* Honeypot (hidden from humans) */ .ef-honeypot { position: absolute !important; left: -9999px !important; top: -9999px !important; width: 1px; height: 1px; opacity: 0; pointer-events: none; } /* ===== Captcha block ===== */ .ef-captcha { background: var(--ef-cream); border: 1px solid var(--ef-rule); border-radius: var(--ef-radius-md); padding: 16px 16px 14px; margin-top: 4px; } .ef-captcha-label { font-size: 13px; font-weight: 600; color: var(--ef-ink); margin-bottom: 8px; display: flex; align-items: center; gap: 8px; } .ef-captcha-label svg { width: 15px; height: 15px; color: var(--ef-forest); } .ef-captcha-body { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; } .ef-captcha-challenge { font-family: var(--ef-serif); font-weight: 600; font-size: 18px; color: var(--ef-forest-dark); background: var(--ef-paper); border: 1px dashed var(--ef-forest-soft); padding: 10px 18px; border-radius: var(--ef-radius-sm); letter-spacing: 0.04em; user-select: none; min-width: 140px; text-align: center; } .ef-captcha-input { flex: 1; min-width: 120px; max-width: 180px; } .ef-captcha-refresh { border: 1px solid var(--ef-rule); background: var(--ef-paper); color: var(--ef-forest); width: 40px; height: 40px; border-radius: var(--ef-radius-sm); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; transition: background 150ms ease, border-color 150ms ease; } .ef-captcha-refresh:hover { background: var(--ef-rule-soft); border-color: var(--ef-forest-soft); } .ef-captcha-refresh:focus-visible { outline: none; box-shadow: var(--ef-shadow-focus); } .ef-captcha-refresh svg { width: 16px; height: 16px; } /* ===== Modal footer ===== */ .ef-modal-footer { padding: 18px 32px 24px; border-top: 1px solid var(--ef-rule-soft); background: var(--ef-cream); display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; } .ef-footer-note { font-size: 12.5px; color: var(--ef-ink-soft); flex: 1 1 260px; } .ef-footer-actions { display: flex; gap: 10px; } .ef-btn { font-family: var(--ef-sans); font-size: 14.5px; font-weight: 600; padding: 12px 22px; border-radius: var(--ef-radius-md); cursor: pointer; transition: background 160ms ease, border-color 160ms ease, color 160ms ease, transform 160ms ease; border: 1px solid transparent; } .ef-btn--ghost { background: transparent; color: var(--ef-ink-soft); border-color: var(--ef-rule); } .ef-btn--ghost:hover { color: var(--ef-ink); border-color: var(--ef-forest-soft); } .ef-btn--primary { background: var(--ef-forest); color: var(--ef-paper); border-color: var(--ef-forest); display: inline-flex; align-items: center; gap: 8px; } .ef-btn--primary:hover { background: var(--ef-forest-dark); transform: translateY(-1px); } .ef-btn--primary:disabled { opacity: 0.55; cursor: not-allowed; transform: none; } .ef-btn:focus-visible { outline: none; box-shadow: var(--ef-shadow-focus); } .ef-btn svg { width: 16px; height: 16px; } /* ===== Success state ===== */ .ef-success { display: none; padding: 48px 32px 40px; text-align: center; } .ef-success.is-visible { display: block; } .ef-success-icon { width: 64px; height: 64px; margin: 0 auto 20px; background: var(--ef-success-bg); border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; color: var(--ef-success); } .ef-success-icon svg { width: 32px; height: 32px; stroke-width: 2.5; } .ef-success h3 { font-family: var(--ef-serif); font-weight: 500; font-size: 24px; color: var(--ef-forest-dark); margin: 0 0 10px; } .ef-success p { color: var(--ef-ink-soft); margin: 0 auto 28px; max-width: 40ch; font-size: 15px; } /* ===== Form-level error banner ===== */ .ef-form-error { display: none; margin: 0 32px 16px; padding: 12px 14px; background: var(--ef-error-bg); border: 1px solid var(--ef-error); border-radius: var(--ef-radius-sm); color: var(--ef-error); font-size: 13.5px; font-weight: 500; align-items: flex-start; gap: 10px; } .ef-form-error.is-visible { display: flex; } .ef-form-error svg { width: 18px; height: 18px; flex-shrink: 0; margin-top: 1px; } /* ===== Responsive ===== */ @media (max-width: 560px) { .ef-modal-header { padding: 24px 20px 18px; } .ef-form { padding: 20px 20px 8px; } .ef-modal-footer { padding: 16px 20px 20px; } .ef-row { grid-template-columns: 1fr; } .ef-modal-title { font-size: 22px; } .ef-captcha-body { flex-direction: column; align-items: stretch; } .ef-captcha-challenge { width: 100%; } .ef-captcha-input { max-width: none; } .ef-captcha-refresh { align-self: flex-end; } } /* Reduced motion */ @media (prefers-reduced-motion: reduce) { .ef-modal-overlay, .ef-modal, .ef-btn, .ef-btn-open { transition: none !important; } .ef-modal { transform: none !important; } } /* Lock scroll when modal open */ body.ef-no-scroll { overflow: hidden; }
The Eeyou EcoFund

Contact & FAQ

Our team is here to support you throughout the application process. Click below to contact us with questions about eligibility, project fit, budgets, or how to apply. We’ll reply within 2–3 business days.

(function () { 'use strict'; // ==== Elements ==== const overlay = document.getElementById('ef-modal-overlay'); const form = document.getElementById('ef-contact-form'); const openBtns = document.querySelectorAll('[data-ef-open]'); const closeBtns = document.querySelectorAll('[data-ef-close]'); const successPanel = document.getElementById('ef-success'); const modalHeader = document.querySelector('.ef-modal-header'); const modalFooter = document.querySelector('.ef-modal-footer'); const formErrorBanner = document.getElementById('ef-form-error'); const formErrorMsg = document.getElementById('ef-form-error-msg'); // Captcha const captchaChallenge = document.getElementById('ef-captcha-challenge'); const captchaAnswer = document.getElementById('ef-captcha-answer'); const captchaRefresh = document.getElementById('ef-captcha-refresh'); let captchaExpected = null; // Timing (bot-detection: form shouldn't be submitted near-instantly) let formOpenedAt = 0; const MIN_FORM_TIME_MS = 2500; // 2.5s is an easy floor for real humans // ==== Captcha: generate a simple math challenge ==== function generateCaptcha() { const operations = [ { symbol: '+', fn: (a, b) => a + b }, { symbol: '−', fn: (a, b) => a - b }, // en-dash minus to avoid odd rendering { symbol: '×', fn: (a, b) => a * b } ]; const op = operations[Math.floor(Math.random() * operations.length)]; let a, b; if (op.symbol === '×') { a = Math.floor(Math.random() * 6) + 2; // 2–7 b = Math.floor(Math.random() * 6) + 2; } else if (op.symbol === '−') { a = Math.floor(Math.random() * 10) + 6; // 6–15 b = Math.floor(Math.random() * 5) + 1; // 1–5 (keep positive) } else { a = Math.floor(Math.random() * 9) + 2; // 2–10 b = Math.floor(Math.random() * 9) + 2; } captchaExpected = op.fn(a, b); // Use actual arithmetic symbol the operator selected const asciiSymbol = op.symbol === '−' ? '−' : op.symbol; captchaChallenge.textContent = `${a} ${asciiSymbol} ${b} = ?`; captchaAnswer.value = ''; } captchaRefresh.addEventListener('click', () => { generateCaptcha(); captchaAnswer.focus(); }); // ==== Modal open/close ==== let lastFocusedEl = null; function openModal() { lastFocusedEl = document.activeElement; overlay.classList.add('is-open'); document.body.classList.add('ef-no-scroll'); generateCaptcha(); formOpenedAt = Date.now(); // Reset success state, show form successPanel.classList.remove('is-visible'); modalHeader.style.display = ''; form.style.display = ''; modalFooter.style.display = ''; // Focus first field setTimeout(() => { const firstField = document.getElementById('ef-first-name'); if (firstField) firstField.focus(); }, 80); } function closeModal() { overlay.classList.remove('is-open'); document.body.classList.remove('ef-no-scroll'); form.reset(); clearAllErrors(); formErrorBanner.classList.remove('is-visible'); if (lastFocusedEl && lastFocusedEl.focus) lastFocusedEl.focus(); } openBtns.forEach(btn => btn.addEventListener('click', openModal)); closeBtns.forEach(btn => btn.addEventListener('click', closeModal)); // Click outside overlay.addEventListener('click', (e) => { if (e.target === overlay) closeModal(); }); // Escape key document.addEventListener('keydown', (e) => { if (e.key === 'Escape' && overlay.classList.contains('is-open')) closeModal(); }); // Focus trap overlay.addEventListener('keydown', (e) => { if (e.key !== 'Tab' || !overlay.classList.contains('is-open')) return; const focusable = overlay.querySelectorAll( 'button:not([disabled]), input:not([disabled]):not([type="hidden"]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])' ); const visible = Array.from(focusable).filter(el => { return el.offsetParent !== null || el === document.activeElement; }); if (visible.length === 0) return; const first = visible[0]; const last = visible[visible.length - 1]; if (e.shiftKey && document.activeElement === first) { e.preventDefault(); last.focus(); } else if (!e.shiftKey && document.activeElement === last) { e.preventDefault(); first.focus(); } }); // ==== Validation ==== function setError(fieldId, isError) { const field = document.getElementById(fieldId).closest('.ef-field'); if (!field) return; field.classList.toggle('has-error', isError); } function clearAllErrors() { document.querySelectorAll('.ef-field.has-error').forEach(f => f.classList.remove('has-error')); } function isValidEmail(email) { return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email); } function validate() { clearAllErrors(); let valid = true; let firstErrorField = null; const firstName = document.getElementById('ef-first-name').value.trim(); if (!firstName) { setError('ef-first-name', true); valid = false; firstErrorField ||= 'ef-first-name'; } const lastName = document.getElementById('ef-last-name').value.trim(); if (!lastName) { setError('ef-last-name', true); valid = false; firstErrorField ||= 'ef-last-name'; } const email = document.getElementById('ef-email').value.trim(); if (!email || !isValidEmail(email)) { setError('ef-email', true); valid = false; firstErrorField ||= 'ef-email'; } const emailConfirm = document.getElementById('ef-email-confirm').value.trim(); if (!emailConfirm || emailConfirm.toLowerCase() !== email.toLowerCase()) { setError('ef-email-confirm', true); valid = false; firstErrorField ||= 'ef-email-confirm'; } const comments = document.getElementById('ef-comments').value.trim(); if (!comments || comments.length < 5) { setError('ef-comments', true); valid = false; firstErrorField ||= 'ef-comments'; } // Captcha const answerRaw = captchaAnswer.value.trim(); const answer = parseInt(answerRaw, 10); if (isNaN(answer) || answer !== captchaExpected) { setError('ef-captcha-answer', true); valid = false; firstErrorField ||= 'ef-captcha-answer'; } return { valid, firstErrorField }; } // ==== Submission ==== form.addEventListener('submit', function (e) { e.preventDefault(); formErrorBanner.classList.remove('is-visible'); // Honeypot const honeypot = document.getElementById('ef-website').value; if (honeypot) { // Silently "succeed" so bots don't retry, but don't actually send console.warn('Honeypot triggered — submission blocked.'); showSuccess(); return; } // Time check const elapsed = Date.now() - formOpenedAt; if (elapsed r.json()) // .then(() => showSuccess()) // .catch(() => { // formErrorMsg.textContent = 'Something went wrong. Please try again.'; // formErrorBanner.classList.add('is-visible'); // submitBtn.disabled = false; // submitText.textContent = 'Send message'; // }); // --------------------------------------------------------------- // Demo: fake a network delay, then show success setTimeout(() => { showSuccess(); submitBtn.disabled = false; submitText.textContent = 'Send message'; }, 900); }); function showSuccess() { modalHeader.style.display = 'none'; form.style.display = 'none'; modalFooter.style.display = 'none'; successPanel.classList.add('is-visible'); } // Clear individual errors as user types ['ef-first-name','ef-last-name','ef-email','ef-email-confirm','ef-comments','ef-captcha-answer'] .forEach(id => { const el = document.getElementById(id); if (el) { el.addEventListener('input', () => { el.closest('.ef-field')?.classList.remove('has-error'); }); } }); })();

Frequently Asked Questions (FAQ)

Have questions about funding, the application process or other information related to the Eeyou EcoFund? We have provided answers to some frequently asked questions below.