> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bfl.ml/llms.txt
> Use this file to discover all available pages before exploring further.

# FLUX 3 Image

> Generate images from text, edit specific details, and combine up to ten references with FLUX 3 Image.

export const FLUX3_EDIT_EXAMPLES = [{
  "key": "tiger-after",
  "title": "Recolor two boxes",
  "op": "recolour",
  "instruction": "Make both pink.",
  "before": "https://cdn.sanity.io/images/2gpum2i6/production/b6476b163e11444d6d5490ac1fa1e610d4eab85e-1360x768.webp",
  "after": "https://cdn.sanity.io/images/2gpum2i6/production/3c884e72074d330bd62f27e8d222b294b855eb74-1360x768.webp",
  "width": 1360,
  "height": 768,
  "record": "In <ref_image_0>, change the large tiger <animal_1> and the small glowing butterfly <insect_1> to be pink. Keep the massive fallen log <log_1>, the falling snow <snow_1>, and the dark background trees <trees_1> exactly unchanged.",
  "rows": [{
    "id": "animal_1",
    "from": null,
    "src_bbox": null,
    "tgt_bbox": [250, 50, 850, 650],
    "desc": "Make both pink.",
    "kind": "new"
  }, {
    "id": "insect_1",
    "from": null,
    "src_bbox": null,
    "tgt_bbox": [650, 680, 750, 750],
    "desc": "Make both pink.",
    "kind": "new"
  }, {
    "id": "log_1",
    "from": "ref_image_0",
    "src_bbox": [600, 0, 1000, 1000],
    "tgt_bbox": [600, 0, 1000, 1000],
    "desc": "A massive, fallen tree log stretching horizontally across the foreground. The surface features deep, rough-textured bark, weathered cracks, and small pockets of frost.",
    "kind": "anchor"
  }, {
    "id": "snow_1",
    "from": "ref_image_0",
    "src_bbox": [0, 0, 1000, 1000],
    "tgt_bbox": [0, 0, 1000, 1000],
    "desc": "Numerous white snowflakes of varying sizes falling across the scene. Some flakes are sharp and distinct, while others closer to the lens appear as blurred white streaks.",
    "kind": "anchor"
  }, {
    "id": "trees_1",
    "from": "ref_image_0",
    "src_bbox": [0, 0, 650, 1000],
    "tgt_bbox": [0, 0, 650, 1000],
    "desc": "A dense stand of tall, dark, vertical tree trunks receding into the distance. A cool, blue misty light permeates the spaces between the trees, glowing most intensely from the right edge.",
    "kind": "anchor"
  }]
}, {
  "key": "bamboo-multi",
  "title": "Three replacements at once",
  "op": "replace",
  "instruction": "a cyberpunk dog · a fallen bamboo leaf out of gold · a bird made out of a robot",
  "before": "https://cdn.sanity.io/images/2gpum2i6/production/fa34bced7273bdc735dad58a65c225d8d5ff63e6-1360x768.webp",
  "after": "https://cdn.sanity.io/images/2gpum2i6/production/2954729279a1bf4838c24b7ff66f024c32bd38f7-1360x768.webp",
  "width": 1360,
  "height": 768,
  "record": "Modify <ref_image_0> by making three replacements. On the lower left path, replace the tiny anthropomorphic wolf with a cyberpunk dog <wolf_1>. On the lower right, replace the fallen frosted bamboo log with a fallen bamboo leaf made out of gold <log_1>. In the middle of the misty forest, replace the small dark bird perched on a branch with a bird made out of a robot <bird_1>. Keep the rest of the scene exactly unchanged, preserving the dense upper bamboo leaves <bamboo_1>, the vertical bamboo trunks <bamboo_2> receding into the fog, the frosted ground and lower stalks <bamboo_3>, the dramatic slanting sunbeams <light_1>, the thick foreground bamboo trunk <bamboo_4> on the right, the frozen stream <stream_1>, the stone lantern <lantern_1>, and the floating frost flakes <particles_1>.",
  "rows": [{
    "id": "wolf_1",
    "from": null,
    "src_bbox": null,
    "tgt_bbox": [817, 120, 950, 167],
    "desc": "a cyberpunk dog",
    "kind": "new"
  }, {
    "id": "log_1",
    "from": null,
    "src_bbox": null,
    "tgt_bbox": [850, 600, 950, 850],
    "desc": "A fallen bamboo leave out of gold",
    "kind": "new"
  }, {
    "id": "bird_1",
    "from": null,
    "src_bbox": null,
    "tgt_bbox": [450, 500, 480, 530],
    "desc": "a bird made out of a robot",
    "kind": "new"
  }, {
    "id": "bamboo_1",
    "from": "ref_image_0",
    "src_bbox": [0, 0, 350, 1000],
    "tgt_bbox": [0, 0, 350, 1000],
    "desc": "Dense bamboo leaves and upper stalks illuminated by white sunlight. Translucent dew drops cling to the bright green foliage, creating small specular highlights.",
    "kind": "anchor"
  }, {
    "id": "bamboo_2",
    "from": "ref_image_0",
    "src_bbox": [300, 0, 750, 1000],
    "tgt_bbox": [300, 0, 750, 1000],
    "desc": "Thick, vertical bamboo trunks receding into dense, charcoal-tinted shadows. The green color of the stalks is darkened by the heavy shade and foggy atmosphere.",
    "kind": "anchor"
  }, {
    "id": "bamboo_3",
    "from": "ref_image_0",
    "src_bbox": [700, 0, 1000, 1000],
    "tgt_bbox": [700, 0, 1000, 1000],
    "desc": "The lower segments of the bamboo stalks and the ground, encrusted in sharp, frozen white frost crystals. The textures are crisp and perfectly still.",
    "kind": "anchor"
  }, {
    "id": "light_1",
    "from": "ref_image_0",
    "src_bbox": [200, 0, 900, 1000],
    "tgt_bbox": [200, 0, 900, 1000],
    "desc": "Parallel, slanting shafts of bright cream-white light slicing diagonally through the atmospheric fog, creating sharp, alternating bands of illumination and velvet shadow.",
    "kind": "anchor"
  }, {
    "id": "bamboo_4",
    "from": "ref_image_0",
    "src_bbox": [0, 850, 1000, 1000],
    "tgt_bbox": [0, 850, 1000, 1000],
    "desc": "A massive, thick bamboo trunk positioned in the immediate foreground on the right side, its surface detailed with horizontal nodes and a light dusting of frost near the bottom.",
    "kind": "anchor"
  }, {
    "id": "stream_1",
    "from": "ref_image_0",
    "src_bbox": [800, 400, 1000, 550],
    "tgt_bbox": [800, 400, 1000, 550],
    "desc": "A narrow, frozen stream winding through the frosty terrain, its icy surface reflecting the ambient light.",
    "kind": "anchor"
  }, {
    "id": "lantern_1",
    "from": "ref_image_0",
    "src_bbox": [750, 300, 880, 380],
    "tgt_bbox": [750, 300, 880, 380],
    "desc": "A stone lantern, partially buried in the frost, constructed from dark charcoal-colored stone.",
    "kind": "anchor"
  }, {
    "id": "particles_1",
    "from": "ref_image_0",
    "src_bbox": [400, 200, 700, 800],
    "tgt_bbox": [400, 200, 700, 800],
    "desc": "Tiny, floating frost flakes suspended in the foggy air, illuminated by the slanting light shafts.",
    "kind": "anchor"
  }]
}, {
  "key": "knight-after",
  "title": "Move a box",
  "op": "move",
  "instruction": "Drag knight_1 up and to the left.",
  "before": "https://cdn.sanity.io/images/2gpum2i6/production/aa7b28af831835fcef86e770262c8c30fa308c2c-1360x768.webp",
  "after": "https://cdn.sanity.io/images/2gpum2i6/production/18ea13b9dc6a33d255071ed0e78962629caafdbd-1360x768.webp",
  "width": 1360,
  "height": 768,
  "record": "In <ref_image_0>, move the miniature grey amigurumi knight figure <knight_1> upwards and to the left along the yarn cliff <cliff_1>. Leave the polished steel tapestry needle <needle_1> in its original position in the air. Keep the rest of the image completely unchanged, preserving the blurred yarn backdrop <backdrop_1>, the large knitted dragon <dragon_1>, and the fiery orange thread <fire_1> suspended between them.",
  "rows": [{
    "id": "knight_1",
    "from": "ref_image_0",
    "src_bbox": [500, 150, 850, 350],
    "tgt_bbox": [194, 55, 544, 255],
    "desc": "A miniature amigurumi knight figure crocheted from thick grey woolen yarn. It has visible, intricate stitches forming a rounded helmet shape and a cylindrical body, with tiny stubby arms reaching upwards against the cliff.",
    "kind": "move"
  }, {
    "id": "backdrop_1",
    "from": "ref_image_0",
    "src_bbox": [0, 0, 1000, 1000],
    "tgt_bbox": [0, 0, 1000, 1000],
    "desc": "A soft, out-of-focus expanse of cream ivory and melange indigo knitted yarn, providing a blurred studio backdrop with tangible fiber fuzz catching the ambient light.",
    "kind": "anchor"
  }, {
    "id": "cliff_1",
    "from": "ref_image_0",
    "src_bbox": [300, 0, 1000, 450],
    "tgt_bbox": [300, 0, 1000, 450],
    "desc": "A steep, uneven cliff face constructed from stacked, thick yarn skeins in rich shades of mustard yellow, terracotta, and melange indigo, featuring visible woven wool textures and loose, stray fiber strands.",
    "kind": "anchor"
  }, {
    "id": "needle_1",
    "from": "ref_image_0",
    "src_bbox": [420, 250, 550, 450],
    "tgt_bbox": [420, 250, 550, 450],
    "desc": "A real, oversized polished steel tapestry needle, gleaming under the studio lighting. It features a blunt tip and an elongated eye, grasped like a weapon in the knight's yarn-stub hand.",
    "kind": "anchor"
  }, {
    "id": "dragon_1",
    "from": "ref_image_0",
    "src_bbox": [100, 600, 950, 1000],
    "tgt_bbox": [100, 600, 950, 1000],
    "desc": "A large, fluffy knitted dragon made of highly textured, fuzzy yarn in terracotta and mustard yellow. It has a rounded snout, large crocheted eyes, and a wide-open mouth, with visible loose fibers creating a soft, tactile surface.",
    "kind": "anchor"
  }, {
    "id": "fire_1",
    "from": "ref_image_0",
    "src_bbox": [350, 400, 650, 650],
    "tgt_bbox": [350, 400, 650, 650],
    "desc": "Curled, sculptural puffs of fiery orange angora thread, suspended in mid-air. The thread is highly textured, fuzzy, and chaotic, bursting from the dragon's mouth and stretching horizontally across the center.",
    "kind": "anchor"
  }]
}, {
  "key": "bamboo-wolf",
  "title": "Swap the subject",
  "op": "replace",
  "instruction": "a Dog",
  "before": "https://cdn.sanity.io/images/2gpum2i6/production/fa34bced7273bdc735dad58a65c225d8d5ff63e6-1360x768.webp",
  "after": "https://cdn.sanity.io/images/2gpum2i6/production/50631bead7e36e98e8901c717fa58c1f46a5dbb8-1360x768.webp",
  "width": 1360,
  "height": 768,
  "record": "In <ref_image_0>, replace the tiny anthropomorphic wolf standing on the left side of the frosty path with a dog <wolf_1>. Keep the rest of the image exactly unchanged, including the illuminated upper bamboo leaves <bamboo_1>, the shadowed vertical trunks <bamboo_2>, the frost-covered lower stalks and ground <bamboo_3>, the slanting shafts of light <light_1>, the massive foreground trunk <bamboo_4>, the fallen hollow log <log_1>, the frozen stream <stream_1>, the stone lantern <lantern_1>, the floating frost flakes <particles_1>, and the small perched bird <bird_1>.",
  "rows": [{
    "id": "wolf_1",
    "from": null,
    "src_bbox": null,
    "tgt_bbox": [817, 120, 950, 167],
    "desc": "a Dog",
    "kind": "new"
  }, {
    "id": "bamboo_1",
    "from": "ref_image_0",
    "src_bbox": [0, 0, 350, 1000],
    "tgt_bbox": [0, 0, 350, 1000],
    "desc": "Dense bamboo leaves and upper stalks illuminated by white sunlight. Translucent dew drops cling to the bright green foliage, creating small specular highlights.",
    "kind": "anchor"
  }, {
    "id": "bamboo_2",
    "from": "ref_image_0",
    "src_bbox": [300, 0, 750, 1000],
    "tgt_bbox": [300, 0, 750, 1000],
    "desc": "Thick, vertical bamboo trunks receding into dense, charcoal-tinted shadows. The green color of the stalks is darkened by the heavy shade and foggy atmosphere.",
    "kind": "anchor"
  }, {
    "id": "bamboo_3",
    "from": "ref_image_0",
    "src_bbox": [700, 0, 1000, 1000],
    "tgt_bbox": [700, 0, 1000, 1000],
    "desc": "The lower segments of the bamboo stalks and the ground, encrusted in sharp, frozen white frost crystals. The textures are crisp and perfectly still.",
    "kind": "anchor"
  }, {
    "id": "light_1",
    "from": "ref_image_0",
    "src_bbox": [200, 0, 900, 1000],
    "tgt_bbox": [200, 0, 900, 1000],
    "desc": "Parallel, slanting shafts of bright cream-white light slicing diagonally through the atmospheric fog, creating sharp, alternating bands of illumination and velvet shadow.",
    "kind": "anchor"
  }, {
    "id": "bamboo_4",
    "from": "ref_image_0",
    "src_bbox": [0, 850, 1000, 1000],
    "tgt_bbox": [0, 850, 1000, 1000],
    "desc": "A massive, thick bamboo trunk positioned in the immediate foreground on the right side, its surface detailed with horizontal nodes and a light dusting of frost near the bottom.",
    "kind": "anchor"
  }, {
    "id": "log_1",
    "from": "ref_image_0",
    "src_bbox": [850, 600, 950, 850],
    "tgt_bbox": [850, 600, 950, 850],
    "desc": "A fallen, hollow bamboo log resting horizontally on the ground, heavily coated in sharp white frost crystals.",
    "kind": "anchor"
  }, {
    "id": "stream_1",
    "from": "ref_image_0",
    "src_bbox": [800, 400, 1000, 550],
    "tgt_bbox": [800, 400, 1000, 550],
    "desc": "A narrow, frozen stream winding through the frosty terrain, its icy surface reflecting the ambient light.",
    "kind": "anchor"
  }, {
    "id": "lantern_1",
    "from": "ref_image_0",
    "src_bbox": [750, 300, 880, 380],
    "tgt_bbox": [750, 300, 880, 380],
    "desc": "A stone lantern, partially buried in the frost, constructed from dark charcoal-colored stone.",
    "kind": "anchor"
  }, {
    "id": "particles_1",
    "from": "ref_image_0",
    "src_bbox": [400, 200, 700, 800],
    "tgt_bbox": [400, 200, 700, 800],
    "desc": "Tiny, floating frost flakes suspended in the foggy air, illuminated by the slanting light shafts.",
    "kind": "anchor"
  }, {
    "id": "bird_1",
    "from": "ref_image_0",
    "src_bbox": [450, 500, 480, 530],
    "tgt_bbox": [450, 500, 480, 530],
    "desc": "A small, dark-feathered bird perched motionless on a bamboo node, forming a silhouette against the fog.",
    "kind": "anchor"
  }]
}, {
  "key": "cliff-after",
  "title": "Recolor, keep the text",
  "op": "recolour",
  "instruction": "Change the jacket to blue.",
  "before": "/images/flux3-image/layouts/cliff-before.webp",
  "after": "/images/flux3-image/layouts/cliff-after.webp",
  "width": 768,
  "height": 1360,
  "record": "In <ref_image_0>, change the bright red hooded jacket worn by the person <person_1> standing atop the rock pinnacle <rock_1> to blue. Keep everything else in the image exactly unchanged, including the text <En_Text_1>, the overcast sky <sky_1>, the distant hills <hills_1>, the composition, and the lighting.",
  "rows": [{
    "id": "person_1",
    "from": null,
    "src_bbox": null,
    "tgt_bbox": [378, 542, 492, 734],
    "desc": "Change the jacket to blue.",
    "kind": "new"
  }, {
    "id": "rock_1",
    "from": "ref_image_0",
    "src_bbox": [485, 0, 1000, 875],
    "tgt_bbox": [485, 0, 1000, 875],
    "desc": "A steep, jagged rock formation rising to a point. It is dark gray and brown, covered in patches of green moss and some white snow or frost near the bottom.",
    "kind": "anchor"
  }, {
    "id": "En_Text_1",
    "from": "ref_image_0",
    "src_bbox": [49, 0, 372, 1000],
    "tgt_bbox": [49, 0, 372, 1000],
    "desc": "The text \"bigger\\nidiots\\nthan you\\nhave done it\" written in large, bold, lowercase, white sans-serif font. The text is center-aligned and spans four lines.",
    "kind": "anchor"
  }, {
    "id": "sky_1",
    "from": "ref_image_0",
    "src_bbox": [0, 0, 1000, 1000],
    "tgt_bbox": [0, 0, 1000, 1000],
    "desc": "A pale, overcast sky filled with thick, diffused fog, casting a soft, even, muted gray-white light over the entire scene.",
    "kind": "anchor"
  }, {
    "id": "hills_1",
    "from": "ref_image_0",
    "src_bbox": [400, 0, 550, 1000],
    "tgt_bbox": [400, 0, 550, 1000],
    "desc": "The hazy, barely discernible silhouettes of distant rolling hills and mountains, appearing as soft, flat bands of muted blue-gray through the thick fog along the horizon.",
    "kind": "anchor"
  }]
}];

