/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
@import "colors";
@import "media";

.install {
  .page-subtitle {
    margin-bottom: 45px;
  }

  &--headers-wrapper {
    max-width: 936px;
    margin: 0 auto;
  }

  &--description {
    @extend .bodytext__medium--brownish-grey;
    text-align: center;
    margin: 45px 0 60px;

    a {
      color: map-get($colors, cerulean-blue);
      text-decoration: underline;
    }
  }

  &__accordions {
    &--wrapper {
      max-width: 900px;
      margin: 60px auto;
    }

    &-content {
      &--header {
        @extend .bodytext__medium--greyish-brown;
        font-weight: 500;
      }

      &--list-wrapper {
        margin-bottom: 40px;
      }

      &--methods-wrapper {
        display: flex;
        margin-bottom: 20px;
      }

      &--method-box {
        display: flex;
        width: 270px;
        height: 160px;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        border: solid 1px #cbcbcb;
        border-radius: 5px;
        margin-right: 40px;
      }
    }
  }
}

@media (max-width: $tablet) {
  .install {
    .page-subtitle {
      margin-bottom: 30px;
    }

    &--headers-wrapper {
      max-width: 580px;
    }

    &--description {
      margin-top: 30px;
      margin-bottom: 30px;
    }

    &__accordions {
      &--wrapper {
        max-width: 580px;
        margin-top: 40px;
        margin-bottom: 0;
      }
    }
  }
}

@media (max-width: $mobile) {
  .install {
    &__accordions {
      &-content {
        &--methods-wrapper {
          flex-direction: column;
          align-items: center;
          margin-bottom: 0;
          margin-right: -36px;
        }

        &--method-box {
          margin-right: 0;
          margin-bottom: 20px;
        }
      }
    }
  }
}
