/* cta buttons */

:root {
    --btn-xl: 5rem;
    --btn-md: 3.75rem;
    --btn-sm: 2.75rem;
    --btn-icon-xl: 1.75rem;
    --btn-icon-md: 1.5rem;
    --btn-icon-sm: 1.25rem;
}

.button,
.link-button,
.button.splide__arrow {
    display: inline-flex;
    align-items: center;
    flex-direction: row;
    justify-content: center;
    text-decoration: none;
    box-sizing: border-box;
    text-overflow: ellipsis;
    white-space: nowrap;
    overflow: hidden;
    border-radius: 1rem;
    text-transform: uppercase;
    font-weight: var(--bold);
    letter-spacing: 0.06em;
    flex-shrink: 0;
    color: var(--text);
    cursor: pointer;
    flex-wrap: nowrap;
    max-width: 100%;
}

button,
a {
    gap: 0.5rem;
}

.button,
.link-button {
    position: relative;
}

.button:not(.btn-plain)::after,
.link-button:not(.btn-plain)::after {
    content: '';
    position: absolute;
    inset: auto auto;
    z-index: 0;
    border-radius: 100%;
    opacity: 0;
    scale: 0;
    width: 200px;
    height: 200px;
    transition:
        scale 350ms ease,
        opacity 100ms linear 150ms;
}

.button:hover:after,
.link-button:hover:after {
    opacity: 1;
    scale: 3;
    transition:
        scale 250ms ease 100ms,
        opacity 100ms linear 50ms;
}

.button span:has(svg),
.link-button span:has(svg) {
    display: flex;
    aspect-ratio: 1;
    align-items: center;
    justify-content: center;
}

.only-icon {
    aspect-ratio: 1;
}

.button > *,
.link-button > * {
    z-index: 1;
}

.button svg,
.link-button svg {
    height: 100%;
}

.button.social1 svg,
.link-button.social1 svg {
    scale: 1.35;
}

.only-icon {
    aspect-ratio: 1;
    height: auto;
}

.icon-on-hover > :last-child > svg {
    opacity: 0;
    transform: translateX(-0.75rem);
    transition: all 250ms ease-in;
}

.icon-on-hover:hover > :last-child > svg {
    opacity: 1;
    transform: translateX(0);
}

.only-icon.btn-xl,
.only-icon.btn-xl.splide__arrow {
    width: var(--btn-xl);
    aspect-ratio: 1;
}

.only-icon.btn-md,
.only-icon.btn-md.splide__arrow {
    width: var(--btn-md);
    aspect-ratio: 1;
}

.only-icon.btn-sm {
    width: var(--btn-sm);
    aspect-ratio: 1;
}

.btn-xl,
.btn-xl.splide__arrow {
    padding: 1.5rem 2rem;
    height: var(--btn-xl);
}

.btn-xl svg,
.btn-xl.splide__arrow svg {
    height: var(--btn-icon-xl);
    width: var(--btn-icon-xl);
}

.btn-xl > .copy {
    line-height: 1.75rem;
    font-size: 1.35rem;
}

.btn-md,
.btn-md.splide__arrow {
    height: var(--btn-md);

    padding: 1rem 1.5rem;
    border-radius: 0.875rem;
}

.btn-md > .copy {
    font-size: 1.125rem;
    line-height: 1.5rem;
}

.btn-md svg,
.btn-md.splide__arrow svg {
    height: var(--btn-icon-md);
    min-width: var(--btn-icon-md);
}

.btn-sm,
.btn-sm.splide__arrow {
    height: var(--btn-sm);

    padding: 0.625rem 1rem;
    border-radius: 0.75rem;
}

.btn-sm > .copy {
    font-size: 1rem;
    line-height: 1.25rem;
}

.btn-sm svg,
.btn-sm.splide__arrow svg {
    height: var(--btn-icon-sm);
    width: var(--btn-icon-sm);
}

.btn-xl.btn-plain,
.btn-md.btn-plain,
.btn-sm.btn-plain {
    height: auto;
}

.btn-xl.btn-plain.toggle-button,
.btn-md.btn-plain.toggle-button,
.btn-sm.btn-plain.toggle-button {
    height: 2rem;
}

.btn-plain.blank > .copy {
    position: relative;
    z-index: 2;
    white-space: normal;
}

.in-text-link > .copy,
.in-text-link {
    font-size: unset;
    line-height: unset;
    white-space: normal;
    display: inline;
    text-transform: unset;
    letter-spacing: unset;
    transition: color 200ms ease;
}

