/* Sign-in layout: ink panel with the three module lanes, form beside it. */
.lz-auth {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: auto 1fr;
    min-height: 100vh;
}

.lz-auth__panel {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
    padding: 1.5rem;
    background: var(--lz-ink);
    color: #fff;
}

.lz-auth__panel :focus-visible {
    outline-color: var(--lz-cyan);
}

.lz-auth__headline {
    max-width: 16ch;
    margin: 0;
    font-size: clamp(1.625rem, 1.1rem + 2.4vw, 3rem);
    font-weight: 700;
    line-height: 1.08;
    letter-spacing: -.02em;
    color: #fff;
}

.lz-auth__lede {
    margin: .75rem 0 0;
    font-size: 1.0625rem;
    color: rgba(255, 255, 255, .72);
}

.lz-auth__form {
    display: flex;
    align-items: flex-start;
    justify-content: center;
    padding: 2.5rem 1.5rem;
}

.lz-auth__box {
    width: 100%;
    max-width: 22rem;
}

.lz-auth__title {
    margin: 0;
    font-size: 2rem;
    font-weight: 700;
    line-height: 1.15;
    letter-spacing: -.015em;
}

.lz-auth__hint {
    margin: .5rem 0 1.75rem;
    color: var(--lz-muted);
}

.lz-auth__box .form-control {
    padding-block: .625rem;
}

.lz-auth__box .btn {
    padding-block: .6875rem;
}

.lz-password {
    position: relative;
}

/* The toggle sits where Tabler would draw its invalid-state icon. */
.lz-password .form-control,
.lz-password .form-control.is-invalid {
    padding-right: 2.75rem;
    background-image: none;
}

.lz-password__toggle {
    position: absolute;
    top: 50%;
    right: .375rem;
    width: 2rem;
    height: 2rem;
    padding: 0;
    border: 0;
    border-radius: 6px;
    background: none;
    color: var(--lz-muted);
    transform: translateY(-50%);
}

.lz-password__toggle:hover {
    color: var(--lz-ink);
}

/* The silhouette of the queue board the attendant lands on after signing in. */
.lz-ghost {
    display: none;
}

@media (min-width: 992px) {
    .lz-auth {
        grid-template-columns: minmax(0, 1.2fr) minmax(26rem, .8fr);
        grid-template-rows: 1fr;
    }

    .lz-auth__form {
        align-items: center;
    }

    .lz-auth__panel {
        gap: 3rem;
        padding: 2.5rem 3rem 3rem;
    }

    .lz-ghost {
        display: grid;
        flex: 1;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 1.5rem;
    }

    .lz-ghost__lane {
        padding-left: 1rem;
        border-left: 1px solid rgba(154, 213, 245, .28);
    }

    .lz-ghost__name {
        display: block;
        margin-bottom: 1.25rem;
        font-weight: 600;
        color: rgba(255, 255, 255, .86);
    }

    .lz-ghost__row {
        margin-bottom: 1.5rem;
    }

    .lz-ghost__bar {
        display: block;
        width: var(--lz-w);
        height: .625rem;
        border-radius: .3125rem;
        background: var(--lz-cyan);
        opacity: var(--lz-o);
        transform-origin: left center;
        animation: lz-grow .8s cubic-bezier(.2, .7, .2, 1) both;
        animation-delay: calc(var(--lz-i) * 70ms + 150ms);
    }

    .lz-ghost__line {
        display: block;
        width: 68%;
        height: .3125rem;
        margin-top: .625rem;
        border-radius: .3125rem;
        background: rgba(255, 255, 255, .13);
    }
}

@keyframes lz-grow {
    from {
        transform: scaleX(0);
    }
}

@media (prefers-reduced-motion: reduce) {
    .lz-ghost__bar {
        animation: none;
    }
}
