@if not-imported("import_once_func") { @import "import_once_func"; }
@if not-imported("framework") { @import "framework"; }

/**
 * Since fieldset borders are removed in the reset style sheet, adjust the
 * legends accordingly
 */

*:not(.widget) {
  > fieldset {
    clear: left;
  }
}

legend {
  width: 100%;
  display: block;
  font-weight: bold;
  border: 0;
}

input,
textarea,
select {
  line-height: 150%;
  outline: none;
  font-size: $font-size-field;
  font-family: $font-family-form;
  font-weight: 400;
}

/**
 * Placeholders
 */
::-webkit-input-placeholder { /* Webkit Browsers */
  color: $placeholder-color;
  font-size: $font-size-placeholder;
  text-transform: uppercase;
  opacity: 0.9;
  font-weight: 600;
}

:-moz-placeholder { /* Firefox < 19 */
  color: $placeholder-color;
  font-size: $font-size-placeholder;
  text-transform: uppercase;
  opacity: 0.9;
  font-weight: 600;

}

::-moz-placeholder {  /* Firefox >= 19 */
  color: $placeholder-color;
  font-size: $font-size-placeholder;
  text-transform: uppercase;
  opacity: 0.9;
  font-weight: 600;

}

:-ms-input-placeholder { /* IE 10-11 */
  color: $placeholder-color !important;
  font-size: $font-size-placeholder !important;
  text-transform: uppercase !important;
  opacity: 0.9;
  font-weight: 600;

}

::-ms-input-placeholder { /* Edge (old) */
  color: $placeholder-color;
  font-size: $font-size-placeholder;
  text-transform: uppercase;
  opacity: 0.9;
  font-weight: 600;

}

::placeholder {  /* CSS 4 Draft */
  color: $placeholder-color;
  font-size: $font-size-placeholder;
  text-transform: uppercase;
  opacity: 0.9;
  font-weight: 600;

}

/* Chrome, Safari, Edge, Opera */
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

/* Firefox */
input[type=number] {
  -moz-appearance: textfield;
}

/**
 * Widget
 */
.widget {
  margin-bottom: 15px;
  min-height: font-size($field-height+(1.75*10px));

  input[type="text"], input[type="password"], input[type="date"], input[type="datetime"], input[type="email"],
  input[type="number"], input[type="search"], input[type="tel"], input[type="time"], input[type="url"], input:not([type]), textarea, select {
    vertical-align: top;
  }

  > .formelement {
    position: relative;
  }

  &.icon {
    > .formelement {
      > input,
      > textarea {
        padding-right: 1.75em;
      }
      > .ico-wrapper {
        font-size: font-size(20px);
        cursor: default;
        position: absolute;
        top: 0;
        right: 0;
        height: 100%;
        width: 1.75em;
        border-radius: 0 .28571429rem .28571429rem 0;

        > a {
          display: flex;
          align-items: center;
          justify-content: center;
          line-height: inherit;
          color: $color-text;

          &:hover {
            color: $color-link;
          }
        }

        &.link {
          cursor: pointer;
        }
      }
    }
  }
}

/**
 * Text fields and textareas
 */
input[type="text"], input[type="password"], input[type="date"], input[type="datetime"], input[type="email"],
input[type="number"], input[type="search"], input[type="tel"], input[type="time"], input[type="url"], input:not([type]), textarea, select {
  display: inline-block;
  width: 100%;
  height: $field-height;
  line-height: #{$field-height - (2*$field-border-width) - (2*$field-padding-vertical)};
  padding: $field-padding;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  color: $field-color;
  background: $field-background-color;
  border: $field-border-width solid $field-border-color;
  -webkit-border-radius: $field-radius;
  -moz-border-radius: $field-radius;
  border-radius: $field-radius;
  -webkit-transition: all .15s linear;
  -moz-transition: all .15s linear;
  -ms-transition: all .15s linear;
  -o-transition: all .15s linear;
  transition: all .15s linear;

  &:focus {
    outline: 0;
    background: $field-background-color-hl;
    border-color: $field-border-color-hl;
  }
}


textarea {
  line-height: 1.35;
}

/**
 * Label styling
 */