.in-text-link > .copy:hover {
    color: var(--hover-prime);
}

.in-text-link > .copy::after {
    display: none;
}

.btn-plain.blank:not(.no-underline-button, .toggle-button) > .copy::after {
    content: '';
    position: absolute;
    background-color: var(--border);
    width: 100%;
    height: 1px;
    bottom: 0;
    left: 0;
    transition: all 200ms ease;
    z-index: 0;
}

.btn-plain.blank:hover > .copy:after {
    background-color: var(--hover-prime);
}

.btn-plain {
    padding: unset;
    border-radius: unset;
}

.btn-plain svg {
    height: var(--btn-icon-sm);
}

.btn-sm.rounded,
.btn-md.rounded,
.btn-xl.rounded {
    border-radius: 10rem;
}

.prime,
.prime.splide__arrow {
    background-color: var(--button-black);
    color: var(--text-white);
    border: 1px solid transparent;
    transition: border-color 200ms ease-in;
}

.dark-mode .prime:hover > .copy > p,
.section-always-dark .prime:hover > .copy > p,
.section-always-dark .prime:hover > span.copy,
.section-always-dark .prime:hover > span {
    color: var(--text);
}

.prime > .copy,
.prime > .copy > p,
.prime > span,
.prime > *,
.dark-mode .section-accent .prime:hover > .copy,
.dark-mode .section-primary .prime:hover > .copy {
    color: var(--text-white);
}

.prime::after,
.prime.splide__arrow::after {
    background-color: var(--hover-prime);
}

.prime:hover,
.prime.splide__arrow:hover {
    border: 1px solid var(--hover-prime);
}

.dark-mode .prime:hover > *,
.dark-mode .prime:hover > .copy,
.section-accent .prime:hover > .copy,
.section-primary .prime:hover > .copy {
    color: var(--text);
    transition: color 200ms ease 150ms;
}

.outlined,
.outlined.splide__arrow {
    background-color: transparent;
    color: var(--text);
    border: 1px solid var(--border-black);
}

.outlined::after,
.outlined.splide__arrow::after {
    background-color: var(--hover-gray);
}

.ghost,
.ghost.splide__arrow {
    background-color: var(--ghost-color);
    color: var(--text);
    border: 1px solid transparent;
    transition:
        color 200ms ease 250ms,
        border 200ms ease 450ms;
}

.ghost:hover,
.ghost.splide__arrow:hover {
    border: 1px solid var(--ghost-color);
}

.ghost:hover,
.ghost.splide__arrow:hover,
.ghost:hover span,
.ghost.splide__arrow:hover span,
.ghost:hover p,
.ghost.splide__arrow:hover p {
    color: var(--text-white);
    transition: color 200ms ease 200ms;
}

.ghost::after,
.ghost.splide__arrow::after {
    background-color: var(--button-black);
    border: 1px solid var(--button-black);
}

.ghost.glass {
    background-color: var(--bg-50);
    backdrop-filter: blur(3px);
    border: 1px solid var(--border);
}

.blank {
    background-color: transparent;
    color: var(--text);
    border: unset;
}

/* toggle button */

.toggle-button > span {
    position: relative;
}

.toggle-button > span > svg:last-child {
    position: absolute;
    inset: auto;
    opacity: 0;
}

.toggle-button.activated > span > svg:first-child,
.is-open .toggle-button > span > svg:first-child {
    opacity: 0;
}

.toggle-button.activated > span > svg:last-child,
.is-open .toggle-button > span > svg:last-child {
    opacity: 1;
}

/* animations */

.activated > .text-drop {
    animation: text-drop 0.2s ease-out;
}

.anim-fly-top-right:hover svg {
    animation: flyout-top-right 0.4s ease-out 0.2ms;
}

.anim-fly-top:hover svg {
    animation: flyout-top 0.4s ease-out 0.2ms;
}

.anim-fly-right:hover svg {
    animation: flyout-right 0.4s ease-out 0.2ms;
}

.anim-fly-left:hover svg {
    animation: flyout-left 0.4s ease-out 0.2ms;
}

.anim-bounce:hover span:has(svg) {
    animation: bounce 0.4s ease-out 0.2ms;
}

