/*
|--------------------------------------------------------------------------
| FitUI Forms
| Base + Layout
|--------------------------------------------------------------------------
*/

.fit-form {
    display: flex;
    flex-direction: column;
    gap: var(--fit-space-3);
    width: 100%;
}

.fit-form-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: var(--fit-space-3);
    width: 100%;
}

.fit-form-grid--2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.fit-form-grid--3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.fit-form-row {
    display: flex;
    align-items: flex-start;
    gap: var(--fit-space-2);
    width: 100%;
}

.fit-form-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px;
    padding-top: var(--fit-space-1);
}

.fit-form-section {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: var(--fit-space-3);
    padding: var(--fit-space-4);
    border: 1px solid var(--fit-border-soft);
    border-radius: var(--fit-radius-md);
    background:
        linear-gradient(
            180deg,
            var(--fit-surface-1),
            transparent
        ),
        var(--fit-surface-soft);
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, .025),
        var(--fit-shadow-soft);
}

.fit-form-section__header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--fit-space-2);
}

.fit-form-section__heading {
    min-width: 0;
}

.fit-form-section__title {
    margin: 0;
    color: var(--fit-text);
    font-size: 1.15rem;
    font-weight: 800;
    line-height: 1.25;
    letter-spacing: -.02em;
}

.fit-form-section__description {
    max-width: 720px;
    margin: 8px 0 0;
    color: var(--fit-text-muted);
    font-size: .92rem;
    line-height: 1.65;
}

/*
|--------------------------------------------------------------------------
| Fields
|--------------------------------------------------------------------------
*/

.fit-field {
    display: flex;
    flex-direction: column;
    gap: 9px;
    min-width: 0;
    width: 100%;
}

.fit-field--inline {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: var(--fit-space-2);
}

.fit-field--half {
    width: 50%;
}

.fit-field--compact {
    gap: 6px;
}

.fit-field[hidden] {
    display: none !important;
}

/*
|--------------------------------------------------------------------------
| Field Header
|--------------------------------------------------------------------------
*/

.fit-field-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    min-width: 0;
}

.fit-label {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    margin: 0;
    color: var(--fit-text);
    font-size: .88rem;
    font-weight: 750;
    line-height: 1.35;
}

.fit-label__required {
    color: var(--fit-gold);
    font-weight: 900;
}

.fit-label__optional {
    color: var(--fit-text-faint);
    font-size: .75rem;
    font-weight: 650;
}

.fit-field-counter {
    flex: 0 0 auto;
    color: var(--fit-text-soft);
    font-size: .75rem;
    font-weight: 700;
    line-height: 1;
}

/*
|--------------------------------------------------------------------------
| Help and Feedback Text
|--------------------------------------------------------------------------
*/

.fit-help {
    display: block;
    margin: 0;
    color: var(--fit-text-soft);
    font-size: .8rem;
    font-weight: 500;
    line-height: 1.55;
}

.fit-help strong {
    color: var(--fit-text-muted);
    font-weight: 750;
}

.fit-field-message {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    margin: 0;
    font-size: .8rem;
    font-weight: 600;
    line-height: 1.5;
}

.fit-field-message::before {
    content: "";
    flex: 0 0 auto;
    width: 7px;
    height: 7px;
    margin-top: .45em;
    border-radius: var(--fit-radius-round);
    background: currentColor;
    box-shadow: 0 0 12px currentColor;
}

.fit-field-message--success {
    color: var(--fit-success);
}

.fit-field-message--error {
    color: var(--fit-danger);
}

.fit-field-message--warning {
    color: var(--fit-gold-hover);
}

/*
|--------------------------------------------------------------------------
| Dividers
|--------------------------------------------------------------------------
*/

.fit-form-divider {
    width: 100%;
    height: 1px;
    margin: 2px 0;
    border: 0;
    background:
        linear-gradient(
            90deg,
            transparent,
            var(--fit-border-soft),
            transparent
        );
}

/*
|--------------------------------------------------------------------------
| Responsive
|--------------------------------------------------------------------------
*/

@media (max-width: 900px) {

    .fit-form-grid--3 {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 720px) {

    .fit-form-grid--2,
    .fit-form-grid--3 {
        grid-template-columns: minmax(0, 1fr);
    }

    .fit-form-row {
        flex-direction: column;
    }

    .fit-field--half {
        width: 100%;
    }

    .fit-form-section {
        padding: var(--fit-space-3);
        border-radius: var(--fit-radius-sm);
    }

    .fit-form-section__header {
        flex-direction: column;
    }

    .fit-field--inline {
        align-items: flex-start;
        flex-direction: column;
    }
}

@media (max-width: 480px) {

    .fit-form {
        gap: 20px;
    }

    .fit-form-grid {
        gap: 20px;
    }

    .fit-form-section {
        padding: 20px;
    }

    .fit-form-actions {
        align-items: stretch;
        flex-direction: column;
    }

    .fit-form-actions .fit-btn {
        justify-content: center;
        width: 100%;
    }
}