export const FLUX3_LAYOUT_EXAMPLES = [{
  "key": "runner",
  "title": "Stippled runner",
  "image": "https://cdn.sanity.io/images/2gpum2i6/production/18b18904e3840c135281c61d65968b8eb67e5d28-1400x1400.webp",
  "width": 1400,
  "height": 1400,
  "aspect_ratio": "1:1",
  "caption": "Minimalist graphic illustration featuring a black silhouette of a person <silhouette_1> centered against a solid, vibrant chartreuse background <background_1>. The figure is captured in a dynamic, mid-stride running pose, facing toward the left side of the frame. The image relies entirely on the high-contrast relationship between the two colors, mimicking a digital recreation of a screen-printed or risograph aesthetic, with no discernible light source or shadow.",
  "rows": [{
    "id": "background_1",
    "bbox": [0, 0, 1000, 1000],
    "desc": "A flat field of neon yellow-green possessing a subtle, tactile paper texture with fine, organic grain and slight variations in color saturation, giving the flat surface a sense of physical depth."
  }, {
    "id": "silhouette_1",
    "bbox": [150, 150, 850, 850],
    "desc": "A black silhouette of a person in motion, composed of a dense, stippled texture that resembles physical ink on paper or a low-resolution digital dither. The leading edges, including the front of the head, chest, and forward leg, are relatively solid and opaque. The trailing edges, such as the back, outstretched rear arm, and lifted back leg, dissolve into a spray of coarse, square-shaped pixels and scattered dots. The black ink shows a slight textural irregularity, as if pressed onto a porous surface."
  }],
  "hidden": ["background_1"]
}, {
  "key": "rooftop",
  "title": "Four on a rooftop",
  "image": "https://cdn.sanity.io/images/2gpum2i6/production/c09c527456f5197586d179ca9522c4afc556b4a2-1400x927.webp",
  "width": 1400,
  "height": 927,
  "aspect_ratio": "3:2",
  "caption": "High-angle black and white photograph with a grainy film texture. In the right foreground, a brightly lit, pale, flat rooftop <rooftop_1> anchors the composition. Four men in dark suits <person_1> <person_2> <person_3> <person_4> walk in mid-stride towards the right edge of the building, rendered almost entirely as silhouettes against the stark surface. They cast long, sharp diagonal shadows that stretch out before them under harsh, directional lighting. To the left, a plunging view reveals a deep urban canyon and a congested city street <street_1> far below, bisecting the dense architecture. The avenue is packed with a multitude of cars and buses <vehicle_collection_1> appearing as small dark shapes, alongside tiny figures of pedestrians <pedestrian_collection_1> dotting the sidewalks and crosswalks. The street is sharply split by light and shadow, with the left side plunged into deep darkness while the right catches intense sunlight. A faint haze or smoke <haze_1> drifts near the lower central portion of the canyon. The background is filled with towering, monolithic skyscrapers <skyscraper_collection_1> featuring repetitive grids of windows. The buildings recede into the distance, their details softening in the atmospheric perspective.",
  "rows": [{
    "id": "rooftop_1",
    "bbox": [400, 450, 1000, 1000],
    "desc": "a brightly lit, pale, flat concrete rooftop surface"
  }, {
    "id": "person_1",
    "bbox": [500, 500, 750, 600],
    "desc": "a man wearing a dark suit, rendered almost entirely as a black silhouette"
  }, {
    "id": "person_2",
    "bbox": [520, 620, 770, 720],
    "desc": "a silhouetted man in a dark suit, captured in mid-stride walking towards the right"
  }, {
    "id": "person_3",
    "bbox": [540, 740, 790, 840],
    "desc": "a man in a dark suit walking to the right, visible as a high-contrast silhouette"
  }, {
    "id": "person_4",
    "bbox": [560, 860, 810, 960],
    "desc": "a silhouetted figure of a man in a dark suit, striding towards the right"
  }, {
    "id": "street_1",
    "bbox": [100, 0, 1000, 450],
    "desc": "a deep urban canyon framing a city street viewed from a plunging high angle"
  }, {
    "id": "vehicle_collection_1",
    "bbox": [500, 50, 950, 400],
    "desc": "a dense collection of cars and buses navigating the street far below"
  }, {
    "id": "pedestrian_collection_1",
    "bbox": [550, 20, 900, 420],
    "desc": "numerous tiny figures of pedestrians scattered along the sidewalks"
  }, {
    "id": "haze_1",
    "bbox": [700, 100, 950, 400],
    "desc": "a faint, semi-translucent patch of haze or smoke drifting through the air"
  }, {
    "id": "skyscraper_collection_1",
    "bbox": [0, 0, 500, 1000],
    "desc": "a dense cluster of towering, monolithic skyscrapers"
  }],
  "hidden": []
}, {
  "key": "tokyo",
  "title": "Tokyo poster",
  "image": "https://cdn.sanity.io/images/2gpum2i6/production/04cedf90362e61a3227028a045e8f1113c0168be-927x1400.webp",
  "width": 927,
  "height": 1400,
  "aspect_ratio": "2:3",
  "caption": "A stylized digital illustration in a flat, graphic anime style, resembling a modern pop-art poster with non-directional, uniform lighting. The composition is built on a vibrant background <background_1>. Framed in a medium close-up from the chest up, a young demonic woman <character_1> occupies the center, angled in a three-quarter view and looking back over her shoulder. Large, bold Japanese typography <Ja_Text_1> runs down the left side of the frame, while another block of typography <Ja_Text_2> is positioned in the upper right section. In the lower right corner rests a square seal <Ja_Text_3>. At the bottom center, a line of bright text <Ja_Text_4> sits directly above a smaller line of text <Unknown_Text_1>.",
  "rows": [{
    "id": "background_1",
    "bbox": [0, 0, 1000, 1000],
    "desc": "A vibrant, solid primary yellow background field, scattered with small, dark blue stylized cloud-like shapes and scattered black specks that resemble spray-paint distress marks."
  }, {
    "id": "character_1",
    "bbox": [250, 150, 1000, 850],
    "desc": "A young woman rendered with clean, bold black outlines and flat areas of color without gradients. She has pale, cool lavender-blue skin, pointed ears, and two small, curved horns protruding from the top of her head. Her large, almond-shaped eyes have bright red irises and black pupils, and she wears a neutral, slightly aloof expression. Her hair is straight, shoulder-length, and matching lavender-blue, styled with short, blunt bangs. A thin red stick protrudes from the side of her mouth, and she wears a square red earring. Her layered outfit consists of a red turtleneck under a dark blue hooded jacket. The jacket features subtle cross-hatching texture, a large red collar, a circular smiley-face patch on the chest, and a rectangular pocket adorned with a jagged, tooth-like pattern."
  }, {
    "id": "Ja_Text_1",
    "bbox": [100, 50, 600, 180],
    "desc": "Large, bold red kanji and katakana characters arranged vertically, featuring distressed, spray-paint-like edges. The text reads \"ストリート\\n悪魔\"."
  }, {
    "id": "Ja_Text_2",
    "bbox": [50, 780, 400, 920],
    "desc": "Large, bold red kanji characters arranged vertically, featuring distressed, spray-paint-like edges. The text reads \"東京\"."
  }, {
    "id": "Ja_Text_3",
    "bbox": [820, 820, 920, 920],
    "desc": "A red square seal containing stylized, archaic characters, resembling a traditional Japanese hanko stamp. The text reads \"印\"."
  }, {
    "id": "Ja_Text_4",
    "bbox": [880, 350, 930, 650],
    "desc": "The text \"たうのさん\" written horizontally in a vibrant yellow, clean, flat sans-serif font."
  }, {
    "id": "Unknown_Text_1",
    "bbox": [940, 350, 970, 650],
    "desc": "A line of small, less legible white text written horizontally, reading \"ORIGINAL ARTWORK\"."
  }],
  "hidden": []
}, {
  "key": "soleil",
  "title": "Le Festival du Soleil",
  "image": "https://cdn.sanity.io/images/2gpum2i6/production/e0a80c721e2962973d76903f966160e06d7e5ed7-1050x1400.webp",
  "width": 1050,
  "height": 1400,
  "aspect_ratio": "3:4",
  "caption": "Vertical 35mm photograph with fine grain and slightly soft focus. Centered at the top is a cream-colored title <Fr_Text_1>. A hazy, pale grey and green overcast sky <sky_1> sits above dark, rolling mountains <mountains_1> and a distant coastal town <town_1> on the right. In the dark water <water_1> of a bay stands a massive, pale concrete parabolic dome <dome_1>. The dome's arched opening faces the shore, radiating a warm, golden-orange glow from its interior. A dark rectangular monolith <monolith_1> sits deep inside at water level. The golden light reflects on the rippling water, where scattered silhouettes of people <swimmers_1> wade. In the foreground, a pale, pebbly beach <beach_1> holds a large crowd of seated onlookers <crowd_1> in casual, light-colored clothing. Their backs are to the slightly elevated camera as they gaze at the structure under blue hour lighting.",
  "rows": [{
    "id": "Fr_Text_1",
    "bbox": [40, 200, 100, 800],
    "desc": "\"LE FESTIVAL DU SOLEIL\" written in a thin, elegant, serif typeface in a light cream color"
  }, {
    "id": "sky_1",
    "bbox": [0, 0, 280, 1000],
    "desc": "a hazy, overcast sky in muted tones of pale grey and muted green"
  }, {
    "id": "mountains_1",
    "bbox": [200, 0, 400, 700],
    "desc": "dark, rolling mountains forming the backdrop along the coastline"
  }, {
    "id": "town_1",
    "bbox": [280, 700, 420, 1000],
    "desc": "faint lights and small buildings of a coastal town at the foot of the hills"
  }, {
    "id": "water_1",
    "bbox": [380, 0, 750, 1000],
    "desc": "dark bay water with a rippling surface"
  }, {
    "id": "dome_1",
    "bbox": [250, 150, 650, 850],
    "desc": "a massive, smooth parabolic dome of pale concrete"
  }, {
    "id": "monolith_1",
    "bbox": [550, 460, 610, 540],
    "desc": "a small, dark rectangular silhouette resembling a stage or monolith"
  }, {
    "id": "swimmers_1",
    "bbox": [580, 200, 720, 800],
    "desc": "dozens of small, silhouetted figures scattered in the dark water, wading"
  }, {
    "id": "beach_1",
    "bbox": [720, 0, 1000, 1000],
    "desc": "a pale, pebbly beach filling the foreground"
  }, {
    "id": "crowd_1",
    "bbox": [740, 0, 1000, 1000],
    "desc": "a large crowd of people seated on the beach in casual, light-colored summer attire"
  }],
  "hidden": []
}, {
  "key": "on-time",
  "title": "You'll do everything on time",
  "image": "https://cdn.sanity.io/images/2gpum2i6/production/395c953738988b8a24832fe2c3ca843a5a40d096-786x1400.webp",
  "width": 786,
  "height": 1400,
  "aspect_ratio": "9:16",
  "caption": "Monochromatic graphic design poster framed by solid black letterbox bars at the top <bar_1> and bottom <bar_2>. The background is a textured, off-white surface <background_1>. Dominating the left side of the vertical frame is a large, abstract black mass <mass_1>. To the right of this mass, stacked lowercase text is printed <En_Text_1>. Further down on the right side, a second block of text sits <En_Text_2>. Near the bottom center, positioned below the abstract mass and to the left of the lower text, is a pair of disembodied eyes <eyes_1>. The entire composition features a distressed, photocopy-like aesthetic with heavy grain, noise, and stark black-and-white contrast.",
  "rows": [{
    "id": "bar_1",
    "bbox": [0, 0, 80, 1000],
    "desc": "a solid black horizontal rectangle forming a top letterbox border"
  }, {
    "id": "bar_2",
    "bbox": [920, 0, 1000, 1000],
    "desc": "a solid black horizontal rectangle forming a bottom letterbox border"
  }, {
    "id": "background_1",
    "bbox": [80, 0, 920, 1000],
    "desc": "a textured, off-white surface spanning the area between the black bars"
  }, {
    "id": "mass_1",
    "bbox": [150, 50, 750, 480],
    "desc": "a large, abstract black smear resembling a distorted face"
  }, {
    "id": "En_Text_1",
    "bbox": [350, 500, 520, 920],
    "desc": "legible black lowercase text reading \"you'll do\\neverything\""
  }, {
    "id": "En_Text_2",
    "bbox": [700, 550, 780, 880],
    "desc": "black lowercase text reading \"on time\""
  }, {
    "id": "eyes_1",
    "bbox": [760, 250, 860, 500],
    "desc": "a pair of human eyes, cropped without a surrounding face"
  }],
  "hidden": []
}, {
  "key": "panels",
  "title": "Two tall panels",
  "image": "https://cdn.sanity.io/images/2gpum2i6/production/64091d4e438efef0fcc67d2e7f76592180f86837-1050x1400.webp",
  "width": 1050,
  "height": 1400,
  "aspect_ratio": "3:4",
  "caption": "Full-color graphic design on a solid black background <background_1>. The composition features two tall, narrow rectangular panels styled as perforated postage stamps, separated by a vertical black gutter. The left panel <panel_1> is rendered in the style of a traditional Japanese ukiyo-e woodblock print with aged paper texture, subtle grain, and ink bleed, depicting dark, craggy rocks and lush green foreground foliage. Down the center of this panel, a cascading waterfall <waterfall_1> tumbles over the rocks. A small wooden bridge <bridge_1> spans the chasm in the middle ground, where two figures stand. On the left is a figure in a light blue kimono and straw hat <person_1>, and on the right is a figure in a purple kimono holding a red parasol <person_2>. White text overlays the left panel at the top <En_Text_1> and bottom <En_Text_2>. The right panel <panel_2> shares the same ukiyo-e style, perforated edges, and horizontal segment divisions, showing a serene landscape. At the top, a sloping mountain <mountain_1> sits under a gradient twilight sky with silhouetted pine trees. In the middle ground, a traditional Japanese house <house_1> rests on a rocky cliff, its windows emitting a warm yellow light. Below the cliff, a rushing turquoise river <river_1> filled with dark grey boulders flows through the foreground. White text is overlaid on the right panel at the top <En_Text_3>, middle <En_Text_4>, and bottom <En_Text_5>. Both panels feature bold outlines, flat areas of color, and high-angle perspectives.",
  "rows": [{
    "id": "background_1",
    "bbox": [0, 0, 1000, 1000],
    "desc": "A solid black background filling the entire frame, providing a dark contrast to the two bright rectangular panels."
  }, {
    "id": "panel_1",
    "bbox": [50, 100, 950, 480],
    "desc": "A tall, narrow rectangular panel on the left, styled as a postage stamp with an outer border of circular perforations. Two horizontal lines of perforations divide the panel evenly into three vertical segments. The artwork within mimics an ukiyo-e woodblock print on aged paper with subtle grain and ink bleed, depicting dark, craggy rocks and lush green foliage in the foreground."
  }, {
    "id": "waterfall_1",
    "bbox": [150, 150, 850, 430],
    "desc": "A cascading waterfall tumbling down the rocky face in the left panel, rendered in flat areas of white and pale blue with rhythmic, curved outlines indicating the downward flow of the water."
  }, {
    "id": "bridge_1",
    "bbox": [440, 150, 480, 430],
    "desc": "A small wooden bridge spanning the rocky chasm in the middle ground of the left panel, constructed with simple, bold outlines and flat earthy brown tones."
  }, {
    "id": "person_1",
    "bbox": [340, 220, 450, 290],
    "desc": "A small figure standing on the left side of the wooden bridge, wearing a light blue kimono with a flat geometric pattern and a wide yellow straw hat."
  }, {
    "id": "person_2",
    "bbox": [320, 310, 450, 400],
    "desc": "A small figure standing on the right side of the wooden bridge, wearing a purple kimono and holding up a bright red parasol decorated with white floral patterns."
  }, {
    "id": "En_Text_1",
    "bbox": [80, 120, 160, 460],
    "desc": "White sans-serif typography overlaid at the top of the left panel, reading \"i could stay here with you\\n愛してる\", with the English text positioned above the Japanese characters."
  }, {
    "id": "En_Text_2",
    "bbox": [850, 120, 920, 460],
    "desc": "White sans-serif typography overlaid at the bottom of the left panel, reading \"永遠 forever and ever\"."
  }, {
    "id": "panel_2",
    "bbox": [50, 520, 950, 900],
    "desc": "A tall, narrow rectangular panel on the right, styled as a postage stamp with a perforated outer edge and two horizontal lines of perforations dividing it into three segments. The artwork shares the ukiyo-e woodblock print style, aged paper texture, and ink bleed, depicting a rocky cliff overlooking a river."
  }, {
    "id": "mountain_1",
    "bbox": [60, 530, 400, 890],
    "desc": "A sloping mountain in the background of the right panel, set against a soft twilight sky that transitions from pale orange at the horizon to deep cerulean blue at the top. Tall, slender pine trees are silhouetted against the sky."
  }, {
    "id": "house_1",
    "bbox": [380, 650, 550, 850],
    "desc": "A traditional Japanese house perched on a rocky cliff in the middle ground of the right panel. It features dark wood construction, a tiled roof, and windows emitting a warm, glowing yellow light."
  }, {
    "id": "river_1",
    "bbox": [550, 530, 940, 890],
    "desc": "A rushing river filling the foreground of the right panel, rendered in vibrant turquoise with churning white water and dark grey boulders breaking the surface."
  }, {
    "id": "En_Text_3",
    "bbox": [80, 540, 160, 880],
    "desc": "White sans-serif typography overlaid at the top of the right panel, reading \"Someday You’ll Find Me\\nどこか\"."
  }, {
    "id": "En_Text_4",
    "bbox": [450, 540, 530, 880],
    "desc": "White sans-serif typography overlaid in the middle of the right panel, reading \"Somewhere Quiet\\n静か\"."
  }, {
    "id": "En_Text_5",
    "bbox": [850, 540, 930, 880],
    "desc": "White sans-serif typography overlaid at the bottom of the right panel, reading \"In the Peace & Tranquil\\n平和\"."
  }],
  "hidden": ["background_1"]
}, {
  "key": "spectators",
  "title": "Winter spectators",
  "image": "https://cdn.sanity.io/images/2gpum2i6/production/1ecb99e9f04048560a6b220a0a6accfda39919c0-1400x927.webp",
  "width": 1400,
  "height": 927,
  "aspect_ratio": "3:2",
  "caption": "Full-color outdoor photograph with a shallow depth of field, taken under overcast daytime light at a winter sporting event. A medium close-up captures a row of spectators, focusing on a woman <person_1> seated in the left foreground in profile, facing right. Tucked into her coat and held closely in her lap is a small Pomeranian dog <animal_1>. Seated slightly out of alignment next to her on the right is a man <person_2>, also in profile facing right, holding a Jack Russell Terrier <animal_2> in his lap. Extending to the left behind them is a row of softly blurred spectators, including two blonde women <person_3> <person_4> wearing winter attire. In the background, a hillside covered with dark evergreen trees <region_1> rises against a pale sky. To the upper right, event structures are visible, featuring a white flag <flag_3>, a German flag <flag_1>, a Swiss flag <flag_2>, and a blue banner <structure_1> bearing illegible white text. The composition contrasts the warm browns of the fur coats and dogs with the cooler blues of denim jeans and the muted winter landscape.",
  "rows": [{
    "id": "person_1",
    "bbox": [150, 200, 950, 550],
    "desc": "A woman seen in profile facing right, with fair skin. She wears a voluminous, light brown fur coat, a matching plush fur headband over her hair, oversized dark sunglasses with a silver accent on the frame, and a large, round pearl earring. A patterned silk scarf is tied around her neck, its edges slightly wrinkled. She wears blue denim jeans on her lower half."
  }, {
    "id": "animal_1",
    "bbox": [500, 320, 750, 520],
    "desc": "A small, fluffy Pomeranian dog with reddish-brown fur, tucked partially inside the woman's coat and resting in her lap. The dog's head is turned to look directly toward the camera, featuring dark, alert eyes and a black nose."
  }, {
    "id": "person_2",
    "bbox": [180, 520, 950, 880],
    "desc": "A man seen in profile facing right, with fair skin. He wears a dark brown knit beanie, wire-rimmed eyeglasses, a dark leather jacket layered over a red sweater, black leather gloves showing a few stray light dog hairs, and blue denim jeans."
  }, {
    "id": "animal_2",
    "bbox": [520, 650, 850, 850],
    "desc": "A medium-sized Jack Russell Terrier with white, black, and brown markings and a brown leather collar. The dog sits upright in the man's lap, its body and gaze directed intently to the right."
  }, {
    "id": "person_3",
    "bbox": [250, 50, 700, 220],
    "desc": "A softly blurred figure of a woman with blonde hair, wearing sunglasses and a bulky winter coat, seated in the background row."
  }, {
    "id": "person_4",
    "bbox": [260, 0, 650, 120],
    "desc": "A softly blurred figure of a woman with blonde hair, wearing a fur hat and a winter jacket, seated further down the row near the left edge of the frame."
  }, {
    "id": "region_1",
    "bbox": [0, 0, 350, 1000],
    "desc": "A softly blurred background expanse of a hillside densely covered with dark evergreen trees, sitting below a flat, pale overcast sky."
  }, {
    "id": "flag_3",
    "bbox": [70, 680, 210, 760],
    "desc": "A softly blurred plain white flag flying from a pole."
  }, {
    "id": "flag_1",
    "bbox": [80, 780, 220, 860],
    "desc": "A softly blurred German flag with black, red, and gold horizontal stripes, flapping from a pole."
  }, {
    "id": "flag_2",
    "bbox": [90, 880, 230, 960],
    "desc": "A softly blurred Swiss flag, featuring a red square with a white cross, flying from a pole."
  }, {
    "id": "structure_1",
    "bbox": [250, 750, 450, 980],
    "desc": "A softly blurred blue banner attached to a distant metal event structure, displaying illegible white text."
  }],
  "hidden": []
}, {
  "key": "portraits",
  "title": "Portrait grid",
  "image": "https://cdn.sanity.io/images/2gpum2i6/production/f8ae52b08b10a2c3f4f346dbce43216e2357d3dd-1400x927.webp",
  "width": 1400,
  "height": 927,
  "aspect_ratio": "3:2",
  "caption": "Studio photograph of a fashion mood board arranged as a grid of fifteen rectangular images separated by clean white borders <board_1>. The top row contains five images: a woman sitting with a wide stance in a black leather jumpsuit <image_1>, a close-up of legs in red tights <image_2>, a blurred figure in a dark blue velvet garment <image_3>, a woman in a black ribbed turtleneck with closed eyes <image_4>, and a black-and-white shot of legs in high heels on a chair <image_5>. The middle row features a high-contrast face close-up <image_6>, a portrait of a woman with closed eyes and a pearl earring <image_7>, the back of a head with wavy hair being combed <image_8>, a motion-blurred facial profile <image_9>, and a figure mid-stride in a dark skirt and boots <image_10>. The bottom row displays a black-and-white profile of a bob haircut <image_11>, an extreme close-up of an eye and damp hair <image_12>, white flower petals on a black background <image_13>, a low-angle shot of a teal leather jacket and silver trousers <image_14>, and a close-up of a hand wearing silver rings <image_15>.",
  "rows": [{
    "id": "board_1",
    "bbox": [0, 0, 1000, 1000],
    "desc": "A flat white surface forming the background and intersecting borders of the grid layout."
  }, {
    "id": "image_1",
    "bbox": [20, 20, 326, 196],
    "desc": "A color photograph of a woman with fair skin sitting on a stool with a wide stance, wearing a glossy black leather jumpsuit."
  }, {
    "id": "image_2",
    "bbox": [20, 216, 326, 392],
    "desc": "A color photograph focusing on a pair of legs wearing vibrant red opaque tights against a neutral grey background."
  }, {
    "id": "image_3",
    "bbox": [20, 412, 326, 588],
    "desc": "A color photograph showing a figure in a dark blue velvet garment, heavily motion-blurred to obscure the body details."
  }, {
    "id": "image_4",
    "bbox": [20, 608, 326, 784],
    "desc": "A black-and-white photograph of a woman with dark skin wearing a black ribbed turtleneck sweater, her head tilted slightly back with her eyes closed."
  }, {
    "id": "image_5",
    "bbox": [20, 804, 326, 980],
    "desc": "A black-and-white photograph showing a woman's legs crossed, wearing dark high heels, resting on the edge of a minimalist wire chair."
  }, {
    "id": "image_6",
    "bbox": [346, 20, 652, 196],
    "desc": "A black-and-white photograph featuring a tight close-up of a woman's face with pale skin, illuminated by harsh directional light casting deep shadows."
  }, {
    "id": "image_7",
    "bbox": [346, 216, 652, 392],
    "desc": "A color photograph of a woman with olive skin facing forward, her eyes closed, wearing a single large pearl earring."
  }, {
    "id": "image_8",
    "bbox": [346, 412, 652, 588],
    "desc": "A black-and-white photograph showing the back of a person's head with long wavy hair; a black comb is caught mid-stroke through the strands."
  }, {
    "id": "image_9",
    "bbox": [346, 608, 652, 784],
    "desc": "A black-and-white photograph of a woman's profile, rendered with horizontal motion blur that smears her features."
  }, {
    "id": "image_10",
    "bbox": [346, 804, 652, 980],
    "desc": "A color photograph of a person captured mid-stride, wearing a dark flowing skirt and black leather boots, the fabric trailing behind them."
  }, {
    "id": "image_11",
    "bbox": [672, 20, 978, 196],
    "desc": "A black-and-white photograph of a woman's profile, featuring a sharp, chin-length bob haircut against a bright white background."
  }, {
    "id": "image_12",
    "bbox": [672, 216, 978, 392],
    "desc": "A black-and-white extreme close-up of a single human eye, surrounded by strands of damp, dark hair clinging to the skin."
  }, {
    "id": "image_13",
    "bbox": [672, 412, 978, 588],
    "desc": "A black-and-white photograph of white flower petals scattered against a solid black background."
  }, {
    "id": "image_14",
    "bbox": [672, 608, 978, 784],
    "desc": "A color photograph taken from a low angle, showing a person wearing a dark teal leather jacket and shimmering silver trousers."
  }, {
    "id": "image_15",
    "bbox": [672, 804, 978, 980],
    "desc": "A black-and-white photograph of a hand with fair skin resting on dark fabric, adorned with multiple thick silver rings."
  }],
  "hidden": []
}, {
  "key": "bench",
  "title": "Three on a bench",
  "image": "https://cdn.sanity.io/images/2gpum2i6/production/1c91f02039d9af9fbffa95a034c72f01dd1006a5-927x1400.webp",
  "width": 927,
  "height": 1400,
  "aspect_ratio": "2:3",
  "caption": "Full-color indoor 35mm photograph with a slight film grain and a warm color cast, lit by harsh, direct camera flash that casts sharp shadows against the background. A light-colored wooden bench <bench_1> sits against a wall of horizontal light-wood panels <wall_1>. On the floor beneath the bench is a vibrant moss-green rug <rug_1>. Seated on the left side of the bench is a man <person_1> captured mid-sip from a glass of amber liquid <glass_1>. In the center sits a humanoid figure <figure_1>. To the right, another man <person_2> sits with a slumped posture, looking downward at a second glass of amber liquid <glass_2> held in his hand. The framing is a full-body shot centered on the three figures, leaving a significant expanse of the wood-paneled wall visible above their heads.",
  "rows": [{
    "id": "wall_1",
    "bbox": [0, 0, 750, 1000],
    "desc": "An indoor wall covered in horizontal light-wood panels. The surface bears sharp, dark cast shadows from the seated subjects, characteristic of a direct, built-in camera flash."
  }, {
    "id": "bench_1",
    "bbox": [480, 50, 780, 950],
    "desc": "A simple, light-colored wooden bench frame topped with a thick, flat white cushion, spanning the width of the frame behind the subjects."
  }, {
    "id": "rug_1",
    "bbox": [730, 0, 1000, 1000],
    "desc": "A vibrant moss-green rug covering the floor area beneath the bench, its textured surface illuminated by the harsh overhead flash."
  }, {
    "id": "person_1",
    "bbox": [300, 80, 920, 380],
    "desc": "A man with fair skin, short brown hair, and glasses. He wears a white short-sleeved button-down shirt with thin vertical black stripes and embroidered patches, including a cartoon dog on the chest. He has black trousers and bright red high-top sneakers. His left hand rests on his knee, revealing a black wristwatch, while his right hand holds a glass to his mouth."
  }, {
    "id": "glass_1",
    "bbox": [360, 240, 430, 300],
    "desc": "A clear glass tumbler partially filled with an amber liquid, held up near the face of the man on the left."
  }, {
    "id": "figure_1",
    "bbox": [320, 360, 900, 640],
    "desc": "A humanoid figure encased in a matte grey, form-fitting fabric suit. The rounded head features two small, dark, circular eyes. Large, white-and-grey robotic hands with articulated fingers are held in a stylized, geometric pose across its chest. Its feet are covered in bulky, rounded grey footwear matching the suit."
  }, {
    "id": "person_2",
    "bbox": [350, 620, 920, 920],
    "desc": "A man with fair skin and short dark hair. He wears a black t-shirt and loose-fitting blue jeans. He has a slumped posture with his left arm resting across his lap, looking downward. His right hand holds a glass of liquid."
  }, {
    "id": "glass_2",
    "bbox": [640, 680, 720, 750],
    "desc": "A clear glass tumbler containing amber liquid, held low over the lap in the right hand of the man on the right."
  }],
  "hidden": []
}, {
  "key": "forest-signs",
  "title": "Cabin, Sauna",
  "image": "https://cdn.sanity.io/images/2gpum2i6/production/d78185f6a0cc1639c2493b30d4779aefd03edb5d-1400x927.webp",
  "width": 1400,
  "height": 927,
  "aspect_ratio": "3:2",
  "caption": "Digital composite image featuring a dense, sunlit forest <forest_1> as the background, shot at eye level. Centered in the foreground is a large, semi-transparent rectangular graphic overlay. Its upper section <region_4> is a subtle clear tint over the canopy. The middle section of the overlay is divided horizontally into two bands. The top band <region_1> consists of vertical stripes alternating between clear transparency and translucent chartreuse yellow, ending in a solid chartreuse square on the far right that contains a black directional sign <En_Text_1>. The lower band <region_2> mirrors this structure with alternating clear and chartreuse stripes, ending in a solid chartreuse square on the far left that holds another black directional sign <En_Text_2>. Below these striped bands, the overlay continues downwards as a dark, slightly distorted filter <region_3> covering the lower forest foliage, creating a sharp contrast between the organic textures of the woods and the crisp, straight edges of the rectangle.",
  "rows": [{
    "id": "forest_1",
    "bbox": [0, 0, 1000, 1000],
    "desc": "A dense forest scene with tall, rough-barked tree trunks flanking the sides, a canopy of lush green leaves above, and a floor densely carpeted with green ferns. Dappled natural sunlight filters through the trees, creating bright highlights against earthy brown and deep green shadows."
  }, {
    "id": "region_4",
    "bbox": [100, 300, 350, 700],
    "desc": "The upper section of a geometric rectangular overlay, appearing as a lightly tinted, semi-transparent pane of glass that slightly shifts the color and contrast of the forest canopy behind it."
  }, {
    "id": "region_1",
    "bbox": [350, 300, 450, 700],
    "desc": "A horizontal band divided into vertical stripes that alternate between clear transparency and translucent chartreuse yellow. On the far right edge, a solid chartreuse yellow square anchors the band."
  }, {
    "id": "En_Text_1",
    "bbox": [365, 615, 435, 685],
    "desc": "A thin, black, right-pointing arrow centered above the word \"Cabin\" in a clean, sans-serif black font."
  }, {
    "id": "region_2",
    "bbox": [450, 300, 550, 700],
    "desc": "A horizontal band directly below the first, featuring the same vertical stripes alternating between clear transparency and translucent chartreuse yellow. On the far left edge, a solid chartreuse yellow square anchors the band."
  }, {
    "id": "En_Text_2",
    "bbox": [465, 315, 535, 385],
    "desc": "A thin, black, left-pointing arrow centered above the word \"Sauna\" in a clean, sans-serif black font."
  }, {
    "id": "region_3",
    "bbox": [550, 300, 900, 700],
    "desc": "The lower section of the rectangular overlay, functioning as a dark, slightly distorted semi-transparent filter that overlays the ferns on the forest floor, dimming the greens and browns beneath its crisp geometric edges."
  }],
  "hidden": ["forest_1"]
}, {
  "key": "moodboard",
  "title": "Fashion moodboard",
  "image": "/images/flux3-image/layouts/moodboard.webp",
  "width": 1050,
  "height": 1400,
  "aspect_ratio": "3:4",
  "caption": "Formal digital collage serving as a fashion mood board, structured into rectangular panels separated by thin white borders against a stark white background canvas. In the upper left, a square panel <panel_1> sits beside a taller rectangular panel <panel_2> in the upper middle, with another square panel <panel_3> on the upper right. Running vertically down the left margin is a text block <En_Text_1>. The middle section is dominated by a large, wide panel <panel_4>. Below this, a horizontal row contains four smaller detail panels: the first <panel_5> on the left, the second <panel_6> next to it, the third <panel_7> in the mid-right, and the fourth <panel_8> on the far right, which contains a visible woven label <En_Text_4>. Along the bottom edge, a block of sans-serif text <En_Text_2> sits on the left, while a large script signature <En_Text_3> spans the bottom right.",
  "rows": [{
    "id": "panel_1",
    "bbox": [40, 80, 320, 360],
    "desc": "A 4x4 grid containing sixteen repetitive portraits of a female model with long dark hair and fair skin. Each sub-frame shows her in a neutral gray top, with slight variations in her head tilt and the sharp, high-contrast studio lighting casting deep shadows on her face."
  }, {
    "id": "panel_2",
    "bbox": [40, 380, 460, 660],
    "desc": "A crisp, full-length fashion photograph. A model in a saturated mustard-yellow corduroy suit with wide-leg trousers and a heavy jacket walks toward the camera. They step across a dark, highly reflective studio floor."
  }, {
    "id": "panel_3",
    "bbox": [40, 680, 320, 960],
    "desc": "A close-up shot from behind of a male model with a shaved head wearing a dark blue, heavy denim jacket. A stark white, rectangular fabric tag is stitched onto the upper back yoke of the denim."
  }, {
    "id": "panel_4",
    "bbox": [480, 80, 740, 960],
    "desc": "A grainy, high-contrast behind-the-scenes photograph. In the dark foreground, the black silhouette of a photographer holding a camera is visible. Beyond them, a female model moves rapidly, her long dark hair whipping across her face. She wears a shimmering, pale lavender blazer. The background is a hazy, backlit gray studio space with visible rafters and softboxes above."
  }, {
    "id": "panel_5",
    "bbox": [760, 80, 880, 280],
    "desc": "A waist-up portrait of a model with olive skin looking off-camera, wearing a translucent, light purple button-down shirt. The soft lighting catches the sheer, wrinkled texture of the fabric."
  }, {
    "id": "panel_6",
    "bbox": [760, 300, 880, 500],
    "desc": "A tight crop of a model's torso and shoulders. They are wearing a saturated burnt orange ribbed tank top, set against a deep black background."
  }, {
    "id": "panel_7",
    "bbox": [760, 520, 880, 720],
    "desc": "A macro detail shot focusing on layered garments. A glossy brown leather-like jacket is partially unzipped, revealing a bright lime green top underneath."
  }, {
    "id": "panel_8",
    "bbox": [760, 740, 880, 960],
    "desc": "A tight close-up of a dark indigo denim shirt collar. Sewn into the inside neckline is a white fabric label."
  }, {
    "id": "En_Text_4",
    "bbox": [800, 780, 830, 920],
    "desc": "Black, clean sans-serif typography printed on the white label reading \"BIANCA SAUNDERS\"."
  }, {
    "id": "En_Text_1",
    "bbox": [360, 20, 740, 60],
    "desc": "Clean, black, sans-serif text oriented vertically, reading from bottom to top: \"LONDON STUDIO SHOOT\\nPHOTOGRAPHY: JAMIE SHIPSTON-MOURNE\\nSTYLING: NATHAN KLEIN\\nBTS: TYLER MATTHIAS\"."
  }, {
    "id": "En_Text_2",
    "bbox": [900, 80, 960, 500],
    "desc": "Clean, black, sans-serif typography arranged in a left-aligned block reading \"BIANCA SAUNDERS X THE MIDNIGHT CLUB\\nMEET YOU BEFORE SUNRISE\\nSS27 COLLECTION\", followed by two lines of smaller, tightly tracked production credits."
  }, {
    "id": "En_Text_3",
    "bbox": [900, 600, 980, 960],
    "desc": "A large, sweeping black script signature reading \"Meet You Before Sunrise.\"."
  }]
}, {
  "key": "picnic",
  "title": "Picnic in the park",
  "image": "/images/flux3-image/layouts/picnic.webp",
  "width": 1400,
  "height": 927,
  "aspect_ratio": "3:2",
  "caption": "Full-color outdoor photograph with a slight film grain and shallow depth of field, captured from a ground-level, low-angle perspective in an urban park. Warm, directional late-afternoon sunlight filters through a dense canopy of deciduous trees <trees_1> in the background. Occupying the center and extending to the left is a white picnic blanket with thin red horizontal stripes <blanket_1>. A young girl of East Asian descent <girl_1> lies prone on the blanket, leaning forward on her elbows. Her left hand rests near her chest with fingers slightly curled, while her right hand extends toward the right edge of the frame. Just off the blanket on the green grass <grass_1> stands a small brown sparrow <sparrow_1> facing her. In the lower right foreground, a second sparrow <sparrow_2> is partially visible, heavily blurred by the shallow depth of field. Scattered on the left side of the blanket are several picnic items: a clear plastic water bottle with a blue cap <bottle_1>, a red cardboard box <box_1> displaying white text <En_Text_1>, scattered papers <papers_1>, and a small open snack container <container_1>. In the blurred background, a black lamppost <lamppost_1> stands among the trees, and several distant, out-of-focus figures <figures_1> are visible walking and sitting on benches.",
  "rows": [{
    "id": "trees_1",
    "bbox": [0, 0, 400, 1000],
    "desc": "Soft bokeh masses of green and golden-green foliage forming a dense deciduous canopy in the upper background, pierced by warm patches of sunlight."
  }, {
    "id": "blanket_1",
    "bbox": [450, 50, 950, 750],
    "desc": "A white fabric picnic blanket featuring thin, horizontal red stripes, spread across the ground and slightly wrinkled from use."
  }, {
    "id": "girl_1",
    "bbox": [250, 200, 850, 700],
    "desc": "A young girl of East Asian descent with fair skin and dark hair styled in pigtails with front bangs. She wears a white t-shirt featuring a faint, slightly faded pastel rainbow graphic across the chest. She is lying on her stomach, propped up on her elbows. Her expression shows quiet concentration, eyes fixed forward. Her left hand is near her collarbone with curled fingers; her right arm reaches out toward the right side."
  }, {
    "id": "grass_1",
    "bbox": [400, 600, 950, 1000],
    "desc": "A manicured lawn of bright green grass bordering the blanket, illuminated by patches of warm, directional sunlight revealing individual blades."
  }, {
    "id": "sparrow_1",
    "bbox": [650, 720, 800, 850],
    "desc": "A small, sharp-focused brown and grey sparrow standing on the grass, facing left toward the girl's extended hand."
  }, {
    "id": "sparrow_2",
    "bbox": [800, 850, 1000, 1000],
    "desc": "A heavily blurred brown sparrow in the extreme lower right foreground, only partially visible as a soft brown mass with no fine details."
  }, {
    "id": "bottle_1",
    "bbox": [600, 80, 700, 250],
    "desc": "A clear plastic water bottle with a blue plastic screw-on cap, half full of water, lying on its side on the blanket."
  }, {
    "id": "box_1",
    "bbox": [500, 150, 620, 350],
    "desc": "A rectangular red cardboard box sitting on the blanket, angled slightly, with white text printed on its visible side."
  }, {
    "id": "En_Text_1",
    "bbox": [540, 160, 590, 340],
    "desc": "The word \"MONOPOLY\" printed in bold, white capital letters along the side of the red cardboard box."
  }, {
    "id": "papers_1",
    "bbox": [680, 100, 780, 280],
    "desc": "A few loose, slightly crumpled white papers resting flat on the striped blanket."
  }, {
    "id": "container_1",
    "bbox": [720, 250, 820, 380],
    "desc": "A small, translucent plastic snack container holding a few round crackers."
  }, {
    "id": "lamppost_1",
    "bbox": [150, 750, 450, 800],
    "desc": "A tall, classic black metal park lamppost, rendered as a soft, blurred vertical shape in the background."
  }, {
    "id": "figures_1",
    "bbox": [300, 100, 450, 900],
    "desc": "Several unidentifiable blurred figures in casual clothing, appearing as soft shapes of color sitting on park benches and walking in the distant background."
  }]
}, {
  "key": "alphabet",
  "title": "Alphabet poster",
  "image": "/images/flux3-image/layouts/alphabet.webp",
  "width": 1400,
  "height": 1400,
  "aspect_ratio": "1:1",
  "caption": "Digital graphic design mockup shot straight-on with a top-down view under flat, even studio-style lighting. A flat, neutral gray background <background_1> fills the frame. Centered in the composition is a vertical, rectangular black poster <poster_1>, appearing to hover just above the surface due to a soft, diffuse drop shadow extending along its left and bottom edges. The poster displays the complete English alphabet rendered in stark white with a geometric glitch aesthetic, featuring horizontal shifts and missing angular slices. The letters are arranged systematically across five horizontal rows: the first row <En_Text_1>, the second row <En_Text_2>, the third row <En_Text_3>, the fourth row <En_Text_4>, and the fifth row <En_Text_5>. Centered near the bottom edge of the poster is a logo <graphic_1>. Immediately below this emblem, a small line of text <En_Text_6> completes the design.",
  "rows": [{
    "id": "background_1",
    "bbox": [0, 0, 1000, 1000],
    "desc": "A flat, neutral gray background filling the entire frame, completely devoid of surface glare or texture."
  }, {
    "id": "poster_1",
    "bbox": [100, 250, 900, 750],
    "desc": "A vertical, rectangular black poster centered in the frame with perfectly straight, undistorted edges. A soft, diffuse drop shadow extends along its left and bottom edges, creating a hovering illusion."
  }, {
    "id": "En_Text_1",
    "bbox": [150, 300, 250, 700],
    "desc": "Stark white, uppercase letters \"A B C D E F\" featuring a geometric glitch aesthetic with horizontal shifts, staggered alignments, and missing angular slices mimicking digital distortion."
  }, {
    "id": "En_Text_2",
    "bbox": [280, 300, 380, 700],
    "desc": "Stark white, uppercase letters \"G H I J K L\" featuring a geometric glitch aesthetic with horizontal shifts, staggered alignments, and missing angular slices mimicking digital distortion."
  }, {
    "id": "En_Text_3",
    "bbox": [410, 320, 510, 680],
    "desc": "Stark white, uppercase letters \"M N O P Q\" featuring a geometric glitch aesthetic with horizontal shifts, staggered alignments, and missing angular slices mimicking digital distortion."
  }, {
    "id": "En_Text_4",
    "bbox": [540, 320, 640, 680],
    "desc": "Stark white, uppercase letters \"R S T U V\" featuring a geometric glitch aesthetic with horizontal shifts, staggered alignments, and missing angular slices mimicking digital distortion."
  }, {
    "id": "En_Text_5",
    "bbox": [670, 350, 770, 650],
    "desc": "Stark white, uppercase letters \"W X Y Z\" featuring a geometric glitch aesthetic with horizontal shifts, staggered alignments, and missing angular slices mimicking digital distortion."
  }, {
    "id": "graphic_1",
    "bbox": [800, 460, 830, 540],
    "desc": "A minimalist logo depicting a stylized letter \"M\" constructed from overlapping, thin white triangular outlines."
  }, {
    "id": "En_Text_6",
    "bbox": [840, 450, 860, 550],
    "desc": "The text \"MIKE NESS\" printed in a very small, clean, white sans-serif typeface."
  }]
}, {
  "key": "arches",
  "title": "Concrete arches",
  "image": "/images/flux3-image/layouts/arches.webp",
  "width": 1400,
  "height": 1400,
  "aspect_ratio": "1:1",
  "caption": "Full-color architectural photograph shot on 35mm film from a low-angle perspective at ground level, featuring bright, direct sunlight and visible film grain. Under a clear, pale blue sky <sky_1>, a Brutalist concrete structure <building_1> dominates the right and center of the frame. The building features three clusters of tall, nested parabolic arches. At the base of the central section, a flat concrete overhang <overhang_1> shelters a small, dark entrance <entrance_1>. Mounted on the overhang is a large, rectangular red sign <sign_1> displaying a circular emblem <emblem_1> on the left, a line of Georgian script <Ka_Text_1> on top, and English text <En_Text_1> below. Along the ledge behind the sign, several small flags on thin poles <flags_1> are visible. To the left stands a portion of an older, traditional building <building_2> with a slender, tiered tower topped by a metallic spire and a five-pointed star. In the foreground on the far left, a dark green coniferous tree <tree_1> partially obscures the lower levels of a glass-fronted building <building_3>. The structures sit behind a wide set of shallow concrete steps <steps_1> that lead down to a paved plaza made of grey stone blocks <plaza_1> filling the bottom of the frame.",
  "rows": [{
    "id": "sky_1",
    "bbox": [0, 0, 400, 1000],
    "desc": "A clear, pale blue sky filling the upper background, with a slight gradient toward white near the horizon and a faint film grain visible."
  }, {
    "id": "building_1",
    "bbox": [150, 350, 750, 950],
    "desc": "A Brutalist concrete structure featuring three distinct clusters of tall, nested parabolic arches, with the central cluster reaching the highest. The raw, weathered concrete shows subtle variations in grey tones, vertical water streaking, and deep, sharp shadows cast within the recesses."
  }, {
    "id": "overhang_1",
    "bbox": [650, 500, 700, 750],
    "desc": "A flat, thick concrete overhang protruding from the base of the central arched section, casting a harsh, dark shadow beneath it."
  }, {
    "id": "entrance_1",
    "bbox": [700, 550, 750, 700],
    "desc": "A small, dark entrance area recessed beneath the concrete overhang, its interior details lost in deep shadow."
  }, {
    "id": "sign_1",
    "bbox": [640, 520, 690, 730],
    "desc": "A large, rectangular red sign mounted securely to the front face of the concrete overhang, bearing yellow text and a circular emblem."
  }, {
    "id": "emblem_1",
    "bbox": [645, 525, 685, 555],
    "desc": "A circular yellow emblem positioned on the left side of the red sign, featuring abstract geometric inner markings."
  }, {
    "id": "Ka_Text_1",
    "bbox": [645, 560, 660, 720],
    "desc": "Yellow Georgian script reading \"საქართველოს ქრისტიან-დემოკრატიული კავშირი\" printed along the upper section of the red sign in a bold, sans-serif font."
  }, {
    "id": "En_Text_1",
    "bbox": [665, 560, 685, 720],
    "desc": "Yellow, bold sans-serif typography reading \"CHRISTIAN DEMOCRATIC UNION OF GEORGIA\" arranged across two lines on the lower portion of the red sign."
  }, {
    "id": "flags_1",
    "bbox": [590, 520, 640, 730],
    "desc": "Several small, slightly drooping flags attached to thin, mismatched metal poles positioned along the ledge just behind the red sign."
  }, {
    "id": "building_2",
    "bbox": [100, 100, 550, 320],
    "desc": "A portion of an older, traditional building featuring a tall, slender tower topped with a metallic spire and a five-pointed star. It has a classic, tiered design with arched windows, decorative stonework, and uneven weathering on its pale facade."
  }, {
    "id": "tree_1",
    "bbox": [450, 0, 850, 280],
    "desc": "A dark green coniferous tree with dense, textured branches, standing in the foreground and partially obscuring the lower levels of the glass building."
  }, {
    "id": "building_3",
    "bbox": [400, 0, 700, 200],
    "desc": "A modern, glass-fronted building with dark, reflective windows, partially visible behind the foreground tree."
  }, {
    "id": "steps_1",
    "bbox": [750, 300, 820, 1000],
    "desc": "A set of shallow concrete steps spanning the width of the arched structure, showing minor edge wear and a few scattered dry leaves."
  }, {
    "id": "plaza_1",
    "bbox": [820, 0, 1000, 1000],
    "desc": "A wide, paved plaza occupying the foreground, constructed of grey stone blocks with slightly uneven seams and a few scuff marks visible under the bright, direct lighting."
  }]
}, {
  "key": "garden-dinner",
  "idea": "Night at a Japanese restaurant: two diners in red light at the table, a lit pine garden outside.",
  "title": "Dinner by the garden",
  "image": "/images/flux3-image/layouts/garden-dinner.webp",
  "width": 1400,
  "height": 927,
  "aspect_ratio": "3:2",
  "caption": "High-angle, full-color 35mm indoor-outdoor film photograph captured at night, featuring visible grain, deep shadows, and a shallow depth of field that renders the foreground in an atmospheric blur. The composition divides a dimly lit interior dining area on the right from an illuminated exterior garden on the left. In the blurred foreground, bathed in deep, monochromatic red light, two silhouetted figures sit at a dining table <table_1>. A young child with dark hair <person_1> faces the camera as an out-of-focus red shape, while the profile of an adult <person_2> occupies the right edge. Between them, the table holds blurred dishes <dishes_1> and a small candle <candle_1> that provides a warm orange point of light. Through a large window on the left, the sharp exterior scene is set against a pitch-black night sky <sky_1>. A Japanese pine tree <tree_1> is illuminated by a cool, artificial green light, resolving its textured bark and dense needle clusters. Below the tree, a low bamboo fence <fence_1> runs horizontally. Further back, a stone-paved path <path_1> leads into the dark garden, dotted with a few scattered warm-toned lights <lights_1>.",
  "rows": [{
    "id": "table_1",
    "bbox": [700, 200, 1000, 1000],
    "desc": "A blurred, dark dining table occupying the lower foreground, reflecting patches of red and orange light."
  }, {
    "id": "person_1",
    "bbox": [500, 350, 950, 650],
    "desc": "An out-of-focus silhouette of a young child with dark hair, rendered as a soft mass of deep red light and shadow facing the camera."
  }, {
    "id": "person_2",
    "bbox": [400, 700, 1000, 1000],
    "desc": "A heavily blurred silhouette of an adult in profile, bathed in monochromatic red light, occupying the right edge of the frame."
  }, {
    "id": "dishes_1",
    "bbox": [800, 400, 1000, 900],
    "desc": "A collection of heavily blurred plates and bowls, appearing as indistinct dark and red shapes on the table."
  }, {
    "id": "candle_1",
    "bbox": [750, 600, 820, 650],
    "desc": "A small, out-of-focus candle flame forming a bright, warm orange point of light amidst the red foreground."
  }, {
    "id": "sky_1",
    "bbox": [0, 0, 500, 600],
    "desc": "A pitch-black night sky filling the upper left background behind the garden foliage."
  }, {
    "id": "tree_1",
    "bbox": [100, 50, 750, 550],
    "desc": "A sharply focused Japanese pine tree illuminated by cool, vibrant emerald green light. The trunk features textured bark, supporting dense, layered clusters of needle-like foliage."
  }, {
    "id": "fence_1",
    "bbox": [700, 0, 850, 600],
    "desc": "A traditional low bamboo fence running horizontally across the garden, composed of thin, vertically aligned bamboo stalks tied with dark twine."
  }, {
    "id": "path_1",
    "bbox": [750, 100, 950, 400],
    "desc": "A stone-paved path or bridge in the deep background, slightly obscured by shadows, leading back into the dark garden."
  }, {
    "id": "lights_1",
    "bbox": [600, 100, 750, 500],
    "desc": "A few small, distant points of warm-toned light scattered across the dark landscaping in the background."
  }]
}, {
  "key": "tools",
  "idea": "A magazine cover called Tools: a tower of wooden Kapla planks under big blue serif type.",
  "title": "Tools, the magazine",
  "image": "/images/flux3-image/layouts/tools.webp",
  "width": 1050,
  "height": 1400,
  "aspect_ratio": "3:4",
  "caption": "Studio photograph of a publication cover set against a seamless, stark white background. Centered in the vertical frame is a tall architectural structure <structure_1> built from small, uniform wooden planks. Bright, even softbox lighting casts soft, subtle shadows at the base of the construction and within its gaps. Dominating the upper third of the composition is a large title <En_Text_1>, its lower edge partially obscured by the top of the wooden structure. At the bottom of the frame, a smaller subtitle <En_Text_2> stretches horizontally. Tucked into the bottom-left corner is a vertical barcode <barcode_1> accompanied by stacked price markings <En_Text_3>.",
  "rows": [{
    "id": "structure_1",
    "bbox": [180, 250, 850, 750],
    "desc": "A vertical architectural structure assembled from hundreds of small, uniform wooden planks. The wood is light, natural pine with visible grain patterns and a warm, golden-yellow hue. The structure is composed of three main vertical columns of stacked horizontal planks, creating a lattice-like effect with rectangular voids. The top features slanted planks mimicking gabled rooflines and a central chimney-like protrusion."
  }, {
    "id": "En_Text_1",
    "bbox": [80, 150, 220, 850],
    "desc": "Large, bright blue serif typography reading \"Tools\". The bottom edges of the letters are visually cut off where the wooden structure overlaps them."
  }, {
    "id": "En_Text_2",
    "bbox": [880, 150, 920, 850],
    "desc": "A single line of smaller text in a clean, bright blue serif font reading \"Technique and Savoir-faire in Art, Design, Craft, Industry.\""
  }, {
    "id": "barcode_1",
    "bbox": [860, 50, 960, 90],
    "desc": "A vertical black-and-white barcode graphic consisting of parallel lines of varying thickness."
  }, {
    "id": "En_Text_3",
    "bbox": [860, 100, 960, 140],
    "desc": "Small black text displaying the price markings \"25€\\n22£\" in a clean font, stacked vertically."
  }]
}, {
  "key": "layout-grid",
  "idea": "A 4x4 sheet of minimalist poster layouts in sage green and black, each using the letters CFHKNP.",
  "title": "Sixteen layouts",
  "image": "/images/flux3-image/layouts/layout-grid.webp",
  "width": 927,
  "height": 1400,
  "aspect_ratio": "2:3",
  "caption": "Flat, two-dimensional graphic design layout on a plain white background, presenting a four-by-four grid of sixteen rectangular wireframe panels separated by even white margins. The minimalist study explores spatial relationships using a strictly limited palette of white, black, and muted sage green. The top row features four distinct compositions: a panel <panel_1> with a green circle and a central typographic anchor <En_Text_1>, a panel <panel_2> containing a green square and vertical text <En_Text_2>, a panel <panel_3> centered on an organic wavy blob beneath curved text <En_Text_3>, and a panel <panel_4> displaying a sage-green bottle silhouette beside spaced lettering <En_Text_4>. In the second row, a panel <panel_5> with an upward triangle and bottom-right text <En_Text_5> sits next to a panel <panel_6> holding twin rectangles and vertical text <En_Text_6>. Beside them, a panel <panel_7> splits a circle around central text <En_Text_7>, while the row ends with a panel <panel_8> balancing a rotated square above its text <En_Text_8>. The third row begins with a panel <panel_9> featuring a tall rectangular sidebar and top-right text <En_Text_9>, followed by a panel <panel_10> with a lower blob and vertical text <En_Text_10>. A panel <panel_11> pairs a top-right circle with downward-curving text <En_Text_11>, and a panel <panel_12> anchors a wide bottom rectangle under top-aligned text <En_Text_12>. The bottom row completes the grid with a panel <panel_13> pointing a triangle rightward beside vertical text <En_Text_13>, a panel <panel_14> centering a large rectangle and overlaid text <En_Text_14>, a panel <panel_15> with a bottom half-circle and top-aligned text <En_Text_15>, and a final panel <panel_16> presenting a tiny grid of squares next to vertical text <En_Text_16>. In every panel, varied densities of black horizontal lines simulate body text, interacting dynamically with the shapes and typography to create a balanced structural design.",
  "rows": [{
    "id": "panel_1",
    "bbox": [40, 40, 250, 250],
    "desc": "A rectangular layout panel outlined with a thin black border against the white background. It contains a large solid sage-green circle in the upper half and two distinct columns of black horizontal lines simulating body text in the lower half."
  }, {
    "id": "En_Text_1",
    "bbox": [130, 60, 150, 230],
    "desc": "The exact text string \"CFHKNP\" rendered in a black serif font, placed horizontally across the center of the panel between the circle and the line columns."
  }, {
    "id": "panel_2",
    "bbox": [40, 280, 250, 490],
    "desc": "A rectangular layout panel featuring a solid sage-green square in the top left corner. Black horizontal lines of varying widths wrap around the square and fill the lower left area."
  }, {
    "id": "En_Text_2",
    "bbox": [60, 440, 230, 470],
    "desc": "The exact text string \"CFHKNP\" rendered in a black serif font, oriented vertically along the right edge of the panel."
  }, {
    "id": "panel_3",
    "bbox": [40, 520, 250, 730],
    "desc": "A rectangular layout panel with an organic, wavy sage-green blob centered in the middle. Dense blocks of black horizontal lines anchor the bottom third of the composition."
  }, {
    "id": "En_Text_3",
    "bbox": [60, 560, 100, 690],
    "desc": "The exact text string \"CFHKNP\" rendered in a black serif font, curved along an upward arc above the sage-green blob."
  }, {
    "id": "panel_4",
    "bbox": [40, 760, 250, 970],
    "desc": "A rectangular layout panel containing a solid sage-green bottle silhouette on the right side. The left side features sparse, staggered black horizontal lines."
  }, {
    "id": "En_Text_4",
    "bbox": [60, 780, 90, 950],
    "desc": "The exact text string \"CFHKNP\" rendered in a black serif font, placed horizontally with wide letter-spacing across the top edge."
  }, {
    "id": "panel_5",
    "bbox": [280, 40, 490, 250],
    "desc": "A rectangular layout panel displaying a large sage-green triangle pointing upwards in the center. A narrow column of black horizontal lines sits on the far left."
  }, {
    "id": "En_Text_5",
    "bbox": [440, 120, 470, 230],
    "desc": "The exact text string \"CFHKNP\" rendered in a black serif font, positioned horizontally in the bottom right corner."
  }, {
    "id": "panel_6",
    "bbox": [280, 280, 490, 490],
    "desc": "A rectangular layout panel with two tall, thin sage-green rectangles side-by-side in the center. A dense block of black lines occupies the top right quadrant."
  }, {
    "id": "En_Text_6",
    "bbox": [300, 300, 470, 330],
    "desc": "The exact text string \"CFHKNP\" rendered in a black serif font, oriented vertically along the left edge."
  }, {
    "id": "panel_7",
    "bbox": [280, 520, 490, 730],
    "desc": "A rectangular layout panel featuring a sage-green circle split horizontally into two halves with a gap between them. Black horizontal lines fill the top and bottom margins."
  }, {
    "id": "En_Text_7",
    "bbox": [370, 550, 400, 700],
    "desc": "The exact text string \"CFHKNP\" rendered in a black serif font, placed horizontally directly within the gap between the two circle halves."
  }, {
    "id": "panel_8",
    "bbox": [280, 760, 490, 970],
    "desc": "A rectangular layout panel showing a sage-green square rotated forty-five degrees into a diamond shape in the upper center. Short black horizontal lines cluster in the top left corner."
  }, {
    "id": "En_Text_8",
    "bbox": [420, 780, 450, 950],
    "desc": "The exact text string \"CFHKNP\" rendered in a black serif font, spaced out horizontally across the bottom third of the panel."
  }, {
    "id": "panel_9",
    "bbox": [520, 40, 730, 250],
    "desc": "A rectangular layout panel containing a tall sage-green rectangle acting as a left sidebar. The remaining space is filled with evenly spaced black horizontal lines."
  }, {
    "id": "En_Text_9",
    "bbox": [540, 120, 570, 230],
    "desc": "The exact text string \"CFHKNP\" rendered in a black serif font, placed horizontally in the top right corner."
  }, {
    "id": "panel_10",
    "bbox": [520, 280, 730, 490],
    "desc": "A rectangular layout panel with a small organic sage-green blob resting at the bottom. Flanking blocks of black horizontal lines frame the central vertical axis."
  }, {
    "id": "En_Text_10",
    "bbox": [550, 370, 700, 400],
    "desc": "The exact text string \"CFHKNP\" rendered in a black serif font, placed vertically down the center of the panel."
  }, {
    "id": "panel_11",
    "bbox": [520, 520, 730, 730],
    "desc": "A rectangular layout panel featuring a sage-green circle in the top right corner. A single wide column of black horizontal lines dominates the left side."
  }, {
    "id": "En_Text_11",
    "bbox": [650, 580, 700, 700],
    "desc": "The exact text string \"CFHKNP\" rendered in a black serif font, curved in a downward arc beneath the sage-green circle."
  }, {
    "id": "panel_12",
    "bbox": [520, 760, 730, 970],
    "desc": "A rectangular layout panel displaying a wide sage-green rectangle spanning the bottom edge. Three narrow columns of black horizontal lines sit above it."
  }, {
    "id": "En_Text_12",
    "bbox": [540, 780, 570, 950],
    "desc": "The exact text string \"CFHKNP\" rendered in a black serif font, placed horizontally across the top edge."
  }, {
    "id": "panel_13",
    "bbox": [760, 40, 970, 250],
    "desc": "A rectangular layout panel with a sage-green triangle pointing to the right in the center. Black horizontal lines are arranged in staggered blocks at the top and bottom."
  }, {
    "id": "En_Text_13",
    "bbox": [780, 60, 950, 90],
    "desc": "The exact text string \"CFHKNP\" rendered in a black serif font, oriented vertically along the far left edge."
  }, {
    "id": "panel_14",
    "bbox": [760, 280, 970, 490],
    "desc": "A rectangular layout panel featuring a large sage-green rectangle in the center. A dense block of black lines sits just above it."
  }, {
    "id": "En_Text_14",
    "bbox": [850, 300, 880, 470],
    "desc": "The exact text string \"CFHKNP\" rendered in a black serif font, placed horizontally across the middle of the sage-green rectangle."
  }, {
    "id": "panel_15",
    "bbox": [760, 520, 970, 730],
    "desc": "A rectangular layout panel containing a sage-green half-circle resting flat against the bottom edge. A dense block of black horizontal lines occupies the center."
  }, {
    "id": "En_Text_15",
    "bbox": [780, 550, 810, 700],
    "desc": "The exact text string \"CFHKNP\" rendered in a black serif font, placed horizontally at the very top."
  }, {
    "id": "panel_16",
    "bbox": [760, 760, 970, 970],
    "desc": "A rectangular layout panel showing a small two-by-two grid of four tiny sage-green squares in the top left. The lower left contains sparse black horizontal lines."
  }, {
    "id": "En_Text_16",
    "bbox": [780, 920, 950, 950],
    "desc": "The exact text string \"CFHKNP\" rendered in a black serif font, placed vertically along the right edge."
  }]
}];

