P-022026also personal

This Site.

Written rather than rented, so the data stays mine and the layout answers to no template. The personal half is planned as a replacement for social media — that part isn't built yet.

Try it — drag your cursor across both

An ordinary link

Select these words with your cursor.

The one used here

Select these words with your cursor.

The line under the right-hand link is not a text-decoration. It measures the selected characters — their pixel geometry, live, not their offsets — and redraws itself to exactly that width and position, in the same accent the highlight uses. Select two words and it covers two words.

It also stops the hover effect while a selection is in progress. On the left, dragging across the link recolours the whole thing mid-drag, because the cursor is technically hovering. On the right it stays put until you let go.

Change the palette — the whole page follows

The first palette here wasn’t mine. Claude suggested it while I was building the site — warm orange on beige — and it looked good, but it wasn’t me. It is still in the list above, under its own name. I am made of pieces picked up from other people, and I don’t have one favourite colour any more than I have one side — so the site doesn’t settle on one either.

For a while the server settled the palette before sending the page, which is the elegant version: the right colours in the first byte, nothing to run. Then the site moved to a folder of static files on a plain host, and there was no server left to ask. So it is now the other way — a small script in the head, before anything paints, reading the cookie or rolling a new colour. Roughly 350 bytes, and it has to block: anything deferred paints the wrong palette first. The attribute on the html element is still the only copy of the value — the CSS reads it directly, and React subscribes to it instead of keeping its own.

You did not choose the one you arrived on. It was rolled at random when you opened the site and holds for this visit — close the browser, come back, and you get another. It expires at the end of the day too, so tomorrow is a fresh one either way.

Stack

Next.jsReactTypeScriptTailwind CSSMotion
All projects