> ## 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.

# Camera Terms, Prompts & Examples

> A compact FLUX 3 reference for shot sizes, angles, composition, movement, and focus prompts.

export const CameraTermNav = () => {
  const SECTIONS = [{
    label: "Shot sizes",
    href: "#shot-sizes-and-framing"
  }, {
    label: "Angles",
    href: "#camera-angles"
  }, {
    label: "Composition",
    href: "#composition-techniques"
  }, {
    label: "Movements",
    href: "#camera-movements"
  }, {
    label: "Focus",
    href: "#focus-techniques"
  }, {
    label: "Lenses",
    href: "#lenses-and-optics"
  }, {
    label: "Shutter & time",
    href: "#shutter-and-time"
  }, {
    label: "Lighting",
    href: "#lighting-styles"
  }, {
    label: "Transitions",
    href: "#shot-transitions"
  }, {
    label: "POV",
    href: "#pov-and-specialty-rigs"
  }, {
    label: "Format",
    href: "#aspect-and-format"
  }, {
    label: "VFX",
    href: "#vfx-and-transformation"
  }, {
    label: "Art direction",
    href: "#art-direction"
  }, {
    label: "Animation",
    href: "#animation-and-media"
  }];
  const OFFSET = 64;
  const [active, setActive] = useState(SECTIONS[0].href);
  const [pinned, setPinned] = useState(false);
  const [box, setBox] = useState({
    left: 0,
    width: 0,
    height: 0
  });
  const wrapRef = useRef(null);
  const navRef = useRef(null);
  const listRef = useRef(null);
  const tickingRef = useRef(false);
  const scrollWiredRef = useRef(false);
  const obsWiredRef = useRef(false);
  const measure = () => {
    const wrap = wrapRef.current;
    const nav = navRef.current;
    if (!wrap || !nav) return;
    const rect = wrap.getBoundingClientRect();
    const shouldPin = rect.top <= OFFSET;
    setPinned(prev => prev === shouldPin ? prev : shouldPin);
    const left = Math.round(rect.left);
    const width = Math.round(rect.width);
    const height = nav.offsetHeight;
    setBox(prev => prev.left === left && prev.width === width && prev.height === height ? prev : {
      left,
      width,
      height
    });
  };
  const onScroll = () => {
    if (tickingRef.current) return;
    tickingRef.current = true;
    requestAnimationFrame(() => {
      tickingRef.current = false;
      measure();
    });
  };
  const attachWrap = el => {
    wrapRef.current = el;
    if (!el || scrollWiredRef.current || typeof window === "undefined") return;
    scrollWiredRef.current = true;
    window.addEventListener("scroll", onScroll, true);
    window.addEventListener("resize", onScroll);
    if (typeof requestAnimationFrame !== "undefined") {
      requestAnimationFrame(measure);
    } else {
      measure();
    }
  };
  const centerPill = href => {
    const list = listRef.current;
    if (!list) return;
    const el = list.querySelector(`[data-href="${href}"]`);
    if (el && el.scrollIntoView) {
      el.scrollIntoView({
        block: "nearest",
        inline: "center",
        behavior: "smooth"
      });
    }
  };
  const attachNav = el => {
    navRef.current = el;
    if (!el || obsWiredRef.current) return;
    if (typeof IntersectionObserver === "undefined") return;
    obsWiredRef.current = true;
    const observer = new IntersectionObserver(entries => {
      entries.forEach(entry => {
        if (entry.isIntersecting && entry.target.id) {
          const href = `#${entry.target.id}`;
          setActive(href);
          centerPill(href);
        }
      });
    }, {
      rootMargin: "-12% 0px -78% 0px",
      threshold: 0
    });
    SECTIONS.forEach(s => {
      const node = document.getElementById(s.href.slice(1));
      if (node) observer.observe(node);
    });
  };
  const navStyle = pinned ? {
    position: "fixed",
    top: `${OFFSET}px`,
    left: `${box.left}px`,
    width: `${box.width}px`
  } : undefined;
  return <div className="camera-nav-wrap" ref={attachWrap} style={pinned ? {
    minHeight: `${box.height}px`
  } : undefined}>
      <nav className={`not-prose camera-nav${pinned ? " is-pinned" : ""}`} ref={attachNav} style={navStyle} aria-label="Camera term sections">
        <ul className="camera-nav__list" ref={listRef}>
          {SECTIONS.map(s => <li key={s.href}>
              <a href={s.href} data-href={s.href} className={`camera-nav__pill${active === s.href ? " is-active" : ""}`} aria-current={active === s.href ? "true" : undefined} onClick={() => setActive(s.href)}>
                {s.label}
              </a>
            </li>)}
        </ul>
      </nav>
    </div>;
};

