// ==========================================================================
// Framework - Instance
// ==========================================================================

.fui-i {
    font-family: var(--fui-font);
    font-size: var(--fui-font-size);
    color: var(--fui-color, var(--fui-gray-700));
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    margin: 0;
    padding: 0;

    *, :after, :before {
        box-sizing: border-box;
        border: var(--fui-border);
    }
}

// ==========================================================================
// Framework - Buttons
// ==========================================================================

.fui-btn {
    // Resets
    font-family: inherit;
    font-size: var(--fui-btn-font-size);
    line-height: var(--fui-btn-line-height);
    margin: 0;
    appearance: none;
    background-color: var(--fui-btn-bg-color, var(--fui-gray-100));

    display: var(--fui-btn-display);
    text-align: var(--fui-btn-text-align);
    white-space: var(--fui-btn-white-space);
    vertical-align: var(--fui-btn-vertical-align);
    user-select: none;
    border-style: var(--fui-btn-border-style);
    text-decoration: var(--fui-btn-text-decoration);
    padding: var(--fui-btn-padding);
    border: var(--fui-btn-border);
    border-radius: var(--fui-btn-border-radius, var(--fui-border-radius));
    font-weight: var(--fui-btn-font-weight);
    transition-property: var(--fui-btn-transition-property);
    transition-timing-function: var(--fui-btn-transition-timing-function);
    transition-duration: var(--fui-btn-transition-duration);

    &:hover,
    &:focus,
    &:active {
        outline: 0;
        text-decoration: none;
        background-color: var(--fui-btn-bg-color-hover, var(--fui-gray-200));
    }

    &.disabled,
    &:disabled {
        opacity: var(--fui-btn-opacity-disabled);
        pointer-events: none;
    }

    // Opinionated: add "hand" cursor to non-disabled .btn elements
    &:not(:disabled):not(.disabled) {
        cursor: pointer;
    }
}

.fui-btn-link {
    color: var(--fui-submit-btn-bg-color, var(--fui-primary-color));
    background-color: transparent;

    &:hover,
    &:focus,
    &:active {
        background-color: transparent;
        text-decoration: underline;
    }
}

// ==========================================================================
// Framework - Links
// ==========================================================================

.fui-link {
    color: var(--fui-link-color, var(--fui-primary-color));
    transition-property: var(--fui-link-transition-property);
    transition-timing-function: var(--fui-link-transition-timing-function);
    transition-duration: var(--fui-link-transition-duration);
    text-decoration: var(--fui-link-text-decoration);

    &:hover,
    &:focus,
    &:active {
        color: var(--fui-link-color-hover, var(--fui-primary-color-hover));
    }
}


// ==========================================================================
// Framework - Loading
// ==========================================================================

.fui-loading {
    position: relative;
    pointer-events: none;
    color: transparent !important;
    min-height: var(--fui-loading-min-height);

    &::after {
        position: absolute;
        display: block;
        height: var(--fui-loading-height);
        width: var(--fui-loading-width);
        margin-top: var(--fui-loading-margin-top);
        margin-left: var(--fui-loading-margin-left);
        border-width: var(--fui-loading-border-width);
        border-style: solid;
        border-radius: 9999px;
        border-color: var(--fui-loading-border-color, var(--fui-primary-color));
        animation: var(--fui-loading-animation);
        border-right-color: transparent;
        border-top-color: transparent;
        content: "";
        left: var(--fui-loading-left);
        top: var(--fui-loading-top);
        z-index: var(--fui-loading-z-index);
    }
}

@keyframes loading {
    0% {
        transform: rotate(0)
    } 100% {
        transform: rotate(360deg)
    }
}


// ==========================================================================
// Framework - Alerts
// ==========================================================================

.fui-alert {
    padding: var(--fui-alert-padding);
    border-radius: var(--fui-alert-border-radius, var(--fui-border-radius));
    line-height: var(--fui-alert-line-height);
    font-size: var(--fui-alert-font-size);
    font-weight: var(--fui-alert-font-weight);
    margin-bottom: var(--fui-alert-margin-bottom);
}

.fui-alert-error {
    background-color: var(--fui-alert-error-bg-color);
    color: var(--fui-alert-error-color);
}

.fui-alert-success {
    background-color: var(--fui-alert-success-bg-color);
    color: var(--fui-alert-success-color);
}
