<feed xmlns='http://www.w3.org/2005/Atom'>
<title>slosh.git/web/site.css, branch docs-new</title>
<subtitle>an opinionated terminal multiplexer in C with programmable pane chrome</subtitle>
<id>https://git.sl0p.foo/slosh.git/atom/web/site.css?h=docs-new</id>
<link rel='self' href='https://git.sl0p.foo/slosh.git/atom/web/site.css?h=docs-new'/>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/'/>
<updated>2026-08-30T17:26:54Z</updated>
<entry>
<title>web: the whole step is the road, not just its title</title>
<updated>2026-08-30T17:26:54Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-08-30T17:26:54Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=e7555078282054ed9c02579b37e0d628db599b92'/>
<id>urn:sha1:e7555078282054ed9c02579b37e0d628db599b92</id>
<content type='text'>
Clicking anywhere in a dimmed article glides it to the centre and so,
through the observer, switches the recording. Three guards keep the
click meaning navigation: the active step does not react (clicks there
are for reading and selecting, not going where you already are), a
selection is not a click, and a link is a link. The pointer cursor and
the title's breath of pink now belong to dimmed steps only -- the
active one is just prose.
</content>
</entry>
<entry>
<title>web: the tour's doorway steps stop grabbing</title>
<updated>2026-08-30T17:22:50Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-08-30T17:22:50Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=b8a550a9d7119200ad3d92095937f8d4d7b09a90'/>
<id>urn:sha1:b8a550a9d7119200ad3d92095937f8d4d7b09a90</id>
<content type='text'>
Proximity snapping traps at the edges: between steps, adjacent fields
hand you from magnet to magnet, but at the first and last there is no
next field -- a wheel tick toward the hero or past the final demo ends
inside the boundary step's radius and is pulled straight back, forever.
The interior steps keep their snap-align; the doorways go without,
because a doorway that grabs is worse than a step that does not snap.
</content>
</entry>
<entry>
<title>web: the tour magnets, politely</title>
<updated>2026-08-30T17:20:21Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-08-30T17:20:21Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=37e1cdd6e0ad528b3f1c2efe366dc1d7f4ca8f17'/>
<id>urn:sha1:37e1cdd6e0ad528b3f1c2efe366dc1d7f4ca8f17</id>
<content type='text'>
scroll-snap-type: y proximity on the root, snap-align: center on the
steps and nothing else: a scroll that ends near a step is settled onto
its centre -- the exact spot the tour activates it, so the rest
position and the lit step agree -- and momentum, half-reads and every
snapless section are left alone, by spec. Proximity, never mandatory:
the mandatory kind on a page that also has prose is a trap, and the
JS kind is worse. Off in the one-column layout, where the sticky
stage covers the upper viewport and a centred step would sit half
beneath it.
</content>
</entry>
<entry>
<title>web: a step's title is a road to the step</title>
<updated>2026-08-30T17:16:30Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-08-30T17:16:30Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=a3715c1eefb083385c42af8a52484c4b612fffe8'/>
<id>urn:sha1:a3715c1eefb083385c42af8a52484c4b612fffe8</id>
<content type='text'>
Clicking an article's h3 glides it to the middle of the viewport --
the exact spot where the tour's observer activates it, so the click
also switches the recording, through the same door scrolling uses
rather than a second mechanism. The pointer cursor and a breath of
pink on hover say clickable.
</content>
</entry>
<entry>
<title>web: the demo poster keeps to the content column</title>
<updated>2026-08-30T14:34:14Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-08-30T14:34:14Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=6382e32716daa5b5434e3959e6255bd6d3959c36'/>
<id>urn:sha1:6382e32716daa5b5434e3959e6255bd6d3959c36</id>
<content type='text'>
The tour-width breakout belongs to the machine, not to the offer of
one: unbooted, the panel now sits flush with the prose and the install
box; booted, it still takes the tour's width and most of a viewport.
</content>
</entry>
<entry>
<title>web: power off is a button, not a cheeky link</title>
<updated>2026-08-30T14:32:03Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-08-30T14:32:03Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=d5023e474f42bc41a2a1d89a130f4fc43842976f'/>
<id>urn:sha1:d5023e474f42bc41a2a1d89a130f4fc43842976f</id>
<content type='text'>
A real ghost button centred under the running machine, in the hero
buttons' own dress -- ghost on purpose: booting stays the loud verb,
stopping the quiet one. The caption drops to a side note beside it.
</content>
</entry>
<entry>
<title>web: the demo machine can be powered off</title>
<updated>2026-08-30T14:29:56Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-08-30T14:29:56Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=17c9fd17c4f0502f3453347c3b0842f3bb4d6ca1'/>
<id>urn:sha1:17c9fd17c4f0502f3453347c3b0842f3bb4d6ca1</id>
<content type='text'>
A caption under the running machine offers the off switch, dressed as
a link inside a sentence. Dropping the iframe out of the DOM tears the
whole VM down -- emulator, kernel, disk cache, the lot -- the stage
shrinks back into the poster (the original nodes come back from a
stash, listeners and all, so the boot button is immediately live
again), and the scroll follows both ways.

