Add splash intro, nuclear games + consulting, Cherenkov hero

- Splash: full-viewport animated SUCH logo cover with four corner nav
  buttons; reveals the site once "entered" (scroll-through or Explore) and
  does not resurrect on scroll-up. Original hero restored beneath it
  (title-anchored monitor pulse + Cherenkov-blue background).
- Logo: traveling Cherenkov glow ring + gentle letter breath (SVG/Framer,
  reduced-motion safe); beveled glass corner buttons.
- Services: new "Nuclear & Radiation Modeling" section + "Consulting"
  umbrella (payments, crypto, nuclear), MCNP Google Scholar link, and a
  not-a-licensed-PE clarification.
- About/founder bio: LLNL credibility + accessibility, art101.io link.
- Products: add Barns & Neutrons, Alpha Doc, Decay Theory (detail pages,
  OG cards, SVG icons); client-side sortable grid with coming-soon at the
  bottom. New Neroswap + Custom Websites icons (de-duplicated).
- SEO: game pages added to sitemap.
- Copy: dial back em-dashes to colons/commas/parens on home + services.
This commit is contained in:
jwinterm
2026-06-05 22:40:14 -04:00
parent 71dec78abe
commit ed07bb5681
26 changed files with 1234 additions and 140 deletions
+68
View File
@@ -0,0 +1,68 @@
import { ImageResponse } from "next/og";
export const OG_SIZE = { width: 1200, height: 630 };
export const OG_CONTENT_TYPE = "image/png";
/**
* Build-time Open Graph card for a (pre-release) game product page.
* Themed by accent color, on the Cherenkov-dark studio background.
*/
export function gameOgImage({
title,
tagline,
accent,
badge = "In Development",
}: {
title: string;
tagline: string;
accent: string;
badge?: string;
}) {
return new ImageResponse(
(
<div
style={{
height: "100%",
width: "100%",
display: "flex",
flexDirection: "column",
justifyContent: "space-between",
background: "#0a1622",
padding: 80,
fontFamily: "sans-serif",
}}
>
<div style={{ display: "flex", justifyContent: "space-between", alignItems: "center" }}>
<div style={{ display: "flex", fontSize: 30, letterSpacing: 6, color: "#94a3b8" }}>
SUCH SOFTWARE
</div>
<div
style={{
display: "flex",
fontSize: 22,
letterSpacing: 3,
color: accent,
border: `2px solid ${accent}`,
borderRadius: 999,
padding: "10px 24px",
}}
>
{badge.toUpperCase()}
</div>
</div>
<div style={{ display: "flex", flexDirection: "column" }}>
<div style={{ display: "flex", fontSize: 92, fontWeight: 800, color: accent, lineHeight: 1.05 }}>
{title}
</div>
<div style={{ display: "flex", fontSize: 40, color: "#cbd5e1", marginTop: 28, maxWidth: 1000 }}>
{tagline}
</div>
</div>
<div style={{ display: "flex", fontSize: 28, color: "#64748b" }}>such.software</div>
</div>
),
{ ...OG_SIZE },
);
}