body.nav-fixed pads 88px but hero only pulled up by --nav-height (60px),
leaving a blank strip above the slider. Share --nav-fixed-reserve so body
padding and hero margin-top cancel exactly, matching zibll slide-header.
Align runtime --sidebar-width (300→311), --main-radius, and
body.nav-fixed 88px reserve; enqueue single-post CSS parts directly;
match Zibll action buttons and author avatar DOM; tighten dual-column
tokens after comparing blog.rutua.cn with demo.zibll.com.
Replace the fragile content-wrap float + negative-margin sidebar with a
main.container grid, add fixed-nav top breathing room so the breadcrumb
stays below the header, and mark the aside as content-layout__aside.
Complete the fixed-nav contract: when body.nav-fixed and the header
is not the hero overlay (show-slide), take .header out of flow so
body padding alone reserves space. Avoids double offset from sticky
nav still occupying document flow on single/archive pages.
Replace dual light/dark header images with one img carrying white-src
and dark-src so theme.js swaps src; keep size rules and legacy hide
classes as fallback.
Remove CSS that forced relative header and cancelled hero underlap,
disable sticky inside absolute show-slide nav, hide desktop expanded
search form for layout-1, and size logos at 36px height like zibll.