Which Savannah Ghost Are You?

Savannah has a way of leaving an impression. Some people feel drawn to its quiet squares, others to its restless streets, and a few to places they probably should not linger too long.

This short quiz explores the moods, memories, and shadows that define Savannah after dark. Answer a few questions and discover which Savannah ghost your spirit most closely resembles, then decide whether you are ready to experience the city’s haunted side for real.

No jump scares. Just history, atmosphere, and a little self discovery.

Leave your answer in the comments and share with your friends!

Which Savannah Ghost Are You?

Savannah is a city where the past does not stay quiet. Answer the questions below to discover which Savannah ghost your soul most closely resembles.

Question 1 of 7

Tip: Pick the answer that feels most like you, not the one you think you should pick.

`; stage.querySelectorAll('input[type="radio"]').forEach(input => { input.addEventListener('change', () => { state.picks[state.index] = input.value; btnNext.disabled = !canGoNext(); updateProgress(); }); }); btnBack.disabled = (state.index === 0); btnNext.textContent = (state.index === total - 1) ? 'See Results' : 'Next'; btnNext.disabled = !canGoNext(); updateProgress(); } function tally(){ const counts = { A:0, B:0, C:0, D:0, E:0 }; state.picks.forEach(k => { if (k && (k in counts)) counts[k] += 1; }); const max = Math.max(...Object.values(counts)); const tied = Object.keys(counts).filter(k => counts[k] === max); if (tied.length === 1) return tied[0]; for (const pick of state.picks) { if (tied.includes(pick)) return pick; } return tied[0]; } function buildSharePayload(resultTitle){ const pageUrl = window.location.href.split('#')[0]; const text = `I got "${resultTitle}" in the Which Savannah Ghost Are You? quiz. What did you get?`; return { pageUrl, text }; } function openPopup(url){ const w = 620, h = 520; const y = window.top.outerHeight / 2 + window.top.screenY - (h / 2); const x = window.top.outerWidth / 2 + window.top.screenX - (w / 2); window.open(url, 'dgtShare', `noopener,noreferrer,width=${w},height=${h},left=${x},top=${y}`); } async function copyText(text){ try { await navigator.clipboard.writeText(text); return true; } catch (e) { try { const tmp = document.createElement('textarea'); tmp.value = text; document.body.appendChild(tmp); tmp.select(); document.execCommand('copy'); document.body.removeChild(tmp); return true; } catch (err) { return false; } } } function renderResults(){ const winner = tally(); const res = QUIZ.results[winner]; const payload = buildSharePayload(res.title); const fbUrl = `https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(payload.pageUrl)}&quote=${encodeURIComponent(payload.text)}`; const xUrl = `https://twitter.com/intent/tweet?text=${encodeURIComponent(payload.text)}&url=${encodeURIComponent(payload.pageUrl)}`; stage.innerHTML = `

${escapeHtml(res.title)}

${escapeHtml(res.text)}

Share your result

If Facebook does not paste your result automatically, tap Copy Result first, then paste into the post.

Your spirit belongs to Savannah.

The streets know you now. Whether you walk them with a guide or alone after dark is entirely up to you.

`; const focusTarget = stage.querySelector('.dgt-result'); if (focusTarget) focusTarget.focus(); // Wire share + copy stage.querySelectorAll('.dgt-share-btn').forEach(btn => { btn.addEventListener('click', async () => { const type = btn.getAttribute('data-share'); if (type === 'facebook') openPopup(fbUrl); if (type === 'x') openPopup(xUrl); if (type === 'copy') { const ok = await copyText(payload.text + " " + payload.pageUrl); const prev = btn.textContent; btn.textContent = ok ? "Copied" : "Copy blocked"; setTimeout(() => (btn.textContent = prev), 1300); } }); }); const bottomReset = stage.querySelector('.dgt-quiz-reset-bottom'); if (bottomReset) bottomReset.addEventListener('click', resetQuiz); btnBack.disabled = true; btnNext.disabled = true; progressEl.setAttribute('aria-valuenow', '100'); progressBarEl.style.width = '100%'; stepCurrentEl.textContent = String(total); } function goNext(){ if (!canGoNext()) return; if (state.index === total - 1) { renderResults(); return; } state.index += 1; renderQuestion(); } function goBack(){ if (state.index === 0) return; state.index -= 1; renderQuestion(); } function resetQuiz(){ state.index = 0; state.picks = Array(total).fill(null); btnBack.disabled = true; btnNext.disabled = true; btnNext.textContent = 'Next'; progressEl.setAttribute('aria-valuenow', '0'); progressBarEl.style.width = '0%'; stepCurrentEl.textContent = '1'; renderQuestion(); } btnNext.addEventListener('click', goNext); btnBack.addEventListener('click', goBack); btnResetTop.addEventListener('click', resetQuiz); renderQuestion(); })();