/*!
 *  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.
 */

html,
body
  -webkit-font-smoothing: antialiased
  font-family: 'Roboto', arial, sans-serif
  background: #efefef
  margin: 0
  padding: 0

.body
  background: #fff
  max-width: 1440px
  margin: 0 auto
  padding-top: 130px

  &:not(.body--index)
    .body__contained
      padding: 0 30px
      max-width: 1280px

      figure
        img
          width: 100%

.section
  &:not(.section--wide)
    padding-right: $pad
    padding-left: $pad
    max-width: 1280px
    margin-right: auto
    margin-left: auto

  .section__contained
    +contained

  a
    color: $color-brand

.body__section-nav
  margin-left: 256px
  width: calc(100% - 492px)

  > [id]:before
    content: ''
    display: block
    height: 82px // fixed header height
    margin: -82px 0 0 // negative fixed header height

  @media (max-width: $ak-breakpoint-lg)
    margin-left: 0
    width: 100%

.container-main-content
  padding: 0 20px
  position: relative