Every colour in this site is a shade of grey, declared once at the top of the stylesheet:

--dark-bg-color: hsl(0 0% 7.5%);
--dark-text-color: hsl(0 0% 90%);
--dark-text-secondary: hsl(0 0% 60%);
--dark-text-tertiary: hsl(0 0% 40%);

Seven and a half percent, not zero. Pure black backgrounds make white text smear on OLED screens — the pixels are genuinely off, so the transition to lit text has nothing to ease through. A few percent of light gives the eye something to land on.

Three greys is enough

Ninety for anything you're meant to read. Sixty for the supporting line — a date, a caption. Forty for the things that are present but not asking for attention, like the clock in the corner.

Empty gallery interior
Three values of grey, doing all the hierarchy work.

The temptation with a dark theme is to reach for an accent colour to create hierarchy. You rarely need it. Contrast against the background is the hierarchy, and it's quieter.

Weight over size

Body text here is 14px and headings are 16px. That's a two pixel difference, which shouldn't be enough to establish a heading — and on its own it isn't. What separates them is weight and the space around them. Big type is the blunt instrument; spacing is the precise one.

What I'd change

The type scale is tight to the point of being stubborn, and on a 27-inch monitor the 50% content column gets wide enough that long lines start to sag. A max-width in ch units would fix it. I've left it as is because the flaw is instructive: constraints that feel elegant at one viewport can quietly stop working at another, and you only find out by looking.