.citizen-page-container { display: flex; // Should fix weird margin issues flex-direction: column; min-height: 100vh; // Ensure footer goes to the bottom of the page min-height: stretch; // for iOS, excludes safe areas } .mw-body, .parsoid-body { min-height: 100vh; // avoid footer being in the middle of the page } .citizen-body-container { display: grid; grid-template-areas: 'content' 'footer'; // Using auto as min value will cause overflow grid-template-columns: minmax( 0, var( --width-layout ) ); gap: 0 var( --space-xl ); justify-content: center; padding: 0 var( --padding-page ); // Bottom margin is added because data-after-content cannot margin-bottom: var( --space-xl ); } .citizen-body { z-index: @z-index-base; // Stop body content going over sticky header grid-area: content; } #mw-data-after-content:not( :empty ) { margin-top: var( --space-xl ); } @media ( min-width: @min-width-breakpoint-desktop ) { .citizen-page-container { // Reserve space for header margin-left: var( --header-size ); } .citizen-toc-enabled { .citizen-body-container { grid-template-areas: 'content sidebar' 'footer footer'; grid-template-columns: minmax( 0, var( --width-layout ) ) var( --width-toc ); } } .citizen-page-header-inner, .citizen-body-container { transition-timing-function: var( --transition-timing-function-ease ); transition-duration: var( --transition-duration-medium ); } .citizen-page-header-inner { transition-property: max-width; } .citizen-body-container { transition-property: grid; } } /* Wider page width for certain namespaces */ @media ( min-width: @min-width-breakpoint-desktop-wide ) { // 1 - Special, 6 - File, 14 - Category .ns { &--1, &-6, &-14 { --width-layout: var( --width-layout--extended ); } } }