@layer base {
    body {
        display: grid;
        grid-template-rows: auto 1fr auto 9em;

        &.public {
            grid-template-rows: auto 1fr auto;
        }
    }

    :where(#main) {
        inline-size: 100dvw;
        margin-inline: auto;
        max-inline-size: 100dvw;
        padding-inline:
            calc(var(--main-padding) + env(safe-area-inset-left, 0px)) calc(var(--main-padding) + env(safe-area-inset-right, 0px));
        box-sizing: border-box;
        text-align: center;
    }

    :where(#footer) {
        max-inline-size: 100%;
    }

    :where(#header) {
        position: relative;
        z-index: var(--z-nav);
    }

    :is(#header, #footer) {
        @media print {
            display: none;
        }
    }

    /* Standalone centered page (login, error pages, etc.) */
    .page--centered {
        display: grid;
        min-block-size: 100dvh;
        padding: var(--block-space-double) var(--inline-space-double);
        place-items: center;
    }

    .page__footer {
        position: fixed;
        inset-block-end: 0;
        inset-inline: 0;
        padding: var(--block-space) var(--inline-space);
        text-align: center;
        font-size: var(--text-small);
        color: var(--color-ink-lighter);
    }
}
