/**
 * Layout helpers.
 */

// Stretch an element vertically based on available space
.reveal .stretch,
.reveal .r-stretch {
    max-width: none;
    max-height: none;
}

.reveal pre.stretch code,
.reveal pre.r-stretch code {
    height: 100%;
    max-height: 100%;
    box-sizing: border-box;
}

// Text that auto-fits its container
.reveal .r-fit-text {
    display: inline-block; // https://github.com/rikschennink/fitty#performance
    white-space: nowrap;
}

// Stack multiple elements on top of each other
.reveal .r-stack {
    display: grid;
    grid-template-rows: 100%;
}

.reveal .r-stack > * {
    grid-area: 1/1;
    margin: auto;
}

// Horizontal and vertical stacks
.reveal .r-vstack,
.reveal .r-hstack {
    display: flex;

    img,
    video {
        min-width: 0;
        min-height: 0;
        object-fit: contain;
    }
}

.reveal .r-vstack {
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

.reveal .r-hstack {
    flex-direction: row;
    align-items: center;
    justify-content: center;
}

// Naming based on tailwindcss
.reveal .items-stretch {
    align-items: stretch;
}
.reveal .items-start {
    align-items: flex-start;
}
.reveal .items-center {
    align-items: center;
}
.reveal .items-end {
    align-items: flex-end;
}

.reveal .justify-between {
    justify-content: space-between;
}
.reveal .justify-around {
    justify-content: space-around;
}
.reveal .justify-start {
    justify-content: flex-start;
}
.reveal .justify-center {
    justify-content: center;
}
.reveal .justify-end {
    justify-content: flex-end;
}
