// Project data — placeholder copy & SVG placeholder images.
// Each project gets a unique "shade" so the carousel column reads as the
// stacked-rectangle motif from the brand mark.

const PROJECTS = [
  {
    id: 'p09',
    no: '01',
    title: 'ProMD',
    kind: 'Impact Sensor',
    year: '2026',
    role: 'Manufacturing Consultant',
    client: 'ProMD',
    image: 'Videos%20and%20Media/ProMD/Thumbnail.webp',
    gallery: {
      // No hero render — the pool scrolls full-band (see MediaGallery in detail.jsx).
      pool: [
        { src: 'Videos%20and%20Media/ProMD/Thumbnail.webp',                    type: 'image' },
        { src: 'Videos%20and%20Media/ProMD/Pro-MD-concussion-sensor-3.jpg',    type: 'image' },
        { src: 'Videos%20and%20Media/ProMD/AFVYRtxxEraC7UFb98BEE3-1024-80.jpg.webp', type: 'image' },
        { src: 'Videos%20and%20Media/ProMD/V4hhw3zNPaibZzoqSzupF3-1024-80.jpg.webp', type: 'image' },
        { src: 'Videos%20and%20Media/ProMD/ZNcfaf3Qpe6QSHzMsX9R73-1024-80.jpg.webp', type: 'image' },
      ],
    },
    awards: [
      { name: 'Worn by Tadej Pogačar, 2026 Tour de France winner', image: 'Videos%20and%20Media/ProMD/Tour%20de%20France%20Motif.svg' },
    ],
    summary: 'ProMD is a wearable sensor that logs concussion-level impacts in cycling and the mechanical stresses at play in art and installation transport. I worked as manufacturing consultant on the early prototypes, moulding casings built to survive real impacts rather than just bench tests. What started as bench-tested parts ended up racing at the highest level of the sport within the year.',
    body: [
      'ProMD is the new project from Rheon Labs founder Dr Daniel Plant. I was asked early on by Dan to assist in manufacturing and moulding of the initial prototype parts for ProMD: impact sensor casings for art transportation, and concussion sensors for sport, fitted into the helmet\'s retention system on the cycling side. Dan has spent his career focused on injury reduction, first through the armour pads at Rheon Labs and now through concussion detection with the ProMD sensor.',
      'It was amazing to see products I\'ve moulded and advised on the manufacturing of being worn by the best of the best at the Tour de France 2026 — put to real use by Torstein Træen after he crashed headfirst in stage 6 of the race, and going on to be worn by the winner, Tadej Pogačar.'
    ],
  },
  {
    id: 'p01',
    no: '02',
    title: 'DHaRCO Gravity Range',
    kind: 'MTB Protection',
    year: '2025',
    role: 'RHEON™ Parts — Manufacturing & Test',
    client: 'DHaRCO',
    video: 'Videos%20and%20Media/Dharco/Dharco%20V1.mp4',
    gallery: {
      hero: 'Videos%20and%20Media/Dharco/curved-knee-rendered-2.png',
      pool: [
        { src: 'Videos%20and%20Media/Dharco/Dharco%20image%203.webp', type: 'image' },
        { src: 'Videos%20and%20Media/Dharco/Dharco%20Image%206.jpg',  type: 'image' },
        { src: 'Videos%20and%20Media/Dharco/Dharco%20Image%209.jpg',  type: 'image' },
        { src: 'Videos%20and%20Media/Dharco/Dharco%2010.jpg',         type: 'image' },
        { src: 'Videos%20and%20Media/Dharco/Dharco%2011.jpg',         type: 'image' },
        { src: 'Videos%20and%20Media/Dharco/Dharco%20Image%201.webp', type: 'image' },
        { src: 'Videos%20and%20Media/Dharco/Dharco%20Image%202.png',  type: 'image' },
        { src: 'Videos%20and%20Media/Dharco/Dharco%20Image%208.jpg',  type: 'image' },
        { src: 'Videos%20and%20Media/Dharco/Dharco%20V1.mp4',         type: 'video' },
        { src: 'Videos%20and%20Media/Dharco/Dharco%20Vid%202.mp4',    type: 'video' },
        { src: 'Videos%20and%20Media/Dharco/file.mp4',                type: 'video' },
      ],
    },
    summary:'DHaRCO partnered with RHEON LABS to build mountain bike protection that riders would actually wear. The result is a range of knee and limb protectors that pass CE Level 2 certification at just 9mm thick, making them among the thinnest, lightest, and most flexible armour on the market. The range is now used by elite athletes including Amaury Pierron, Loris Vergier, and Myriam Nicole.',
    body: [
      'I was responsible for turning computational designs into physical, testable products. Working through an iterative prototyping cycle, I manufactured and refined parts through injection moulding, focusing on digital optimisation and production-ready geometry.',
      'A lot of the role sat between design and manufacturing. I worked closely with both the internal design team and our production team in China, translating technical specifications into manufacturable parts without compromising the performance or design intent. Getting that communication right across disciplines, time zones, and languages kept the project moving.',
      'Each iteration was tested to EN 1621, the European safety standard for protective equipment, creating a tight feedback loop between prototype, test result, and design refinement. That cycle ultimately delivered armour that met certification while pushing the boundaries of thickness and flexibility.'

    ],
  },
  {
    id: 'p02',
    no: '03',
    title: 'Ventete AH-1',
    kind: 'Bicycle helmet',
    year: '2025',
    role: 'RHEON™ Liner — Manufacturing & Test',
    client: 'Ventete',
    image: 'Videos%20and%20Media/Ventete/Hero.jpg',
    gallery: {
      hero: 'Videos%20and%20Media/Ventete/Ventete%20AH1%202.png',
      pool: [
        { src: 'Videos%20and%20Media/Ventete/V%201.jpg',           type: 'image' },
        { src: 'Videos%20and%20Media/Ventete/V%202.webp',          type: 'image' },
        { src: 'Videos%20and%20Media/Ventete/V%203.webp',          type: 'image' },
        { src: 'Videos%20and%20Media/Ventete/V%204.webp',          type: 'image' },
        { src: 'Videos%20and%20Media/Ventete/V%205.png',           type: 'image' },
        { src: 'Videos%20and%20Media/Ventete/V%206.png',           type: 'image' },
        { src: 'Videos%20and%20Media/Ventete/whole-CGIvideo.mp4',  type: 'video' },
      ],
    },
    awards: [
      { name: 'Red Dot: Winner', year: '2024', image: 'Videos%20and%20Media/Ventete/Awards/Red%20Dot.png' },
      { name: 'ISPO Award: Winner', year: '2024', image: 'Videos%20and%20Media/Ventete/Awards/ISPO.png' },
      { name: 'DIA: Gold Award', year: '2024', image: 'Videos%20and%20Media/Ventete/Awards/DIA.png' },
      { name: 'Dezeen Awards: Winner', year: '2025', image: 'Videos%20and%20Media/Ventete/Awards/Dezeen.png' },
    ],
    summary: 'The Ventete AH-1 is the first inflatable bicycle helmet, a pressurised air structure that replaces foam entirely and folds down to 3.5cm, thinner than a laptop. Engineered with a RHEON™ liner to control rotational impact, it\'s certified to BS EN 1078 (CE/UKCA) and was independently tested by Imperial College London\'s HEAD Lab, which found it outperformed the best conventional foam helmets on linear impact risk. The first production run of 80 sold out.',
    body: [
      'My work focused on the RHEON™ liner: the array of collapsing polymer pods inside the helmet that shear under impact to control rotational motion, the leading cause of traumatic brain injury in cycling accidents. I manufactured and moulded liner components and ran the impact test programme that validated each iteration.',
      'A helmet with no foam has no precedent to test against, so the test work mattered more than usual. Each liner geometry went through impact testing, feeding results back to the design team to tune pod geometry against both certification thresholds and the real-world impact scenarios Ventete and Imperial\'s HEAD Lab were modelling.',
      'The awards followed: a Red Dot, an ISPO Award, a DIA Gold Award, and a Dezeen Award, for what\'s roughly the first real rethink of helmet construction in fifty years. The air structure gets the attention, but it\'s the liner doing the actual protecting once the air has done its job of packaging it, which is why that test programme mattered as much as it did.'
    ],
  },
  {
    id: 'p03',
    no: '04',
    title: 'Ruroc RG2',
    kind: 'Snow Sports Helmet',
    year: '2024',
    role: 'RHEON™ Pods — Manufacturing & Impact Testing',
    client: 'Ruroc',
    video: 'Videos%20and%20Media/RG2/RG2%20V1.mp4',
    videoScale: 0.8,
    gallery: {
      hero: 'Videos%20and%20Media/RG2/RG2%20V2%20solid.png',
      pool: [
        { src: 'Videos%20and%20Media/RG2/RG2%204a.png', type: 'image' },
        { src: 'Videos%20and%20Media/RG2/rg2%205.webp', type: 'image' },
        { src: 'Videos%20and%20Media/RG2/rg2%207.png',  type: 'image' },
        { src: 'Videos%20and%20Media/RG2/rg2%208a.png', type: 'image' },
        { src: 'Videos%20and%20Media/RG2/rg2%208b.png', type: 'image' },
        { src: 'Videos%20and%20Media/RG2/RG9.jpg',      type: 'image' },
        { src: 'Videos%20and%20Media/RG2/RG2%20V1.mp4', type: 'video' },
        { src: 'Videos%20and%20Media/RG2/RG2%20V2.mp4', type: 'video' },
      ],
    },
    awards: [
      { name: 'ISPO Award: Winner', year: '2024', image: 'Videos%20and%20Media/RG2/Awards/ISPO2024.png' },
    ],
    summary: 'The RG2 is Ruroc\'s next-generation modular full-face snow helmet, built around RHEON™ pods that stay soft and flexible until impact, then stiffen instantly to absorb both linear and rotational energy. Certified to EN 1077 Class A, EN 1078, and ASTM F2040, it won an ISPO Award in 2024 and is now worn across skiing, freeskiing, and snowboarding.',
    body: [
      'I manufactured and tested the RHEON™ pod components at the centre of the RG2\'s protection system. Unlike conventional energy-absorbing foams that degrade after a single hit, RHEON™ is multi-impact: the pods deliver consistent performance over thousands of impact events. That changes both how you make them and how you have to prove them.',
      'Running three certification programmes at once meant three different rigs and three different pass thresholds, with no shortcuts between them: a pod that cleared one standard\'s impact profile still had to prove itself against the other two. Each geometry iteration cycled through manufacture, impact rig, data review, and refinement — the same loop as the DHaRCO programme, but tuned for head protection instead of limbs.'
    ],
  },
  {
    id: 'p04',
    no: '05',
    title: 'Rheon Labs: Workshop and Lab Experience',
    kind: 'Interactive',
    year: '2024 – Present',
    role: 'Workshop & Test Lab',
    client: 'Multiple clients',
    labCover: '16-Bits/lab-cover.html',
    thumbEmbed: '16-Bits/lab-cover.html',   // animated lab cover plays in the home carousel
    labStations: [
      { id: 'inj',  title: 'Injection Moulding', src: '16-Bits/mould-master-loop.html', action: 'RUN CYCLE' },
      { id: 'hys',  title: 'Hysteresis Testing', src: '16-Bits/hysteresis-loop.html',   action: 'RUN TEST' },
      { id: 'drop', title: 'Drop Tower',         src: '16-Bits/drop-tower-loop.html',    action: 'DROP' },
    ],
    summary: 'Day to day at RHEON LABS I run the workshop and test lab: injection moulding prototype parts, hysteresis testing polymer formulations, and validating impact performance on the drop tower. This page is a working replica: three interactive simulations of the machines I operate, built as playable 16-bit stations. Click in and run a cycle.',
    body: [
      'The injection moulding station mirrors the real workflow: clamp, inject, pack, cool, eject. Getting a stable process window is most of the job: melt temperature, injection speed, pack pressure, cooling time. Small changes in any of them show up as short shots, flash, or warp in the finished part. The sim cheats less than you\'d think.',
      'Hysteresis testing is how we characterise RHEON™ itself. Cyclic loading on a test frame produces a stress-strain loop, and the area inside that loop is the energy the material dissipates rather than returns. That\'s the property that makes it protective. Different formulations and geometries produce visibly different loops, and reading them is how material decisions get made.',
      'The drop tower is the blunt instrument: a guided mass, a defined drop height, an accelerometer in the anvil. Peak transmitted force against the thresholds in standards like EN 1621 is the pass/fail line every prototype eventually faces. Most of my test work across the DHaRCO, Ruroc, and Ventete programmes ended up here.'
    ],
  },
  {
    id: 'p05',
    no: '06',
    title: 'Tectonic',
    kind: 'Treadmill',
    year: '2024',
    role: 'Designer',
    client: 'Peloton × University of Strathclyde',
    image: 'Videos%20and%20Media/Tectonic/Tectonic%20Gym.jpg',
    gallery: {
      hero: 'Videos%20and%20Media/Tectonic/Tectonic%20Exploded.png',
      pool: [
        { src: 'Videos%20and%20Media/Tectonic/Tectonic%20Gym.jpg', type: 'image', position: '63% 55%' },
        { src: 'Videos%20and%20Media/Tectonic/Tectonic%202.png',   type: 'image' },
        { src: 'Videos%20and%20Media/Tectonic/Tectonic%203.png',   type: 'image' },
        { src: 'Videos%20and%20Media/Tectonic/Tectonic%20Render%20Front.jpg', type: 'image' },
        { src: 'Videos%20and%20Media/Tectonic/Tectonic%20Render%20Side.jpg',  type: 'image' },
        { src: 'Videos%20and%20Media/Tectonic/Tectonic%20Render%20Top.jpg',   type: 'image' },
        { src: 'Videos%20and%20Media/Tectonic/Tectonic%20V1%20-%20Trim.mp4',  type: 'video' },
      ],
    },
    summary: 'Tectonic was my MEng individual project at Strathclyde: a treadmill concept aimed at reducing the boredom and strain of treadmill running, developed with feedback from Peloton and Adidas Terrex. A survey of 100 runners found 80% disliked treadmill training, citing monotony and the joint pain from its flat, repetitive gait. The proposal replaces the belt with interlocking blocks that raise and lower to simulate terrain, paired with a screen that warns the runner what\'s underfoot.',
    body: [
      'Early research combined a runner survey with industry interviews, including an innovation manager at Precor (Peloton\'s bed and frame division) and a development manager at Adidas Terrex. Their steer pushed the brief toward the treadmill bed itself rather than the whole machine, setting the project\'s scope for the rest of the year.',
      'Concept generation ran through function trees, the Lotus method, and a 635 exercise, before three developed concepts were tested with athletes and scored on an analytical hierarchy ranking. The winner paired a sprocket-and-chain linkage with lid blocks that raise to form different underfoot surfaces, judged the most stable and realistic of the three.',
      'Detail design covered mechanism, casing, and electronics: FEA validated the lid against a 1,350N impact, aluminium cut the belt\'s weight from 180kg to 130kg, and a curved 27" screen warned runners of the terrain ahead. It was pitched as leased hardware under the name Tectonic — a nod to the shifting plates the belt imitates.'
    ],
  },
  {
    id: 'p10',
    no: '07',
    title: 'Scott Sports',
    kind: 'Bicycle Design',
    year: '2023 – 2024',
    role: 'Designer',
    client: 'Scott Sports',
    image: 'Videos%20and%20Media/Scott/4.png',
    gallery: {
      // No hero render — the pool scrolls full-band (see MediaGallery in detail.jsx).
      pool: [
        { src: 'Videos%20and%20Media/Scott/1.jpg', type: 'image' },
        { src: 'Videos%20and%20Media/Scott/2.jpg', type: 'image' },
        { src: 'Videos%20and%20Media/Scott/4.png', type: 'image' },
        { src: 'Videos%20and%20Media/Scott/image00001.png', type: 'image' },
        { src: 'Videos%20and%20Media/Scott/image00002.png', type: 'image', position: '65% center' },
        { src: 'Videos%20and%20Media/Scott/image00003.png', type: 'image' },
        { src: 'Videos%20and%20Media/Scott/image00004.png', type: 'image' },
        { src: 'Videos%20and%20Media/Scott/image00005.jpeg', type: 'image' },
      ],
    },
    summary: 'Two bike projects completed with Scott Sports over two years of my masters, working as part of a student team on both.',
    body: [
      'The first brief was to stop sweat running into cyclists\' eyes during long, strenuous rides. We designed a small gutter that clips to the front lip of the helmet, channelling sweat into a fabric layer while improving airflow across the brow.',
      'A good working relationship from that project led to a second brief the following year: researching bike light blink patterns to find which were most eye-catching to drivers, aimed at improving cyclist safety on the road. Using eye-tracking, the team tested lights already on the market and prototyped new concepts. I led the electronics, building on my circuit design and C++ skills. The final concept was a light that changed its blink pattern based on the rider\'s location, weather, and speed, so a cyclist on a busy road in the rain would get a different pattern to one on a quiet country lane in summer.',
    ],
  },
];

