Formularz Kontaktowy
<!doctype html>
<html lang="pl">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>hemaju.pl – Formularz kontaktowy (eventy)</title>
<style>
:root{--bg:#0f172a;--card:#111827;--muted:#94a3b8;--text:#e5e7eb;--accent:#60a5fa;--accent-2:#22d3ee;--error:#f87171;--ok:#34d399;--ring:rgba(96,165,250,.45);--radius:16px}
html,body{height:100%}
body{margin:0;background:radial-gradient(1200px 600px at 20% 0%, rgba(96,165,250,.05), transparent 60%), radial-gradient(1200px 600px at 80% 0%, rgba(34,211,238,.05), transparent 60%), var(--bg); color:var(--text); font:16px/1.5 system-ui,-apple-system,Segoe UI,Roboto,Inter,"Helvetica Neue",Arial}
.wrap{max-width:920px;margin:48px auto;padding:0 20px}
.card{background:linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,.02));border:1px solid rgba(148,163,184,.15);border-radius:var(--radius);box-shadow:0 10px 30px rgba(0,0,0,.35)}
header{text-align:center;padding:36px 24px 8px}
header h1{margin:0 0 6px;font-size:clamp(28px,5vw,40px);letter-spacing:.3px}
header p{margin:0 auto;max-width:720px;color:var(--muted)}
form{padding:24px;display:grid;gap:18px}
fieldset{border:none;margin:0;padding:0}
.grid-2{display:grid;gap:16px;grid-template-columns:repeat(2,minmax(0,1fr))}
.grid-3{display:grid;gap:16px;grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:720px){.grid-2,.grid-3{grid-template-columns:1fr}}
label{display:block;font-weight:600;margin:4px 0 6px}
.help{font-size:12px;color:var(--muted);margin-top:4px}
input[type="text"],input[type="email"],input[type="tel"],input[type="number"],input[type="date"],select,textarea{width:100%;background:#0b1220;color:var(--text);border:1px solid rgba(148,163,184,.2);border-radius:12px;padding:12px 14px;outline:none;transition:box-shadow .15s ease,border-color .15s ease}
textarea{min-height:140px;resize:vertical}
input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 4px var(--ring)}
.checkboxes,.radios{display:flex;flex-wrap:wrap;gap:10px 18px}
.chip{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;background:#0b1220;border:1px solid rgba(148,163,184,.2);border-radius:999px}
.chip input{margin:0}
.actions{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:8px}
.consents{display:flex;align-items:start;gap:10px;font-size:14px;color:var(--muted)}
button[type="submit"]{appearance:none;border:none;cursor:pointer;font-weight:700;letter-spacing:.2px;padding:12px 18px;border-radius:12px;background:linear-gradient(90deg,var(--accent),var(--accent-2));color:#0b1220;box-shadow:0 10px 24px rgba(34,211,238,.25)}
button[disabled]{opacity:.6;cursor:not-allowed}
.footnote{color:var(--muted);font-size:13px;text-align:center;padding:12px 20px 24px}
.status{display:none;padding:12px 14px;border-radius:12px}
.status.ok{display:block;background:rgba(52,211,153,.12);border:1px solid rgba(52,211,153,.35)}
.status.err{display:block;background:rgba(248,113,113,.12);border:1px solid rgba(248,113,113,.35)}
.visually-hidden{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px);white-space:nowrap}
</style>
</head>
<body>
<div class="wrap">
<div class="card">
<header>
<h1>Zorganizuj z nami niezapomniany event</h1>
<p>Wypełnij formularz, a zespół HEMAJU skontaktuje się z Tobą, aby doprecyzować szczegóły wydarzenia dla firm, dzieci lub młodzieży.</p>
</header>
<form id="contactForm" method="post" action="/mailer.php">
<!-- STATUS -->
<div id="status" class="status" role="status" aria-live="polite"></div>
<script>
// Pokaż status po powrocie z mailera
(function () {
const params = new URLSearchParams(window.location.search);
const status = document.getElementById('status');
if (params.get('sent') === '1') {
status.className = 'status ok';
status.textContent = 'Dziękujemy! Formularz został wysłany. Skontaktujemy się niebawem.';
// Czyścimy query string, żeby baner nie zostawał po odświeżeniu
if (history.replaceState) history.replaceState(null, '', window.location.pathname);
}
if (params.get('err') === '1') {
status.className = 'status err';
status.textContent = 'Nie udało się wysłać wiadomości. Spróbuj ponownie lub napisz na office@hemaju.co.uk';
if (history.replaceState) history.replaceState(null, '', window.location.pathname);
}
})();
</script>
<!-- 1. DANE KONTAKTOWE -->
<fieldset aria-labelledby="legend-kontakt">
<legend id="legend-kontakt" class="visually-hidden">Dane kontaktowe</legend>
<div class="grid-2">
<div>
<label for="name">Imię i nazwisko <span aria-hidden="true">*</span></label>
<input id="name" name="name" type="text" autocomplete="name" required />
</div>
<div>
<label for="company">Nazwa firmy / instytucji</label>
<input id="company" name="company" type="text" autocomplete="organization" />
</div>
</div>
<div class="grid-2">
<div>
<label for="email">E-mail <span aria-hidden="true">*</span></label>
<input id="email" name="email" type="email" inputmode="email" autocomplete="email" required />
</div>
<div>
<label for="phone">Telefon <span aria-hidden="true">*</span></label>
<input id="phone" name="phone" type="tel" inputmode="tel" autocomplete="tel" required />
</div>
</div>
</fieldset>
<!-- 2. RODZAJ WYDARZENIA & GRUPA DOCELOWA -->
<fieldset aria-labelledby="legend-rodzaj">
<legend id="legend-rodzaj" class="visually-hidden">Rodzaj wydarzenia</legend>
<div class="grid-2">
<div>
<label for="eventType">Rodzaj wydarzenia <span aria-hidden="true">*</span></label>
<select id="eventType" name="eventType" required>
<option value="" selected disabled>Wybierz…</option>
<option>Event firmowy</option>
<option>Event dla dzieci</option>
<option>Event dla młodzieży</option>
<option>Warsztaty / animacje tematyczne</option>
<option>Piknik rodzinny / integracyjny</option>
<option value="inny">Inny</option>
</select>
<input id="eventTypeOther" name="eventTypeOther" class="visually-hidden" type="text" placeholder="Opisz inny rodzaj wydarzenia" aria-hidden="true" />
</div>
<div>
<label>Grupa docelowa</label>
<div class="checkboxes" role="group" aria-label="Grupa docelowa">
<label class="chip"><input type="checkbox" name="audience[]" value="dzieci" /> Dzieci</label>
<label class="chip"><input type="checkbox" name="audience[]" value="mlodziez" /> Młodzież</label>
<label class="chip"><input type="checkbox" name="audience[]" value="dorosli" /> Dorośli</label>
</div>
<p class="help">Możesz zaznaczyć więcej niż jedną opcję.</p>
</div>
</div>
</fieldset>
<!-- 3. LICZBA UCZESTNIKÓW -->
<fieldset aria-labelledby="legend-uczestnicy">
<legend id="legend-uczestnicy" class="visually-hidden">Liczba uczestników</legend>
<div class="grid-3">
<div>
<label for="kids">Dzieci</label>
<input id="kids" name="kids" type="number" min="0" placeholder="np. 50" />
</div>
<div>
<label for="teens">Młodzież</label>
<input id="teens" name="teens" type="number" min="0" placeholder="np. 30" />
</div>
<div>
<label for="adults">Dorośli</label>
<input id="adults" name="adults" type="number" min="0" placeholder="np. 20" />
</div>
</div>
</fieldset>
<!-- 4. TERMIN -->
<fieldset aria-labelledby="legend-termin">
<legend id="legend-termin" class="visually-hidden">Termin wydarzenia</legend>
<div class="grid-2">
<div>
<label for="startDate">Data rozpoczęcia <span aria-hidden="true">*</span></label>
<input id="startDate" name="startDate" type="date" required />
</div>
<div>
<label for="endDate">Data zakończenia <small class="help">(opcjonalnie)</small></label>
<input id="endDate" name="endDate" type="date" />
</div>
</div>
</fieldset>
<!-- 5. MIEJSCE -->
<fieldset aria-labelledby="legend-miejsce">
<legend id="legend-miejsce" class="visually-hidden">Miejsce wydarzenia</legend>
<div class="grid-2">
<div>
<label for="location">Miejsce wydarzenia</label>
<input id="location" name="location" type="text" placeholder="np. Warszawa, siedziba firmy / szkoła / park" />
</div>
<div>
<label>Charakter miejsca</label>
<div class="radios" role="group" aria-label="Charakter miejsca">
<label class="chip"><input type="radio" name="venue" value="wewnatrz" /> Wewnątrz</label>
<label class="chip"><input type="radio" name="venue" value="na_zewnatrz" /> Na zewnątrz</label>
<label class="chip"><input type="radio" name="venue" value="nie_wiem" /> Jeszcze nie wiem</label>
</div>
</div>
</div>
</fieldset>
<!-- 6. BUDŻET -->
<fieldset aria-labelledby="legend-budzet">
<legend id="legend-budzet" class="visually-hidden">Budżet</legend>
<div class="grid-2">
<div>
<label for="budget">Budżet orientacyjny</label>
<select id="budget" name="budget">
<option value="" selected>Nie podaję</option>
<option>do 5 000 zł</option>
<option>5 000 – 10 000 zł</option>
<option>10 000 – 20 000 zł</option>
<option>powyżej 20 000 zł</option>
</select>
</div>
<div>
<label for="deadline">Termin na ofertę</label>
<input id="deadline" name="deadline" type="date" />
<p class="help">Jeśli potrzebujesz oferty do konkretnej daty.</p>
</div>
</div>
</fieldset>
<!-- 7. OPIS -->
<fieldset aria-labelledby="legend-opis">
<legend id="legend-opis" class="visually-hidden">Opis wydarzenia</legend>
<label for="message">Opis wydarzenia / dodatkowe informacje</label>
<textarea id="message" name="message" maxlength="1500" placeholder="Opisz krótko oczekiwania, temat przewodni, cele wydarzenia, potrzeby techniczne, itp."></textarea>
<div class="help"><span id="charCount">0</span>/1500 znaków</div>
</fieldset>
<!-- 8. ZGODY + SUBMIT -->
<fieldset aria-labelledby="legend-zgody">
<legend id="legend-zgody" class="visually-hidden">Zgody</legend>
<div class="actions">
<label class="consents">
<input id="consent" name="consent" type="checkbox" required />
<span>Wyrażam zgodę na przetwarzanie danych osobowych zgodnie z <a href="/polityka-prywatnosci/" target="_blank" rel="noopener">polityką prywatności hemaju.pl</a>. *</span>
</label>
<button id="submitBtn" type="submit">Wyślij zapytanie</button>
</div>
<p class="help">* Pole wymagane. Chronimy Twoje dane — używamy ich wyłącznie do kontaktu w sprawie zapytania.</p>
</fieldset>
<!-- Anti-spam honeypot -->
<div aria-hidden="true" class="visually-hidden">
<label for="website">Jeśli widzisz to pole, nie wypełniaj go</label>
<input id="website" name="website" type="text" tabindex="-1" autocomplete="off" />
</div>
<!-- domyślni odbiorcy -->
<input type="hidden" name="to" value="office@hemaju.co.uk,bok@hemaju.pl" />
</form>
<div class="footnote">HEMAJU – przygotowujemy i prowadzimy eventy biznesowe dla dzieci i młodzieży. Przykładowe realizacje: Movement Studio – ponad 600 dzieci (ostatnie 3 lata).</div>
</div>
</div>
<script>
// Pokazanie pola "Inny"
const eventType=document.getElementById('eventType');
const eventTypeOther=document.getElementById('eventTypeOther');
eventType.addEventListener('change',()=>{const isOther=eventType.value==='inny';
eventTypeOther.classList.toggle('visually-hidden',!isOther);
eventTypeOther.toggleAttribute('aria-hidden',!isOther);
eventTypeOther.required=isOther; if(isOther)eventTypeOther.focus();
});
// Licznik znaków
const message=document.getElementById('message'); const charCount=document.getElementById('charCount');
message.addEventListener('input',()=>{charCount.textContent=message.value.length;});
</script>
</body>
</html>