export const CameraTermGallery = ({group, items}) => {
  const VIDEO_BASE = "/images/flux3/camera_terms";
  const CAMERA_TERMS = {
    "shot-sizes": [{
      term: "Macro",
      desc: "Extreme detail on a very small subject area",
      prompt: "macro close-up of dew forming on a pine needle",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/a5e3bdecb3f1f855ed156be3b6845918d106b3db.mp4"
    }, {
      term: "Close-up",
      desc: "Emphasizes face, texture, or a single object",
      prompt: "close-up of a boxer tightening taped hands",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/c11bf3815415d372dd648b5ce7491384293e36aa.mp4"
    }, {
      term: "Medium shot",
      desc: "Balanced view of subject and surroundings",
      prompt: "medium shot of a chef plating food at the pass",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/64a6ac67b18f54aea972653b8dec5fbcdbe52b43.mp4"
    }, {
      term: "Wide shot",
      desc: "Shows full body and more of the environment",
      prompt: "wide shot of a rider crossing a dry riverbed at sunset",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/f8b56a086a13dca55bf88e133bfe9969da9ba766.mp4"
    }, {
      term: "Establishing shot",
      desc: "Sets location and scale before action",
      prompt: "establishing shot of neon towers above a rainy avenue",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/9190bfd6d1fec8133c56eaf489983bbd7c185512.mp4"
    }, {
      term: "Extreme close-up",
      desc: "Fills the frame with a single tiny detail",
      prompt: "Extreme close-up of a weathered eye, flickering campfire flames reflected in the iris, embers drifting in darkness, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/453912a87e140768b94c5d04ebfd10a71b373f63.mp4"
    }, {
      term: "Cowboy shot",
      desc: "Frames the subject from mid-thigh up",
      prompt: "Cowboy shot of a stern sheriff, hand resting on his gun belt, dusty street shimmering behind him, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/560f72f3a5900f5d22766583f4b13606d9116ddb.mp4"
    }, {
      term: "Full shot",
      desc: "Shows the whole body head to toe",
      prompt: "Full shot of a ballerina frozen mid-leap in an empty sunlit studio, dust motes floating around her, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/16598f0faee9a28824b5a130ddba2bad4c306981.mp4"
    }, {
      term: "Two shot",
      desc: "Two subjects sharing one frame",
      prompt: "Two shot of two detectives arguing across a diner table, neon light flickering, coffee cups steaming between them, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/9c322962bb3bc2be7bf54ffb7e3383ace8498db0.mp4"
    }],
    "angles": [{
      term: "Aerial",
      desc: "View from high above the scene",
      prompt: "aerial view of a fishing boat cutting through rough water",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/5ba406939ffda28ecadd7f01f0ff48641b44b813.mp4"
    }, {
      term: "Low angle",
      desc: "Camera looks upward to add scale or dominance",
      prompt: "low angle on a runner exploding off the starting blocks",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/fa45c52a7d30fcdc8e9c5c25ff8a6d8e7f783f88.mp4"
    }, {
      term: "High angle",
      desc: "Camera looks downward to compress or expose",
      prompt: "high angle on commuters crossing a flooded plaza",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/1b747dd0237896f769a877e50c4ec8212b2c2688.mp4"
    }, {
      term: "POV",
      desc: "Shot from the subject's perspective",
      prompt: "POV weaving through a crowded night market",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/db50a28d147ba8b7acf2f07fffe6bd1cbd12ae76.mp4"
    }, {
      term: "Over-the-shoulder",
      desc: "Frames action past a foreground subject",
      prompt: "over-the-shoulder view of a detective reading a case board",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/e7a3c4d9cc012b09cb8992fffd28d6cf69a136ec.mp4"
    }, {
      term: "Dutch angle",
      desc: "Tilted horizon for unease or tension",
      prompt: "Dutch angle of a panicked man running down a tilting fluorescent corridor, shadows sliding across walls, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/5a2213a61836342fc99055925e77e7f1f46efc0d.mp4"
    }, {
      term: "Worm's eye",
      desc: "Extreme low angle looking straight up",
      prompt: "Worm's eye view of glass skyscrapers converging overhead, clouds racing between the towers, sunlight flaring downward, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/744038dd909c6314a9d0e3aa62048394a26a3d1e.mp4"
    }, {
      term: "Bird's eye (top-down)",
      desc: "Straight-down overhead view",
      prompt: "Bird's eye top-down view of synchronized swimmers forming a blooming flower pattern in turquoise pool water, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/79c6368a13730e373bac0aed87378bd3d3e40000.mp4"
    }, {
      term: "Eye level",
      desc: "Neutral height matching the subject's eyes",
      prompt: "Eye level shot of a barista sliding a latte across the counter, steam rising, morning light through windows, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/89d87de8d377efca66c1407d85e690ae83c98aba.mp4"
    }, {
      term: "Ground level",
      desc: "Camera at the ground looking across the scene",
      prompt: "Ground level shot, camera resting on wet asphalt as marching parade shoes stomp through puddles, splashes flying, confetti settling, low perspective of celebration, brassy afternoon light, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/e79a290411268a3d94ec60e66c4ed18932d9d4cf.mp4"
    }, {
      term: "Profile shot",
      desc: "Strict side-on view of the subject",
      prompt: "Profile shot, strict side view of a pensive woman by a train window, passing landscape reflected on glass, flickering sunlight strobing across her face, contemplative journey, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/52e7a8208f2e9aaf89dbff0ac37f7fc61bccec89.mp4"
    }, {
      term: "Tableau",
      desc: "Static, symmetrical, staged wide frame",
      prompt: "Tableau shot, static perfectly symmetrical wide frame of a pastel hotel lobby staged like a Wes Anderson set, uniformed staff standing in neat formation, deadpan whimsical composition, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/00badc572428e71e244ee210473980968d4ac926.mp4"
    }, {
      term: "Fourth wall",
      desc: "Subject looks and speaks directly to the camera",
      prompt: "Breaking the fourth wall, a charismatic detective mid-investigation suddenly notices the camera, turns, raises an eyebrow and speaks directly to the lens, moody office lamplight, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/c23510248b9723b298f6c1ba6330e6958b48f0d2.mp4"
    }, {
      term: "Object POV",
      desc: "View from an object's perspective",
      prompt: "Object POV shot from inside a refrigerator, door swings open revealing a sleepy man in warm kitchen light, he reaches toward the camera for milk, cool blue glow, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/f66617fbcab44f88630ad5455d1b0fe82a68ff1e.mp4"
    }, {
      term: "Voyeur",
      desc: "Hidden, obstructed view spying on the subject",
      prompt: "Voyeur shot, hidden camera peering through half-closed venetian blinds at a man pacing in his apartment, slats framing the view, grainy suspense, secretive nocturnal tension, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/39410f8d5740c8037a9f0934794075e53ceb7789.mp4"
    }],
    "composition": [{
      term: "Leading lines",
      desc: "Uses lines in the frame to guide the eye",
      prompt: "leading lines of train tracks pulling toward a distant station",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/e193857afdfbe25a4993941a07e48b23e12907ad.mp4"
    }, {
      term: "Center framing",
      desc: "Keeps the subject locked in the middle",
      prompt: "center-framed portrait of a dancer under a spotlight",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/94caaba3d9ab4725a76a2c8d037526062924a250.mp4"
    }, {
      term: "Rule of thirds",
      desc: "Places the subject off-center for balance",
      prompt: "runner framed on the left third against a vast coastline",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/736774f96be7ca1ecddbb1c56c5e7429354bc7a9.mp4"
    }, {
      term: "Symmetry",
      desc: "Mirrors shapes for precision or tension",
      prompt: "symmetrical hotel corridor with a child standing still at the center",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/660a3592678b3f731be402734f32a27db7ae4149.mp4"
    }, {
      term: "Negative space",
      desc: "Leaves open space around the subject",
      prompt: "small sailboat isolated against a wide grey horizon",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/6b705b5e7e6916f6625f0fdad798921658135a32.mp4"
    }, {
      term: "Frame within frame",
      desc: "Uses an in-scene opening to frame the subject",
      prompt: "Frame within frame composition, a lone traveler seen through a rain-streaked train window, city lights smearing past, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/bf069ff8b6beea917e0ba6e723069564940f7027.mp4"
    }, {
      term: "Foreground occlusion",
      desc: "Blurred foreground objects add depth",
      prompt: "Foreground occlusion shot, two friends conversing glimpsed past out-of-focus market stalls, hanging lanterns and vendors drifting by, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/0f7e9889a60d71387934757e194a16878cd73837.mp4"
    }, {
      term: "Silhouette",
      desc: "Subject rendered dark against bright light",
      prompt: "Silhouette of a climber pulling over a ridge against the rising sun, golden haze swallowing the mountains, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/01c8d4688466fe3420f726c971c95791a6b5789f.mp4"
    }, {
      term: "Reflection framing",
      desc: "Composes the subject in a reflective surface",
      prompt: "Reflection framing of a dancer spinning inside a cracked ballroom mirror, fractured images multiplying with each turn, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/5d9ef20fbd2cebf8028decf7583810bebfa135ae.mp4"
    }],
    "movements": [{
      term: "Pan",
      desc: "Camera rotates left or right from a fixed point",
      prompt: "slow pan across pine trees to reveal a lake at dawn",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/2c70eec6a01c6cecef31e065bc10537dc6ea91c0.mp4"
    }, {
      term: "Tilt",
      desc: "Camera rotates up or down",
      prompt: "tilt up from muddy boots to a storm-lit face",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/08363bf4518899b192c9785313169d5b090c3b93.mp4"
    }, {
      term: "Dolly in",
      desc: "Camera physically pushes closer to the subject",
      prompt: "dolly in toward a violinist before the first note",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/07d749f64e257800eb05bc3b9c4c8ea3e5772575.mp4"
    }, {
      term: "Tracking shot",
      desc: "Camera moves alongside the subject",
      prompt: "tracking shot beside a fox sprinting through brush",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/1907f26a140acec430092c4dfc08f64cf356d24f.mp4"
    }, {
      term: "Orbit",
      desc: "Camera circles the subject",
      prompt: "slow orbit around a statue in blowing ash",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/5527a351293d39113d6763406c17a64529c37ba8.mp4"
    }, {
      term: "Crane / boom",
      desc: "Camera rises or lowers on a boom arm",
      prompt: "Crane boom shot rising from street level up a brick facade to a rooftop garden party glowing with string lights, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/2f2fcc9d6ac296fc660587111f918f6e768a6bcf.mp4"
    }, {
      term: "Handheld",
      desc: "Loose, organic camera motion",
      prompt: "Handheld camera trailing a nervous performer through a cramped backstage corridor, crew rushing past, stage lights ahead, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/2d4263806dec38998a5fa4cd58569abad8dd42db.mp4"
    }, {
      term: "Whip pan",
      desc: "Fast pan that blurs between subjects",
      prompt: "Whip pan from the pitcher's explosive windup to the batter swinging, stadium crowd blurring between them, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/42c41436937dc187bca741107e014dd56e0caa10.mp4"
    }, {
      term: "Dolly zoom",
      desc: "Zoom and dolly opposed for a warping effect",
      prompt: "Dolly zoom on a man's stunned face in a long hallway as he realizes the truth, walls stretching unnaturally, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/e31b70a51d8712e4b170ddcd64abd3455b2973b5.mp4"
    }, {
      term: "Steadicam follow",
      desc: "Smooth stabilized shot following the subject",
      prompt: "Steadicam follow shot tracking a chef weaving through a busy kitchen, flames flaring, plates passing hand to hand, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/f8addd4ac28ff223d2a0bdc4dd782a5428f14c8d.mp4"
    }, {
      term: "Push through",
      desc: "Camera pushes through a gap into a new space",
      prompt: "Push through a brass keyhole into a candlelit library, towering shelves emerging, flames trembling over ancient books, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/f3c7355750dba15ab67f3c208064123306041b07.mp4"
    }, {
      term: "Snorricam",
      desc: "Rig mounts the camera to the subject so the world sways",
      prompt: "Snorricam shot, camera rigged to the actor's chest keeping his weary face pin-sharp while neon city streets tumble and sway wildly behind him, drunken disorienting night walk, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/ed1dc0b8df9c844870618a3c3e251124db7b6ce9.mp4"
    }, {
      term: "Camera roll",
      desc: "Camera rotates around its own lens axis",
      prompt: "Camera roll technique, lens rotating a full 360 degrees around its own axis as a skateboarder leaps a concrete gap, golden sunset flares, gravity-defying dizziness, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/569ea751f1e3fad04c9ffece69e1724d60430c49.mp4"
    }, {
      term: "Arc shot",
      desc: "Camera sweeps a semicircle around the subject",
      prompt: "Arc shot, camera glides in a smooth semicircle around a couple kissing under heavy rain, streetlamps sparkling in falling droplets, slow romantic orbit, cinematic night atmosphere, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/c102a05c9cfa975af48e93c11ad7cd099d3483ba.mp4"
    }, {
      term: "Pedestal",
      desc: "Camera moves straight up or down in space",
      prompt: "Pedestal shot, camera rises vertically along a towering antique library bookshelf, dust motes drifting in warm lamplight, leather spines passing frame by frame, quiet scholarly grandeur, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/51e1fbeabd0857dc0a621d8f25a618c2ee90fcc8.mp4"
    }, {
      term: "Trucking",
      desc: "Camera slides laterally alongside the scene",
      prompt: "Trucking shot, camera slides laterally past a bustling street market, vendors handing over fruit, awnings flapping, steam rising from food stalls, layered crowds in warm afternoon light, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/b522606a34e411815096348cfcfd05863b4c94b4.mp4"
    }, {
      term: "Locked-on",
      desc: "Rig fixes the subject steady while the background blurs",
      prompt: "Locked-on shot, camera rigidly fixed to a runner's determined face, perfectly stable, while the blurred subway station whips past behind her at chaotic speed, tense urgency, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/01e37d7d14d45b43dc6178543f5af5d209793270.mp4"
    }, {
      term: "Lazy Susan",
      desc: "Subject rotates on a turntable, camera fixed",
      prompt: "Lazy Susan shot, a vintage rotary telephone spinning slowly on a rotating turntable while the camera stays completely fixed, moody studio spotlight, black backdrop, product-film elegance, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/c6ca77cff354e192e63f11b622056948d596be78.mp4"
    }],
    "focus": [{
      term: "Shallow depth of field",
      desc: "Subject stays sharp while background softens",
      prompt: "shallow depth of field on raindrops sliding down a taxi window",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/7d7358ae9e7d01a100ca89d55853277e31279f19.mp4"
    }, {
      term: "Deep focus",
      desc: "Foreground and background both stay sharp",
      prompt: "deep focus across a crowded antique shop from front shelf to back door",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/29ee1357f2f438ffbfb0f96e49ab11e3c8362b6e.mp4"
    }, {
      term: "Rack focus",
      desc: "Focus shifts from one subject plane to another",
      prompt: "rack focus from a coffee cup in the foreground to a woman at the window",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/23c94ae98f602d0801bef62f5a08577d3422293c.mp4"
    }, {
      term: "Split diopter",
      desc: "Near and far planes both stay sharp",
      prompt: "Split diopter shot keeping a hiding spy razor sharp in foreground and a distant opening door equally sharp, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/280b6b7eff3ae67b9493445b887b315743133d8a.mp4"
    }, {
      term: "Focus breathing reveal",
      desc: "Blur slowly resolves to reveal the subject",
      prompt: "Focus breathing reveal, soft blur slowly resolving into a stranger's face approaching through fog under streetlights, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/98f01d423ac71a3fec2136e8ccbd90fede87a2af.mp4"
    }, {
      term: "Tilt shift",
      desc: "Selective focus for a miniature look",
      prompt: "Tilt shift shot of a miniature-looking harbor town, tiny boats gliding, toy-like cars crossing the quay, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/dd0142717382660bfc7a100a69eb015352073b74.mp4"
    }],
    "lenses": [{
      term: "Wide angle (24mm)",
      desc: "Exaggerated space and edge distortion",
      prompt: "Wide angle 24mm lens follows a runner sprinting through a narrow alley, walls distorting and looming, handheld chase energy, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/681d820a1a46616a7b6e8c9efbac4e004917ab78.mp4"
    }, {
      term: "Telephoto compression",
      desc: "Flattens depth and stacks planes together",
      prompt: "Telephoto compression stacks a wall of yellow taxis into flattened layers, heat shimmer, dense city traffic crawling forward, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/05046e2899e262450524f7a00bc5ad74f398a458.mp4"
    }, {
      term: "Fisheye",
      desc: "Extreme curved wide-angle distortion",
      prompt: "Fisheye lens inside a skate bowl, skater carves past mid-trick, curved concrete horizon bending around the camera, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/f581aca97a864add55f667a36840680c8f13f7eb.mp4"
    }, {
      term: "Anamorphic flares",
      desc: "Horizontal streaks and oval bokeh",
      prompt: "Anamorphic flares streak horizontally across a night runway as a jet taxis past, blue flares cutting the darkness, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/f3fcabfdf1d6eb8db7e14f18f47c5e1ac40e4b03.mp4"
    }, {
      term: "Macro lens",
      desc: "Extreme magnification of tiny detail",
      prompt: "Macro lens on a ticking watch mechanism, gears and escapement moving in extreme close-up, shallow focus glinting brass, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/70cd6d44030eec282c3dda69dec77d6b1980622b.mp4"
    }, {
      term: "Probe lens",
      desc: "Snorkel lens weaves low through tight spaces",
      prompt: "Probe lens shot, snorkel camera weaving low through a breakfast still life, gliding between coffee cups, toast towers and dripping honey, macro detail, warm morning sunlight, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/2bab45b9bd89314893c6e899d020f0546ca17b5d.mp4"
    }, {
      term: "Halation",
      desc: "Glowing bloom halos around bright highlights",
      prompt: "Halation film look, glowing red-orange halos blooming around candle flames on a dinner table, soft vintage 35mm bloom over every highlight, dreamy nostalgic warmth, gentle flicker, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/507d891f50fffea3a2beca452996048f174c9364.mp4"
    }, {
      term: "Parallax",
      desc: "Depth layers slide against each other at different speeds",
      prompt: "Parallax shot, camera tracks sideways as foreground fence posts, midground trees and distant mountains slide against each other at different speeds, layered depth, misty dawn light, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/cddb13a476243e670417be989040de50a2e2eaf1.mp4"
    }, {
      term: "Vignette",
      desc: "Darkened edges frame a bright center",
      prompt: "Heavy vignette, dark edges closing around a candlelit portrait of an old woman reading letters, only her illuminated face in the bright center, intimate chiaroscuro mood, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/baae7e215fe80b799bbfcf86b961c9c4dc544c2c.mp4"
    }],
    "time": [{
      term: "Slow motion",
      desc: "Action stretched below real time",
      prompt: "Slow motion hummingbird shaking rain off its feathers, droplets exploding outward in glistening arcs, soft gray light, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/6145b5f6b74114ef128e6d6a23eb05ddcd5e62b6.mp4"
    }, {
      term: "Speed ramp",
      desc: "Speed shifts within a single shot",
      prompt: "Speed ramp as a boxer's punch connects, time slowing at impact then snapping back, sweat spraying under ring lights, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/d119b45c8d274f49b7986ffe853dd6decd1ab2ba.mp4"
    }, {
      term: "Timelapse",
      desc: "Long spans compressed into seconds",
      prompt: "Timelapse of fog rolling over a mountain pass, clouds pouring like liquid between ridgelines, shifting dawn light, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/fa2c73f159027f6899f73f260de1e7e37200aa9e.mp4"
    }, {
      term: "Long exposure look",
      desc: "Motion smears into glowing light trails",
      prompt: "Long exposure look, night cyclist weaving through city streets, headlights and taillights smearing into glowing light trails, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/4c9531ea0d3d93c7af8b275d0b7b0b764fd23f65.mp4"
    }, {
      term: "Bullet time",
      desc: "Frozen instant while the camera orbits through it",
      prompt: "Bullet time shot, a confetti explosion frozen mid-air around a leaping dancer while the camera orbits smoothly through suspended particles, studio strobes, impossible frozen instant, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/70fc394f410678a05508b963f4f937834e2ed28c.mp4"
    }, {
      term: "Freeze frame",
      desc: "Subject freezes while the camera keeps moving",
      prompt: "Freeze frame, a skateboarder halts mid-air completely frozen while the camera keeps dollying around his suspended body, dust hanging motionless, skatepark at golden hour, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/f7048791a6d57c0abbe31d2ff2814c197e5ab2fa.mp4"
    }, {
      term: "Boomerang",
      desc: "Short action plays forward then reverses on loop",
      prompt: "Boomerang loop, a champagne cork pops and foam bursts upward, then reverses back into the bottle, forward and backward endlessly repeating, celebratory sparkler light, playful rhythm, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/3fb738a88c30adc44f5d4f2ef657565725a1a346.mp4"
    }, {
      term: "Step printing",
      desc: "Stuttering, smeared motion trails",
      prompt: "Step printing effect, a dancer in a neon-lit Hong Kong alley leaving ghostly stuttering motion trails, smeared frames dragging behind each gesture, dreamy Wong Kar-wai mood, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/7663ad8c5b5b0937fd6cfed0923bb5209db20fa5.mp4"
    }, {
      term: "Fast motion",
      desc: "Undercranked, accelerated action",
      prompt: "Fast motion, undercranked footage of a grand railway station hall, commuters zipping across the marble floor in accelerated streams while one still traveler stands motionless, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/b3bb44140670a25a6a9e1c96485cc828b80fbabe.mp4"
    }, {
      term: "Cinemagraph",
      desc: "A still frame with one small looping motion",
      prompt: "Cinemagraph, an entirely frozen diner scene, patrons and waitress motionless, while only the steam from a coffee cup rises and curls endlessly, subtle hypnotic stillness, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/b16fcbb9903f55ac4e69cfa8d3abf672beda9efe.mp4"
    }],
    "lighting": [{
      term: "Rim light",
      desc: "Backlight outlines the subject's edge",
      prompt: "Rim light outlines a boxer breathing heavily in a dark gym, sweat glowing along his shoulders, background falling black, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/208c80844fa0c9c8ea4016f5354e340f34023bd9.mp4"
    }, {
      term: "Chiaroscuro",
      desc: "Strong contrast of light and deep shadow",
      prompt: "Chiaroscuro lighting, a violinist playing under a single beam, deep black shadows carving the face and bow strokes, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/8b6551a187cc52e940050b8a8496884b63ba4850.mp4"
    }, {
      term: "Golden hour",
      desc: "Warm, low-sun backlight",
      prompt: "Golden hour backlight over wheat fields, wind rippling the stalks in waves, warm sun flaring low on the horizon, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/7b6ac7e17145a39747c74baf07a5de389b202fa0.mp4"
    }, {
      term: "Neon practicals",
      desc: "In-scene colored light sources",
      prompt: "Neon practicals wash a face in shifting pink and cyan light, signs flickering outside a rainy window at night, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/bc7012495ae16c0e1a82b9945aaab49c80686503.mp4"
    }, {
      term: "Volumetric light",
      desc: "Visible beams and god rays through haze",
      prompt: "Volumetric light, god rays slicing through a dusty barn, motes drifting as a farmer walks through the glowing beams, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/51a247fd20f9abfa5689b1f8cdd3e005cc234983.mp4"
    }, {
      term: "Hard light",
      desc: "Harsh, sharp-edged shadows and high contrast",
      prompt: "Hard light noir, harsh sunbeams slicing through venetian blinds casting razor-sharp shadow stripes across a detective's face and smoky office, high contrast, cigarette smoke drifting, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/b27e2e92408ec276579b42f87c9947a8caa52fa3.mp4"
    }, {
      term: "Haze",
      desc: "Thick atmosphere reveals volumetric light shafts",
      prompt: "Atmospheric haze, dusty warehouse interior with thick volumetric light shafts cutting through fog from high windows, a lone figure walking through glowing cones, moody silence, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/f3e3f975c97a2668fc1dde8a8a334b1fd3dd2056.mp4"
    }, {
      term: "Spotlight",
      desc: "A single beam isolates the subject in darkness",
      prompt: "A single spotlight follows a lone singer across an empty dark stage, the harsh circular beam carving her silhouette from blackness, dust drifting through the light cone, dramatic theatrical solitude, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/7e21cbe5d646f2982b0adb14f99e2032722fd402.mp4"
    }, {
      term: "Light flash",
      desc: "Strobing flashbulb bursts freeze motion",
      prompt: "Rapid paparazzi light flash bursts strobe across a red carpet as an actress poses, each camera flash freezing her gestures in blinding white pulses, glamorous chaotic press-night energy, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/c48831c851630c138c78fccc80e55d2d403f1bcc.mp4"
    }, {
      term: "Projections",
      desc: "Projected imagery plays across the subject",
      prompt: "Vintage film projections dance across a woman's calm face in a dark room, flickering movie scenes and subtitles wrapping over her skin and eyes, nostalgic cinematic intimacy, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/7226e4ded4cccb7e65a03f6171333b4c01742dd3.mp4"
    }, {
      term: "Underwater light",
      desc: "Rippling caustics dance across surfaces",
      prompt: "Shimmering underwater light caustics ripple across the turquoise floor of a swimming pool as a swimmer glides through, sunbeams refracting into dancing web patterns, serene aquatic calm, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/bbee237d809157ac128955366d72f0ce34cbf3c1.mp4"
    }],
    "transitions": [{
      term: "Match cut",
      desc: "Shape or motion carries across the cut",
      prompt: "Match cut from a spinning coin on a table to a spinning planet in space, seamless rotation carrying the transition, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/be9e9dba561c50568614932e410f465114b65030.mp4"
    }, {
      term: "Whip transition",
      desc: "A whip pan hides the cut between scenes",
      prompt: "Whip transition, camera whips from a busy kitchen blurring into motion, landing smoothly in a candlelit dining room, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/d363a1f0be41dd9deafc6ae08746f582585ac9a5.mp4"
    }, {
      term: "Foreground wipe",
      desc: "A passing object wipes to a new scene",
      prompt: "Foreground wipe as a passing bus fills the frame, revealing a completely new street scene once it clears, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/62267577e1e26934f0ef29ae363279916bf46b56.mp4"
    }, {
      term: "Jump cut",
      desc: "Abrupt discontinuous cuts in the same framing",
      prompt: "A man delivers an anxious monologue to camera with abrupt jump cut edits, his position and gestures snapping discontinuously between phrases, same framing, restless confessional vlog rhythm, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/ad9f876b4a385c7be2d7639b63933f30e64a25f0.mp4"
    }, {
      term: "Object portal",
      desc: "Camera dives into an object into a new scene",
      prompt: "The camera dives into a steaming coffee cup as an object portal, plunging through swirling brown liquid that dissolves into a golden autumn forest scene, seamless magical transition, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/767807c970d1853b10ac0e1e632a96f8f855e619.mp4"
    }, {
      term: "Pass-through",
      desc: "One continuous move threading through spaces",
      prompt: "A gliding pass-through shot threads the camera through a brass keyhole into a candlelit study, then out its window into rainy night streets, one continuous impossible move, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/b9a14908fce5d9fcb322dc88bdcb20b14a87c432.mp4"
    }, {
      term: "Quick cuts",
      desc: "Rapid rhythmic montage of short shots",
      prompt: "Energetic quick cuts chop a morning breakfast routine into eight snappy shots, toast popping, coffee pouring, eggs cracking, jacket zipping, rhythmic percussive montage of everyday momentum, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/7ae58a47c40debff8e2ca223f238480832cbff3d.mp4"
    }, {
      term: "Screen-in-screen",
      desc: "Recursive screen-within-screen loop",
      prompt: "An infinite screen-in-screen recursion shows a woman watching herself on a television that contains the same scene repeating inward endlessly, glowing screens tunneling into darkness, uncanny loop, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/65df6958cad993fe082c55ba2fa1bcf69ad42ab6.mp4"
    }],
    "pov": [{
      term: "Drone FPV",
      desc: "Fast, agile first-person drone flight",
      prompt: "Drone FPV dives off a waterfall into a misty gorge, skimming spray and rock walls at breathtaking speed, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/bed5d3b05d9ed9a6b836536610437abebe7496aa.mp4"
    }, {
      term: "Bodycam",
      desc: "Chest-mounted POV bobbing with motion",
      prompt: "Bodycam POV jogging through a stadium tunnel toward blinding daylight, footsteps echoing, camera bobbing with each stride, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/9a01770f3eb1a7e21a9a64f6af59bdf43ae00b3f.mp4"
    }, {
      term: "Dashcam",
      desc: "Fixed in-car view of the road ahead",
      prompt: "Dashcam view of a moose crossing a snowy highway at dusk, wipers sweeping, brake lights reflecting on ice, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/3c980330826f9d176e6036a0232c141f8eb01e50.mp4"
    }, {
      term: "Mirror POV",
      desc: "Subject seen via a mirror reflection",
      prompt: "Mirror POV, a man shaving looks directly into the bathroom mirror, razor strokes through foam, steamy morning light, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/c48ef612570eabee19993b56074313837cc1dec4.mp4"
    }],
    "format": [{
      term: "Cinemascope (21:9)",
      desc: "Ultra-wide anamorphic frame",
      prompt: "Cinemascope 21:9 frame, two gunslingers face off at high noon in a desert town, heat haze and drifting dust, 10 seconds, 21:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/86e6e1ff16a10a359dcfc847b4e505e557e57c22.mp4"
    }, {
      term: "Vertical (9:16)",
      desc: "Tall frame for mobile-first video",
      prompt: "Vertical 9:16 frame, climber ascending a firetower ladder, camera tilting up the endless rungs toward open sky, 10 seconds, 9:16",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/4a231c0eab30348e1624acbf9faff85f44de5cfb.mp4"
    }, {
      term: "Vintage (4:3)",
      desc: "Boxy retro camcorder framing",
      prompt: "Vintage 4:3 home video of a 90s birthday party, grainy camcorder look, kids cheering around flickering candles, 10 seconds, 4:3",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/eaf4d38db53fc4936051fa9d5f6c01263867544f.mp4"
    }, {
      term: "Split screen",
      desc: "Two shots side by side in one frame",
      prompt: "Split screen shows two callers in different cities, one rainy, one sunny, laughing on the phone simultaneously, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/3e3866dd1eb69db65333655b0e926e43bef3576a.mp4"
    }],
    "vfx": [{
      term: "Double exposure",
      desc: "Two images blended into one frame",
      prompt: "Elegant double exposure blends a pensive man's profile portrait with a misty pine forest, treetops and fog drifting inside his silhouette against white sky, melancholic poetic layering, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/dd10fc8ce7854bf8ac6f36ecae04379852094511.mp4"
    }, {
      term: "Datamosh",
      desc: "Glitched, smearing pixel corruption",
      prompt: "A dancer hits the beat drop and the frame erupts in datamosh corruption, pixels smearing and melting into glitched motion trails, colors bleeding chaotically, raw digital energy, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/b45733f7262c8b758cf09cabae8e32538047549e.mp4"
    }, {
      term: "Kaleidoscope",
      desc: "Mirrored, symmetrical repeating patterns",
      prompt: "Overhead kaleidoscope symmetry multiplies a troupe of dancers into shifting mirrored mandala patterns, costumes blooming like folding flowers with each choreographed move, hypnotic Busby Berkeley geometry, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/3e8778ee1b0ef7688f712c77b98fc5a07cf57dcf.mp4"
    }, {
      term: "Morphing",
      desc: "One subject fluidly reshapes into another",
      prompt: "Seamless morphing transforms one face through four generations, child to teenager to mother to grandmother, features fluidly reshaping under soft studio light, tender meditation on time, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/52cac0c9f1568ef20046a94b726ee24706fec99d.mp4"
    }, {
      term: "Slit scan",
      desc: "Motion smeared into flowing time ribbons",
      prompt: "A galloping horse stretches into slit-scan time distortion, its body smeared into flowing temporal ribbons across the frame, mane trailing warped streaks over prairie light, surreal velocity, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/4cd60b2792b5b46736c8cde7e4417a4017149650.mp4"
    }, {
      term: "X-ray",
      desc: "See-through view of inner structure",
      prompt: "An x-ray view reveals the inner skeleton of a mechanical hand flexing its fingers, gears and pistons glowing blue-white against black, translucent layers shifting, clinical futuristic precision, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/7fb81dcf75e5833994a7991e55ac4c8957345819.mp4"
    }, {
      term: "Levitation",
      desc: "Objects or subjects float weightlessly",
      prompt: "Quiet levitation lifts books, teacups and a floor lamp drifting slowly through a sunlit living room, objects rotating weightlessly around an unbothered reading woman, dreamlike domestic magic, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/72c0560b411434571c2d5647d2d6ba777b8c1ab0.mp4"
    }],
    "art-direction": [{
      term: "Dreamcore",
      desc: "Liminal, nostalgic, quietly unsettling spaces",
      prompt: "Dreamcore emptiness fills endless pastel hallways under a blown-out overexposed sky, doors leading nowhere, a lone swing swaying without wind, liminal dream logic, quietly unsettling nostalgia, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/a5f42517322c76e8d4874cb7c31b3c4b62dbd8d6.mp4"
    }, {
      term: "Dystopian",
      desc: "Bleak, oppressive futuristic world",
      prompt: "A dystopian megacity glistens under relentless rain, surveillance drones sweeping searchlights across neon-soaked crowds and towering propaganda screens, steam rising from grates, oppressive cyberpunk gloom, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/c7d89a9d85c5c75280e29632f05b68ece1fb8351.mp4"
    }, {
      term: "Magical realism",
      desc: "Gentle magic within an ordinary scene",
      prompt: "Gentle magical realism fills an ordinary corner café where paper lanterns float freely above chatting customers, drifting between tables as waiters ignore them, warm everyday enchantment, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/043c5187f2ccf36ae5f785143553cb133017be65.mp4"
    }, {
      term: "Maximalism",
      desc: "Dense, ornate, overloaded set design",
      prompt: "Opulent maximalism crowds a baroque salon with gilded mirrors, stacked oil paintings, velvet drapes, marble busts and cascading flowers, camera slowly gliding through ornate sensory overload, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/cf6a50f8223d86acb80c7ce0038cb12b11d02b4d.mp4"
    }, {
      term: "Diorama",
      desc: "Tilt-shift miniature model world",
      prompt: "A charming diorama miniature small town awakens, tilt-shift model railways, tiny felt cars and handcrafted houses under warm lamp lighting, camera craning over the scale-model streets, whimsical, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/5729a757e0c75e447e07e8d9d81890ee1497e60d.mp4"
    }],
    "animation": [{
      term: "Stop motion",
      desc: "Handmade frame-by-frame claymation",
      prompt: "Playful stop motion claymation shows a breakfast table setting itself, plasticine toast hopping onto plates, clay butter spreading in jerky handmade frames, fingerprint textures visible, cozy charm, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/b44ce9a9728689f63b78675f81605990e6d7113d.mp4"
    }, {
      term: "Pixel art",
      desc: "Retro low-res 16-bit aesthetic",
      prompt: "Retro pixel art depicts a 16-bit city at sunset, dithered orange gradients behind blocky skyscrapers, tiny sprite pedestrians crossing streets, animated neon signs flickering, nostalgic SNES atmosphere, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/e5c04f38f407f558b0e062eaf562ca8f47960ffe.mp4"
    }, {
      term: "Zoetrope",
      desc: "Pre-cinema spinning-drum animation",
      prompt: "A spinning zoetrope drum flickers galloping horse sprites to life through its slits, warm workshop lamplight strobing the painted figures into fluid motion, Victorian pre-cinema wonder, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/41daa1aa6292c812df4bbf99ac6251323669b6e0.mp4"
    }, {
      term: "Kinetic typography",
      desc: "Animated text as the main visual",
      prompt: "Kinetic typography builds a city skyline from animated words, letters stacking into skyscrapers, sentences flowing as traffic below, bold type rising against dusk gradient, energetic motion-graphic design, 10 seconds, 16:9",
      video: "https://cdn.sanity.io/files/2gpum2i6/production/979742f988d820163361ce39ba94b23136a5f637.mp4"
    }]
  };
  const srcOf = video => (/^https?:\/\//).test(video) ? video : `${VIDEO_BASE}/${video}`;
  const data = items || CAMERA_TERMS[group] || [];
  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 = true;
          const p = v.play?.();
          if (p && typeof p.catch === "function") p.catch(() => {});
        } else {
          v.pause?.();
        }
      });
    }, {
      threshold: 0.25
    });
    return observerRef.current;
  };
  const attachVideo = el => {
    if (!el) return;
    const io = getObserver();
    if (io) io.observe(el);
  };
  const trackRef = useRef(null);
  const measuredRef = useRef(false);
  const [edges, setEdges] = useState({
    left: false,
    right: true
  });
  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 attachTrack = el => {
    trackRef.current = el;
    if (!el || measuredRef.current) return;
    measuredRef.current = true;
    if (typeof requestAnimationFrame !== "undefined") {
      requestAnimationFrame(() => updateEdges(el));
    } else {
      updateEdges(el);
    }
  };
  const scrollStrip = dir => {
    const el = trackRef.current;
    if (!el) return;
    el.scrollBy({
      left: dir * el.clientWidth * 0.8,
      behavior: "smooth"
    });
  };
  return <div className="not-prose camera-strip">
      <button type="button" className="camera-strip__arrow camera-strip__arrow--prev" onClick={() => scrollStrip(-1)} disabled={!edges.left} aria-label="Scroll left">
        <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="camera-strip__track" ref={attachTrack} onScroll={e => updateEdges(e.currentTarget)}>
        {data.map((item, idx) => <article key={item.video || idx} className="camera-card">
            <h3 className="camera-card__term">{item.term}</h3>

            <div className="camera-card__media">
              <video ref={attachVideo} src={srcOf(item.video)} poster={item.poster} loop muted playsInline preload="metadata" aria-label={`${item.term} — ${item.prompt}`} className="camera-card__video" />
            </div>

            <div className="camera-card__body">
              <code className="camera-card__prompt-text">{item.prompt}</code>
            </div>
          </article>)}
      </div>

      <button type="button" className="camera-strip__arrow camera-strip__arrow--next" onClick={() => scrollStrip(1)} disabled={!edges.right} aria-label="Scroll right">
        <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>
    </div>;
};

