body {
    min-height: 100dvh;
    min-width: 100dvw;
    display: grid;
    grid-template-areas:
        "header header"
        "sidebar main"
        "sidebar footer";
    grid-template-columns: var(--sidebar-width) 1fr;
    grid-template-rows: var(--header-height) 1fr auto;
    transition: background-color var(--transition-speed-normal) var(--ease-in-out);
}

/* Sidebar closed state - LTR */
body.sidebar-closed {
    grid-template-columns: 0 1fr;
}

body.sidebar-closed .sidebar {
    transform: translateX(-100%);
}

/* RTL Support */
[dir="rtl"] body.sidebar-closed .sidebar {
    transform: translateX(100%);
}

@media (max-width: 768px) {
    body {
        grid-template-areas:
            "header"
            "main"
            "footer";
        grid-template-columns: 1fr;
    }

    .overlay {
        display: none;
        position: fixed;
        inset: var(--header-height) 0 0;
        background: rgba(0, 0, 0, 0.5);
        z-index: 40;
        opacity: 0;
        transition: opacity var(--transition-speed-slow);
    }

    .overlay.active {
        display: block;
        opacity: 1;
    }

    body.sidebar-closed {
        grid-template-columns: 1fr;
    }
}