.formbody {
  @include cf;

  label {
    color: $label-color;
    display: block;
    margin-bottom: 0.25em;
    padding-top: 0.5em;
    text-transform: uppercase;
    font-size: font-size(10px);
    letter-spacing: 0.1em;
    line-height: 1.5;
    font-weight: 600;

    .mandatory {
      vertical-align: middle;
      font-size: font-size(18px);
      font-weight: 300;
      color: $color-link;
      line-height: 0;
    }
  }
  .widget {
    &.lblp {
      padding-top: font-size(10px*2.25);
    }
  }
}

/**
 * Fieldset styling
 */
.formbody > fieldset {
  margin-top: 1.5em;

  &:first-of-type {
    margin-top: 0;
  }

  legend {
    @include headline(font-size(18px));
  }
}


/**
 * Fix some width and height settings
 */
input[type="file"] {
  cursor: pointer;
}

select, input[type="file"] {
  display: block;
}

input[type="file"], input[type="image"], input[type="submit"], input[type="reset"], input[type="button"], input[type="radio"], input[type="checkbox"] {
  width: auto;
}

textarea, select[multiple], select[size] {
  height: auto;
}

select {
  -moz-appearance: none;
  -webkit-appearance: none;
  appearance: none;
  border: none;
}
select::-ms-expand {
  display: none;
}

select {
  display: inline-block;
  width: 100%;
  height: $field-height;
  padding: $field-padding-vertical $field-padding-horizontal+25px $field-padding-vertical $field-padding-horizontal;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  color: $field-color;
  background: $field-background-color;
  border: $field-border-width solid $field-border-color;
  -webkit-border-radius: $field-radius;
  -moz-border-radius: $field-radius;
  border-radius: $field-radius;
  -webkit-transition: all .15s linear;
  -moz-transition: all .15s linear;
  -ms-transition: all .15s linear;
  -o-transition: all .15s linear;
  transition: all .15s linear;
}
.select-wrapper {
  position: relative;
  display: inline-block;
  width: 100%;
  min-height: $field-height;

  &:before,
  &:after {
    //@include icon('\e90a',font-size(20px));
    content: '';
    width: 1em;
    height: 1em;
    background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23323535" width="1em" height="1em" viewBox="0 0 32 32"%3E%3Cpath d="M14.898 19.849c0.585 0.579 1.592 0.604 2.202 0.001l12.084-12.084 2.815 2.815-12.093 12.093c-2.055 2.027-5.656 2.13-7.815-0.001l-12.092-12.092 2.815-2.815c4.027 4.029 8.054 8.056 12.083 12.083z"/%3E%3C/svg%3E') 50% 50% no-repeat;
    position: absolute;
    right: 10px;
    top: 10px;
    pointer-events: none;
  }
  &:after {
    @include transition(all 0.25s);
    opacity: 0;
    visibility: hidden;
    background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23C48F3A" width="1em" height="1em" viewBox="0 0 32 32"%3E%3Cpath d="M14.898 19.849c0.585 0.579 1.592 0.604 2.202 0.001l12.084-12.084 2.815 2.815-12.093 12.093c-2.055 2.027-5.656 2.13-7.815-0.001l-12.092-12.092 2.815-2.815c4.027 4.029 8.054 8.056 12.083 12.083z"/%3E%3C/svg%3E') 50% 50% no-repeat;
  }
  &:hover {
    &:after {
      opacity: 1;
      visibility: visible;
    }
  }

  /*select {
    vertical-align: top;
  }*/
}
/**
 * Checkboxes and radio buttons
 */

