+ {site.fullReel && (
+
+
+
+ )}
(null);
+
+ useEffect(() => {
+ if (!open) return;
+ const onKey = (e: KeyboardEvent) => e.key === "Escape" && setOpen(false);
+ document.addEventListener("keydown", onKey);
+ document.body.style.overflow = "hidden";
+ videoRef.current?.play().catch(() => {});
+ return () => {
+ document.removeEventListener("keydown", onKey);
+ document.body.style.overflow = "";
+ };
+ }, [open]);
+
+ return (
+ <>
+
setOpen(true)}
+ className="group flex items-center gap-3 font-mono text-xs tracking-[0.2em] whitespace-nowrap uppercase"
+ >
+
+
+
+
+
+ {label}
+
+
+ {open && (
+
setOpen(false)}
+ >
+ setOpen(false)}
+ className="absolute top-4 right-5 font-mono text-xs tracking-[0.2em] text-muted uppercase hover:text-fg"
+ >
+ Close ✕
+
+ e.stopPropagation()}
+ />
+
+ )}
+ >
+ );
+}
diff --git a/content/site.ts b/content/site.ts
index 75c2fa3..95a1488 100644
--- a/content/site.ts
+++ b/content/site.ts
@@ -13,10 +13,11 @@ export const site = {
// TODO: switch to an @ttvfx.com address once the domain's mail is set up.
email: "chris@twotalesanimation.com",
location: "Pretoria, South Africa",
- // Optional studio showreel for the home hero: drop public/reel.mp4 and set
- // this to "/reel.mp4" (and reelPoster to a still).
- reel: null as string | null,
- reelPoster: null as string | null,
+ // Muted background loop for the home hero (cut from the Summertide reel).
+ reel: "/reel/hero-loop.mp4" as string | null,
+ reelPoster: "/reel/hero-poster.jpg" as string | null,
+ // Full reel with sound, opened by the hero's "Play reel" button.
+ fullReel: "/reel/summertide-reel.mp4" as string | null,
socials: [
// TODO: add real profiles, e.g. { label: "Vimeo", href: "https://vimeo.com/..." }
] as { label: string; href: string }[],
@@ -125,6 +126,25 @@ export type Project = {
};
export const projects: Project[] = [
+ {
+ slug: "summertide",
+ title: "Summertide",
+ client: "M-Net",
+ year: 2024,
+ category: "Series",
+ summary:
+ "Creature and simulation work for M-Net’s coastal family drama: CG African penguins, a CG shark with water simulation, shark replacements on the beach, CG storm clouds and lightning, a CG seal and pyro simulations.",
+ image: "/work/summertide/still-18.jpg",
+ video: "/reel/summertide-reel.mp4",
+ gallery: [
+ "/work/summertide/still-101.jpg",
+ "/work/summertide/still-139.jpg",
+ "/work/summertide/still-80.jpg",
+ "/work/summertide/still-187.jpg",
+ ],
+ credits: ["CG Penguins", "CG Shark & Water Sim", "Shark Replacement", "CG Clouds & Lightning", "CG Seal", "Pyro Simulations"],
+ hue: 190,
+ },
{
slug: "festo-f1",
title: "Festo F1",
diff --git a/public/reel/hero-loop.mp4 b/public/reel/hero-loop.mp4
new file mode 100644
index 0000000..140f02b
Binary files /dev/null and b/public/reel/hero-loop.mp4 differ
diff --git a/public/reel/hero-poster.jpg b/public/reel/hero-poster.jpg
new file mode 100644
index 0000000..7fd1dd6
Binary files /dev/null and b/public/reel/hero-poster.jpg differ
diff --git a/public/reel/summertide-reel.mp4 b/public/reel/summertide-reel.mp4
new file mode 100644
index 0000000..bf78847
Binary files /dev/null and b/public/reel/summertide-reel.mp4 differ
diff --git a/public/work/summertide/still-101.jpg b/public/work/summertide/still-101.jpg
new file mode 100644
index 0000000..d017b10
Binary files /dev/null and b/public/work/summertide/still-101.jpg differ
diff --git a/public/work/summertide/still-139.jpg b/public/work/summertide/still-139.jpg
new file mode 100644
index 0000000..f170559
Binary files /dev/null and b/public/work/summertide/still-139.jpg differ
diff --git a/public/work/summertide/still-18.jpg b/public/work/summertide/still-18.jpg
new file mode 100644
index 0000000..eaafa6f
Binary files /dev/null and b/public/work/summertide/still-18.jpg differ
diff --git a/public/work/summertide/still-187.jpg b/public/work/summertide/still-187.jpg
new file mode 100644
index 0000000..1821145
Binary files /dev/null and b/public/work/summertide/still-187.jpg differ
diff --git a/public/work/summertide/still-33.jpg b/public/work/summertide/still-33.jpg
new file mode 100644
index 0000000..d91dd80
Binary files /dev/null and b/public/work/summertide/still-33.jpg differ
diff --git a/public/work/summertide/still-80.jpg b/public/work/summertide/still-80.jpg
new file mode 100644
index 0000000..ba793d2
Binary files /dev/null and b/public/work/summertide/still-80.jpg differ