export const MultiRefGrid = ({inputs = [], result = {}, prompt = ""}) => {
  const [hoveredInput, setHoveredInput] = useState(-1);
  const colors = [{
    bg: "rgba(99,182,137,0.22)",
    border: "#63b689",
    text: "#63b689"
  }, {
    bg: "rgba(130,170,255,0.22)",
    border: "#82aaff",
    text: "#82aaff"
  }, {
    bg: "rgba(255,180,107,0.22)",
    border: "#ffb46b",
    text: "#ffb46b"
  }, {
    bg: "rgba(199,140,230,0.22)",
    border: "#c78ce6",
    text: "#c78ce6"
  }, {
    bg: "rgba(255,130,130,0.22)",
    border: "#ff8282",
    text: "#ff8282"
  }, {
    bg: "rgba(130,220,220,0.22)",
    border: "#82dcdc",
    text: "#82dcdc"
  }, {
    bg: "rgba(220,200,120,0.22)",
    border: "#dcc878",
    text: "#dcc878"
  }, {
    bg: "rgba(200,160,180,0.22)",
    border: "#c8a0b4",
    text: "#c8a0b4"
  }];
  const renderPrompt = () => {
    if (!prompt) return null;
    const parts = [];
    let lastIndex = 0;
    const re = /\b(image\s+(\d))\b/gi;
    let m;
    while ((m = re.exec(prompt)) !== null) {
      if (m.index > lastIndex) parts.push({
        text: prompt.slice(lastIndex, m.index),
        idx: -1
      });
      parts.push({
        text: m[1],
        idx: parseInt(m[2], 10) - 1
      });
      lastIndex = m.index + m[0].length;
    }
    if (lastIndex < prompt.length) parts.push({
      text: prompt.slice(lastIndex),
      idx: -1
    });
    return parts.map((p, i) => {
      if (p.idx >= 0 && p.idx < colors.length) {
        const c = colors[p.idx];
        return <span key={i} style={{
          color: c.text,
          fontWeight: 700,
          padding: "1px 5px",
          borderRadius: "3px",
          background: hoveredInput === p.idx ? c.bg : "transparent",
          transition: "background 200ms"
        }}>
            {p.text}
          </span>;
      }
      return <span key={i}>{p.text}</span>;
    });
  };
  const getGridCols = () => {
    const n = inputs.length;
    if (n <= 3) return n;
    if (n === 4) return 2;
    if (n <= 6) return 3;
    return 4;
  };
  const gridCols = getGridCols();
  return <div className="not-prose" style={{
    borderRadius: "0.75rem",
    overflow: "hidden",
    border: "1px solid rgba(255,255,255,0.08)",
    background: "rgba(0,0,0,0.35)"
  }}>

      {}
      <div style={{
    display: "grid",
    gridTemplateColumns: "repeat(" + gridCols + ", 1fr)",
    gap: "3px",
    padding: "3px",
    background: "rgba(0,0,0,0.3)"
  }}>
        {inputs.map((img, idx) => {
    const c = colors[idx % colors.length];
    const isHovered = hoveredInput === idx;
    return <div key={idx} onMouseEnter={() => setHoveredInput(idx)} onMouseLeave={() => setHoveredInput(-1)} style={{
      position: "relative",
      overflow: "hidden",
      cursor: "default",
      aspectRatio: "4/3",
      outline: isHovered ? "2px solid " + c.border : "2px solid transparent",
      outlineOffset: "-2px",
      transition: "outline-color 200ms ease",
      borderRadius: "4px"
    }}>
              <img src={img.src} alt={img.label || "Input " + (idx + 1)} style={{
      display: "block",
      width: "100%",
      height: "100%",
      objectFit: "cover",
      pointerEvents: "none"
    }} />
              <div style={{
      position: "absolute",
      top: "4px",
      left: "4px",
      width: "22px",
      height: "22px",
      borderRadius: "50%",
      background: c.border,
      color: "#000",
      display: "flex",
      alignItems: "center",
      justifyContent: "center",
      fontSize: "0.65rem",
      fontWeight: 800,
      boxShadow: "0 1px 4px rgba(0,0,0,0.5)"
    }}>
                {idx + 1}
              </div>
            </div>;
  })}
      </div>

      {}
      <div style={{
    display: "flex",
    justifyContent: "center",
    padding: "4px 0",
    background: "rgba(0,0,0,0.3)"
  }}>
        <svg width="20" height="20" viewBox="0 0 24 24" fill="none">
          <path d="M12 5v14M6 13l6 6 6-6" stroke="rgba(255,255,255,0.3)" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" />
        </svg>
      </div>

      {}
      <div style={{
    position: "relative",
    padding: "0 3px 3px",
    background: "rgba(0,0,0,0.3)"
  }}>
        <img src={result.src} alt={result.label || "Result"} style={{
    display: "block",
    width: "100%",
    height: "auto",
    borderRadius: "4px",
    pointerEvents: "none"
  }} />
        <div style={{
    position: "absolute",
    top: "6px",
    right: "9px",
    padding: "3px 10px",
    borderRadius: "5px",
    background: "rgba(0,0,0,0.6)",
    backdropFilter: "blur(4px)",
    color: "#fff",
    fontSize: "0.65rem",
    fontWeight: 600
  }}>
          Result
        </div>
      </div>

      {}
      {prompt && <div style={{
    padding: "0.4rem 0.5rem 0.5rem"
  }}>
          <div style={{
    padding: "0.4rem 0.6rem",
    borderRadius: "6px",
    background: "rgba(255,255,255,0.04)",
    border: "1px solid rgba(255,255,255,0.08)",
    fontFamily: "monospace",
    fontSize: "0.68rem",
    lineHeight: 1.5,
    color: "rgba(255,255,255,0.7)"
  }}>
            <span style={{
    color: "rgba(255,255,255,0.35)",
    fontSize: "0.6rem",
    marginRight: "5px"
  }}>prompt:</span>
            {renderPrompt()}
          </div>
        </div>}
    </div>;
};

