.icon-button-component {
    display: flex;
    height: 40px;
    box-sizing: border-box;
    gap: 8px;
    cursor: pointer;
    justify-content: center;
    align-items: center;
    color: var(--color-text);
    transition-property: color, filter;
}

@media (hover: hover) and (pointer: fine) {
    .icon-button-component {
        transition-timing-function: var(--transition-timing-function);
        transition-duration: var(--transition-duration);
    }
}

@media (hover: none) {
    .icon-button-component {
        transition-timing-function: var(--mobile-transition-timing-function);
        transition-duration: var(--mobile-transition-duration);
    }
}

.icon-button-component-icon {
    display: flex;
    height: 40px;
    width: 40px;
    font-size: 24px;
    line-height: 24px;
    justify-content: center;
    align-items: center;
    transition-property: font-size, line-height;
}

@media (hover: hover) and (pointer: fine) {
    .icon-button-component-icon {
        transition-timing-function: var(--transition-timing-function);
        transition-duration: var(--transition-duration);
    }
}

@media (hover: none) {
    .icon-button-component-icon {
        transition-timing-function: var(--mobile-transition-timing-function);
        transition-duration: var(--mobile-transition-duration);
    }
}

.icon-button-component-text {
    transition-property: font-size, line-height;
}

@media (hover: hover) and (pointer: fine) {
    .icon-button-component-text {
        transition-timing-function: var(--transition-timing-function);
        transition-duration: var(--transition-duration);
    }
}

@media (hover: none) {
    .icon-button-component-text {
        transition-timing-function: var(--mobile-transition-timing-function);
        transition-duration: var(--mobile-transition-duration);
    }
}

.icon-button-component.collapse-desktop > .icon-button-component-text {
    display: none;
}

.icon-button-component.collapse-tablet > .icon-button-component-text {
    display: none;
}

.icon-button-component.collapse-phone > .icon-button-component-text {
    display: none;
}

/* Default variant */
@media (hover: hover) and (pointer: fine) {
    .icon-button-component.variant-default:hover {
        cursor: pointer;
        color: var(--color-highlight);
        filter: var(--shadow-drop-highlight);
    }

    .icon-button-component.variant-default:hover .icon-button-component-icon {
        font-size: 32px;
        line-height: 32px;
    }

    .icon-button-component.variant-default:hover .icon-button-component-text {
        font-size: 20px;
        line-height: 20px;
    }
}

@media (hover: none) {
    .icon-button-component.variant-default:active {
        color: var(--color-highlight);
        filter: var(--shadow-drop-highlight);
    }

    .icon-button-component.variant-default:active .icon-button-component-icon {
        font-size: 32px;
        line-height: 32px;
    }

    .icon-button-component.variant-default:active .icon-button-component-text {
        font-size: 20px;
        line-height: 20px;
    }
}

/* Highlighted variant */
.icon-button-component.variant-highlighted {
    color: var(--color-highlight);
    filter: var(--shadow-drop-highlight);
}

.icon-button-component.variant-highlighted .icon-button-component-icon {
    font-size: 32px;
    line-height: 32px;
}

.icon-button-component.variant-highlighted .icon-button-component-text {
    font-size: 20px;
    line-height: 20px;
}
