// Into the Wild — Itinerary, Map, Gallery const { useState: useStateMid } = React; function Itinerary() { const [open, setOpen] = useState(0); const days = [ { n: "01", title: "Arrivals & Circle", loc: "Pontedeume · Teambuilding", phase: "I · Teambuilding", tags: ["Arrivals", "Icebreakers", "Kit check"], body: "Eighteen strangers pile off planes, trains and a rickety bus from Santiago. We meet at a rural albergue on the edge of the forest, share a stew, hand out headlamps and walk a short opening ritual down to the estuary.", stats: [{k:"Distance", v:"0 km"}, {k:"Sleep", v:"Das Nest"}, {k:"Dinner", v:"Caldo galego"}] }, { n: "02", title: "Names, Knots, Nerves", loc: "Caaveiro basecamp · Teambuilding", phase: "I · Teambuilding", tags: ["Cooperative games", "Roles"], body: "A full day of non-formal facilitation. We work through name-learning games, trust exercises, cooking rotations, and the contract the group will live by for the rest of the week. Everyone leaves with a task and a partner.", stats: [{k:"Sessions", v:"4"}, {k:"Groups of", v:"3"}, {k:"Sleep", v:"Albergue"}] }, { n: "03", title: "Into the Fragas", loc: "River Eume · Teambuilding", phase: "I · Teambuilding", tags: ["First hike", "Peer learning"], body: "Our first proper walk into the forest canopy. Skill-share in clearings — map-reading, fire-lighting, conflict transformation, singing badly in six languages. Return to the albergue for a cultural-exchange dinner: one dish per country.", stats: [{k:"Distance", v:"9 km"}, {k:"Workshops", v:"3"}, {k:"Plates", v:"54"}] }, { n: "04", title: "Deep Forest", loc: "Caaveiro → Monfero · Experiential", phase: "II · Experiential", tags: ["Bivouac", "Navigation"], body: "Phase two begins. We leave the albergue with everything on our backs and cross the Eume valley on foot. You take turns leading with the map. First night out — tarps and hammocks under three-hundred-year-old oaks.", stats: [{k:"Distance", v:"16 km"}, {k:"Ascent", v:"+520m"}, {k:"Sleep", v:"Bivouac"}] }, { n: "05", title: "Silent Morning, Loud Night", loc: "Monfero waterfalls · Experiential", phase: "II · Experiential", tags: ["Solo time", "Wild swim", "Campfire"], body: "Four hours walking without speaking — harder than it sounds. A cold swim under the Cabalar falls. Ends in a circle around the fire where everyone shares one thing the silence said to them. Some cry. It's fine.", stats: [{k:"Distance", v:"12 km"}, {k:"Words", v:"~0"}, {k:"Songs", v:"∞"}] }, { n: "06", title: "Descent & Debrief", loc: "Back to Pontedeume · Reflection", phase: "III · Reflection", tags: ["Youthpass", "Closing"], body: "Off the ridge, into a borrowed farmhouse. We run Youthpass reflection workshops, swap contacts, plan the winter reunion, cry again, then have the best dinner of our lives. Goodbyes at the train station the next morning.", stats: [{k:"Distance", v:"8 km"}, {k:"Youthpass", v:"Signed"}, {k:"Goodbyes", v:"Tearful"}] }, ]; return (
02 Edition 04 · Fragas do Eume · six days in three phases

Three phases.
Six days in one forest.

I Teambuilding (days 1–3) II Experiential adventure (days 4–5) III Reflection (day 6)
); } function RouteMap() { const [hover, setHover] = useState(null); const pins = [ { n: 1, name: "Pontedeume", code: "Start · Estuary", x: 140, y: 470 }, { n: 2, name: "Albergue Caaveiro", code: "Basecamp · Days 1–3", x: 280, y: 380 }, { n: 3, name: "Monastery of Caaveiro", code: "Day 3 · Riverbend", x: 420, y: 320 }, { n: 4, name: "Cabalar Falls", code: "Day 5 · Wild swim", x: 560, y: 230 }, { n: 5, name: "Monfero ridge", code: "Day 4–5 · Bivouac", x: 680, y: 180 }, { n: 6, name: "Farmhouse A Capela", code: "Day 6 · Reflection", x: 780, y: 350 }, ]; const path = "M 140 470 Q 200 430 280 380 Q 360 340 420 320 Q 480 280 560 230 Q 620 200 680 180 Q 740 250 780 350"; return (
03 The Route — one forest, six pinned moments

The Fragas
do Eume.

{/* Grid */} {/* River */} {/* Forest icons */} {[[80,120],[130,260],[50,420],[160,520],[420,80],[580,150],[780,100],[800,260],[860,480],[460,510],[240,480],[520,240]].map(([x,y], i) => )} {/* Compass */} N {/* Route */} {/* Pins */} {pins.map((p) => ( setHover(p.n)} onMouseLeave={() => setHover(null)} style={{cursor:'pointer'}}> {p.name} {p.code.toUpperCase()} ))}
); } // Polaroid placeholder background generator function poloBg(i, label) { const palettes = [ ['#2D4A2B','#4A6B3F','#E8B84C'], ['#7FA9B8','#EFE7D6','#C44A1B'], ['#C44A1B','#E8B84C','#2D4A2B'], ['#1E3320','#8A8577','#EFE7D6'], ['#4A6B3F','#7FA9B8','#FAF5E6'], ['#E8B84C','#C44A1B','#1A1F16'], ]; const [a,b,c] = palettes[i % palettes.length]; const svg = ` // ${label} `; return `url("data:image/svg+xml;utf8,${encodeURIComponent(svg)}")`; } function Gallery() { const photos = [ { label: "Dinner, Day 3", date: "16·07·2025", x: 8, y: 30, r: -7 }, { label: "River crossing", date: "19·07·2025", x: 25, y: 10, r: 4 }, { label: "Marta's song", date: "20·07·2025", x: 42, y: 38, r: -3 }, { label: "The summit push", date: "22·07·2025", x: 58, y: 8, r: 6 }, { label: "Youthpass ritual", date: "24·07·2025", x: 74, y: 32, r: -5 }, { label: "Lac Blanc, 06:04", date: "17·07·2025", x: 90, y: 12, r: 3 }, ]; return (
04 Dispatches — field notes from cohort 03

Twelve days,
six thousand photos.

Here are six of them. Drag the edges, hover to see the back of the card.

{photos.map((p, i) => (
{p.label} {p.date}
))}
); } Object.assign(window, { Itinerary, RouteMap, Gallery });