export const ClipSlider = ({items = []}) => {
  const [copied, setCopied] = useState(-1);
  const [inView, setInView] = useState(0);
  const [edges, setEdges] = useState({
    left: false,
    right: items.length > 1
  });
  const [muted, setMuted] = useState(true);
  const [viewer, setViewer] = useState(null);
  const [split, setSplit] = useState({});
  const splitAt = idx => split[idx] === undefined ? items[idx] && items[idx].split !== undefined ? items[idx].split : 50 : split[idx];
  const moveSplit = (idx, e) => {
    const r = e.currentTarget.getBoundingClientRect();
    const pct = Math.max(0, Math.min(100, (e.clientX - r.left) / r.width * 100));
    setSplit(s => ({
      ...s,
      [idx]: pct
    }));
  };
  const BOX_COLORS = ["#e8b04a", "#6fb3d9", "#e0708a", "#8fcf7a", "#b99af0", "#f08b5b", "#5fd0c0", "#d9d36f", "#9fb0c8", "#f2a3c7", "#7aa0f0", "#c7e07a"];
  const fitBox = ([y0, x0, y1, x1], w, h) => {
    const frame = 16 / 9, ar = w / h;
    const sx = ar > frame ? 1 : ar / frame, sy = ar > frame ? frame / ar : 1;
    const ox = (1 - sx) / 2, oy = (1 - sy) / 2;
    return {
      top: (oy + y0 / 1000 * sy) * 100 + "%",
      left: (ox + x0 / 1000 * sx) * 100 + "%",
      height: (y1 - y0) / 1000 * sy * 100 + "%",
      width: (x1 - x0) / 1000 * sx * 100 + "%"
    };
  };
  const [actualSize, setActualSize] = useState(false);
  const trackRef = useRef(null);
  const cardRefs = useRef([]);
  const measuredRef = useRef(false);
  const mutedRef = useRef(true);
  const videosRef = useRef([]);
  const observerRef = useRef(null);
  const getObserver = () => {
    if (observerRef.current) return observerRef.current;
    if (typeof IntersectionObserver === "undefined") return null;
    observerRef.current = new IntersectionObserver(entries => {
      entries.forEach(entry => {
        const v = entry.target;
        if (entry.isIntersecting) {
          v.muted = mutedRef.current;
          const p = v.play?.();
          if (p && typeof p.catch === "function") p.catch(() => {});
        } else {
          v.pause?.();
        }
      });
    }, {
      threshold: 0.4
    });
    return observerRef.current;
  };
  const attachVideo = el => {
    if (!el) return;
    if (!videosRef.current.includes(el)) videosRef.current.push(el);
    const io = getObserver();
    if (io) io.observe(el);
  };
  const toggleMute = () => {
    const next = !muted;
    setMuted(next);
    mutedRef.current = next;
    videosRef.current.forEach(v => {
      if (v) v.muted = next;
    });
  };
  const updateEdges = el => {
    if (!el) return;
    const max = el.scrollWidth - el.clientWidth;
    const next = {
      left: el.scrollLeft > 4,
      right: el.scrollLeft < max - 4
    };
    setEdges(prev => prev.left === next.left && prev.right === next.right ? prev : next);
    const cards = cardRefs.current.filter(Boolean);
    if (cards.length) {
      let best = 0;
      let bestDist = Infinity;
      cards.forEach((card, i) => {
        const dist = Math.abs(card.offsetLeft - el.scrollLeft - 4);
        if (dist < bestDist) {
          bestDist = dist;
          best = i;
        }
      });
      setInView(prev => prev === best ? prev : best);
    }
  };
  const attachTrack = el => {
    trackRef.current = el;
    if (!el || measuredRef.current) return;
    measuredRef.current = true;
    if (typeof requestAnimationFrame !== "undefined") {
      requestAnimationFrame(() => updateEdges(el));
    } else {
      updateEdges(el);
    }
  };
  const scrollByCard = dir => {
    const el = trackRef.current;
    if (!el) return;
    const first = cardRefs.current.find(Boolean);
    const cardW = first ? first.offsetWidth + 20 : el.clientWidth * 0.8;
    el.scrollBy({
      left: dir * cardW,
      behavior: "smooth"
    });
  };
  const scrollToCard = idx => {
    const el = trackRef.current;
    const card = cardRefs.current[idx];
    if (!el || !card) return;
    el.scrollTo({
      left: card.offsetLeft - 4,
      behavior: "smooth"
    });
  };
  const startVideo = event => {
    const video = event.currentTarget;
    video.muted = mutedRef.current;
    const p = video.play?.();
    if (p && typeof p.catch === "function") p.catch(() => {});
  };
  const copy = (text, idx) => {
    try {
      navigator.clipboard.writeText(text);
      setCopied(idx);
      setTimeout(() => setCopied(c => c === idx ? -1 : c), 2000);
    } catch (e) {}
  };
  return <div className="not-prose clip-slider">
      <button type="button" className="clip-slider__arrow clip-slider__arrow--prev" onClick={() => scrollByCard(-1)} disabled={!edges.left} aria-label="Previous clip">
        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
          <polyline points="15 18 9 12 15 6" />
        </svg>
      </button>

      <div className="clip-slider__track" ref={attachTrack} onScroll={e => updateEdges(e.currentTarget)}>
        {items.map((item, idx) => <article key={idx} className="clip-slider__slide" ref={el => {
    cardRefs.current[idx] = el;
  }}>
            {item.title && <h4 className="clip-slider__title">{item.title}</h4>}
            <div className={item.boxes ? "clip-slider__media has-boxes" : item.fit === "contain" ? "clip-slider__media is-fit" : item.before ? "clip-slider__media has-compare" : "clip-slider__media"}>
              {item.before ? <div className="clip-slider__compare" role="slider" tabIndex={0} aria-label={`Compare before and after: ${item.alt || ""}`} aria-valuemin={0} aria-valuemax={100} aria-valuenow={Math.round(splitAt(idx))} onPointerDown={e => {
    e.currentTarget.setPointerCapture?.(e.pointerId);
    moveSplit(idx, e);
  }} onPointerMove={e => {
    if (e.buttons) moveSplit(idx, e);
  }} onKeyDown={e => {
    if (e.key === "ArrowLeft" || e.key === "ArrowRight") {
      e.preventDefault();
      setSplit(s => ({
        ...s,
        [idx]: Math.max(0, Math.min(100, splitAt(idx) + (e.key === "ArrowLeft" ? -5 : 5)))
      }));
    }
  }}>
                  <img src={item.after} alt={item.alt ? "After: " + item.alt : ""} loading="lazy" className="clip-slider__media-el" draggable={false} />
                  <div className="clip-slider__before" style={{
    clipPath: `inset(0 ${100 - splitAt(idx)}% 0 0)`
  }}>
                    <img src={item.before} alt={item.alt ? "Before: " + item.alt : ""} loading="lazy" className="clip-slider__media-el" draggable={false} />
                  </div>
                  <span className="clip-slider__handle" style={{
    left: splitAt(idx) + "%"
  }} aria-hidden="true">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.2" strokeLinecap="round" strokeLinejoin="round"><polyline points="9 18 3 12 9 6" /><polyline points="15 6 21 12 15 18" /></svg>
                  </span>
                  <span className="clip-slider__tag clip-slider__tag--before" aria-hidden="true">Before</span>
                  <span className="clip-slider__tag clip-slider__tag--after" aria-hidden="true">After</span>
                </div> : item.image ? <button type="button" className="clip-slider__zoom" onClick={() => {
    setActualSize(false);
    setViewer(idx);
  }} aria-label={`View full size: ${item.alt || item.title || ""}`}>
                  <img src={item.image} alt={item.alt || item.title || ""} loading="lazy" className="clip-slider__media-el" />
                  {item.boxes && item.boxes.map((b, k) => <span key={b.id} className={"clip-slider__box" + (b.bbox[0] < 60 ? " is-top" : "")} style={{
    ...fitBox(b.bbox, item.w, item.h),
    "--c": BOX_COLORS[k % BOX_COLORS.length]
  }}>
                      <i>{b.id}</i>
                    </span>)}
                </button> : <>
              <video ref={attachVideo} src={item.video} poster={item.poster} loop muted playsInline preload="metadata" onLoadedData={startVideo} onCanPlay={startVideo} aria-label={item.alt || item.title || ""} className="clip-slider__media-el" />
              <button type="button" onClick={toggleMute} aria-label={muted ? "Unmute" : "Mute"} title={muted ? "Enable sound" : "Mute"} style={{
    position: "absolute",
    top: "0.6rem",
    right: "0.6rem",
    zIndex: 4,
    width: "2rem",
    height: "2rem",
    borderRadius: "999px",
    border: "none",
    background: "rgba(8, 18, 13, 0.5)",
    color: "#fff",
    display: "inline-flex",
    alignItems: "center",
    justifyContent: "center",
    cursor: "pointer",
    backdropFilter: "blur(4px)",
    WebkitBackdropFilter: "blur(4px)"
  }}>
                {muted ? <svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true"><path d="M11 5 6 9H2v6h4l5 4V5z" /><line x1="23" y1="9" x2="17" y2="15" /><line x1="17" y1="9" x2="23" y2="15" /></svg> : <svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true"><path d="M11 5 6 9H2v6h4l5 4V5z" /><path d="M15.54 8.46a5 5 0 0 1 0 7.07" /><path d="M19.07 4.93a10 10 0 0 1 0 14.14" /></svg>}
              </button>
              </>}
            </div>

            {item.prompt && <div className="clip-slider__body">
                <div className="clip-slider__prompt">
                  <button type="button" className="clip-slider__copy" onClick={() => copy(item.prompt, idx)} aria-label={copied === idx ? "Prompt copied" : "Copy prompt"} title={copied === idx ? "Copied" : "Copy prompt"}>
                    {copied === idx ? "Copied!" : "Copy"}
                  </button>
                  <pre className="clip-slider__prompt-pre"><code>{item.prompt}</code></pre>
                </div>
              </div>}
          </article>)}
      </div>

      <button type="button" className="clip-slider__arrow clip-slider__arrow--next" onClick={() => scrollByCard(1)} disabled={!edges.right} aria-label="Next clip">
        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
          <polyline points="9 18 15 12 9 6" />
        </svg>
      </button>

      {items.length > 1 && <div className="clip-slider__dots">
          {items.map((item, idx) => <button key={idx} type="button" onClick={() => scrollToCard(idx)} aria-label={`Go to ${item.title || `clip ${idx + 1}`}`} className={`clip-slider__dot${idx === inView ? " is-active" : ""}`} />)}
        </div>}

      {viewer !== null && items[viewer] ? <dialog className={actualSize ? "clip-slider__viewer" : "clip-slider__viewer is-fit"} aria-label={items[viewer].alt || items[viewer].title || ""} ref={node => {
    if (node && !node.open) node.showModal();
  }} onClose={() => setViewer(null)} onClick={() => setViewer(null)}>
          <img src={items[viewer].full || items[viewer].image} alt={items[viewer].alt || items[viewer].title || ""} style={{
    cursor: actualSize ? "zoom-out" : "zoom-in"
  }} onClick={event => {
    event.stopPropagation();
    setActualSize(!actualSize);
  }} />
          <div className="clip-slider__viewer-bar" onClick={event => event.stopPropagation()}>
            <button type="button" onClick={() => setActualSize(!actualSize)}>
              {actualSize ? "Fit to screen" : "Actual size"}
            </button>
            <button type="button" onClick={() => setViewer(null)}>Close</button>
          </div>
        </dialog> : null}
    </div>;
};

