.hidden {
    border-width: 0 !important;
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    height: 0px;
    overflow: hidden;
    position: absolute;
    white-space: nowrap;
    width: 0px;
}

.italic,
em {
    font-style: italic;
}

.bold,
strong {
    font-weight: 600;
    font-style: normal;
}

.outline {
    transition: outline var(--animate-t) var(--animate-f);

    &:hover,
    &:focus,
    &:focus-visible {
        outline-offset: 2px;
        outline: var(--clr-foam) solid 2px;
    }
}

.border {
    transition:
        background-color var(--animate-t) var(--animate-f),
        box-shadow var(--animate-t) var(--animate-f);

    &:hover,
    &:focus,
    &:focus-visible {
        outline: unset;

        background-color: var(--clr-muted);
        box-shadow: inset 0 0 0 2px var(--clr-foam);
    }
}

.animate-fade-in {
    --animate-f: ease-in;

    opacity: 1;
    transition: opacity var(--animate-t) var(--animate-f);

    &.htmx-added {
        opacity: 0;
    }
}

@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(20px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.staggered-load {
    &>.staggered-load-child {
        opacity: 0;
        animation: fadeInUp 0.5s ease forwards;
        transform: translateY(20px);
    }

    &>.staggered-load-child:nth-child(1) {
        animation-delay: 0.15s;
    }

    &>.staggered-load-child:nth-child(2) {
        animation-delay: 0.3s;
    }

    &>.staggered-load-child:nth-child(3) {
        animation-delay: 0.45s;
    }
}
