* {
  box-sizing: border-box;
}

/*=====================================================
  contents of: styles/stepper-input.css
  =====================================================*/
.stepperInput {
  /**
   * Setting display to flex makes this container lay
   * out its children using flexbox. By default, it 
   * orders items horizontally, top-aligned.
   * This has a similar effect to setting the children
   * to have display: inline-block.
   */
  display: -ms-flexbox;
  display: flex;
}

  .stepperInput__input {
    border-left: 0;
    border-right: 0;
    width: 60px;
    text-align: center;
  }

.button {
  cursor: pointer;
  padding: 5px 15px;
  color: #FFFFFF;
  background-color: #4EBBE4;
  font-size: 12px;
  border: 1px solid #16A2D7;
  border-radius: 4px;
}

.button--addOnLeft {
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}

.button--addOnRight {
  border-top-left-radius: 0;
  border-bottom-left-radius: 0;
}

.input {
  border: 1px solid #D7DBDD;
  padding: 0 10px;
  border-radius: 0;
  box-shadow: none;
}
/*=====================================================
  contents of: styles/tabs.css
  =====================================================*/
.tabs {
  /**
   * Setting display to flex makes this container lay
   * out its children using flexbox, the exact same
   * as in the above "Stepper input" example.
   */
  display: -ms-flexbox;
  display: flex;

  border-bottom: 1px solid #D7DBDD;
}

  .tab {
    cursor: pointer;
    padding: 5px 30px;
    color: #16A2D7;
    font-size: 12px;
    border-bottom: 2px solid transparent;
  }

  .tab.is-tab-selected {
    border-bottom-color: #4EBBE4;
  }

/*=====================================================
  contents of: styles/site-header.css
  =====================================================*/
.siteHeader {
  /**
   * Lay out the children of this container with
   * flexbox, which is horizontal by default.
   */
  display: -ms-flexbox;
  display: flex;

  /**
   * Make the container put as much space as possible
   * between its children, with the children at either
   * end laying flush against the container's edges.
   */
  -ms-flex-pack: justify;
      justify-content: space-between;

  padding: 10px;
  background-color: #56727C;
}

  .siteHeader__section {
    /**
     * Lay out the children of this container with
     * flexbox.
     */
    display: -ms-flexbox;
    display: flex;

    /**
     * Align the children in the center, along
     * the main axis. By default the children will
     * align along their top edges.
     */
    -ms-flex-align: center;
        align-items: center;
  }

    .siteHeader__item {
      padding: 5px 15px;
      font-size: 12px;
    }

    .siteHeader__item + .siteHeader__item {
      margin-left: 5px;
    }

    .siteHeader__item.is-site-header-item-selected {
      color: #FFFFFF;
      background-color: #415F69;
      border-radius: 4px;
    }

    .siteHeaderLogo {
      font-size: 20px;
      line-height: 0;
      color: white;
    }

    .siteHeaderButton {
      cursor: pointer;
      color: #D9E9EF;
    }

/*=====================================================
  contents of: styles/form-footer.css
  =====================================================*/
.formFooter {
  /**
   * Lay out the children of this container with
   * flexbox, which is horizontal by default.
   */
  display: -ms-flexbox;
  display: flex;

  /**
   * Make the container put as much space as possible
   * between its children, with the children at either
   * end laying flush against the container's edges.
   */
  -ms-flex-pack: justify;
      justify-content: space-between;

  /**
   * Align the children in the center, along
   * the main axis, which is horizontal in this case.
   */
  -ms-flex-align: center;
      align-items: center;

  border-top: 1px solid #D7DBDD;
  padding: 10px;
}

  .formFooter__section {
    /**
     * This container orders items horizontally.
     */
    display: -ms-flexbox;
    display: flex;

    /**
     * It aligns them vertically in the center.
     */
    -ms-flex-align: center;
        align-items: center;
  }

    .formFooter__item + .formFooter__item {
      margin-left: 5px;
    }

    .formFooterFeedback {
      color: #86969C;
      font-size: 12px;
      line-height: 0;
    }

    .formFooterSpinner {
      animation: formFooterSpinner 1s infinite steps(8, end);
    }

