.flexbox {
  display: -ms-flexbox;
  display: -moz-flex;
  display: -webkit-flex;
  display: flex;
}
.inline-flexbox {
  display: -ms-inline-flexbox;
  display: -moz-inline-flex;
  display: -webkit-inline-flex;
  display: inline-flex;
}
.flexbox.row {
  -ms-flex-direction: row;
  -moz-flex-direction: row;
  -webkit-flex-direction: row;
  flex-direction: row;
}
.flexbox.col {
  -ms-flex-direction: column;
  -moz-flex-direction: column;
  -webkit-flex-direction: column;
  flex-direction: column;
}
.flexbox.justify-start {
  -ms-flex-pack: start;
  -moz-justify-content: flex-start;
  -webkit-justify-content: flex-start;
  justify-content: flex-start;
}
.flexbox.justify-end {
  -ms-flex-pack: end;
  -moz-justify-content: flex-end;
  -webkit-justify-content: flex-end;
  justify-content: flex-end;
}
.flexbox.justify-center {
  -ms-flex-pack: center;
  -moz-justify-content: center;
  -webkit-justify-content: center;
  justify-content: center;
}
.flexbox.justify-between {
  -ms-flex-pack: justify;
  -moz-justify-content: space-between;
  -webkit-justify-content: space-between;
  justify-content: space-between;
}
.flexbox.align-start {
  -ms-flex-align: start;
  -moz-align-items: flex-start;
  -webkit-align-items: flex-start;
  align-items: flex-start;
}
.flexbox.align-end {
  -ms-flex-align: end;
  -moz-align-items: flex-end;
  -webkit-align-items: flex-end;
  align-items: flex-end;
}
.flexbox.align-center {
  -ms-flex-align: center;
  -moz-align-items: center;
  -webkit-align-items: center;
  align-items: center;
}
.flexbox.flex-all > *,
[flex] {
  -ms-flex: 1;
  -moz-flex: 1;
  -webkit-flex: 1;
  flex: 1;
}
.flexbox > content[flex]::-webkit-distributed(*) {
  -ms-flex: 1;
  -moz-flex: 1;
  -webkit-flex: 1;
  flex: 1;
}
.flexbox > .align-start {
  -moz-align-self: flex-start;
  -webkit-align-self: flex-start;
  align-self: flex-start;
}
.flexbox > content::-webkit-distributed(.align-start) {
  -moz-align-self: flex-start;
  -webkit-align-self: flex-start;
  align-self: flex-start;
}
.flexbox > .align-end {
  -moz-align-self: flex-end;
  -webkit-align-self: flex-end;
  align-self: flex-end;
}
.flexbox > content::-webkit-distributed(.align-end) {
  -moz-align-self: flex-end;
  -webkit-align-self: flex-end;
  align-self: flex-end;
}
.flexbox > .align-center {
  -moz-align-self: center;
  -webkit-align-self: center;
  align-self: center;
}
.flexbox > content::-webkit-distributed(.align-center) {
  -moz-align-self: center;
  -webkit-align-self: center;
  align-self: center;
}
@host {
  .flexbox {
    display: -ms-flexbox;
    display: -moz-flex;
    display: -webkit-flex;
    display: flex;
  }
  .inline-flexbox {
    display: -ms-inline-flexbox;
    display: -moz-inline-flex;
    display: -webkit-inline-flex;
    display: inline-flex;
  }
  .flexbox.row {
    -ms-flex-direction: row;
    -moz-flex-direction: row;
    -webkit-flex-direction: row;
    flex-direction: row;
  }
  .flexbox.col {
    -ms-flex-direction: column;
    -moz-flex-direction: column;
    -webkit-flex-direction: column;
    flex-direction: column;
  }
  .flexbox.justify-start {
    -ms-flex-pack: start;
    -moz-justify-content: flex-start;
    -webkit-justify-content: flex-start;
    justify-content: flex-start;
  }
  .flexbox.justify-end {
    -ms-flex-pack: end;
    -moz-justify-content: flex-end;
    -webkit-justify-content: flex-end;
    justify-content: flex-end;
  }
  .flexbox.justify-center {
    -ms-flex-pack: center;
    -moz-justify-content: center;
    -webkit-justify-content: center;
    justify-content: center;
  }
  .flexbox.justify-between {
    -ms-flex-pack: justify;
    -moz-justify-content: space-between;
    -webkit-justify-content: space-between;
    justify-content: space-between;
  }
  .flexbox.align-start {
    -ms-flex-align: start;
    -moz-align-items: flex-start;
    -webkit-align-items: flex-start;
    align-items: flex-start;
  }
  .flexbox.align-end {
    -ms-flex-align: end;
    -moz-align-items: flex-end;
    -webkit-align-items: flex-end;
    align-items: flex-end;
  }
  .flexbox.align-center {
    -ms-flex-align: center;
    -moz-align-items: center;
    -webkit-align-items: center;
    align-items: center;
  }
  .flexbox.flex-all > *,
  [flex] {
    -ms-flex: 1;
    -moz-flex: 1;
    -webkit-flex: 1;
    flex: 1;
  }
  .flexbox > content[flex]::-webkit-distributed(*) {
    -ms-flex: 1;
    -moz-flex: 1;
    -webkit-flex: 1;
    flex: 1;
  }
  .flexbox > .align-start {
    -moz-align-self: flex-start;
    -webkit-align-self: flex-start;
    align-self: flex-start;
  }
  .flexbox > content::-webkit-distributed(.align-start) {
    -moz-align-self: flex-start;
    -webkit-align-self: flex-start;
    align-self: flex-start;
  }
  .flexbox > .align-end {
    -moz-align-self: flex-end;
    -webkit-align-self: flex-end;
    align-self: flex-end;
  }
  .flexbox > content::-webkit-distributed(.align-end) {
    -moz-align-self: flex-end;
    -webkit-align-self: flex-end;
    align-self: flex-end;
  }
  .flexbox > .align-center {
    -moz-align-self: center;
    -webkit-align-self: center;
    align-self: center;
  }
  .flexbox > content::-webkit-distributed(.align-center) {
    -moz-align-self: center;
    -webkit-align-self: center;
    align-self: center;
  }
}
