@import colors

form
    display: block
    width: 20em

    .input
        list-style-type: none
        margin: 0 0 2em 0
        padding: 0
        li
            margin-top: 1.2em
        label
            display: block
            padding: 0.3em 0
    .input li:first-child label:not(.radio):not(.checkbox):not(.file-dropper),
    .input li:first-child
        padding-top: 0
        margin-top: 0

form:not(.horizontal)
    .hint
        margin-top: 0.2em
        margin-bottom: 0
        color: $inactive-link-color
        font-size: 80%
        line-height: 120%

.darktheme form:not(.horizontal)
    .hint
        color: $inactive-link-color-darktheme

form.horizontal
    display: inline-block
    margin-bottom: 1em
    .input, .buttons, ul
        display: inline-block
        vertical-align: top
        margin: 0
        padding: 0
        input
            vertical-align: top
    .buttons
        margin-right: 0.5em
    @media (max-width: 1000px)
        display: block
        .input, .buttons, ul
            display: block
            margin-top: 0.5em
            &:first-child
                margin-top: 0
        .buttons
            margin-right: 0



/*
 * Radio buttons and checkboxes
 */
input[type=radio], input[type=checkbox]
    position: absolute
    opacity: 0

.radio, .checkbox
    box-sizing: border-box
    position: relative
    display: inline-block
    padding-left: calc(20px + 0.5em) !important
    vertical-align: middle
    cursor: pointer

    &:hover:before
        border-color: $main-color

.radio:before
    border-radius: 100%

.radio:before, .checkbox:before
    transition: border-color 0.1s linear
    position: absolute
    left: 0
    top: 0.15em
    display: block
    width: 16px
    height: 16px
    background: $input-enabled-background-color
    border: 2px solid $input-enabled-border-color
    content: ''

.radio:after
    background: $main-color
    transition: opacity 0.1s linear
    position: absolute
    left: 5px
    top: 0.15em
    margin-top: 5px
    display: block
    width: 10px
    height: 10px
    border-radius: 50%
    content: ''
    opacity: 0

.checkbox:after
    transition: opacity 0.1s linear
    position: absolute
    top: 0.15em
    left: 6px
    display: block
    margin-top: 3px
    width: 5px
    height: 9px
    border-right: 3px solid $main-color
    border-bottom: 3px solid $main-color
    content: ''
    opacity: 0
    transform: rotate(45deg)


input[type=radio]:checked + .radio:before,
input[type=checkbox]:checked + .checkbox:before
    border-color: $main-color

input[type=radio]:checked + .radio:after,
input[type=checkbox]:checked + .checkbox:after
    opacity: 1

input[type=radio]:disabled + .radio:before,
input[type=checkbox]:disabled + .checkbox:before,
input[type=radio]:disabled + .radio:after,
input[type=checkbox]:disabled + .checkbox:after
    border-color: $input-disabled-text-color

input[type=radio]:disabled + .radio,
input[type=checkbox]:disabled + .checkbox
    border-color: $input-disabled-text-color

input[type=radio]:focus + .radio:before,
input[type=checkbox]:focus + .checkbox:before
    border-color: $main-color



/*
 * Date and time inputs
 */

input[type=date],
input[type=time]
    vertical-align: top
    font-family: 'Droid Sans', sans-serif
    font-size: 100%
    padding: 0.2em 0.3em
    box-sizing: border-box
    border: 2px solid $input-enabled-border-color
    background: $input-enabled-background-color
    color: $input-enabled-text-color
    box-shadow: none /* :-moz-submit-invalid on FF */
    transition: border-color 0.1s linear, background-color 0.1s linear

    &:disabled
        border: 2px solid $input-disabled-border-color
        background: $input-disabled-background-color
        color: $input-disabled-text-color

    &:focus
        border-color: $main-color

    &[readonly]
        border: 2px solid $input-disabled-border-color
        background: $input-disabled-background-color
        color: $input-disabled-text-color

.darktheme
    input[type=date],
    input[type=time]
        border: 2px solid darken($input-enabled-border-color, 75%)
        background: darken($input-enabled-background-color, 75%)
        color: $input-enabled-text-color-darktheme
        &:disabled
            background: darken($input-disabled-background-color, 75%)
        &[readonly]
            background: darken($input-disabled-background-color, 75%)


/*
 * Regular inputs
 */
