From d6442e18e1a07f8cef77ea51cd13561574a2df73 Mon Sep 17 00:00:00 2001 From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> Date: Thu, 24 Sep 2026 14:20:25 -0400 Subject: [PATCH 1/4] fix(theme): center content independently of page controls --- src/dockle/sphinx/themes/dockle/static/dockle.css | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/dockle/sphinx/themes/dockle/static/dockle.css b/src/dockle/sphinx/themes/dockle/static/dockle.css index aafefac..b6422f3 100644 --- a/src/dockle/sphinx/themes/dockle/static/dockle.css +++ b/src/dockle/sphinx/themes/dockle/static/dockle.css @@ -118,6 +118,7 @@ h6 { font-family: var(--dockle-font); font-weight: 650; line-height: 1.25; + position: relative; scroll-margin-top: 1rem; } @@ -135,6 +136,7 @@ h2 { .headerlink { font-size: 0.65em; margin-left: 0.2em; + position: absolute; text-decoration: none; visibility: hidden; } @@ -160,6 +162,7 @@ h6:hover > .headerlink, margin-left: 0.3em; opacity: 0; padding: 0.15em; + position: absolute; text-decoration: none !important; transform: translateY(0.08em); transition: @@ -1124,9 +1127,9 @@ html[data-dockle-framework="rustdoc"] .sidebar::before { .dockle-page-actions { align-items: center; display: flex; - float: right; gap: 0.5rem; - margin: 0 0 1rem 1rem; + justify-content: flex-end; + margin: 0 0 1rem; } a.dockle-page-action, From 8226a93cc63ce24b385c736efc0bd6d47b9881a3 Mon Sep 17 00:00:00 2001 From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> Date: Thu, 24 Sep 2026 14:36:56 -0400 Subject: [PATCH 2/4] fix(theme): align page headings with action controls --- .../sphinx/themes/dockle/static/dockle.css | 30 +++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/src/dockle/sphinx/themes/dockle/static/dockle.css b/src/dockle/sphinx/themes/dockle/static/dockle.css index b6422f3..7b3dc18 100644 --- a/src/dockle/sphinx/themes/dockle/static/dockle.css +++ b/src/dockle/sphinx/themes/dockle/static/dockle.css @@ -1042,12 +1042,18 @@ html[data-dockle-framework="rustdoc"] .sidebar::before { .dockle-article { min-width: 0; + position: relative; } .dockle-article > :first-child { margin-top: 0; } +.dockle-article > section:first-of-type > h1:first-child, +.dockle-article > h1:first-of-type { + margin-top: 0; +} + .dockle-on-this-page { align-self: start; font-size: 0.85rem; @@ -1129,7 +1135,11 @@ html[data-dockle-framework="rustdoc"] .sidebar::before { display: flex; gap: 0.5rem; justify-content: flex-end; - margin: 0 0 1rem; + margin: 0; + position: absolute; + right: 0; + top: 0; + z-index: 1; } a.dockle-page-action, @@ -1600,12 +1610,8 @@ html[data-dockle-framework="doxygen"] #doc-content .headertitle > .dockle-page-actions { - float: none; - margin: 0; - position: absolute; right: var(--dockle-content-gutter); top: 2rem; - z-index: 1; } html[data-dockle-framework="doxygen"] div.contents { @@ -1975,9 +1981,18 @@ html[data-dockle-framework="jsdoc"] body > #main { margin-left: var(--dockle-sidebar-width); max-width: none; padding: 2rem var(--dockle-content-gutter); + position: relative; width: auto; } +html[data-dockle-framework="jsdoc"] #main > .dockle-page-actions { + right: max( + var(--dockle-content-gutter), + calc(100% - var(--dockle-content-width) - var(--dockle-content-gutter)) + ); + top: 2rem; +} + html[data-dockle-framework="jsdoc"].dockle-has-page-toc body > main, html[data-dockle-framework="jsdoc"].dockle-has-page-toc body > #main { margin-right: 0; @@ -2114,6 +2129,11 @@ html[data-dockle-framework="rustdoc"] body.rustdoc:not(.src) > main { padding: 2rem var(--dockle-content-gutter) 4rem !important; } +html[data-dockle-framework="rustdoc"] body > main, +html[data-dockle-framework="rustdoc"] #main-content { + position: relative; +} + html[data-dockle-framework="rustdoc"] body.rustdoc:not(.src) > main > .width-limiter { margin-left: 0; margin-right: auto; From 0200713448b5fde70ac42e286d3d3424c64e5e21 Mon Sep 17 00:00:00 2001 From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> Date: Thu, 24 Sep 2026 14:43:46 -0400 Subject: [PATCH 3/4] fix(theme): keep rustdoc controls clear of page outline --- src/dockle/sphinx/themes/dockle/static/dockle.css | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/dockle/sphinx/themes/dockle/static/dockle.css b/src/dockle/sphinx/themes/dockle/static/dockle.css index 7b3dc18..3bcd4ae 100644 --- a/src/dockle/sphinx/themes/dockle/static/dockle.css +++ b/src/dockle/sphinx/themes/dockle/static/dockle.css @@ -2134,6 +2134,14 @@ html[data-dockle-framework="rustdoc"] #main-content { position: relative; } +@media (min-width: 1101px) { + html[data-dockle-framework="rustdoc"].dockle-has-page-toc + #main-content + > .dockle-page-actions { + right: var(--dockle-page-toc-width); + } +} + html[data-dockle-framework="rustdoc"] body.rustdoc:not(.src) > main > .width-limiter { margin-left: 0; margin-right: auto; From 9c544abed62f87da102bad0f9cc4ddbca1d2f11a Mon Sep 17 00:00:00 2001 From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> Date: Thu, 24 Sep 2026 14:47:17 -0400 Subject: [PATCH 4/4] fix(theme): reserve rustdoc toolbar space beside controls --- .../sphinx/themes/dockle/static/dockle.css | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/dockle/sphinx/themes/dockle/static/dockle.css b/src/dockle/sphinx/themes/dockle/static/dockle.css index 3bcd4ae..f1ccdb3 100644 --- a/src/dockle/sphinx/themes/dockle/static/dockle.css +++ b/src/dockle/sphinx/themes/dockle/static/dockle.css @@ -2134,12 +2134,9 @@ html[data-dockle-framework="rustdoc"] #main-content { position: relative; } -@media (min-width: 1101px) { - html[data-dockle-framework="rustdoc"].dockle-has-page-toc - #main-content - > .dockle-page-actions { - right: var(--dockle-page-toc-width); - } +/* Rustdoc renders Settings, Help, and Summary inside the heading row. */ +html[data-dockle-framework="rustdoc"] #main-content > .main-heading { + margin-right: 6.7rem; } html[data-dockle-framework="rustdoc"] body.rustdoc:not(.src) > main > .width-limiter { @@ -2313,12 +2310,25 @@ html[data-dockle-framework="rustdoc"] rustdoc-topbar { display: none !important; } + html[data-dockle-framework="rustdoc"] .dockle-compat-toc { + display: none; + } + html[data-dockle-framework="doxygen"].dockle-has-page-toc #doc-content { margin-right: 0 !important; } } @media (max-width: 800px) { + html[data-dockle-framework="rustdoc"] #main-content > .dockle-page-actions { + margin-bottom: 1rem; + position: static; + } + + html[data-dockle-framework="rustdoc"] #main-content > .main-heading { + margin-right: 0; + } + .dockle-sidebar::before, html[data-dockle-framework="doxygen"] #side-nav::before, html[data-dockle-framework="jsdoc"] body > nav::before,