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
before · tags closed
after · tags open
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).