export const VideoReelMosaic = ({title = "Generated with FLUX 3", rows = [], speed = 6.5, itemWidth = "clamp(14rem, 20vw, 18rem)", itemAspectRatio = "16 / 9", margin = "2.75rem 0 3.5rem", showTopBorder = true, paddingTop = "2rem"}) => {
  const preparedRows = rows.filter(row => Array.isArray(row) && row.length > 0);
  const startVideo = event => {
    const video = event.currentTarget;
    video.muted = true;
    const playback = video.play?.();
    if (playback && typeof playback.catch === "function") playback.catch(() => {});
  };
  return <div className="not-prose flux3-video-reel-mosaic" style={{
    margin
  }}>
      <style>{`
        @keyframes flux3VideoReelLeft {
          from { transform: translateX(0); }
          to { transform: translateX(-50%); }
        }

        @keyframes flux3VideoReelRight {
          from { transform: translateX(-50%); }
          to { transform: translateX(0); }
        }

        .flux3-video-reel-mosaic:hover .flux3-video-reel-mosaic__track {
          animation-play-state: paused;
        }

        .flux3-video-reel-mosaic__frame {
          border-top: 1px solid rgba(22,49,38,0.14);
        }
        .dark .flux3-video-reel-mosaic__frame {
          border-top-color: rgba(246,241,231,0.12);
        }
        .flux3-video-reel-mosaic__frame--borderless {
          border-top: none;
        }

        .flux3-video-reel-mosaic__title {
          color: var(--aspen-ink, #163126);
        }
        .dark .flux3-video-reel-mosaic__title {
          color: rgba(246,241,231,0.94);
        }

        .flux3-video-reel-mosaic__fade {
          background: linear-gradient(90deg, var(--aspen-paper, #fffdf9) 0%, transparent 8%, transparent 92%, var(--aspen-paper, #fffdf9) 100%);
        }
        .dark .flux3-video-reel-mosaic__fade {
          background: linear-gradient(90deg, rgba(4,16,11,1) 0%, rgba(4,16,11,0) 8%, rgba(4,16,11,0) 92%, rgba(4,16,11,1) 100%);
        }
      `}</style>

      <div className={`flux3-video-reel-mosaic__frame${showTopBorder ? "" : " flux3-video-reel-mosaic__frame--borderless"}`} style={{
    paddingTop
  }}>
        {title ? <h2 className="flux3-video-reel-mosaic__title" style={{
    margin: "0 0 1.5rem",
    textAlign: "center",
    fontFamily: '"Instrument Sans", sans-serif',
    fontSize: "clamp(2rem, 4vw, 3.15rem)",
    fontWeight: 500,
    letterSpacing: "-0.04em"
  }}>
          {title}
        </h2> : null}

        <div style={{
    position: "relative",
    display: "grid",
    gap: "0.75rem",
    overflow: "hidden"
  }}>
          {preparedRows.map((row, rowIdx) => {
    const direction = rowIdx % 2 === 0 ? "flux3VideoReelLeft" : "flux3VideoReelRight";
    const duration = `${Math.max(row.length * speed, 18)}s`;
    const looped = [...row, ...row];
    return <div key={rowIdx} style={{
      overflow: "hidden"
    }}>
                <div className="flux3-video-reel-mosaic__track" style={{
      display: "flex",
      gap: "0.75rem",
      width: "max-content",
      animation: `${direction} ${duration} linear infinite`
    }}>
                  {looped.map((item, idx) => <div key={`${rowIdx}-${idx}-${item.video}`} style={{
      position: "relative",
      width: item.width || itemWidth,
      aspectRatio: item.height ? undefined : item.aspectRatio || itemAspectRatio,
      height: item.height,
      flexShrink: 0,
      overflow: "hidden",
      borderRadius: "0",
      background: "#08110d"
    }}>
                      {item.image ? <img src={item.image} alt={item.title || title} style={{
      display: "block",
      width: "100%",
      height: "100%",
      objectFit: "cover"
    }} /> : <video src={item.video} poster={item.poster} autoPlay defaultMuted muted loop playsInline preload="auto" onCanPlay={startVideo} onLoadedData={startVideo} aria-label={item.title || title} style={{
      display: "block",
      width: "100%",
      height: "100%",
      objectFit: "contain",
      background: "#08110d"
    }} />}
                    </div>)}
                </div>
              </div>;
  })}

          <span aria-hidden="true" className="flux3-video-reel-mosaic__fade" style={{
    position: "absolute",
    inset: 0,
    pointerEvents: "none"
  }} />
        </div>
      </div>
    </div>;
};

