Travel holds a dear place in my heart. It is the medium through which I seek connection, deeper understandings and meaning. I have been incredibly fortunate to travel as extensively as I have and am profoundly thankful for these opportunities. It is my hope that I can continue to travel far and wide in the coming years. Click the map below to see where I’ve traveled so far.
.map-container {
position: relative;
width: 100%;
max-width: 100%;
height: auto;
aspect-ratio: 1009.6727 / 665.96301;
overflow: hidden;
}
.map-container svg {
width: 100%;
height: auto;
display: block;
}
svg {
width: 100%;
height: auto;
max-width: 100%;
display: block;
}
.tooltip {
position: absolute;
padding: 8px 12px;
background: rgba(0, 0, 0, 0.8);
color: white;
border-radius: 4px;
font-size: 14px;
pointer-events: none;
opacity: 0;
transition: opacity 0.3s;
z-index: 100;
}
.visited {
cursor: pointer;
transition: fill 0.3s, opacity 0.3s;
}
.visited:hover {
opacity: 0.8;
}
.CA { fill: #5e81ac; }
.MX { fill: #bf616a; }
.CR { fill: #a3be8c; }
.DE { fill: #ebcb8b; }
.NL { fill: #b48ead; }
.IE { fill: #a3be8c; }
.TR { fill: #d08770; }
.JP { fill: #81a1c1; }
.TW { fill: #8fbcbb; }
.AU { fill: #d08770; }
document.addEventListener(‘DOMContentLoaded’, function() {
const tooltip = document.getElementById(‘tooltip’);
const visitedCountries = {
‘CA’: ‘Canada’,
‘MX’: ‘Mexico’,
‘CR’: ‘Costa Rica’,
‘DE’: ‘Germany’,
‘NL’: ‘Netherlands’,
‘IE’: ‘Ireland’,
‘TR’: ‘Turkey’, // Adjust based on your SVG ID
‘JP’: ‘Japan’,
‘TW’: ‘Taiwan’,
‘AU’: ‘Australia’
};
// Apply colors and interactivity to visited countries
for (const [countryId, countryName] of Object.entries(visitedCountries)) {
const countryElement = document.getElementById(countryId);
if (countryElement) {
// Add classes
countryElement.classList.add(‘visited’);
countryElement.classList.add(countryId.replace(‘_’, ‘-‘));
// Add event listeners
countryElement.addEventListener(‘mouseover’, function(e) {
tooltip.textContent = countryName;
tooltip.style.left = `${e.pageX + 10}px`;
tooltip.style.top = `${e.pageY + 10}px`;
tooltip.style.opacity = 1;
});
countryElement.addEventListener(‘mouseout’, function() {
tooltip.style.opacity = 0;
});
countryElement.addEventListener(‘click’, function() {
const infoId = `${countryId.replace(‘_’, ‘-‘)}-info`;
const infoElement = document.getElementById(infoId);
if (infoElement) {
infoElement.scrollIntoView({ behavior: ‘smooth’ });
}
});
countryElement.addEventListener(‘mousemove’, function(e) {
tooltip.style.left = `${e.pageX + 10}px`;
tooltip.style.top = `${e.pageY + 10}px`;
});
}
}
});