@media screen and (max-width: 1360px) {
    .btn-xl > .copy {
        font-size: 1.25rem;
    }

    .btn-md:not(.in-text-link) > .copy {
        font-size: 1.125rem;
    }

    .btn-md:not(.btn-plain, .only-icon),
    .btn-md.splide__arrow {
        padding: 1rem 1.125rem;
    }

    .btn-xl:not(.btn-plain) > .copy,
    .btn-md:not(.btn-plain) > .copy {
        line-height: 1.25rem;
    }

    .btn-xl:not(.btn-plain, .only-icon),
    .btn-xl.splide__arrow {
        padding: 1.25rem 1.25rem;
    }

    .link-group__item.btn-plain.blank:not(.no-underline-button) > .copy::after {
        display: none;
    }

    .only-icon.btn-xl,
    .only-icon.btn-xl.splide__arrow {
        max-width: 5rem;
    }
}

@media screen and (max-width: 768px) {
    :root {
        --btn-xl: 4rem;
    }

    .btn-xl > .copy {
        font-size: 1.125rem;
    }
    .btn-xl:not(.btn-plain, .only-icon),
    .btn-xl.splide__arrow {
        padding: 1rem 1.25rem;
    }

    .btn-xl:not(.btn-plain) > .copy {
        line-height: 1.125rem;
    }

    .icon-on-hover > :last-child > svg {
        opacity: 1;
        transform: translateX(0);
        color: var(--text-dull);
    }
}

@media screen and (max-width: 600px) {
    :root {
        --btn-xl: 3.5rem;
    }

    .btn-xl.only-icon {
        --btn-xl: 4rem;
        --btn-icon-xl: 1.5rem;
    }

    .btn-xl > .copy {
        font-size: 1.125rem;
    }

    .btn-xl:not(.btn-plain, .only-icon),
    .btn-xl.splide__arrow {
        padding: 1.125rem 2rem;
    }

    .btn-xl:not(.btn-plain) > .copy {
        line-height: 1.125rem;
    }

    .btn-md:not(.in-text-link) > .copy {
        font-size: 1rem;
    }

    .btn-md:not(.btn-plain, .only-icon),
    .btn-md.splide__arrow {
        padding: 1rem 1.5rem;
    }

    .btn-md:not(.btn-plain) > .copy {
        line-height: 1rem;
    }

    .button.social1 svg,
    .link-button.social1 svg {
        scale: 1.15;
    }
}

@keyframes flyout-top-right {
    0% {
        transform: translate(0, 0);
        opacity: 1;
    }

    20% {
        transform: translate(-5px, 5px);
        opacity: 1;
    }

    60% {
        transform: translate(5px, -5px);
        opacity: 0;
    }
    61% {
        transform: translate(-5px, 5px);
        opacity: 0;
    }
    100% {
        transform: translate(0, 0);
        opacity: 1;
    }
}

@keyframes flyout-top {
    0% {
        transform: translate(0, 0);
        opacity: 1;
    }

    20% {
        transform: translate(0, 5px);
        opacity: 1;
    }

    60% {
        transform: translate(0, -5px);
        opacity: 0;
    }
    61% {
        transform: translate(0, 5px);
        opacity: 0;
    }
    100% {
        transform: translate(0, 0);
        opacity: 1;
    }
}

@keyframes flyout-right {
    0% {
        transform: translateX(0px);
        opacity: 1;
    }

    60% {
        transform: translateX(7px);
        opacity: 0;
    }
    61% {
        transform: translateX(-7px);
        opacity: 0;
    }
    100% {
        transform: translateX(0px);
        opacity: 1;
    }
}

@keyframes flyout-left {
    0% {
        transform: translateX(0px);
        opacity: 1;
    }

    60% {
        transform: translateX(-7px);
        opacity: 0;
    }
    61% {
        transform: translateX(7px);
        opacity: 0;
    }
    100% {
        transform: translateX(0px);
        opacity: 1;
    }
}

@keyframes text-drop {
    0% {
        transform: translateY(-5px);
        opacity: 0;
    }

    100% {
        transform: translateY(0px);
        opacity: 1;
    }
}

@keyframes bounce {
    0% {
        transform: scale(1);
    }

    35% {
        transform: scale(0.8);
    }
    65% {
        transform: scale(1.2);
    }
    100% {
        transform: scale(1);
    }
}

@keyframes disappear {
    from {
        opacity: 1;
        transform: rotate3d(0deg);
    }

    to {
        opacity: 0;
        transform: rotate3d(20deg);
    }
}

@keyframes appear {
    from {
        opacity: 0;
        transform: rotate3d(-20deg);
    }

    to {
        opacity: 1;
        transform: rotate3d(0deg);
    }
}