.widget {
  &.widget-checkbox,
  &.widget-radio {
    > fieldset {
      padding-left: 1.5em;
    }

    .options {
      > span {
        margin-bottom: 0.25em;
        display: block;
        font-size: font-size(12px);
      }
    }

    input[type="radio"],
    input[type="checkbox"] {
      height: 2em;
      width: 2em;
      margin-left: -2.25em;
      margin-right: 5px;
    }

    label {
      display: inline;
      margin-bottom: 0;
      font-size: font-size(12px);
      font-weight: 600;
    }

    /*@supports(-webkit-appearance: none) or (-moz-appearance: none) {
      input[type='checkbox'],
      input[type='radio'] {
        --active: #275EFE;
        --active-inner: #fff;
        --focus: 2px rgba(39, 94, 254, .3);
        --border: #BBC1E1;
        --border-hover: #275EFE;
        --background: #fff;
        --disabled: #F6F8FF;
        --disabled-inner: #E1E6F9;
        -webkit-appearance: none;
        -moz-appearance: none;
        height: 21px;
        outline: none;
        display: inline-block;
        vertical-align: top;
        position: relative;
        margin: 0;
        cursor: pointer;
        border: 1px solid var(--bc, var(--border));
        background: var(--b, var(--background));
        transition: background .3s, border-color .3s, box-shadow .2s;
        &:after {
          content: '';
          display: block;
          left: 0;
          top: 0;
          position: absolute;
          transition: transform var(--d-t, .3s) var(--d-t-e, ease), opacity var(--d-o, .2s);
        }
        &:checked {
          --b: var(--active);
          --bc: var(--active);
          --d-o: .3s;
          --d-t: .6s;
          --d-t-e: cubic-bezier(.2, .85, .32, 1.2);
        }
        &:disabled {
          --b: var(--disabled);
          cursor: not-allowed;
          opacity: .9;
          &:checked {
            --b: var(--disabled-inner);
            --bc: var(--border);
          }
          & + label {
            cursor: not-allowed;
          }
        }
        &:hover {
          &:not(:checked) {
            &:not(:disabled) {
              --bc: var(--border-hover);
            }
          }
        }
        &:focus {
          box-shadow: 0 0 0 var(--focus);
        }
        &:not(.switch) {
          width: 21px;
          &:after {
            opacity: var(--o, 0);
          }
          &:checked {
            --o: 1;
          }
        }
        & + label {
          font-size: 14px;
          line-height: 21px;
          display: inline-block;
          vertical-align: top;
          cursor: pointer;
          margin-left: 4px;
        }
      }
      input[type='checkbox'] {
        &:not(.switch) {
          border-radius: 7px;
          &:after {
            width: 5px;
            height: 9px;
            border: 2px solid var(--active-inner);
            border-top: 0;
            border-left: 0;
            left: 7px;
            top: 4px;
            transform: rotate(var(--r, 20deg));
          }
          &:checked {
            --r: 43deg;
          }
        }
        &.switch {
          width: 38px;
          border-radius: 11px;
          &:after {
            left: 2px;
            top: 2px;
            border-radius: 50%;
            width: 15px;
            height: 15px;
            background: var(--ab, var(--border));
            transform: translateX(var(--x, 0));
          }
          &:checked {
            --ab: var(--active-inner);
            --x: 17px;
          }
          &:disabled {
            &:not(:checked) {
              &:after {
                opacity: .6;
              }
            }
          }
        }
      }
      input[type='radio'] {
        border-radius: 50%;
        &:after {
          width: 19px;
          height: 19px;
          border-radius: 50%;
          background: var(--active-inner);
          opacity: 0;
          transform: scale(var(--s, .7));
        }
        &:checked {
          --s: .5;
        }
      }
    }*/
  }
}

input[type="radio"], input[type="checkbox"] {
  margin: 0 3px 0 0;
}

input[type="radio"], input[type="checkbox"], label {
  vertical-align: middle;
}

/**
 * Handle disabled and read-only
 */
input[disabled], select[disabled], textarea[disabled], input[readonly], select[readonly], textarea[readonly] {
  cursor: not-allowed;
  background: $field-background-color-ro;
}

input[type="radio"][disabled], input[type="checkbox"][disabled], input[type="radio"][readonly], input[type="checkbox"][readonly] {
  background: transparent;
}

/**
 * Buttons
 */
input[type="submit"],
//input[type="button"],
button[type="submit"],
.submit,
.button {
  @include button-outline();

  &:not([data-icon]) {
    @include button-no-icon;
  }

  &.button-icon-only {
    @include button-icon-only;
  }

  .-alt-color > & {
    @include button-outline($color: $color-stroke-grey, $border-color: $color-stroke-grey);
    @include button-no-icon;
  }

  &.-big {
    padding: $button-padding-vertical*2 $button-padding-horizontal*2;
    height: $button-height*2;
    line-height: #{$button-height*2 - (2*$button-border-width) - (2*($button-padding-vertical*2))};
  }
}

.button-block {
  display: block;
  width: 100%;
}
