
/* ── Form Buttons ── */

.button,
input[type="button"],
input[type="submit"],
button[type="submit"] {
    align-items: center; /* vertical centering (cross axis) */
    background-color: var(--color-background-secondary);
    border: 1px solid var(--color-border-primary);
    border-radius: var(--radius-sm);
    box-sizing: border-box;
    color: var(--color-text-primary);
    cursor: pointer;
    display: flex;
    font-family: var(--font-family-base);
    font-size: var(--font-size-base);
    font-weight: var(--font-weight-regular);
    height: var(--space-2xl);
    justify-content: center; /* horizontal centering (main axis) */
    width: 7.5rem;
}

.button.disabled,
input[type="button"][disabled],
input[type="submit"][disabled],
button[type="submit"][disabled] {
    pointer-events: none;
}

.button:hover,
input[type="button"]:hover,
input[type="submit"]:hover,
button[type="submit"]:hover {
    box-shadow: inset 0 0 1px 1px var(--color-shadow-sm);
}

/* ── Inputs ── */

input,
select,
textarea {
    background-color: transparent;
    border: none;
    border-radius: var(--radius-sm);
    box-sizing: border-box;
    color: var(--color-text-primary);
    font-family: var(--font-family-base);
    font-size: var(--font-size-base);
    padding: 0rem 0.71rem;
}

input:focus,
select:focus,
textarea:focus {
    outline: none;
}

input[type="checkbox"] { cursor: pointer; }

input[type="date"],
input[type="datetime-local"],
input[type="time"] {
    height: 1.57rem;
    padding-right: 0.214rem;
    padding-bottom: 0rem;
    padding-left: 0.57rem;
    width: 100%;
}

input[type="text"],
input[type="password"] {
    height: 1.57rem;
    width: 100%;
}

select {
    height: 1.86rem;
    padding: 0rem 0.43rem;
    width: 100%;
}

@media (max-width: 33rem) {
    input[type="date"],
    input[type="datetime-local"],
    input[type="time"],
    input[type="text"],
    input[type="password"],
    select {
        width: 100%;
    }
}

@-moz-document url-prefix() {  /* Firefox padding updates */

    input[type="date"],
    input[type="datetime-local"],
    input[type="time"],
    input[type="text"],
    input[type="password"] {
        padding-top: 0.143rem;
    }

    select {
      padding-left: 0.71rem;
      padding-top: 0.143rem;
    }

    .upl { padding-top: 0.143rem; }
}

textarea {
    padding: 0.36rem 0.71rem;
    resize: both;
    width: 30rem;
    min-width: 30rem;
    max-width: 100%;
    box-sizing: border-box;
}

textarea.extra_large {
    width: 42rem;
}

@media (max-width: 33rem) {
    textarea {
        min-width: unset;
        resize: vertical;
        width: 100%;
    }
}

::-webkit-file-upload-button { cursor: pointer; } /* TODO (marty) not working in FF */

/* ── Form Field Containers ── */

.error {
    border-color: var(--color-error) !important;
    color: var(--color-error) !important;
}

.form-error {
    color: var(--color-error);
    font-size: var(--font-size-sm);
    left: var(--space-sm);
    margin-top: -1.07rem;
    position: relative;
}

.form-field-container {
    align-items: center;
    border-radius: var(--radius-sm);
    border: 1px solid var(--color-border-primary);
    box-sizing: content-box;
    display: flex;
    height: var(--space-2xl);
    margin: var(--space-lg) 0rem;
    position: relative;
    width: 30rem;
}

.form-field-container.textbox {
    height: fit-content;
    width: fit-content;
    min-width: 30rem;
    max-width: 100%;
}

@media (max-width: 33rem) {
    .form-field-container {
        width: 100%;
    }

    .form-field-container.textbox {
        min-width: unset;
        width: 100%;
    }
}

a.form-field-clear {
    align-items: center;
    background-color: var(--color-background-secondary);
    border-left: 1px solid var(--color-border-primary);
    border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
    display: inline-flex;
    flex-shrink: 0;
    height: 100%;
    justify-content: center;
    margin-left: -0.071rem;
    padding: 0rem 0.571rem;
}

a.form-field-clear:hover {
    box-shadow: inset 0 0 1px 1px var(--color-shadow-sm);
}

.form-field-container > input,
.form-field-container > select {
    flex: 1 1 auto;
    min-width: 0;
}

.form-field-label {
    background-color: var(--color-background-primary);
    color: var(--color-text-label);
    font-size: 0.8rem;
    font-style: italic;
    font-weight: var(--font-weight-semi-bold);
    left: -0.25rem;
    line-height: 0.8rem;
    position: absolute;
    text-transform: capitalize;
    top: -0.5rem;
    z-index: 2;
}

.form-field-label > button {
    line-height: 0;
    position: relative;
    top: -0.07rem;
    vertical-align: top;
}

.form-link {
    font-size: 0.79rem;
    font-weight: var(--font-weight-semi-bold);
    line-height: 0.79rem;
    margin: 0rem var(--space-lg);
}

div.form-field-with-suffix > span.suffix {
    color: var(--color-text-secondary);
    flex: 0 0 auto;
    max-width: 50%;
    overflow: hidden;
    padding-right: 0.71rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.trans-file { opacity: 0; }

.upl {
    cursor: pointer;
    height: 1.714rem;
    position: absolute;
    width: 100%;
}

@media (max-width: 33rem) {
    .form-field-container > .upl {
        width: 100%;
        box-sizing: border-box;
    }
}

/* ── Autocomplete ── */

.autocomplete-mirror {
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    width: 100%;
    overflow: hidden;
    color: transparent;
    pointer-events: none;
}

.autocomplete-suggestions {
    border: 1px solid var(--color-border-primary);
    background: var(--color-background-primary);
    border-radius: var(--radius-sm);
    color: var(--color-text-primary);
    display: none;
    position: absolute;
    z-index: 3;
}

.autocomplete-suggestion {
    align-items: center;
    cursor: pointer;
    display: flex;
    margin-bottom: 0rem;
    padding: 0rem 0.36rem;
}

.autocomplete-suggestion:first-child {
    border-radius: var(--radius-sm) var(--radius-sm) 0 0;
}

.autocomplete-suggestion:last-child {
    border-radius: 0 0 var(--radius-sm) var(--radius-sm);
}

.autocomplete-suggestion:not(:first-child) {
    border-top: 1px solid var(--color-border-secondary);
}

.autocomplete-suggestion--focused {
    background: var(--color-background-secondary);
}

.autocomplete-input, .autocomplete-textarea {
    background: transparent;
    position: relative;
}
