- lift hit-zone stacking above the side dock (sidedock+1) so open
panels no longer cover the ribbon's hover band
- size each hover zone to its expanded region: ribbon width, tab
--header-height, status bar height
- keep icons/content above the bands so wider zones don't eat clicks
- drop ribbon double-interpolation (animate --ribbon-width only)
- speed up defaults: hover delay 200->100ms, duration 100->80ms
Performance fixes (verified with DevTools Performance traces):
- Drop body-level :has() selectors. They were causing 3,500+ element
style recalcs on every CodeMirror keystroke. Synchronized expand
is restored via .titlebar:hover ~ * (general-sibling combinator),
which doesn't trigger the same invalidation cost.
- @property --ribbon-width: inherits: true -> false. The typed
inherited property was pulling the entire editor subtree into the
cascade on every recalc. Variable is now declared on the ribbon
element directly, not body.
- Remove overflow: visible from .workspace-split.mod-root. It was
expanding the editor's paint damage rect on every keystroke. Side
panel splits keep overflow: visible since they don't contain the
editor — that gives sidebar strips lateral hit zone room.
Hit zones (tunable via Style Settings):
- Wide top-of-window band anchored on the titlebar pseudo (escapes
workspace-split clipping; same slider as per-strip zones, up to
100px). Hovering it expands all three strips at once.
- Each strip gets ::before above + ::after below within its own
panel — bounded to panel width (no -100vw extension) to prevent
cross-panel hover bleed.
- Ribbon gets a ::before overlay extending its hit zone width to
the right, with its own slider (up to 100px).
New Style Settings sliders:
- Expand/collapse animation duration (60–280ms)
- Tab strip hover hit zone height (4–100px)
- Left ribbon hover hit zone width (6–100px)
Trade: pseudo bands capture clicks within their area. Defaults are
small enough to be invisible in practice; dial accordingly when
turning the sliders up.
- Add hover-intent delay slider (--rbr-autohide-delay, default 200ms)
via Style Settings — applies to all autohide features so drive-by
hovers don't flicker the UI on/off
- Reduce collapsed tab strip to 12px and add a 12px upward pseudo so
the hit zone stays at 24px while the visible strip is half as tall
- Extend pseudo across the full window width via -100vw so the hover
trigger covers gaps between panels, the ribbon column, and the
window edges
- Drop the titlebar :has() rule to halve mousemove-time :has()
re-evaluation cost; tab strip is now the sole trigger
- Tighten the strip transition list to height/min-height/opacity
(border-color now changes instantly) and shorten durations to 160ms
- Auto hide: tab bar, status bar, ribbon, vault profile (independent toggles)
- Card layout: toggle + corner radius / gap sliders
- Tab autohide follows Border theme's minimal approach for smooth animation
- Synchronized expand across main + sidebar tab strips via :has()
- Ribbon collapse uses @property to make --ribbon-width transitionable
theme.css:
- Italic switches from paddock green to livery_blue_bright (#4D7EFF) —
RBR carbody royal blue, AAA contrast, sparingly distinct from the trio.
- Blockquote foreground uses kerb_red_pure (#cc1e4a) so the quote text
shares the red wash family with its border + background tint.
- .cm-quote (live preview / source mode token) now follows
--blockquote-color so reading view and editor render the same color.
- .HyperMD-quote-* line classes and direct .markdown-rendered blockquote
selectors enforce the color when external rules try to override.
- Strikethrough (~~text~~) now fades to subtext-0; covers .markdown-
rendered del/s and .cm-strikethrough since Obsidian has no dedicated
variable for it.
examples/hero-shot.md:
- New dense demo note that exercises every RBR visual element in one
viewport: trio headings (h1-h6), bold/italic/highlight/strikethrough,
yellow tag pills, four diagnostic callouts, syntax-highlighted Rust
code, right-aligned table, mixed checkbox state, blockquote, internal
+ external + unresolved links. Use as the README hero shot source.
- Active line uses surface-1 (dimmed navy) instead of a yellow tint, per
STYLE-GUIDE. Covers .cm-line.cm-active, .cm-active.cm-line, and the
CM6 single-class .cm-activeLine, plus the matching gutter line.
- Vim block cursor (.cm-fat-cursor) now follows the cursor option —
background, outline, and border colors driven by --rbr-cursor. Block
cursor's inner glyph is forced to navy so the character stays readable
on top of the fill.
- Visual selection (.cm-selectionBackground, .cm-selectionLayer) alpha-
blends the cursor color at 30% so vim visual mode shares the cursor
accent. Unfocused panes drop to 18% to avoid competing with the active
pane. New --rbr-cursor-rgb variable plus --rbr-rb-warm-rgb token added
to support the alpha mixing.
- Tags: --tag-color forced to pure black (was navy --rbr-base, which
inherited as the regular fg in some CodeMirror builds and read poorly
on yellow). Direct selectors on .tag, .cm-hashtag, .cm-hashtag-begin,
.cm-hashtag-end, .cm-meta.cm-hashtag enforce the pill foreground in
reading view, live preview, and source mode.
Adds the Obsidian port of the RBR colorscheme: manifest.json, theme.css,
README.md, LICENSE, and .gitignore. theme.css maps the full RBR palette
onto Obsidian's CSS variable system, plus CodeMirror token coloring and
hand-styled selectors for active tab, file explorer, blockquotes, and
the inline title.
Style Settings plugin integration exposes six options:
- Primary accent color (red / yellow / white)
- Heading style (trio / monochrome / accent-only)
- Cursor color (yellow / warm / follow accent), incl. vim block cursor
- Active tab indicator (top / bottom / fill)
- Code font size slider
- Highlight intensity slider
Visual selection (incl. vim visual mode) alpha-blends the cursor color so
selection follows the cursor option. Active line uses surface-1 navy as
the STYLE-GUIDE prescribes.