<div className="flux3-overview-page flux3-page flux3-toc-page">
  <div className="not-prose flux3-overview-copy">
    <p className="flux3-overview-copy__eyebrow">FLUX 3 Image</p>
    <h1>Overview</h1>
    <p>FLUX 3 Image gives you maximum control over every pixel. Generate an image from a prompt, edit specific details, combine up to ten references, and draw bounding boxes to place each element.</p>
  </div>

  <VideoReelMosaic
    title=""
    itemWidth="clamp(14rem, 20vw, 18rem)"
    margin="0 0 3rem"
    showTopBorder={false}
    paddingTop="0.5rem"
    rows={[
[
    {
        "image": "/images/flux3-image/strip/can-006.webp",
        "title": "A monk in orange robes kicks in mid-air above four seated monks."
    },
    {
        "image": "/images/flux3-image/strip/can-010.webp",
        "title": "A smiling girl in a fur-trimmed red hat and beaded collar."
    },
    {
        "image": "/images/flux3-image/strip/can-012.webp",
        "title": "Giant statue legs tower over a roller coaster and a man holding a child."
    },
    {
        "image": "/images/flux3-image/strip/can-028.webp",
        "title": "A cartoon comic cover titled RECESSLAND with two kids bursting through the page."
    },
    {
        "image": "/images/flux3-image/strip/can-015.webp",
        "title": "A red silhouette on an orange background with a small line of type."
    },
    {
        "image": "/images/flux3-image/strip/can-040.webp",
        "title": "The words Come to Life set across a close-up face."
    },
    {
        "image": "/images/flux3-image/strip/can-032.webp",
        "title": "A schoolboy stands at his desk in a classroom, making an OK sign."
    }
],
[
    {
        "image": "/images/flux3-image/strip/can-020.webp",
        "title": "A split poster with the words TRUST and THE EXIT."
    },
    {
        "image": "/images/flux3-image/strip/can-009.webp",
        "title": "A couple kisses on a sofa in front of a Great Wave mural."
    },
    {
        "image": "/images/flux3-image/strip/can-041.webp",
        "title": "A red-boots poster with the headline ZERO GRAVITY."
    },
    {
        "image": "/images/flux3-image/strip/can-048.webp",
        "title": "A portrait beside a magazine spread with a giant letter M."
    },
    {
        "image": "/images/flux3-image/strip/can-026.webp",
        "title": "A fashion collage titled XU ZHI with clay sculptures."
    },
    {
        "image": "/images/flux3-image/strip/can-014.webp",
        "title": "Children play football under a cable car on a dirt field."
    },
    {
        "image": "/images/flux3-image/strip/can-005.webp",
        "title": "A motorcyclist and a green car pass a person in a fur coat."
    }
]
]}
  />

  ## Endpoint

  `POST https://api.bfl.ai/v1/flux-3-image` with your API key in the `x-key`
  header. Only `prompt` is required.

  | Parameter | Type | Default | Description |
  | - | - | - | - |
  | `prompt` | string | required | What to generate or how to edit. [Bounding boxes](/flux_3/flux3_image_bounding_boxes) go at the end. |
  | `images` | string or list | | 1 to 10 references, URL or base64, 256 × 256 px to 16 MP each. |
  | `aspect_ratio` | string | `auto` | `21:9`, `2:1`, `16:9`, `3:2`, `7:5`, `4:3`, `5:4`, `1:1`, `4:5`, `3:4`, `5:7`, `2:3`, `9:16`, `1:2`, `9:21`, or `auto` (first reference, else `1:1`). |
  | `resolution` | string | `1k` | `768sq`, `1k`, `2k`, or `4k`. |
  | `safety_tolerance` | integer | `2` | `0` (strictest) to `4`. |
  | `grounding` | boolean | `true` | Web and image search before generating. |

  The response returns a `polling_url`. Poll it until `status` is `Ready`, then
  download `result.sample` within 1 hour. See
  [Results and errors](/flux_3/flux3_image_generate#results-and-errors) and the
  [API reference](/api-reference/utility/generate-an-image-with-flux-3).

  ## Capabilities

  Write a prompt to generate a new image. Add up to ten reference images and describe how to use them: edit a detail,
  change the style, or combine them into a new composition. Click any image to view it full size.

  ### Text to image

  Describe the subject, setting, light, and framing. FLUX 3 renders the
  whole scene from the prompt.

  <div className="flux3-usecase-slides flux3-image-slides">
    <ClipSlider
      items={[
{
image: "https://cdn.sanity.io/images/2gpum2i6/production/4f87df66414a5b74b5c85b35d2aba27a7a8ce4fe-1800x1193.webp",
alt: "Ballet dancers in white tutus performing Swan Lake on a spotlit stage, seen from the dark wings past the silhouettes of onlookers.",
prompt: "A candid photograph from the wings of a theater, looking out at ballet dancers performing Swan Lake. Dark, blurred onlookers fill the foreground; on stage, ballerinas in white tutus are caught mid-motion under a strong central spotlight. Deep blacks, shadowy purples, and stark white. Grainy mid-20th-century color film, shallow depth of field."
},
{
image: "https://cdn.sanity.io/images/2gpum2i6/production/29c3c221a61b66808abc7dc70c3e7f5c57ee7cce-1800x1193.webp",
alt: "A lone American bison walking past a steaming river in a misty geothermal landscape, with dead pines and forest behind.",
prompt: "A wide-angle photograph of a lone American bison walking through a misty geothermal landscape. The dark brown bison stands in profile at the lower left, half hidden by white steam. A slate-blue stream winds past a tall dead tree, with evergreens fading into the mist behind. Muted, cool palette, soft overcast light."
},
{
image: "https://cdn.sanity.io/images/2gpum2i6/production/5b61010514b10d05eb08b3caf755f3d15dd939c2-1800x1013.webp",
alt: "A crowded pink-tiled public pool seen from above, dozens of swimmers in red, green and yellow suits arranged across turquoise water.",
prompt: "A crowded public pool on a hot day, photographed from a high platform: eighty swimmers, each individually posed, arranged like a painting. In the lower left, one woman stares up at the camera with unexplained dread. Hyper-saturated candy colour, hard sunlight."
},
{
image: "https://cdn.sanity.io/images/2gpum2i6/production/d2da92e4e075af04679972e2d79f8f269892db45-1800x1013.webp",
alt: "A Schlieren photograph of a person in silhouette exhaling, the breath visible as grey turbulent plumes against a pale circular field.",
prompt: "A Schlieren photograph that makes air visible: a dark silhouette in profile at the right, exhaling. The breath spreads left as turbulent silvery grey plumes and curling vortices against a featureless grey disc of light."
},
{
image: "https://cdn.sanity.io/images/2gpum2i6/production/bca9089afaaf144fa9d6ba32caa9405240d8eb44-1800x1013.webp",
alt: "A split over-under shot of a swimmer in a black cap mid-stroke in dark green lake water, with mist and a pine shoreline above the waterline at dawn.",
prompt: "A split-level photograph from a half-submerged dome port in a cold lake at dawn. Below, a swimmer in a black cap hangs mid-stroke in dark green water; above, mist, a pine shoreline, and a pale orange sunrise."
},
{
image: "https://cdn.sanity.io/images/2gpum2i6/production/1617e9d64bb61a878dab26b1b33b4f06a0527322-1800x1013.webp",
alt: "A solargraph of an industrial harbour in faded browns and mauves, with dozens of white sun trails arcing across the sky.",
prompt: "A six-month solargraph from a pinhole camera: an industrial harbour in soft inverted browns and mauves. More than a hundred white sun trails arc across the sky, with ghostly cranes, light leaks, and chemical stains."
},
{
image: "https://cdn.sanity.io/images/2gpum2i6/production/c8606897f52eb0deb43173a0eee4cc30a07725e1-1800x1013.webp",
alt: "A cemetery on colour infrared film: candy-pink trees and grass, pale headstones, and a lone figure on a bench under a deep cyan sky.",
prompt: "A cemetery on colour infrared film at midday: foliage and grass glow candy pink, the sky turns deep cyan, and pale headstones stay neutral. A lone figure in a dark coat sits on a bench, facing away. Grainy and dreamlike."
},
{
image: "https://cdn.sanity.io/images/2gpum2i6/production/a518d2b0b7c03719a97742a4ab363187cd0c7726-1800x1013.webp",
alt: "A high-speed flash photograph of a plum bursting open as a pebble strikes it, juice droplets frozen against a black background.",
prompt: "A high-speed flash photograph against pure black: a ripe plum split open by a thrown pebble, a crown of sharp juice droplets suspended around it. Deep purple and gold, extreme macro detail."
},
{
image: "https://cdn.sanity.io/images/2gpum2i6/production/d828fce10b550c4e8048b7763fa4005f90e58615-1800x1013.webp",
alt: "A pink salt flat cracked into hexagonal plates, with three flamingos in shallow water and a distant figure in a glowing orange mesh coat.",
prompt: "A vast pink salt flat at low sun, cracked into hexagonal plates. Far out stands a figure in a glowing orange mesh coat and mirrored helmet, with three flamingos reflected in the water. Palette: burnt orange (#FF6B35), peach (#F7C59F), cream (#EFEFD0), and deep blue (#004E89)."
},
{
image: "https://cdn.sanity.io/images/2gpum2i6/production/0f34ebc8e46fb9158176fb2766ea3dc2f0577b04-1800x1013.webp",
alt: "A green-tiled 1970s pedestrian underpass where a model in a silver sequin gown and leather bomber stands as a fox looks back from the tunnel floor.",
prompt: "A 1970s pedestrian underpass with a strong central vanishing point. A model in a silver sequin gown and oversized leather bomber stands against the left wall; at the far end, a fox looks back at her. Cold green strip lighting, 28mm, deadpan and cinematic."
}
]}
    />
  </div>

  [Generate your first image →](/flux_3/flux3_image_generate#text-to-image)

  ### Edit an image

  Write the change as an instruction, and name exactly what to change. Drag the
  handle to compare each source with its edit:

  <div className="flux3-usecase-slides flux3-image-slides">
    <ClipSlider
      items={[
{
before: "https://cdn.sanity.io/images/2gpum2i6/production/1731db585c799dbb4e2c48731ea0b5bfc92a47d7-1800x1193.webp",
after: "https://cdn.sanity.io/images/2gpum2i6/production/785b2fe272b900971e6521f3265f7596fbf4779e-1800x1193.webp",
alt: "a short-eared owl in flight over dried wildflowers, recolored from brown and tan to snowy white and charcoal grey.",
},
...FLUX3_EDIT_EXAMPLES.filter((example) => !["knight-after", "bamboo-wolf"].includes(example.key)).map((example) => ({
before: example.before,
after: example.after,
alt: example.title + ": " + example.instruction,
})),
]}
    />
  </div>

  [Perfectly edit your images →](/flux_3/flux3_image_layout#edit-with-an-instruction)

  ### Multi reference

  Refer to each image by its position and say what it contributes. Here,
  image 1 is the scene and image 2 supplies the object to place in it:

  <div className="flux3-multiref-compact">
    <MultiRefGrid
      inputs={[
{ src: "https://cdn.sanity.io/images/2gpum2i6/production/ec365238b6efa1b29f573e83b774c6d539408ea8-1800x1200.webp", label: "Image 1: a record spinning on a turntable" },
{ src: "https://cdn.sanity.io/images/2gpum2i6/production/ff3bf81b5a8b38f0d870561217b68a72964259ab-1131x1414.webp", label: "Image 2: a red and white van on a highway" },
]}
      result={{ src: "https://cdn.sanity.io/images/2gpum2i6/production/0fc855dcc110a26d1689f1fd70005f4f80d58ce2-1800x1193.webp", label: "FLUX 3 Image result: a miniature van in place of the cartridge" }}
      prompt="replace the cartridge from image 1 with the van in image 2, adjust the lighting on the van to integrate well within image 1"
    />
  </div>

  [Combine up to ten images →](/flux_3/flux3_image_layout#multi-reference)

  ### Control the composition

  Add bounding boxes to the end of the prompt to decide where each element
  goes. Each box is `[top, left, bottom, right]` on a 0 to 1000 grid. These
  images from the FLUX 3 launch were generated from layout prompts, with their
  boxes drawn on top.

  <div className="flux3-usecase-slides flux3-image-slides">
    <ClipSlider
      items={["rooftop", "spectators", "portraits", "picnic", "garden-dinner", "alphabet"].map((key) => {
const example = FLUX3_LAYOUT_EXAMPLES.find((e) => e.key === key);
const hidden = example.hidden || [];
return {
image: example.image,
w: example.width,
h: example.height,
alt: example.title + ", generated with FLUX 3 from a layout prompt, with its bounding boxes drawn on top.",
boxes: example.rows.filter((r) => !hidden.includes(r.id) && (r.bbox[2] - r.bbox[0]) * (r.bbox[3] - r.bbox[1]) < 700000),
};
})}
    />
  </div>

  The same boxes let you edit only part of an image: recolor, move, replace, or
  remove one element while the rest stays unchanged.
  [Learn to use bounding boxes →](/flux_3/flux3_image_bounding_boxes)

  ## Keep exploring

  <CardGroup cols={2}>
    <Card title="Try in Playground" icon="play" href="https://playground.bfl.ai">
      Try FLUX 3 Image in your browser, with no code.
    </Card>

    <Card title="FLUX 3 Text to Image" icon="wand-magic-sparkles" href="/flux_3/flux3_image_generate">
      Your first request in Python, JavaScript, or cURL, then edits and
      multi-reference compositions.
    </Card>

    <Card title="Prompting guide" icon="pen" href="/guides/prompting_summary">
      How to structure prompts for scenes, styles, text, and edits.
    </Card>

    <Card title="Bounding boxes" icon="object-group" href="/flux_3/flux3_image_bounding_boxes">
      Place each element with a box, then edit box by box.
    </Card>

    <Card title="API reference" icon="code" href="/api-reference/utility/generate-an-image-with-flux-3">
      The full request schema, limits, and response codes.
    </Card>

    <Card title="FLUX 3 Image Editing" icon="vector-square" href="/flux_3/flux3_image_layout">
      Place elements and target edits with bounding boxes.
    </Card>
  </CardGroup>
</div>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.