"use client"; import { CursorDotBackground } from "./CursorDotBackground"; import { HorizontalAccordion } from "./HorizontalAccordion"; import { useEffect, useRef, useState } from "react"; export function TempPlaceholder() { const titleRef = useRef(null); const titleInnerRef = useRef(null); const bioTextRef = useRef(null); const [titleWidth, setTitleWidth] = useState(null); const [bioFontSizePx, setBioFontSizePx] = useState(null); const baseBioFontSizeRef = useRef(null); useEffect(() => { const measure = () => { const measuredTitleWidth = titleInnerRef.current?.offsetWidth ?? null; setTitleWidth(measuredTitleWidth); if (measuredTitleWidth && bioTextRef.current) { const element = bioTextRef.current; if (baseBioFontSizeRef.current === null) { const initialFontSize = parseFloat(getComputedStyle(element).fontSize); baseBioFontSizeRef.current = isNaN(initialFontSize) ? 16 : initialFontSize; } // Temporarily ensure we measure at base font size const baseFontSize = baseBioFontSizeRef.current ?? 16; const previousInlineFontSize = element.style.fontSize; element.style.fontSize = `${baseFontSize}px`; const bioNaturalWidth = element.offsetWidth; // Restore previous inline style before we set state (will update after render) element.style.fontSize = previousInlineFontSize; if (bioNaturalWidth > 0) { // On mobile, use a more conservative scaling to prevent cramped text const isMobile = window.innerWidth < 640; // sm breakpoint const isTablet = window.innerWidth < 1024; // lg breakpoint let maxScale; if (isMobile) { maxScale = 0.8; // Limit scaling on mobile } else if (isTablet) { maxScale = 1.2; // Allow more scaling on tablet } else { maxScale = 1.8; // Allow much more scaling on desktop } const scale = Math.min(measuredTitleWidth / bioNaturalWidth, maxScale); setBioFontSizePx(baseFontSize * scale); } } }; measure(); window.addEventListener("resize", measure); return () => window.removeEventListener("resize", measure); }, []); return (

10-12-2025

You've gotta be fucking me.

This is the 20th fucking time this has happened.

Nicholai broke the website, again.

(TLDR: perfectionism is the mind killer)

  1. We needed a website (circa January 2023)
  2. We tried to build one on squarespace (that shit sucks)
  3. Nicholai figured "I know some html and javascript, why not just{" "} make one."
  4. But of course, the html site sucked and was difficult to host.
  5. And naturally, the website for some reason needed to look good.
  6. So then began a longwinded journey of Nicholai learning react
  7. Nicholai should've stuck to python.

Anyway, heres all you assholes need for right now:

BIOHAZARD

Who we are: artists and technical people, we're better at VFX than we are at web design, I promise.

Here's our reel:{" "} Biohazard Reel Mar 2025 - Frame.io

(it's lightly outdated because we're a small studio that prefers to spend our time actually working on our clients projects and not working on bullshit like editing our reel, marketing, or building websites.)

Some projects we've worked on:

Here's our{" "} Instagram

Questions, comments, concerns and inquiries:{" "} contact@biohazardvfx.com

File a complaint:{" "} help@biohazardvfx.com

); }