$retina: (
    min-resolution: 192dpi,
  ),
  (-webkit-min-device-pixel-ratio: 2);

@function zoomed($length) {
  @return calc(#{$length} * var(--zoom));
}

@mixin thinBorder($color, $position: bottom) {
  position: relative;

  &:not(:last-child)::after {
    content: '';
    position: absolute;
    display: block;
    right: 0;
    bottom: 0;
    @if $position == bottom {
      left: 0;
      height: 1px;
    } @else if $position == right {
      top: 0;
      width: 1px;
    }

    background: $color;
    @media #{$retina} {
      background: linear-gradient(
        to #{$position},
        transparent 0%,
        transparent 50%,
        $color 50%,
        $color 100%
      );
    }
  }
}

.actionBlockWrapper {
  --indent: 0;

  position: relative;
  max-width: 395px;
  padding-left: calc(var(--indent) * #{zoomed(20px)});
  margin: {
    left: auto;
    right: auto;
    top: zoomed(30px);
  }

  &.input:not(:first-child) {
    margin-top: zoomed(10px);

    &::before {
      content: '';
      width: 2px;
      height: zoomed(12px);
      top: zoomed(-10px);
      left: calc(50% - 1px);
      background: #c8c9ca;
      position: absolute;
      z-index: -1;
    }
  }
}

.actionBlock {
  background: #fefefe;
  border-radius: zoomed(15px);
  box-shadow: inset 1px 0 #cccbcb, inset 0 1px #cccbcb, inset -1px 0 #cccbcb,
    inset 0 -1px #cccbcb, 0 zoomed(4px) zoomed(20px) rgba(0, 0, 0, 0.05);
  @media #{$retina} {
    box-shadow: inset 0.5px 0 #cccbcb, inset 0 0.5px #cccbcb,
      inset -0.5px 0 #cccbcb, inset 0 -0.5px #cccbcb,
      0 zoomed(4px) zoomed(20px) rgba(0, 0, 0, 0.05);

    // Safari
    &.safari {
      border: 0.5px solid #cccbcb;
      box-shadow: 0 zoomed(4px) zoomed(20px) rgba(0, 0, 0, 0.05);
    }
  }

  .header {
    @include thinBorder(#e2e2e2);

    position: relative;
    padding: zoomed(8px);

    .title {
      color: var(--black-color);
      padding-left: zoomed(calc(29px + 8px));
      line-height: zoomed(29px);
      font-size: zoomed(14px);
      font-weight: 600;
    }

    .icon {
      --size: #{zoomed(29px)};

      position: absolute;
    }

    .log {
      float: right;
      padding: 0 zoomed(8px);
      color: var(--white-color);
      background: var(--gray-color);
      border-radius: zoomed(8px);
      line-height: zoomed(29px);
      font-size: zoomed(14px);
      font-weight: 600;
      cursor: pointer;
    }
  }

  &.missing {
    background: #f8ebe8;

    .header {
      @include thinBorder(#f0c9c8);

      background: #f5d3d3;
      border-radius: zoomed(15px) zoomed(15px) 0 0;
    }
  }

  &.comment {
    background: #f8f6e8;
    box-shadow: 0 zoomed(4px) zoomed(20px) rgba(0, 0, 0, 0.05);

    @media #{$retina} {
      // Safari
      &.safari {
        border: none;
      }
    }

    .header {
      @include thinBorder(#e8d3a5);

      background: #f5ebd2;
      border-radius: zoomed(15px) zoomed(15px) 0 0;
    }
  }

  &.noIcon .header .title {
    padding-left: zoomed(8px);
  }

  .item {
    @include thinBorder(#e2e2e2);

    display: flex;
    align-items: center;
    place-content: space-between;
    padding: zoomed(8px) zoomed(16px);

    &:not(:last-child)::after {
      left: zoomed(16px);
    }

    &.dictionary {
      padding: 0;

      .field {
        padding: zoomed(8px) zoomed(16px);
      }

      .field:first-child {
        @include thinBorder(#e2e2e2, right);

        flex: 1;
      }

      .field:last-child {
        flex: 2;
      }
    }

    label {
      font-weight: 500;
      font-size: zoomed(16px);
      line-height: zoomed(28px);
      margin-right: zoomed(16px);
      color: var(--black-color);
    }

    .chevron {
      width: zoomed(16px);

      path {
        fill: #bbbac0;
      }

      &.expanded {
        transform: scaleY(-1);
      }
    }
  }
}

.field {
  flex: 1;
  min-width: 0;
  font-size: zoomed(16px);
  line-height: zoomed(25px);
  color: var(--black-color);
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;

  &.placeholder {
    color: var(--gray-color);
  }

  &.right {
    text-align: right;
  }

  &.multiline {
    height: zoomed(116px);
    overflow-y: auto;
    white-space: pre-wrap;
    overflow-wrap: break-word;
    padding: zoomed(8px) zoomed(16px);
    margin: zoomed(-8px) zoomed(-16px);

    &.expanded {
      min-height: zoomed(116px);
      height: auto;
    }
  }

  &.variable {
    flex: none;
    position: relative;
    background: #f5f6fb;
    border-radius: zoomed(12px);
    padding: 0 zoomed(12px);
  }

  &.notImplemented {
    color: #ec3e3e;
    font-style: italic;
  }

  .getFileInitialPath {
    color: var(--gray-color);
  }
}

.switch {
  position: relative;
  width: zoomed(36px);
  height: calc(#{zoomed(20px)} + 2px);
  background-color: var(--white-color);
  border-radius: zoomed(12px);
  border: 1px solid #dadde2;

  small {
    position: absolute;
    top: 1px;
    left: 1px;
    width: zoomed(20px);
    height: zoomed(20px);
    background: var(--white-color);
    border-radius: 100%;
    box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
  }

  &.checked {
    background-color: var(--ios-blue-color);
    border-color: #4084f6;

    small {
      left: zoomed(15px);
    }
  }
}

.select {
  .value {
    display: none;
    text-align: center;
    white-space: nowrap;
    font-size: zoomed(16px);
    color: var(--black-color);

    &.selected {
      display: inline-block;
      line-height: calc(28px * var(--zoom));
    }
  }

  &.segmented {
    display: flex;
    margin: zoomed(-1px) 0;
    border: 1px solid var(--ios-blue-color);
    border-radius: zoomed(4px);

    .value {
      flex: 1;
      display: block;
      padding: 0 zoomed(8px);
      font-size: zoomed(13px);
      line-height: zoomed(27px);
      color: var(--ios-blue-color);
      border-right: 1px solid var(--ios-blue-color);

      &:last-child {
        border-right: none;
      }

      &.selected {
        color: var(--white-color);
        background: var(--ios-blue-color);
      }

      .stepper & {
        font-size: zoomed(27px);
        font-weight: 200;
      }
    }
  }
}

.token {
  position: relative;
  display: inline-block;
  font-size: zoomed(13px);
  line-height: zoomed(21px);
  color: rgba(0, 0, 0, 0.75);
  background: linear-gradient(to bottom, #d6e1f0, #cdd5e9);
  border-radius: zoomed(11px);
  border: 1px solid #c6cee0;
  vertical-align: middle;
  padding: 0 zoomed(10px);
  bottom: zoomed(1px);
  overflow: hidden;

  &.icon {
    padding-left: zoomed(27px);

    .icon {
      --size: #{zoomed(15px)};

      position: absolute;
      left: zoomed(7px);
      top: zoomed(3px);
    }
  }

  &.aggrandizement {
    padding-right: 0;

    .aggrandizement {
      display: inline-block;
      font-weight: 500;
      font-size: zoomed(12px);
      background: rgba(0, 0, 0, 0.1);
      padding: 0 zoomed(6px);
      margin-left: zoomed(6px);
    }
  }

  &.global {
    background: linear-gradient(to bottom, #dbf5da, #d1ebd2);
    border: 1px solid #c1d9bf;
  }
}
