body {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    background-color: var(--color-bg, white);
}

.intro:not(:has(*)) {
    display: none !important;
}

.screen {
    display: flex;
    flex-direction: column;

    &.landing {
        height: 100vh;
        max-height: 800px;
        min-height: max(640px, 66vh);    
    }

    & header {
        background-color: var(--color-bg);
        color: var(--color-fg);
        display: flex;
        flex-direction: column;
        align-items: center;
        border-bottom: 0.1em solid var(--color-ternary);
        flex: 0 0 auto;
        box-shadow: 0px 1em 1em rgba(0, 0, 0, 0.3);
        z-index: 1;

        & cms-menu {
            margin-left: 3em;
            justify-content: end;
        }

        & .page-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            gap: 2em;
            padding: 1em 2em;

            & a {
                color: inherit;

                &:hover,
                &:active {
                    text-decoration: underline;
                }
            }
        }
    }

    .jumbotron {
        display: flex;
        flex-direction: column;
        flex: 1 1 auto;
        align-items: center;
        gap: 1em;
        position: relative;
        contain: layout; /* otherwise ::before image scrolls right */

        & .video-cover {
            position: absolute;
            inset: 0px;
            width: 100%;
            height: 100%;
            overflow: hidden;

            & video {
                cursor: pointer;
                min-width: 100%;
                min-height: 100%; 
                width: 100%;
                height: 100%;
                object-fit: cover;
                object-position: top center;
            }
        }

        & .unmute {
            position: absolute;
            top: 1em;
            right: 1em;
            z-index: 10;
            cursor: pointer;
            width: 2em;
            pointer-events: none;
        }

        &:not(:has(video[muted])) {
            & .unmute {
                display: none !important;
            }

            .banner-deck {
                opacity: 0.8;
                transition: opacity 2s ease-in-out;
            }
        }

        &::before {
            content: "";
            background-color: white;
            background-repeat: no-repeat;
            background-size: cover;
            background-position: top center;
            background-image: url('/data/ipdefender/videos/lincoln.webp');
            background-color: var(--color-secondary);

            position: absolute;
            z-index: -1;
            top: 0;
            left: 0;
            width: max(1200px, 100%);
            height: 100%;
            /* clip the element to viewport */ 
            clip-path: content-box;
        }

        & .banner-deck {
            --width: 20em;
            z-index: 10;
            width: var(--width);
            position: absolute;
            top: 10vh;
            left: max(2em, calc(50vw - var(--content-width) / 2));
            &>.banner {
                background-color: var(--color-bg);
                border-radius: var(--radius);
                backdrop-filter: blur(0.2em);
                box-shadow: 0px 0px 1em rgba(0, 0, 0, 0.2);

                & h1:first-of-type {
                    margin-top: 0em;
                }
            }
        }
    }
}

@media (max-width: 960px) {
    .banner-deck {
        opacity: 0.9;
    }

    .jumbotron:not(:has(video[muted])) .banner-deck {
        opacity: 0 !important;
        pointer-events: none;
    }
}

@media (max-width: 640px) {
    html .screen .jumbotron {
        &::before {
            background-position: center top;
            background-size: cover;
            max-width: 100vw;
        }

        & .banner-deck {
            left: 50vw;
            transform: translateX(-50%);
            max-width: 90vw;
        }
    }
}

.intro {
    border-top: 2px solid var(--color-bg);
    background-color: var(--color-bg);
    display: flex;
    flex-direction: column;
    gap: 2em;
    align-items: center;
    padding: 1em 1em 6em;

    & h2 {
        font-size: 2em;
        margin: 2em 0em 2em;
        text-align: center;
        color: var(--color-fg);
    }

    & .steps {
        display: flex;
        flex-direction: row;
        flex-wrap: wrap;
        justify-content: space-evenly;
        gap: 2.5em;
        margin: 0px 2em;

        & .step {
            flex: 1 1 30%;
            display: flex;
            position: relative;
            flex-direction: column;
            align-items: center;
            min-width: 250px;
            gap: 0.5em;
            padding: 1em 2em 2em 2em;
            transition: background-color 0.3s, color 0.3s;
            border-radius: var(--radius);
            border: 0.2em solid var(--color-primary);
            background-color: var(--color-bg);
            counter-increment: steps;
            text-align: center;

            &::before {
                content: counter(steps);
                font-size: 2em;
                font-weight: bold;
                color: var(--color-primary);
                background-color: var(--color-bg);
                border: 0.1em solid var(--color-primary);
                border-radius: 50%;
                width: 2em;
                height: 2em;
                display: flex;
                justify-content: center;
                align-items: center;
                position: absolute;
                left: 50%;
                transform: translateX(-50%);
                top: -1em;
            }

            & h3 {
                font-size: 2em;
                display: block;
                width: 100%;
                margin-bottom: 0px;
            }
        }
    }
}

.call-to-action-box {
    display: flex;
    flex-direction: column;
    background-color: color-mix(in srgb, var(--color-bg-dark) 5%, transparent);

    & blockquote p {
        color: var(--color-primary); 
        text-align: center;
    }
    
    & .call-to-action {
        align-self: center;
        margin: 3em 0em 0em;
        transition: transform 0.3s, box-shadow 0.3s;
        box-shadow: 0em 0em 0em rgba(0, 0, 0, 0.0);
        position: relative;
    }

    &:hover .call-to-action {
        transform: scale(1.1);
        box-shadow: 0em 0.2em .4em rgba(0, 0, 0, 0.2);
    }

    .blockquote-grid {
        display: flex;
        flex-direction: row;
        flex-wrap: wrap;
        justify-content: space-evenly;
        gap: 2.5em;

        &>blockquote {
            flex: 1 1 300px;
            margin: 0px;
            max-width: max(50%, 400px);
        }
    }
}

*:where(.animate-click) {
    position: relative;

    &::before {
        content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 17 22'%3E%3Cpath d='M5 0h2v1h1v4h2v1h3v1h2v1h1v1h1v7h-1v3h-1v3H5v-3H4v-2H3v-2H2v-2H1v-1H0V9h3v1h1V1h1'/%3E%3Cpath fill='%23fff' d='M7 1v9h1V6h2v4h1V7h2v4h1V8h1v1h1v7h-1v3h-1v2H6v-2H5v-2H4v-2H3v-2H2v-1H1v-2h2v1h1v1h1V1'/%3E%3C/svg%3E");            display: block;
        position: absolute;
        z-index: 100;
        width: 1.5em;
        opacity: 0;
        animation: click 2s ease-in-out;
        animation-delay: 2s;
    }
}

article {
    padding: 3em 2em;
}

@media (max-width: 640px) {
    article {
        padding: 2em 1em;
    }
}

@keyframes click {
    0% {
        opacity: 1;
        top: 2em;
        right: -2em;
        transform: scale(1);
    }
    80% {
        top: 0.5em;
        right: 2em;
        transform: scale(1);
    }
    90% {
        transform: scale(1.2);
        opacity: 1;
    }
    100% {
        top: 0.5em;
        right: 2em;
        opacity: 0;
    }
}