textarea,
input[type="text"] {
    color: var(--color-text-primary);
    font-size: 14px;
    font-weight: 500;
    line-height: 21px;
    border-radius: 10px;
    background-color: var(--color-input-bg);
    border: none;
    resize: none;
    max-height: 96px;
    padding: 16px;
    outline: 1px solid var(--color-border-soft);
}

textarea:active,
textarea:focus-visible,
textarea:focus,
input[type="text"]:active,
input[type="text"]:focus-visible,
input[type="text"]:focus {
    outline: 1px solid var(--color-primary-alt);
}

textarea::placeholder,
input[type="text"]::placeholder {
    color: var(--color-text-secondary);
}

/*======== Input control (shared) ========*/
.input-field {
    display: flex;
    flex-direction: column;
}

.input-field-label {
    margin-bottom: 8px;
    font-size: 14px;
    font-weight: 500;
    color: color-mix(in srgb, var(--color-text-primary) 75%, transparent);
}

.input-wrap {
    position: relative;
    display: flex;
    align-items: center;
}

input.input-control {
    width: 100%;
    height: 48px;
    padding: 0 44px 0 16px;
    border: 1px solid var(--color-border-soft);
    border-radius: 12px;
    background: var(--color-input-bg);
    font-family: var(--font-family);
    font-size: 16px;
    color: var(--color-text-primary);
    transition: border-color 0.15s ease, background-color 0.15s ease;
}

input.input-control:focus,
input.input-control:focus-visible {
    background: var(--color-input-bg);
    outline: none;
    border-color: var(--color-primary);
}

input.input-control::placeholder {
    color: #98A2B3;
}

/* Normalize autofilled fields to match untouched ones. */
.input-control:-webkit-autofill,
.input-control:-webkit-autofill:hover,
.input-control:-webkit-autofill:active {
    -webkit-text-fill-color: var(--color-text-primary);
    caret-color: var(--color-text-primary);
    border: 1px solid var(--color-primary-20);
    -webkit-box-shadow: 0 0 0 1000px var(--color-input-bg) inset;
    box-shadow: 0 0 0 1000px var(--color-input-bg) inset;
    transition: background-color 9999s ease-in-out 0s, border-color 0.15s ease;
}

.input-control:-webkit-autofill:focus {
    border-color: var(--color-primary);
    -webkit-box-shadow: 0 0 0 1000px var(--color-bg-white) inset;
    box-shadow: 0 0 0 1000px var(--color-bg-white) inset;
}

.input-check-icon,
.input-error-icon {
    position: absolute;
    right: 16px;
    top: 50%;
    transform: translateY(-50%);
    width: 20px;
    height: 20px;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.15s ease;
}

.input-wrap.is-valid .input-check-icon {
    opacity: 1;
}

.input-wrap.is-invalid .input-error-icon {
    opacity: 1;
}

.input-wrap.is-invalid .input-control {
    border-color: var(--color-error);
    background: var(--color-error-bg);
    color: var(--color-error);
}

.input-control:disabled {
    background: var(--color-bg-light);
    border-color: var(--color-border-soft);
    color: var(--color-text-secondary);
    cursor: not-allowed;
}

.input-wrap:has(.input-control:disabled) .input-phone-prefix {
    opacity: 0.5;
}

/* Phone field prefix (flag + country code). */
input.input-control--phone {
    padding-left: 92px;
}

.input-phone-prefix {
    position: absolute;
    left: 16px;
    top: 50%;
    transform: translateY(-50%);
    display: inline-flex;
    align-items: center;
    gap: 6px;
    pointer-events: none;
}

.input-phone-flag {
    display: block;
    border-radius: 2px;
}

.input-phone-code {
    font-size: 16px;
    font-weight: 500;
    color: var(--color-text-primary);
}

@media screen and (max-width: 576px) {
    input.input-control {
        height: 45px;
        font-size: 14px;
        border-radius: 8px;
    }
}