@keyframes fade-in {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

.c-header {
    $layer = 1000;

    flexbox();
    align-items: center;
    position: relative;
    width: 100%;
    height: 86px;
    padding-left: 20px;
    padding-right: @padding-left;
    background-color: #fff;
    box-shadow: 0px 1px 0px 0px $color--gray-2;
    color: $color--main-dark;
    transition: background-color .4s ease-out;

    @media (min-width: $screen--lg) {
        padding-left: 30px;
        padding-right: 30px;
    }

    &--fixed {
        position: fixed;
        top: 0;
        left: 0;
        right: 0;
        z-index: $layer;
    }

    &--dark {
        background-color: $color--main-dark;
        box-shadow: none;
        color: #fff;

        .c-header {
            &__menu-icon {
                background-color: @background-color;
                color: #fff;
            }

            &__nav-item:hover {
                color: inherit;
                text-decoration: underline;
            }

            &__user {
                &-arrow {
                    color: inherit;
                }

                &-link:hover {
                    color: inherit;
                    text-decoration: underline;
                }
            }
        }
    }

    &--transparent {
        &-light {
            background-color: transparent;
            box-shadow: none;

            &.c-header--fixed.has-scrolled {
                background-color: #fff;
                box-shadow: 0px 1px 0px 0px $color--gray-2;
            }
        }

        &-dark {
            @extends .c-header--dark;
            background-color: transparent;
            box-shadow: none;

            .c-header__menu-icon {
                background-color: $color--gray-3;
                color: $color--gray-1;
            }

            &.c-header--fixed.has-scrolled {
                background-color: $color--main-dark;

                .c-header__menu-icon {
                    background-color: @background-color;
                    color: #fff;
                }
            }
        }
    }

    &__logo {
        flex: 1 0 0;
        margin-left: -40px;
        padding-left: 40px;
        padding-right: @padding-left;
        text-align: center;

        @media (min-width: $screen--lg) {
            flex: 0;
            margin: 0;
            padding: 0;
            text-align: left;
        }

        &-img {
            height: 38px;
            max-width: none;
        }
    }

    &__menu {
        flexbox();
        flex-direction: column;
        position: fixed;
        top: 0;
        left: 0;
        z-index: $layer + 1;
        height: 100vh;
        width: 360px;
        padding: 20px;
        background-color: #fff;
        transform: translate(-(@width), 0);
        font-size: 16px;
        color: $color--main-dark;
        transition: transform .4s ease-out;

        &.is-open {
            transform: translate(0);
            box-shadow: 1px 0px 0px 0px $color--gray-2;
        }

        @media (min-width: $screen--lg) {
            flex: 1 0 0;
            flex-direction: row;
            align-items: center;
            justify-content: flex-end;
            position: static;
            height: auto;
            width: auto;
            padding: 0;
            padding-left: 72px;
            background-color: transparent;
            transform: none;
            transition: none;
            color: inherit;

            &.is-open {
                box-shadow: none;
            }
        }

        &-header {
            margin-bottom: 48px;

            @media (min-width: $screen--lg) {
                display: none;    
            }

            .c-header__menu-icon {
                background-color: $color--gray-3;
                color: $color--gray-1;
            }
        }

        &-btn {
            position: relative;
            padding: 0;

            @media (min-width: $screen--lg) {
                display: none;
            }
        }

        &-icon {
            display: block;
            width: 40px;
            height: @width;
            padding: 8px;
            background-color: $color--gray-3;
            border-radius: 50em;
            font-size: 24px;
            color: $color--gray-1;
            transition: .4s ease-out;

            &--sm {
                position: absolute;
                top: 20px;
                left: 30px;
                width: 20px;
                height: @width;
                padding: 2px;
                font-size: 16px;
            }
        }
    }

    &__nav {
        order: 1;

        @media (min-width: $screen--lg) {
            flex: 1 0 0;
            order: 0;
        }

        &-item {
            display: block;
            color: inherit;
            line-height: 1.5;

            &:hover {
                color: $color--main;
                text-decoration: none;
            }

            @media (min-width: $screen--lg) {
                display: inline;
            }

            & + & {
                margin-top: 30px;

                @media (min-width: $screen--lg) {
                    margin-top: 0;
                    margin-left: 30px;
                }
            }
        }
    }

    &__avatar {
        width: 24px;
        height: @width;
        border-radius: 50em;

        &--lg {
            width: 40px;
            height: 40px;    
        }

        &-icon {
            font-size: 40px;    
        }
    }

    &__user {
        position: relative;
        margin-bottom: 10px;

        &--authenticated {
            @media (min-width: $screen--lg) {
                margin-right: -20px;
            }
        }

        &.is-active {
            .c-header__user {
                &-btn {
                    color: $color--main-dark;    
                }
                &-arrow {
                    transform: rotate(180deg);
                }
            }
        }

        @media (min-width: $screen--lg) {
            margin-bottom: 0;
            margin-left: 20px;

            &.is-active {
                background-color: $color--gray-3;
                border-radius: 4px 4px 0 0;
            }
        }

        &-btn {
            flexbox();
            align-items: center;
            padding: 20px 10px;
            width: 244px;
            background: none;
            border-radius: 4px;
            border: none;
            cursor: pointer;
            font-size: inherit;
            text-align: left;
            transition: .2s ease-out;

            &:hover {
                color: $color--main;

                .c-header__user-arrow {
                    color: inherit;
                }
            }
            
            @media (min-width: $screen--lg) {
                padding: 20px;

                &:hover {
                    background-color: $color--gray-3;    
                }
            }
        }

        &-name {
            flex: 1 0 0;
            margin-left: 5px;
            margin-right: @margin-left;
            line-height: 1.5;
            text-ellipsis();
            font-weight: $font--bold;
        }

        &-icon {
            font-size: 24px;
        }

        &-arrow {
            color: $color--gray-1;
            transition: transform .2s ease-out;
        }

        &-menu {
            reset-list();
            padding-bottom: 8px;
            animation: fade-in .2s ease-out;

            @media (min-width: $screen--lg) {
                position: absolute;
                top: 100%;
                width: 100%;
                padding-top: 11px;
                background-color: $color--gray-3;
            }
        }

        &-item {
            display: block;
            padding: 17px;
            padding-left: 5px;
            font-size: 13px;
            color: $color--gray-1;
            font-weight: bold;
            text-transform: uppercase;
            line-height: 1.5;

            &:hover {
                color: $color--main;
                text-decoration: none;
            }

            @media (min-width: $screen--lg) {
                padding-left: 30px;
            }
        }

        &-link {
            display: block;
            margin-bottom: 30px;
            color: inherit;
            font-weight: $font--bold;

            &:hover {
                color: $color--main;
                text-decoration: none;    
            }

            @media (min-width: $screen--lg) {
                display: inline;    
            }

            &-divider {
                display: none;
                margin-left: 8px;
                margin-right: @margin-left;
                font-weight: $font--bold;

                @media (min-width: $screen--lg) {
                    display: inline-block;
                }
            }
        }
    }

    &__extra {
        order: 2;
        margin-top: 20px;

        @media (min-width: $screen--lg) {
            order: 0;
            margin-top: 0;
            margin-left: 20px;
        }    
    }
}