// Parked — real projects still carrying placeholder copy from another portfolio.
// Move back into PROJECTS once the summary/body describe the actual work.
const DRAFT_PROJECTS = [
  {
    id: 'p06',
    no: '06',
    title: 'Skate Protect',
    kind: 'Object',
    year: '2023',
    role: 'Designer',
    client: 'Self-initiated',
    summary: 'A wall clock cut from a single tile of Welsh slate, with no numerals and a single brass minute hand.',
    body: [
      'Slate Clock has no hours. It has a single, slightly oversize brass minute hand and a thin engraved arc that marks each quarter. You learn the room from it, not the time.',
      'The face is a 220mm round cut from a single tile of unsealed Welsh slate. Each piece carries its own grain; no two are alike.',
      'Movement is a quiet sweep, not a tick. Mounted on a single brass pin.'
    ],
  },
  {
    id: 'p07',
    no: '07',
    title: 'DeFunkt',
    kind: 'Print',
    year: '2023',
    role: 'Designer',
    client: 'Exhibition',
    summary: 'A six-poster series for the Glasgow Architecture Fringe, printed in two-colour riso.',
    body: [
      'The series uses an oversize halftone to dissolve six of the city\'s least-photographed concrete buildings into pure dot patterns at reading distance.',
      'Printed at the Glasgow Risograph Co-op in editions of 60, on heavyweight uncoated stock, signed and numbered.',
      'The full set was exhibited at the Briggait in October 2023.'
    ],
  },
  {
    id: 'p08',
    no: '08',
    title: 'DFA: Western 3D Printer',
    kind: 'Furniture',
    year: '2023',
    role: 'Designer, Maker',
    client: 'Private commission',
    summary: 'A two-metre bench made from a single piece of reclaimed pier oak, finished with a lime wash.',
    body: [
      'The oak was pulled from a decommissioned pier on the Clyde. It carries every mark of its previous life — bolt holes, salt-bleaching, the soft tide lines on its underside — and these are not sanded away.',
      'The frame is a pair of cast-iron trestles, dipped in graphite oil. The seat sits loose on top, held by gravity and two locating pins.',
      'It is, deliberately, a heavy object.'
    ],
    slideshowScale: 0.8,
    thumbSlideshow: [
      'Videos and Media/DFA/Stop%20motion/1.png',
      'Videos and Media/DFA/Stop%20motion/2.png',
      'Videos and Media/DFA/Stop%20motion/3.png',
      'Videos and Media/DFA/Stop%20motion/4.png',
      'Videos and Media/DFA/Stop%20motion/5.png',
      'Videos and Media/DFA/Stop%20motion/6.png',
    ],
  },
];

// SVG placeholder thumbnail — monochrome striped tile + project number.
// Shown when a project has no image/video.
function ThumbPlaceholder({ no }) {
  return (
    <svg viewBox="0 0 400 300" preserveAspectRatio="xMidYMid slice" style={{ width:'100%', height:'100%', display:'block' }}>
      <defs>
        <pattern id={`stripe-${no}`} width="6" height="6" patternUnits="userSpaceOnUse" patternTransform="rotate(45)">
          <rect width="6" height="6" fill="#e8e8e8" />
          <rect width="3" height="6" fill="#dcdcdc" />
        </pattern>
      </defs>
      <rect width="400" height="300" fill={`url(#stripe-${no})`} />
      <text x="20" y="44" fontFamily="ui-monospace, 'SF Mono', Menlo, monospace" fontSize="13" fill="#8a8a8a" letterSpacing="2">{no}</text>
      <text x="20" y="278" fontFamily="ui-monospace, 'SF Mono', Menlo, monospace" fontSize="11" fill="#9a9a9a" letterSpacing="1.5">PROJECT THUMBNAIL — DRAG IMAGE</text>
    </svg>
  );
}

window.PROJECTS = PROJECTS;
window.ThumbPlaceholder = ThumbPlaceholder;