@keyframes formFooterSpinner {
  0%   { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

.button--clear {
  color: #16A2D7;
  background-color: #FFFFFF;
  border: 1px solid #FFFFFF;
}

/*=====================================================
  contents of: styles/post.css
  =====================================================*/
.post {
  /**
   * Lay out the children of this container with
   * flexbox, which is horizontal by default.
   */
  display: -ms-flexbox;
  display: flex;
}

.postUser {
  /**
   * The flex property is a short-hand for setting
   * the flex-grow, flex-shrink, and flex-basis
   * properties. These properties control how the
   * element resizes to fill its container.
   *
   * The value we're using here is actually the
   * default, but I'm including so I can explain it
   * a bit. The default value equates to:
   *
   * - flex-grow: 0
   * - flex-shrink: 1
   * - flex-basis: auto
   *
   * We set flex-grow to 0, so this element won't
   * expand to fill its container.
   *
   * We'll then set flex-shrink to 1 so that the
   * element will shrink as its container gets
   * smaller. However, it will only shrink so far
   * because...
   *
   * ...we set flex-basis to auto. This causes
   * the content's size to also be a factor in the
   * calculation of the element's size. Because
   * the width of a child element is set (below),
   * this element won't shrink below that size.
   *
   * The net result is that this element stays a
   * fixed size, neither expanding nor shrinking.
   */
  -ms-flex: 0 1 auto;
      flex: 0 1 auto;

  padding-bottom: 10px;
}

  .postUser__portrait {
    /**
     * We're using these three flexbox properties
     * here to center the portrait icon inside of
     * this element.
     *
     * We'll explore these properties in more detail
     * in the "Stay Centered" section, so I'll only
     * briefly summarize here:
     *
     * - display: flex instructs the browser to
     *   use flexbox to lay out this element's
     *   children.
     * - justify-content: center will center the
     *   icon along the main axis.
     * - align-items: center will center the icon
     *   along the secondary (perpendicular) axis.
     */
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
    -ms-flex-align: center;
        align-items: center;

    width: 100px;
    height: 90px;
    font-size: 70px;
    line-height: 0;
  }

  .postUser__name {
    color: #57727C;
    font-size: 12px;
    font-weight: 700;
    line-height: 1;
    text-align: center;
  }

.postBody {
  /**
   * We'll use the short-hand flex property again
   * here, to make the body of the post expand to
   * fill the container, and shrink as the container
   * becomes narrower.
   *
   * By setting flex-grow to 1, we cause this
   * element to expand to fill the container.
   *
   * Setting flex-shrink to 1 causes this element
   * to shrink with the container.
   *
   * Last, we set flex-basis to 0 so that its
   * size is solely determined by the size of
   * the container. (The default value is auto,
   * which would cause the content's size to also
   * be a factor in this calculation.)
   *
   * The net result of these properties is that the
   * element is a fluid size, and will expand and
   * shrink with its container.
   *
   * NOTE: IE11 ignores flex short-hand declarations
   * with unitless flex-basis values. So we have to
   * use 0% instead of 0 as a workaround. You can
   * find more info at:
   * github.com/philipwalton/flexbugs.
   */
  -ms-flex: 1 1 0%;
      flex: 1 1 0%;

  position: relative;
  padding: 15px;
  border: 1px solid #CAD0D2;
  border-radius: 4px;
}

.postBody:after,
.postBody:before {
  right: 100%;
  top: 35px;
  border: solid transparent;
  content: " ";
  height: 0;
  width: 0;
  position: absolute;
  pointer-events: none;
}

.postBody:after {
  border-color: transparent;
  border-right-color: #ffffff;
  border-width: 8px;
  margin-top: -8px;
}

.postBody:before {
  border-color: transparent;
  border-right-color: #CAD0D2;
  border-width: 9px;
  margin-top: -9px;
}

  .postBody__content {
    color: #57727C;
    font-size: 12px;
  }

  .postBody__date {
    margin-top: 5px;
    color: #86969C;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 1px;
  }

/*=====================================================
  contents of: styles/side-bar.css
  =====================================================*/
.sideBar {
  /**
   * This container orders items according to flexbox
   * rules. By default, this would arrange its children
   * horizontally. However, the next property...
   */
  display: -ms-flexbox;
  display: flex;

  /**
   * ...sets the main axis to be vertical instead of
   * horizontal, so now the children are laid out
   * vertically, from top to bottom.
   */
  -ms-flex-direction: column;
      flex-direction: column;

  /**
   * It will also put as much space as possible
   * between its children, with the children at either end
   * laying flush against the container's edges.
   */
  -ms-flex-pack: justify;
      justify-content: space-between;

  height: 300px;
  width: 150px;
  border-right: 1px solid #D7DBDD;
  background-color: #FCFDFD;
  padding: 10px;
}

  .sideBar__item {
    cursor: pointer;
    padding: 5px 10px;
    color: #16A2D7;
    font-size: 12px;
  }

  .sideBar__item.is-side-bar-item-selected {
    background-color: #EEF3F5;
    border-radius: 4px;
  }

/*=====================================================
  contents of: styles/centered-prompt.css
  =====================================================*/
.centeredPrompt {
  /**
   * Lay out the children of this container with
   * flexbox.
   */
  display: -ms-flexbox;
  display: flex;

  /**
   * Rotate the main axis so that the children
   * are laid out vertically, the same as in the
   * above "Side bar" example.
   */
  -ms-flex-direction: column;
      flex-direction: column;

  /**
   * Instead of pushing the children apart, as in
   * previous examples, we will group them together
   * in the center of their container.
   */
  -ms-flex-pack: center;
      justify-content: center;

  /**
   * Align the children in the center, along
   * the main axis. Because the direction is
   * "column" this has a similar effect as setting
   * text-align: center.
   */
  -ms-flex-align: center;
      align-items: center;

  min-height: 300px;
  padding: 10px;
}

  .centeredPrompt__item + .centeredPrompt__item {
    margin-top: 5px;
  }

    .centeredPromptIcon {
      font-size: 60px;
      line-height: 0;
    }

    .centeredPromptLabel {
      color: #86969C;
      font-size: 30px;
      font-weight: 700;
      text-align: center;
    }

    .centeredPromptDetails {
      color: #86969C;
      font-size: 16px;
      margin-bottom: 10px;
      text-align: center;
    }

.icon {
  color: #BCD2DA;
}

/*=====================================================
  contents of: styles/centered-icon.css
  =====================================================*/
.centeredIcon {
  /**
   * Lay out the children of this container with
   * flexbox.
   */
  display: -ms-flexbox;
  display: flex;

  /**
   * As in the above "Centered prmopt" example,
   * we'll rotate the main axis so that the children
   * are ordered vertically.
   */
  -ms-flex-direction: column;
      flex-direction: column;

  /**
   * Same thing here as before: group the children
   * together in the center of their container.
   */
  -ms-flex-pack: center;
      justify-content: center;

  /**
   * Just like in the "Centered prmopt" example,
   * align the children in the center, along the
   * main axis.
   */
  -ms-flex-align: center;
      align-items: center;

  border: 1px solid #D7DBDD;
  font-size: 40px;
  width: 90px;
  height: 90px;
  border-radius: 100%;
  box-shadow:
    0 2px 1px rgba(0, 0, 0, 0.05),
    0 2px 3px rgba(0, 0, 0, 0.05),
    0 4px 8px rgba(0, 0, 0, 0.05);
}

/*=====================================================
  contents of: styles/feature-list.css
  =====================================================*/
.featureListItem {
  /**
   * Lay out the children of this container with
   * flexbox, which is horizontal by default.
   */
  display: -ms-flexbox;
  display: flex;

  /**
   * Align the children in the center, along
   * the main axis, which is horizontal in this case.
   */
  -ms-flex-align: center;
      align-items: center;

  max-width: 400px;
  padding: 10px;
}

.featureListItem + .featureListItem {
  border-top: 1px solid #D7DBDD;
}

.featureListItem--reverse {
  /**
   * We can specify the flex-direction so that
   * the children elements are displayed in the
   * reverse order of how they appear in the
   * markup.
   */
  -ms-flex-direction: row-reverse;
      flex-direction: row-reverse;
}

  .featureListItem__icon,
  .featureListItem__description {
    padding: 5px 15px;
  }

  .featureListItem__icon {
    font-size: 50px;
    line-height: 0;
  }

  .featureListItem__description {
    color: #57727C;
    font-size: 12px;
  }

/*=====================================================
  contents of: styles/stream.css
  =====================================================*/
.stream {
  /**
   * Lay out the children of this container with
   * flexbox.
   */
  display: -ms-flexbox;
  display: flex;

  /*
   * Set the main axis to be vertical, but present
   * the children in reverse order of that in which
   * they occur in the DOM.
   */
  -ms-flex-direction: column-reverse;
      flex-direction: column-reverse;
}

.post + .post {
  margin-bottom: 5px;
}

/*=====================================================
  contents of: styles/card.css
  =====================================================*/
.card {
  /**
   * Lay out the children of this container with
   * flexbox, which is horizontal by default.
   */
  display: -ms-flexbox;
  display: flex;

  /**
   * Rotate the main axis so that the children
   * are laid out vertically.
   */
  -ms-flex-direction: column;
      flex-direction: column;

  border: 1px solid #CAD0D2;
  border-radius: 4px;
  overflow: hidden;
}

  .card__description {
    /**
     * Lay out the children of this container with
     * flexbox.
     */
    display: -ms-flexbox;
    display: flex;

    /**
     * We're going to lay out this element's children
     * just like in the "Centered prompt" example.
     * First we'll rotate the main axis so that the
     * children are laid out vertically.
     */
    -ms-flex-direction: column;
        flex-direction: column;

    /**
     * Just like in the "Centered prompt", we'll
     * group the children in the center of their
     * container.
     */
    -ms-flex-pack: center;
        justify-content: center;

    /**
     * And just like in the "Centered prompt" example,
     * we'll align the children in the center, along
     * the main axis.
     */
    -ms-flex-align: center;
        align-items: center;

    padding: 15px 0;
  }

    .card__descriptionIcon {
      font-size: 32px;
      margin-bottom: 10px;
    }

    .card__descriptionText {
      color: #57727C;
      font-size: 12px;
      text-align: center;
      max-width: calc(100% - 30px);
    }

  .card__price {
    text-align: center;
    color: #57727C;
    font-size: 12px;
    font-weight: 700;
    padding: 5px 15px;
    border-top: 1px solid #D7DBDD;
    background-color: #EEF3F5;
  }

.card--fixedWidth {
  max-width: 120px;
}

/*=====================================================
  contents of: index.css
  =====================================================*/
/*=====================================================
  contents of: styles/card-group.css
  =====================================================*/
.cardGroup {
  /**
   * Lay out the children of this container with
   * flexbox, which is horizontal by default.
   */
  display: -ms-flexbox;
  display: flex;

  border: 1px solid #CAD0D2;
  border-radius: 4px;
  overflow: hidden;
}

  .cardGroup__card {
    /**
     * The flex property is a short-hand for setting
     * the flex-grow, flex-shrink, and flex-basis
     * properties. These properties control how the
     * element resizes to fill its container.
     *
     * We'll set flex-grow to 1 so that it will
     * expand to fill its container. (The default
     * default value is 0.)
     *
     * We'll also set flex-shrink to 1 so that the
     * element will shrink as its container gets
     * smaller. (The default value is 1.)
     *
     * Last, we set flex-basis to 0 so that its
     * size is solely determined by the size of
     * the container. (The default value
     * is auto, which would cause the content's
     * size to also be a factor in this calculation.)
     *
     * The net result of these properties is that the
     * element is a fluid size, and will expand and
     * shrink with its container and siblings, but
     * they will all have the same size, even if they
     * have different amounts of content.
     *
     * NOTE: IE11 ignores flex short-hand declarations
     * with unitless flex-basis values. So we have to
     * use 0% instead of 0 as a workaround. You can
     * find more info at:
     * github.com/philipwalton/flexbugs.
     */
    -ms-flex: 1 1 0%;
        flex: 1 1 0%;

    border: none;
    border-radius: 0;
  }

  .cardGroup__card + .cardGroup__card {
    border-left: 1px solid #D7DBDD;
  }

  .cardGroup__cardDescription {
    /**
     * We're doing almost the exact same thing here as
     * we did above. The difference is that its
     * flex-basis is auto, so now the size of its content
     * will affect how large it is.
     */
    -ms-flex: 1 1 auto;
        flex: 1 1 auto;
  }

/*=====================================================
  contents of: styles/photo.css
  =====================================================*/
.photo {
  /**
   * Lay out the children of this container with
   * flexbox, which is horizontal by default.
   */
  display: -ms-flexbox;
  display: flex;

  /**
   * Align all the children to the end of the main
   * axis. This is the right side, by default.
   */
  -ms-flex-pack: end;
      justify-content: flex-end;

  /**
   * Align all the children to the end of the
   * secondary axis. This is the bottom, by default.
   */
  -ms-flex-align: end;
      align-items: flex-end;

  width: 145px;
  margin: 5px;
  padding: 5px 10px;
  font-size: 18px;
  font-weight: bold;
  text-shadow: 0 2px 3px rgba(0, 0, 0, 0.5);
  color: #FFFFFF;
  background-size: cover;
  background-position: center;
  border-radius: 4px;
}

.photo--large {
  height: 130px;
}

.photo1 {
  background-image: url('images/dog_1.jpg');
}

/*=====================================================
  contents of: styles/gallery.css
  =====================================================*/
.gallery {
  /**
   * Lay out the children of this container with
   * flexbox, which is horizontal by default.
   */
  display: -ms-flexbox;
  display: flex;

  /**
   * Allow the children to wrap to the next "row",
   * instead of trying to squeeze them all into
   * a single row.
   */
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;

  width: 478px;
  padding: 5px;
  border: 1px solid #D7DBDD;
}

.photo2 {
  background-image: url('images/dog_2.jpg');
}

.photo3 {
  background-image: url('images/dog_3.jpg');
}

.photo4 {
  background-image: url('images/dog_4.jpg');
}

.photo5 {
  background-image: url('images/dog_5.jpg');
}

.photo6 {
  background-image: url('images/dog_1.jpg');
}

.photo7 {
  background-image: url('images/dog_2.jpg');
}

.photo8 {
  background-image: url('images/dog_3.jpg');
}

.photo9 {
  background-image: url('images/dog_4.jpg');
}

.photo10 {
  background-image: url('images/dog_5.jpg');
}

/*=====================================================
  contents of: styles/mosaic.css
  =====================================================*/
.mosaic {
  /**
   * Lay out the children of this container with
   * flexbox, which is horizontal by default.
   */
  display: -ms-flexbox;
  display: flex;

  /**
   * Set the main axis to be vertical instead of
   * horizontal, so now the children are laid out
   * vertically, from top to bottom.
   */
  -ms-flex-direction: column;
      flex-direction: column;

  /**
   * Now when the children wrap, they'll wrap to the
   * next "column".
   */
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;

  width: 478px;
  height: 370px;
  padding: 6px;
  border: 1px solid #D7DBDD;
  overflow: auto;
}

.photo:last-child {
  /**
   * This is the first part of a flexbox hack.
   * It addresses a problem flexbox has with scrolling
   * content. Without this hack, the children on the
   * far right of the container will be flush against
   * the container's right edge.
   */
  position: relative;
}

.photo:last-child::after {
  /**
   * This is the second part of the hack. It creates
   * an invisible element on the last child that
   * forces a space between the child and the right
   * edge of the container.
   */
  display: block;
  width: 11px;
  height: 1px;
  position: absolute;
  top: 0;
  left: 100%;
  visibility: hidden;
  content: "";
}

.photo--small {
  height: 70px;
}

.photo--medium {
  height: 90px;
}

.photo11 {
  background-image: url('images/dog_1.jpg');
}

.photo12 {
  background-image: url('images/dog_2.jpg');
}

.photo13 {
  background-image: url('images/dog_3.jpg');
}

.photo14 {
  background-image: url('images/dog_4.jpg');
}


