// Prototype data — extended "takken" with detail-page content, plus icons + helpers.
// Self-contained for the Beweging prototype.
(function () {
  window.PROTO = window.PROTO || {};

  window.PROTO.PROGRAMS = [
    {
      key: "hyrox",
      name: "HYROX",
      tag: "Functionele uithouding",
      blurb: "De wereldwijde fitness-race — hier te trainen. Hardlopen afgewisseld met functionele workouts.",
      accent: "#E8590C", accentSoft: "#FFE8D6", glyph: "race", img: "1552674605-db6ffd4facb5",
      intro: "HYROX is dé fitness-race van het moment: 8 keer 1 km hardlopen, afgewisseld met 8 functionele workouts. Wij trainen je er gericht naartoe — of je nu je eerste race loopt of je tijd wil verpulveren.",
      forWho: "Voor wie van meetbare progressie houdt en een doel voor ogen wil. Beginner tot gevorderd.",
      expect: ["Run-fundamenten & pacing", "Sled push & pull, wall balls, burpees", "Roeien, ski-erg en farmer's carry", "Race-simulaties richting wedstrijd"],
      session: { duur: "60 min", intensiteit: 5, niveau: "Alle niveaus" },
      schedule: [
        { day: "Ma", time: "19:30" }, { day: "Wo", time: "06:30" },
        { day: "Wo", time: "19:30" }, { day: "Za", time: "09:00" },
      ],
      coach: "David Roovers",
    },
    {
      key: "fit2fight",
      name: "Fit2Fight",
      tag: "Circuit & HIIT",
      blurb: "Onze oorsprong. Een afwisselend circuit met het DNA van de vechtsport — zonder verplicht sparren.",
      accent: "#E03131", accentSoft: "#FFE3E3", glyph: "bolt", img: "1549719386-74dfcbf7dbed",
      intro: "Waar het allemaal begon. Een hoog-intensief circuit met oefeningen uit kickboksen, karate en kobujutsu — gecombineerd met halters, kettlebells en stootkussens. Je gaat de confrontatie aan met jezelf, niet met een ander.",
      forWho: "Voor wie keihard wil zweten en sterker, behendiger en weerbaarder wil worden. Geen sparren verplicht.",
      expect: ["Stootkussens & bokstechniek", "Kracht met halters en kettlebells", "Explosieve HIIT-blokken", "Mobiliteit & core"],
      session: { duur: "55 min", intensiteit: 5, niveau: "Alle niveaus" },
      schedule: [
        { day: "Ma", time: "20:30" }, { day: "Di", time: "06:30" },
        { day: "Do", time: "20:30" }, { day: "Za", time: "10:15" },
      ],
      coach: "Ciska van der Voort",
    },
    {
      key: "krachtbalans",
      name: "Kracht & Balans",
      tag: "Elke leeftijd",
      blurb: "Sterker, stabieler en zekerder bewegen. Rustig opgebouwd — ook ideaal vanaf 60+.",
      accent: "#2F9E5E", accentSoft: "#D3F9E0", glyph: "balance", img: "1573497019940-1c28c88b4f3e",
      intro: "Zeker en stevig blijven bewegen, op elke leeftijd. We bouwen kracht, stabiliteit en balans rustig en veilig op — zodat dagelijkse dingen makkelijker gaan en je met vertrouwen beweegt.",
      forWho: "Speciaal ook voor 60-plus en wie weer zeker op de benen wil staan. Tempo en niveau volledig aanpasbaar.",
      expect: ["Balans- en stabiliteitsoefeningen", "Functionele kracht (opstaan, tillen, traplopen)", "Mobiliteit van heupen en schouders", "Veilige opbouw, persoonlijke begeleiding"],
      session: { duur: "50 min", intensiteit: 2, niveau: "Rustig" },
      schedule: [
        { day: "Di", time: "10:00" }, { day: "Do", time: "10:00" },
        { day: "Vr", time: "13:30" },
      ],
      coach: "Ciska van der Voort",
    },
    {
      key: "yoga",
      name: "Yoga",
      tag: "Adem & mobiliteit",
      blurb: "Ruimte in lijf en hoofd. Mobiliteit, balans en rust als tegenwicht voor de intensieve trainingen.",
      accent: "#8C7A4B", accentSoft: "#F3EBD6", glyph: "lotus", img: "1544367567-0f2fcb009e0b",
      intro: "Het rustpunt in de week. Met aandacht voor adem, mobiliteit en balans maak je ruimte in je lijf en je hoofd — het perfecte tegenwicht voor onze intensieve trainingen.",
      forWho: "Voor iedereen, van stijve sporter tot wie even tot rust wil komen. Geen ervaring nodig.",
      expect: ["Ademwerk & ontspanning", "Mobiliteit en flexibiliteit", "Balans en lichaamsbewustzijn", "Rustige, opbouwende flows"],
      session: { duur: "60 min", intensiteit: 2, niveau: "Alle niveaus" },
      schedule: [
        { day: "Ma", time: "18:00" }, { day: "Wo", time: "09:00" },
        { day: "Zo", time: "10:00" },
      ],
      coach: "Ciska van der Voort",
    },
    {
      key: "krachtcircuit",
      name: "Kracht Circuit",
      tag: "Functionele kracht",
      blurb: "Halters, kettlebells en eigen gewicht in slimme circuitvorm. Sterker worden, zonder gedoe.",
      accent: "#1C7ED6", accentSoft: "#D8ECFF", glyph: "kettlebell", img: "1599058917212-d750089bc07e",
      intro: "Pure, functionele kracht in een slim circuit. Je werkt met halters, kettlebells en je eigen lichaamsgewicht aan een sterker, stabieler lijf — efficiënt en met goede techniek.",
      forWho: "Voor wie gericht sterker wil worden. Gewichten en oefeningen schalen mee met jouw niveau.",
      expect: ["Compound-oefeningen (squat, hinge, push, pull)", "Kettlebell-techniek", "Core- en grip-werk", "Progressieve overload"],
      session: { duur: "55 min", intensiteit: 4, niveau: "Alle niveaus" },
      schedule: [
        { day: "Di", time: "19:30" }, { day: "Do", time: "06:30" },
        { day: "Vr", time: "18:00" },
      ],
      coach: "David Roovers",
    },
    {
      key: "fitness",
      name: "Fitness",
      tag: "Vrij & functioneel",
      blurb: "Algemene fitness op je eigen tempo. Cardio, kracht en mobiliteit — met begeleiding wanneer je die nodig hebt.",
      accent: "#5F3DC4", accentSoft: "#E5DBFF", glyph: "dumbbell", img: "1534438327276-14e5300c3a48",
      intro: "Gewoon lekker fit worden én blijven. Een toegankelijke mix van cardio, kracht en mobiliteit die je op je eigen tempo doet — met coaches die meekijken en bijsturen wanneer dat helpt.",
      forWho: "Voor iedereen die fitter wil worden zonder vast programma. Van starter tot ervaren sporter.",
      expect: ["Cardio & conditie", "Kracht met halters en machines", "Mobiliteit en core", "Begeleiding op aanvraag"],
      session: { duur: "60 min", intensiteit: 3, niveau: "Alle niveaus" },
      schedule: [
        { day: "Ma", time: "18:30" }, { day: "Wo", time: "18:30" },
        { day: "Vr", time: "19:00" },
      ],
      coach: "David Roovers",
    },
  ];

  window.PROTO.byKey = (k) => window.PROTO.PROGRAMS.find((p) => p.key === k);

  // Stock imagery (Unsplash) — swap for the club's own photos later.
  window.PROTO.HERO = "1517838277536-f5f99be501cd";
  window.PROTO.GALLERY = [
    "1605296867304-46d5465a13f1", "1599058917212-d750089bc07e", "1549719386-74dfcbf7dbed",
    "1506126613408-eca07ce68773", "1602827114685-efbb2717da9f", "1486218119243-13883505764c",
  ];
  window.PROTO.img = (id, w = 1200) =>
    `https://images.unsplash.com/photo-${id}?auto=format&fit=crop&w=${w}&q=72`;

  // Build a weekly schedule grid from all programs.
  window.PROTO.WEEK = ["Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo"];
  window.PROTO.scheduleByDay = function () {
    const map = {};
    window.PROTO.WEEK.forEach((d) => (map[d] = []));
    window.PROTO.PROGRAMS.forEach((p) => {
      p.schedule.forEach((s) => {
        map[s.day].push({ time: s.time, name: p.name, key: p.key, accent: p.accent });
      });
    });
    Object.values(map).forEach((arr) => arr.sort((a, b) => a.time.localeCompare(b.time)));
    return map;
  };

  // Line icons (currentColor).
  window.PROTO.Icon = function Icon({ name, size = 24, stroke = 1.6, style }) {
    const common = { width: size, height: size, viewBox: "0 0 24 24", fill: "none",
      stroke: "currentColor", strokeWidth: stroke, strokeLinecap: "round", strokeLinejoin: "round", style };
    const paths = {
      race: <><path d="M5 19V5l8 3-8 3" /><path d="M5 19h14" /><path d="M16 12l3 1.5-3 1.5" /></>,
      bolt: <><path d="M13 3 5 13h5l-1 8 8-11h-5l1-7Z" /></>,
      balance: <><path d="M12 4v16" /><path d="M5 8h14" /><path d="M5 8l-2 5a3 3 0 0 0 6 0L7 8M17 8l-2 5a3 3 0 0 0 6 0l-2-5" /></>,
      lotus: <><path d="M12 4c2 2 2 5 0 8-2-3-2-6 0-8Z" /><path d="M12 12c3-2 6-1 7 1-3 2-6 1-7-1Z" /><path d="M12 12c-3-2-6-1-7 1 3 2 6 1 7-1Z" /><path d="M5 13c1 4 4 6 7 6s6-2 7-6" /></>,
      kettlebell: <><path d="M9 8a3 3 0 0 1 6 0" /><path d="M8 9c-1.5 1.5-2 3.5-2 5a6 6 0 0 0 12 0c0-1.5-.5-3.5-2-5Z" /></>,
      fist: <><rect x="6" y="9" width="12" height="8" rx="2" /><path d="M9 9V7a1.5 1.5 0 0 1 3 0v2M12 9V6.5a1.5 1.5 0 0 1 3 0V9" /><path d="M6 12H4.5a1.5 1.5 0 0 0 0 3H6" /></>,
      dumbbell: <><path d="M4 9v6M7 7.5v9M17 7.5v9M20 9v6" /><path d="M7 12h10" /></>,
      arrow: <><path d="M5 12h14" /><path d="M13 6l6 6-6 6" /></>,
      back: <><path d="M19 12H5" /><path d="M11 18l-6-6 6-6" /></>,
      pin: <><path d="M12 21s7-6.5 7-12A7 7 0 0 0 5 9c0 5.5 7 12 7 12Z" /><circle cx="12" cy="9" r="2.5" /></>,
      clock: <><circle cx="12" cy="12" r="8" /><path d="M12 8v4l3 2" /></>,
      flame: <><path d="M12 3c1 3 4 4 4 8a4 4 0 0 1-8 0c0-1.5.5-2.5 1-3 .5 1 1.5 1.5 2 1 .5-1-.5-3 1-6Z" /></>,
      check: <><path d="M5 12l4 4 10-10" /></>,
      phone: <><path d="M5 4h4l2 5-2.5 1.5a11 11 0 0 0 5 5L16 13l5 2v4a2 2 0 0 1-2 2A16 16 0 0 1 3 5a2 2 0 0 1 2-1Z" /></>,
      menu: <><path d="M4 7h16M4 12h16M4 17h16" /></>,
      close: <><path d="M6 6l12 12M18 6L6 18" /></>,
      chev: <><path d="M6 9l6 6 6-6" /></>,
      star: <><path d="M12 4l2.3 4.8 5.2.7-3.8 3.6.9 5.2L12 16.9 7.4 18.3l.9-5.2L4.5 9.5l5.2-.7Z" /></>,
    };
    return <svg {...common}>{paths[name] || null}</svg>;
  };
})();
