@@ -145,11 +145,16 @@ img {
145145
146146.content {
147147 max-width : var (--dg-content-max-width );
148- // Dynamic left margin: larger of centering margin OR filetree clearance
149- // This ensures content never overlaps with filetree regardless of content width
148+ // Dynamic left margin with three constraints:
149+ // 1. Never overlap filetree (minimum)
150+ // 2. Try to center in viewport
151+ // 3. But shift left if needed to leave room for sidebar
150152 margin-left : max (
151- calc ((100vw - var (--dg-content-max-width )) / 2 ),
152- calc (var (--dg-filetree-min-width ) + var (--dg-filetree-gap ))
153+ calc (var (--dg-filetree-min-width ) + var (--dg-filetree-gap )),
154+ min (
155+ calc ((100vw - var (--dg-content-max-width )) / 2 ),
156+ calc (100vw - var (--dg-content-max-width ) - var (--dg-sidebar-max-width ) - var (--dg-sidebar-gap ) - 20px )
157+ )
153158 );
154159 margin-right : auto ;
155160 font-size : var (--dg-content-font-size );
@@ -201,23 +206,17 @@ ul.task-list {
201206.sidebar {
202207 position : fixed !important ;
203208 top : var (--dg-sidebar-top );
204- // Position after content: tracks content's right edge + gap
205- // Uses same max() logic as content margin-left
206- --sidebar-left : calc (
209+
210+ // Position after content: follows content's right edge + gap
211+ // Content margin-left already accounts for sidebar, so this won't overlap
212+ left : calc (
207213 max (
208- calc ((100vw + var (--dg-content-max-width )) / 2 ),
209- calc (var (--dg-filetree-min-width ) + var (--dg-filetree-gap ) + var (--dg-content-max-width ))
210- ) + var (--dg-sidebar-gap )
211- );
212- left : var (--sidebar-left );
213-
214- // Calculate overflow: how much sidebar extends past viewport
215- // If positive (overflow), clamp multiplies to 100vw pushing it off-screen
216- // If negative (fits), clamp results in 0px
217- // Users can adjust --dg-sidebar-max-width to control when sidebar appears
218- --sidebar-overflow : calc (var (--sidebar-left ) + var (--dg-sidebar-max-width ) - 100vw );
219- transform : translateX (
220- clamp (0px , calc (var (--sidebar-overflow ) * 9999 ), 100vw )
214+ calc (var (--dg-filetree-min-width ) + var (--dg-filetree-gap )),
215+ min (
216+ calc ((100vw - var (--dg-content-max-width )) / 2 ),
217+ calc (100vw - var (--dg-content-max-width ) - var (--dg-sidebar-max-width ) - var (--dg-sidebar-gap ) - 20px )
218+ )
219+ ) + var (--dg-content-max-width ) + var (--dg-sidebar-gap )
221220 );
222221
223222 height : 100% ;
@@ -226,19 +225,6 @@ ul.task-list {
226225 z-index : 3 ;
227226 max-width : var (--dg-sidebar-max-width );
228227
229- @media (max-width : 1400px ) {
230- // At this breakpoint, also check if sidebar would overlap with content
231- // Content ends at: 100vw - 50px (from max-width calc)
232- // Sidebar starts at: 100vw - 17px - sidebar-width
233- // Hide if content is too wide
234- --sidebar-overflow-1400 : calc (var (--dg-content-max-width ) + var (--dg-filetree-width ) + 20px + var (--dg-sidebar-max-width ) + 17px - 100vw );
235- left : auto ;
236- right : 17px ;
237- transform : translateX (
238- clamp (0px , calc (var (--sidebar-overflow-1400 ) * 9999 ), 100vw )
239- );
240- }
241-
242228 .graph {
243229 width : var (--dg-graph-width );
244230 min-height : var (--dg-graph-height );
0 commit comments