Minimap viewport rect, inset to match the ticks

Top row: today. Bottom row: with the change. Left: tag sidebar open. Right: closed. Frames are real classes and tokens; the grey strip on the right of the closed frames is the window's scrollbar.

before · tags open
Tags
before · tags closed
after · tags open
Tags
after · tags closed

Commentary

Measurements under each frame are read from the live DOM: the gap between the tick block and the blue rect on each side, and whether the rect reaches the scrollbar. The open state must not change.

The change is three edits. The slot's right padding becomes a variable the embedded rule sets, and the rect reads the same variable for its right.

/* sidebar.css */
.minimap-slot {
    grid-column: 4;
    position: sticky;
    /* Anchor the sticky at the same inset the body already pushes this column
       down by, so it doesn't teleport up under the frost on first scroll. Unlike
       the tag sidebar, the minimap is content-overview (no chrome tint), so it
       should stay clear of the toolbar rather than bleed beneath it. */
    top: calc(var(--bn-toolbar-inset, 0px) + var(--bn-space-xl));
    height: 100vh;
    align-self: start;
    overflow: hidden;
    pointer-events: auto;
    /* Equal breathing room from center content (left) and tag sidebar/rail (right).
       The center column has no right padding — this column provides ALL the
       visual separation. Padding inserts the abstract lines symmetrically. */
    --bn-minimap-extra-pad-r: 0px;
    padding: 0 calc(var(--bn-space-md) + var(--bn-minimap-extra-pad-r)) 0 var(--bn-space-md);
}
.layout.embedded:not(.tags-open) > .minimap-slot {
    --bn-minimap-extra-pad-r: var(--bn-space-lg);
}

/* minimap.css */
.bn-minimap-viewport { … right: var(--bn-minimap-extra-pad-r, 0px); … }

Before, the embedded rule set padding-right directly, which moved the ticks but not the rect (absolute children ignore the containing block's padding).