select,
textarea,
input[type=text],
input[type=email],
input[type=password],
input[type=number]
    vertical-align: top
    font-family: 'Droid Sans', sans-serif
    font-size: 100%
    padding: 0.2em 0.3em
    text-overflow: ellipsis
    width: 100%
    box-sizing: border-box
    border: 2px solid $input-enabled-border-color
    background: $input-enabled-background-color
    color: $input-enabled-text-color
    box-shadow: none /* :-moz-submit-invalid on FF */
    transition: border-color 0.1s linear, background-color 0.1s linear

    &:disabled
        border: 2px solid $input-disabled-border-color
        background: $input-disabled-background-color
        color: $input-disabled-text-color

    &:focus
        border-color: $main-color

    &[readonly]
        border: 2px solid $input-disabled-border-color
        background: $input-disabled-background-color
        color: $input-disabled-text-color

.darktheme
    select,
    textarea,
    input[type=text],
    input[type=email],
    input[type=password],
    input[type=number]
        border: 2px solid darken($input-enabled-border-color, 75%)
        background: darken($input-enabled-background-color, 75%)
        color: $input-enabled-text-color-darktheme
        &:disabled
            background: darken($input-disabled-background-color, 75%)
        &[readonly]
            background: darken($input-disabled-background-color, 75%)

input[readonly],
input[readonly]+.radio,
input[readonly]+.checkbox,
input:disabled+.radio,
input:disabled+.checkbox,
input:disabled
    cursor: not-allowed

label.color
    white-space: nowrap
    position: relative
    display: flex
    input[type=text]
        margin-right: 0.25em
        width: auto
    .preview
        display: inline-block
        text-align: center
        padding: 0 0.5em
        border: 2px solid black
        &:after
            content: 'A'
    .background-preview
        border-right: 0
        color: transparent
    .text-preview
        border-left: 0


form.show-validation .input
    input:invalid
        outline: 0
        border: 2px solid $input-bad-border-color
        background: $input-bad-background-color
    input:valid
        outline: 0
        border: 2px solid $input-good-border-color
        background: $input-good-background-color
.darktheme form.show-validation .input
    input:valid
        background: darken($input-good-background-color, 75%)

/*
 * Buttons
 */
button,
input[type=button],
input[type=submit]
    cursor: pointer
    font-size: 100%
    padding: 0.2em 0.7em
    border-radius: 0
    border: 2px solid $button-enabled-background-color
    background: $button-enabled-background-color
    color: $button-enabled-text-color
    outline: 0 /* something on Chrome */
    -moz-appearance: none
    -webkit-appearance: none

    &:disabled
        cursor: default
        border-color: $button-disabled-background-color
        background-color: $button-disabled-background-color
        color: $button-disabled-text-color

    &.discourage
        border-color: transparent
        background-color: transparent
        color: $button-disabled-text-color

    &:focus
        border: 2px solid $text-color

select:-moz-focusring
    text-shadow: 0

button::-moz-focus-inner,
input::-moz-focus-inner
    border: 0



/*
 * File dropper
 */
.file-dropper-holder
    .file-dropper
        display: block
        background: $window-color
        border: 3px dashed #eee
        padding: 0.3em 0.5em
        line-height: 140%
        text-align: center
        cursor: pointer
        overflow: hidden
        word-wrap: break-word
    .url-holder
        display: flex
        margin-top: 0.5em
        input, button
            min-width: 0 /* firefox being sassy */
            width: auto !important /* don't inherit anything weird */
        input
            flex: 1
        button
            margin-left: 0.5em

.darktheme .file-dropper-holder
    .file-dropper
        background: $window-color-darktheme

input[type=file]:disabled+.file-dropper
    cursor: default
    opacity: .5

input[type=file]:active+.file-dropper,
input[type=file]:focus+.file-dropper,
.file-dropper.active
    border-color: $main-color

.autocomplete
    position: absolute
    z-index: 10
    background: $window-color
    border: 2px solid $main-color
    display: none
    font-size: 0.95em
    ul
        list-style-type: none
        margin: 0
        padding: 0
        li
            margin: 0
            a
                display: block
                padding: 0.1em 0.5em
            &.active a, a:hover
                background: $button-enabled-background-color
                color: $button-enabled-text-color
                span
                    color: $button-enabled-text-color
            .disabled
                color: $inactive-link-color

.darktheme .autocomplete
    background: $window-color-darktheme
    ul li .disabled
        color: $inactive-link-color-darktheme

.anticomplete
    display: none