{
  "version": 1,
  "_about": "Single source for every card in the fan and the chapters (build spec §6.6). Video items: adding a real video = encode it (scripts/encode-video.sh) + set src, poster, duration and audio, then run python3 -I scripts/make-images.py. Optional video fields: `start` (seconds) = the item plays from there (js/video.js adds #t=start to the src) and its poster/thumb are that frame, for clips whose first frame is weak; `view` [top, bottom] (fractions of the frame height) = only that band is picture (restaurants-03 is a screen recording with a white band under it): the poster is cover-cropped from the band and the card scales the <video> so the band fills it. Photo items (type \"photo\", client feedback 7) are stills shown in the same card frame, with no sound: make-images.py cover-crops `master` to 9:16 around the horizontal `crop` centre into `poster` (720x1280) and `thumb`. A category's optional `rail` lists its rail items in order (else: its videos by `order`); `disabled: true` hides a category everywhere (chapter, fan, icon) while keeping its data (client feedback 6: Skin & hair care is off for now). Titles and the chapter copy are for client approval. audio:false = the track carries nothing worth hearing, so no sound button: stays-07 (pousada-pool, low handling rumble at about -35 LUFS; its track was removed), stays-08 (deck-cushions, a steady hiss at about -42 LUFS) and fashion-03 (yellow-satin-lake, digital silence). fashion-05 and fashion-06 had no originals and were removed in batch 2 (docs/qa-report.md).",
  "categories": [
    {
      "key": "stays",
      "anchor": "stays",
      "name": "Stays",
      "eyebrow": "01",
      "sans": "Hotels &",
      "serif": "Stays",
      "subtitle": "Hotels, cabins and glamping, filmed like a short escape.",
      "feature": "stays-01",
      "rail": [
        "stays-01",
        "stays-p-aframe",
        "stays-03",
        "stays-p-ofuro",
        "stays-05",
        "stays-p-golden",
        "stays-07",
        "stays-p-loft",
        "stays-06",
        "stays-p-bath",
        "stays-08"
      ]
    },
    {
      "key": "restaurants",
      "anchor": "food",
      "name": "Food",
      "eyebrow": "02",
      "sans": "Restaurants",
      "serif": "& food",
      "subtitle": "Tables, tastings and slow breakfasts.",
      "feature": "restaurants-04",
      "rail": [
        "restaurants-04",
        "restaurants-01",
        "restaurants-02",
        "restaurants-03"
      ]
    },
    {
      "key": "fashion",
      "anchor": "fashion",
      "name": "Fashion",
      "eyebrow": "03",
      "sans": "Fashion",
      "serif": "& style",
      "subtitle": "Looks in motion, from details to full outfits.",
      "feature": "fashion-07",
      "rail": [
        "fashion-07",
        "fashion-01",
        "fashion-p-tailoring",
        "fashion-02",
        "fashion-03",
        "fashion-p-boots",
        "fashion-04",
        "fashion-08"
      ]
    },
    {
      "key": "skincare",
      "anchor": "care",
      "name": "Skin & hair",
      "eyebrow": "04",
      "sans": "Skin &",
      "serif": "Hair care",
      "subtitle": "Rituals, textures and real routines.",
      "feature": "skincare-03",
      "disabled": true
    }
  ],
  "fan": [
    "fashion-01",
    "restaurants-02",
    "stays-03",
    "fashion-07",
    "restaurants-03",
    "stays-05",
    "fashion-02"
  ],
  "fanFocus": 3,
  "videos": [
    {
      "id": "stays-01",
      "category": "stays",
      "title": "Breakfast in the dome",
      "alt": "High view inside a geodesic glamping dome: a whirlpool tub on white pebbles by the panoramic window, and Lorena, in a white robe, setting out breakfast for two at a small round table.",
      "src": "assets/video/stays/dome-breakfast.mp4",
      "poster": "assets/video/posters/stays-01.webp",
      "thumb": "assets/video/thumbs/stays-01.webp",
      "duration": 21.1,
      "audio": true,
      "brand": null,
      "order": 1
    },
    {
      "id": "stays-02",
      "category": "stays",
      "title": "The one-woman band",
      "alt": "Elderly one-woman-band musician playing keyboard and improvised percussion (washboard, cymbal, red pot), a local attraction.",
      "src": null,
      "poster": "assets/video/posters/stays-02.webp",
      "thumb": "assets/video/thumbs/stays-02.webp",
      "duration": null,
      "audio": null,
      "brand": null,
      "order": 2
    },
    {
      "id": "stays-03",
      "category": "stays",
      "title": "A bath with a view",
      "alt": "Lorena relaxing in a freestanding bathtub inside a geodesic dome with green mountain views.",
      "src": "assets/video/stays/dome-bathtub.mp4",
      "poster": "assets/video/posters/stays-03.webp",
      "thumb": "assets/video/thumbs/stays-03.webp",
      "duration": 22.2,
      "audio": true,
      "brand": null,
      "order": 3
    },
    {
      "id": "stays-04",
      "category": "stays",
      "title": "Sunset over the valley",
      "alt": "Woman on a wooden deck overlooking a misty mountain valley at sunset, basket of firewood on the table.",
      "src": null,
      "poster": "assets/video/posters/stays-04.webp",
      "thumb": "assets/video/thumbs/stays-04.webp",
      "duration": null,
      "audio": null,
      "brand": null,
      "order": 4
    },
    {
      "id": "stays-05",
      "category": "stays",
      "title": "Inside the A-frame",
      "alt": "A-frame cabin interior: tall curtained glass front, warm wood, orange sofa, a person at the window.",
      "src": "assets/video/stays/aframe-living-room.mp4",
      "poster": "assets/video/posters/stays-05.webp",
      "thumb": "assets/video/thumbs/stays-05.webp",
      "duration": 29.1,
      "audio": true,
      "brand": null,
      "order": 5
    },
    {
      "id": "stays-06",
      "category": "stays",
      "title": "One day in an A-frame",
      "alt": "Exterior of a black A-frame glass cabin with barrel sauna and stairs; yellow title overlay \"1 DIA EM\" (\"1 day in\").",
      "src": "assets/video/stays/aframe-one-day.mp4",
      "poster": "assets/video/posters/stays-06.webp",
      "thumb": "assets/video/thumbs/stays-06.webp",
      "duration": 51.3,
      "audio": true,
      "brand": null,
      "order": 6
    },
    {
      "id": "stays-07",
      "category": "stays",
      "title": "Pool, arches & a canopy bed",
      "alt": "Tour of a pousada: a plunge pool by thatched-roof suites, a sofa niche under arched alcoves, a canopy bed draped in white voile, a rustic bathroom and a wooden deck by the pool.",
      "src": "assets/video/stays/pousada-pool.mp4",
      "poster": "assets/video/posters/stays-07.webp",
      "thumb": "assets/video/thumbs/stays-07.webp",
      "duration": 40.6,
      "audio": false,
      "brand": null,
      "order": 7
    },
    {
      "id": "stays-p-aframe",
      "type": "photo",
      "category": "stays",
      "title": "Coffee on the A-frame deck",
      "alt": "Sitting barefoot in a black dress on the wooden deck of a glass A-frame cabin, a small table with a coffee cup and a book beside her.",
      "src": null,
      "poster": "assets/img/web/stays-aframe-card.webp",
      "thumb": "assets/img/web/stays-aframe-thumb.webp",
      "master": "assets/img/stays/aframe-deck.jpg",
      "crop": 0.42,
      "duration": null,
      "audio": null,
      "brand": null,
      "order": 8
    },
    {
      "id": "stays-p-ofuro",
      "type": "photo",
      "category": "stays",
      "title": "The deck with the hot tub",
      "alt": "In a white beanie and linen trousers on a wooden deck beside a round wooden hot tub, a forested mountain valley behind.",
      "src": null,
      "poster": "assets/img/web/stays-ofuro-card.webp",
      "thumb": "assets/img/web/stays-ofuro-thumb.webp",
      "master": "assets/img/stays/ofuro-deck.jpg",
      "crop": 0.42,
      "duration": null,
      "audio": null,
      "brand": null,
      "order": 9
    },
    {
      "id": "stays-p-golden",
      "type": "photo",
      "category": "stays",
      "title": "Golden hour on the deck",
      "alt": "Golden hour under a parasol on a wooden deck: Lorena and a man in a cap share drinks at a low table, forested hills behind.",
      "src": null,
      "poster": "assets/img/web/stays-golden-card.webp",
      "thumb": "assets/img/web/stays-golden-thumb.webp",
      "master": "assets/img/stays/deck-golden-hour.jpg",
      "crop": 0.55,
      "duration": null,
      "audio": null,
      "brand": null,
      "order": 10
    },
    {
      "id": "stays-p-kitchen",
      "type": "photo",
      "category": "stays",
      "title": "The kitchen, from above",
      "alt": "Seen from above in a white beanie and linen trousers, a hand on a marble kitchen island set with a gas hob, plates and a sprig of rosemary.",
      "src": null,
      "poster": "assets/img/web/stays-kitchen-card.webp",
      "thumb": "assets/img/web/stays-kitchen-thumb.webp",
      "master": "assets/img/stays/kitchen-above.jpg",
      "crop": 0.38,
      "duration": null,
      "audio": null,
      "brand": null,
      "order": 11
    },
    {
      "id": "stays-p-loft",
      "type": "photo",
      "category": "stays",
      "title": "Cooking for two",
      "alt": "Lorena and a man in a cap cooking together at a marble counter in a wooden loft kitchen, trees through the window behind them.",
      "src": null,
      "poster": "assets/img/web/stays-loft-card.webp",
      "thumb": "assets/img/web/stays-loft-thumb.webp",
      "master": "assets/img/stays/loft-kitchen.jpg",
      "crop": 0.5,
      "duration": null,
      "audio": null,
      "brand": null,
      "order": 12
    },
    {
      "id": "stays-p-bath",
      "type": "photo",
      "category": "stays",
      "title": "A bath among the trees",
      "alt": "Lorena in a freestanding bathtub by a window full of trees, a man in a cap sitting on the wooden floor beside it.",
      "src": null,
      "poster": "assets/img/web/stays-bath-card.webp",
      "thumb": "assets/img/web/stays-bath-thumb.webp",
      "master": "assets/img/stays/bath-trees.jpg",
      "crop": 0.55,
      "duration": null,
      "audio": null,
      "brand": null,
      "order": 13
    },
    {
      "id": "stays-08",
      "category": "stays",
      "title": "Cushions above the forest",
      "alt": "On a wooden deck above the forest, Lorena, wrapped in a white robe, and a man in a cap and a striped shirt settle onto white cushions with a bottle and two glasses.",
      "src": "assets/video/stays/deck-cushions.mp4",
      "poster": "assets/video/posters/stays-08.webp",
      "thumb": "assets/video/thumbs/stays-08.webp",
      "duration": 22.8,
      "audio": false,
      "brand": null,
      "order": 8
    },
    {
      "id": "restaurants-01",
      "category": "restaurants",
      "title": "Gnocchi night with Pronto Light",
      "alt": "Lorena takes a PRONTO Light stuffed gnocchi from the fridge, heats it and eats it at a sunlit wooden table set with white orchids, a candle and a glass of red.",
      "src": "assets/video/restaurants/pronto-gnocchi.mp4",
      "poster": "assets/video/posters/restaurants-01.webp",
      "thumb": "assets/video/thumbs/restaurants-01.webp",
      "duration": 23.8,
      "start": 15.5,
      "audio": true,
      "brand": "prontolight",
      "order": 1
    },
    {
      "id": "restaurants-02",
      "category": "restaurants",
      "title": "A colorful table",
      "alt": "With her curly hair up, in a black top, Lorena sips orange juice at a wooden table set with a colorful vegetarian spread: a big salad with tomato, mango and flowers, golden rice, greens with pansies and a chocolate dessert under marigold petals.",
      "src": "assets/video/restaurants/salad-table.mp4",
      "poster": "assets/video/posters/restaurants-02.webp",
      "thumb": "assets/video/thumbs/restaurants-02.webp",
      "duration": 24.5,
      "audio": true,
      "brand": null,
      "order": 2
    },
    {
      "id": "restaurants-03",
      "category": "restaurants",
      "title": "A glass of white",
      "alt": "In a white halter top on a red banquette, Lorena tastes a glass of white wine, then shares small plates served on blue-and-white china: bruschetta, cheese, figs and a tart.",
      "src": "assets/video/restaurants/wine-tasting.mp4",
      "poster": "assets/video/posters/restaurants-03.webp",
      "thumb": "assets/video/thumbs/restaurants-03.webp",
      "duration": 34.9,
      "start": 3.6,
      "view": [
        0,
        0.644
      ],
      "audio": true,
      "brand": null,
      "order": 3
    },
    {
      "id": "restaurants-04",
      "category": "restaurants",
      "title": "Breakfast among plants",
      "alt": "Lorena arrives with a straw bag and has breakfast at a café full of plants: a fruit cup, fresh juices, an open sandwich and croquettes on blue-patterned plates, then a look at the terrace by the water.",
      "src": "assets/video/restaurants/garden-breakfast.mp4",
      "poster": "assets/video/posters/restaurants-04.webp",
      "thumb": "assets/video/thumbs/restaurants-04.webp",
      "duration": 31.0,
      "start": 2.4,
      "audio": true,
      "brand": null,
      "order": 4
    },
    {
      "id": "fashion-01",
      "category": "fashion",
      "title": "Burgundy blazer, red sneakers",
      "alt": "In a burgundy blazer over a white shirt, denim shorts and red suede sneakers, Lorena leans on a stone wall, ties her laces and walks a city street and a flight of stone steps, coffee in hand.",
      "src": "assets/video/fashion/burgundy-blazer.mp4",
      "poster": "assets/video/posters/fashion-01.webp",
      "thumb": "assets/video/thumbs/fashion-01.webp",
      "duration": 30.0,
      "audio": true,
      "brand": null,
      "order": 1
    },
    {
      "id": "fashion-02",
      "category": "fashion",
      "title": "A teal dress at golden hour",
      "alt": "Barefoot on a wooden deck above forested hills, Lorena turns in a long open-back teal and blue slip dress and leans on the railing into the low sun.",
      "src": "assets/video/fashion/teal-dress-deck.mp4",
      "poster": "assets/video/posters/fashion-02.webp",
      "thumb": "assets/video/thumbs/fashion-02.webp",
      "duration": 26.6,
      "start": 3.0,
      "audio": true,
      "brand": null,
      "order": 2
    },
    {
      "id": "fashion-03",
      "category": "fashion",
      "title": "Yellow satin by the lake",
      "alt": "In a long yellow satin dress with straps crossed over the open back, Lorena walks a wooden pier on a lake, then turns on the lawn among palm trees, hair pinned up.",
      "src": "assets/video/fashion/yellow-satin-lake.mp4",
      "poster": "assets/video/posters/fashion-03.webp",
      "thumb": "assets/video/thumbs/fashion-03.webp",
      "duration": 26.2,
      "audio": false,
      "brand": null,
      "order": 3
    },
    {
      "id": "fashion-04",
      "category": "fashion",
      "title": "Sandals & a picnic",
      "alt": "A picnic on the grass: Lorena in a white tank top, denim shorts and a green headscarf lays out bread, fruit and flowers by a wicker basket, brown buckle sandals on her feet.",
      "src": "assets/video/fashion/picnic.mp4",
      "poster": "assets/video/posters/fashion-04.webp",
      "thumb": "assets/video/thumbs/fashion-04.webp",
      "duration": 18.8,
      "start": 10.6,
      "audio": true,
      "brand": null,
      "order": 4
    },
    {
      "id": "fashion-07",
      "category": "fashion",
      "title": "At the CHANEL boutique",
      "alt": "At a CHANEL boutique counter, in a black blazer and a white shirt, Lorena tries makeup and the red N°1 bottle at a mirror, holds a bottle of N°5 to her cheek and leafs through CHANEL books.",
      "src": "assets/video/fashion/chanel-boutique.mp4",
      "poster": "assets/video/posters/fashion-07.webp",
      "thumb": "assets/video/thumbs/fashion-07.webp",
      "duration": 35.6,
      "start": 21.2,
      "audio": true,
      "brand": "chanel",
      "order": 5
    },
    {
      "id": "fashion-08",
      "category": "fashion",
      "title": "Towel turban, ALVA in hand",
      "alt": "Her hair in a white towel turban and a black strapless top, she holds up a frosted ALVA stick, opens it and shows the white bar, against a concrete wall.",
      "src": "assets/video/fashion/alva-towel.mp4",
      "poster": "assets/video/posters/fashion-08.webp",
      "thumb": "assets/video/thumbs/fashion-08.webp",
      "duration": 7.3,
      "audio": true,
      "brand": "alva",
      "order": 6
    },
    {
      "id": "fashion-p-gown",
      "type": "photo",
      "category": "fashion",
      "title": "The black gown",
      "alt": "Full-length in a black cut-out gown with a plunging neckline, a silver choker and a bracelet, against a white wall.",
      "src": null,
      "poster": "assets/img/web/fashion-gown-card.webp",
      "thumb": "assets/img/web/fashion-gown-thumb.webp",
      "master": "assets/img/gallery/21.jpg",
      "crop": 0.45,
      "duration": null,
      "audio": null,
      "brand": null,
      "order": 7
    },
    {
      "id": "fashion-p-print",
      "type": "photo",
      "category": "fashion",
      "title": "Zebra print, head to toe",
      "alt": "In sunglasses and a matching pink-and-brown zebra-print top and flared trousers, arms out against a grey wall above a mosaic pavement.",
      "src": null,
      "poster": "assets/img/web/fashion-print-card.webp",
      "thumb": "assets/img/web/fashion-print-thumb.webp",
      "master": "assets/img/gallery/26.jpg",
      "crop": 0.5,
      "duration": null,
      "audio": null,
      "brand": null,
      "order": 8
    },
    {
      "id": "fashion-p-tailoring",
      "type": "photo",
      "category": "fashion",
      "title": "Black tailoring, tan bag",
      "alt": "Seen from behind in a black blazer and trousers, a tan leather bag across her back, against a concrete wall.",
      "src": null,
      "poster": "assets/img/web/fashion-tailoring-card.webp",
      "thumb": "assets/img/web/fashion-tailoring-thumb.webp",
      "master": "assets/img/gallery/12.jpg",
      "crop": 0.5,
      "duration": null,
      "audio": null,
      "brand": null,
      "order": 9
    },
    {
      "id": "fashion-p-boots",
      "type": "photo",
      "category": "fashion",
      "title": "Lace-up boots",
      "alt": "Legs raised against a grey wall in chunky black lace-up boots.",
      "src": null,
      "poster": "assets/img/web/fashion-boots-card.webp",
      "thumb": "assets/img/web/fashion-boots-thumb.webp",
      "master": "assets/img/gallery/25.jpg",
      "crop": 0.6,
      "duration": null,
      "audio": null,
      "brand": null,
      "order": 10
    },
    {
      "id": "skincare-01",
      "category": "skincare",
      "title": "A slow morning ritual",
      "alt": "Top-down: hand holding a cup of dark drink (tea/coffee) on a green ceramic saucer, wooden table. Shows a ritual moment; no product is visible.",
      "src": null,
      "poster": "assets/video/posters/skincare-01.webp",
      "thumb": "assets/video/thumbs/skincare-01.webp",
      "duration": null,
      "audio": null,
      "brand": null,
      "order": 1
    },
    {
      "id": "skincare-02",
      "category": "skincare",
      "title": "Brushes & glow",
      "alt": "Hand with white manicure picking up makeup brushes beside a beauty sponge.",
      "src": null,
      "poster": "assets/video/posters/skincare-02.webp",
      "thumb": "assets/video/thumbs/skincare-02.webp",
      "duration": null,
      "audio": null,
      "brand": null,
      "order": 2
    },
    {
      "id": "skincare-03",
      "category": "skincare",
      "title": "Chanel, after the bath",
      "alt": "Lorena in a dark robe in the bathroom holding a white CHANEL skincare tube to her face.",
      "src": null,
      "poster": "assets/video/posters/skincare-03.webp",
      "thumb": "assets/video/thumbs/skincare-03.webp",
      "duration": null,
      "audio": null,
      "brand": "chanel",
      "order": 3
    },
    {
      "id": "skincare-04",
      "category": "skincare",
      "title": "At the beauty counter",
      "alt": "Split frame at a beauty counter: Lorena looking down / close-up applying product in a mirror.",
      "src": null,
      "poster": "assets/video/posters/skincare-04.webp",
      "thumb": "assets/video/thumbs/skincare-04.webp",
      "duration": null,
      "audio": null,
      "brand": null,
      "order": 4
    },
    {
      "id": "skincare-05",
      "category": "skincare",
      "title": "Hair care, mirror time",
      "alt": "Lorena in a navy robe at the bathroom mirror, hair-care bottles on the counter.",
      "src": null,
      "poster": "assets/video/posters/skincare-05.webp",
      "thumb": "assets/video/thumbs/skincare-05.webp",
      "duration": null,
      "audio": null,
      "brand": null,
      "order": 5
    },
    {
      "id": "skincare-06",
      "category": "skincare",
      "title": "Espresso by the window",
      "alt": "Hand lifting an espresso cup from its saucer by a window (frame appears letterboxed). No product is visible.",
      "src": null,
      "poster": "assets/video/posters/skincare-06.webp",
      "thumb": "assets/video/thumbs/skincare-06.webp",
      "duration": null,
      "audio": null,
      "brand": null,
      "order": 6
    }
  ]
}