Reload always did this; the button does it without taking the rest of
the page with it.
</content>
</entry>
<entry>
<title>web: the demo machine, bootable in the front page</title>
<updated>2026-08-30T14:28:57Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-08-30T14:28:57Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=a5ce3d56f9ba17acf073b9ca051e658bfd262cae'/>
<id>urn:sha1:a5ce3d56f9ba17acf073b9ca051e658bfd262cae</id>
<content type='text'>
A try section between the tour and the install box: a modest poster
with one button, and the machine only when the button is pushed -- the
front page keeps costing two files, which is the decision the README
recorded when the demo got its own page, still being honoured.

The click grows the stage to most of a viewport *before* the iframe
goes in (the guest reads its geometry from the room exactly once, at
boot), then glides the scroll to land the machine centred. An iframe,
not the demo's scripts inlined: the emulator's emscripten glue owns
its globals by name, and isolation is what keeps this page and that
blob out of each other's namespaces. ?embed=1 makes the demo page
drop its own header and footer inside the frame; standalone it is
unchanged, and phones navigate to it rather than embedding -- wasm
under a soft keyboard in an iframe helps nobody.

The floating logo learns the tour's edges properly while at it: the
try section arriving closes the show (measured with a -45% rootMargin,
because the tour's exit margin lets the section ride high while the
last step is still centred), and a section scrolled past counts as
arrived, not gone.
</content>
</entry>
<entry>
<title>web: the logo cycles hyper, and casts a glow to match</title>
<updated>2026-08-30T14:13:45Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-08-30T14:13:45Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=a3a5b3e4c0469fe51125ebe1f0959c36c340c692'/>
<id>urn:sha1:a3a5b3e4c0469fe51125ebe1f0959c36c340c692</id>
<content type='text'>
Fewer colours at once, more per second: the gradient slims to three
stops -- pink, orchid, blue -- and the hue rotation takes over the
variety, a full wheel in 4s (5s in the reduced-motion lane, colour in
place, still nothing travelling). The slide drops to 5s with it.

And a drop shadow, inside the hue keyframes because the filter
property is the animation's to own -- a static filter would lose to
it -- and listed before the hue-rotate so the glow is rotated with
the letters and always matches their current colour. Soft and low:
on a near-black page a shadow can only read as a faint underglow.
</content>
</entry>
<entry>
<title>web: reduced motion stills the logo's slide, not its colour</title>
<updated>2026-08-30T14:09:39Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-08-30T14:09:39Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=bbdd1a8a50f81f2be9e399661f42a1a10993ba38'/>
<id>urn:sha1:bbdd1a8a50f81f2be9e399661f42a1a10993ba38</id>
<content type='text'>
Both of the owner's browsers showed the cycle frozen, and the culprit
was neither of the browsers: the OS asks for reduced motion, both pass
it on, and the media rule here answered by killing every animation.
The preference is about motion -- patterns that travel, the vestibular
kind -- not about colour, so the position slide goes and the in-place
hue rotation stays, at half speed. Nothing moves, everything still
breathes, and a visitor who asked the OS for stillness gets exactly
the stillness they asked for.
</content>
</entry>
</feed>