<CameraTermNav />

## Shot sizes and framing

<CameraTermGallery group="shot-sizes" />

## Camera angles

<CameraTermGallery group="angles" />

## Composition techniques

<CameraTermGallery group="composition" />

## Camera movements

<CameraTermGallery group="movements" />

<Tip>
  Start with one framing term, one movement term, and one clear subject action.
  Too many camera instructions in a single sentence usually make the shot less
  readable.
</Tip>

## Focus techniques

<CameraTermGallery group="focus" />

## Lenses and optics

<CameraTermGallery group="lenses" />

## Shutter and time

<CameraTermGallery group="time" />

## Lighting styles

<CameraTermGallery group="lighting" />

## Shot transitions

<CameraTermGallery group="transitions" />

## POV and specialty rigs

<CameraTermGallery group="pov" />

## Aspect and format

<CameraTermGallery group="format" />

## VFX and transformation

<CameraTermGallery group="vfx" />

## Art direction

<CameraTermGallery group="art-direction" />

## Animation and media

<CameraTermGallery group="animation" />

## FAQ

<AccordionGroup>
  <Accordion title="Should I use more than one camera term?">
    Yes, but keep it intentional. `low tracking shot` is clear. `low aerial handheld orbit push-in` usually is not.
  </Accordion>

  <Accordion title="What should come first in the prompt?">
    Usually start with the subject and action, then add framing, movement, and style around it.
  </Accordion>

  <Accordion title="Do I need camera language in every prompt?">
    No. Add it when framing or motion behavior matters. If you leave it out, the model will infer a shot on its own.
  </Accordion>

  <Accordion title="Are these full prompts?">
    No. Treat them as reusable camera phrases that you combine with subject, environment, and motion details.
  </Accordion>
</AccordionGroup>

## Related pages

<CardGroup cols={2}>
  <Card title="Text-to-Video" icon="film" href="/guides/prompting_video_text_to_video">
    Build full FLUX 3 prompts with subject action, camera behavior, and scene motion.
  </Card>

  <Card title="Video Prompting Overview" icon="book-open-cover" href="/guides/prompting_video_overview">
    Start here for workflow selection and the broader video prompting framework.
  </Card>

  <Card title="FLUX 3 Video" icon="film" href="/flux_3/flux3_video">
    See modes, examples, and implementation details for FLUX 3 video workflows.
  </Card>

  <Card title="Prompting Basics" icon="pen" href="/guides/prompting_unified_basics">
    Revisit the general prompting principles that still apply before camera language.
  </Card>
</CardGroup>
