/*
 ▄▄▄       ██▓███   ▄▄▄       ▄████▄   ██░ ██ ▓█████     ██▓  ▄████  ███▄    █  ██▓▄▄▄█████▓▓█████
▒████▄    ▓██░  ██▒▒████▄    ▒██▀ ▀█  ▓██░ ██▒▓█   ▀    ▓██▒ ██▒ ▀█▒ ██ ▀█   █ ▓██▒▓  ██▒ ▓▒▓█   ▀
▒██  ▀█▄  ▓██░ ██▓▒▒██  ▀█▄  ▒▓█    ▄ ▒██▀▀██░▒███      ▒██▒▒██░▄▄▄░▓██  ▀█ ██▒▒██▒▒ ▓██░ ▒░▒███
░██▄▄▄▄██ ▒██▄█▓▒ ▒░██▄▄▄▄██ ▒▓▓▄ ▄██▒░▓█ ░██ ▒▓█  ▄    ░██░░▓█  ██▓▓██▒  ▐▌██▒░██░░ ▓██▓ ░ ▒▓█  ▄
 ▓█   ▓██▒▒██▒ ░  ░ ▓█   ▓██▒▒ ▓███▀ ░░▓█▒░██▓░▒████▒   ░██░░▒▓███▀▒▒██░   ▓██░░██░  ▒██▒ ░ ░▒████▒
 ▒▒   ▓▒█░▒▓▒░ ░  ░ ▒▒   ▓▒█░░ ░▒ ▒  ░ ▒ ░░▒░▒░░ ▒░ ░   ░▓   ░▒   ▒ ░ ▒░   ▒ ▒ ░▓    ▒ ░░   ░░ ▒░ ░
  ▒   ▒▒ ░░▒ ░       ▒   ▒▒ ░  ░  ▒    ▒ ░▒░ ░ ░ ░  ░    ▒ ░  ░   ░ ░ ░░   ░ ▒░ ▒ ░    ░     ░ ░  ░
  ░   ▒   ░░         ░   ▒   ░         ░  ░░ ░   ░       ▒ ░░ ░   ░    ░   ░ ░  ▒ ░  ░         ░
      ░  ░               ░  ░░ ░       ░  ░  ░   ░  ░    ░        ░          ░  ░              ░  ░
*/

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

// Flat colors.
$color-turquoise: #1abc9c;
$color-emerald: #2ecc71;
$color-river: #3498db;
$color-amethyst: #9b59b6;
$color-asphalt: #34495e;
$color-sea: #16a085;
$color-nephritis: #27ae60;
$color-belize: #2980b9;
$color-wisteria: #8e44ad;
$color-midnight: #2C3E50;
$color-sunflower: #F1C40F;
$color-orange: #F39C12;
$color-carrot: #E67E22;
$color-pumpkin: #D35400;
$color-alizarin: #E74C3C;
$color-pomegranate: #C0392B;
$color-cloud: #ECF0F1;
$color-silver: #BDC3C7;
$color-concrete: #95A5A6;
$color-asbestos: #7F8C8D;

.syntaxhighlighter {
    padding: 10px 5px;
    border-radius: 6px;
}

div.toolbar {
    display: none;
}

div, p, h1, h2, h3, span, body, html, ul, li {
    font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
    font-size: 18px;
}

.carousel {
    min-height: 500px;
}

.screencast {
    border: 1px #ddd solid;
}

#overview h2,
#askquestion h2,
#sqlqueries h2,
#startdata h2,
#startcompute h2 {
    padding: 0 0 20px 0;
    line-height: 1.2em;
}

h3, .h3 {
    font-size: 22px;
    color: #333;
}

p {
    line-height: 1.2em;
    color: #333;
    font-size: 18px;
}

sup, sub {
    height: 0;
    line-height: 1;
    font-size: smaller;
    vertical-align: baseline;
    position: relative;
}

sup { bottom: 0.8ex; }
sub { top: 0.5ex; }

#overview {
    margin: -38px 0 0;
    padding-top: 80px;
}

.carousel-inner p {
    color: #fff;
}

.carousel .img-holder {
    margin: 0;

    img {
        width: auto;
        height: auto;
    }
}

div#banner1 {
    & p {
        padding-bottom: 40px;
        font-size: 24px;
    }
}

#documentation table,
#download table,
#benchmarks table {
    & > tbody > tr > th {
        text-align: center;
        background-color: $color-asphalt;
        color: #fff;
    }

    &,
    & > tbody > tr > tr,
    & > tbody > tr > th,
    & > tbody > tr > td {
        border: 1px solid $color-asphalt;

        &:first-child {
            padding: 5px 20px
        }
    }

    ul#javadoc,
    ul#docs,
    ul#videos {
        margin: 0;
        padding: 4px 0;
        list-style: none;

        & > li {
            padding-bottom: 4px;
        }
    }
}
#benchmarks table {
    margin-bottom: 35px
}
#benchmarks section {
    padding: 90px 0 0 0;
    margin-top: -40px;
    border-bottom: 2px dotted #ddd;

    &.first-section {
        margin-top: 0;
    }
}
#benchmarks img {
    margin: 0;
}
#community,
#askquestion {
    ul#lists {
        margin: 0;
        padding: 4px 0;
        list-style: none;

        & > li {
            padding-bottom: 4px;
        }
    }
}

#download table > tbody > tr > td {
    text-align: center;
}

#footer {
    p {
        font-size: 13px;
        text-align: justify;
        text-justify: inter-word;
    }
    .social-networks {
        float: right;
    }
}

.footer-nav > ul {
    padding-left: 50px;

    @media (max-width:$mobile) {
        padding: 5px 0 10px 0;
    }
}

#header {
    background: rgba(54, 54, 54, 0.95);
    top: 0;
}

section.page-section {
    padding: 90px 0 10px 0;
    margin-top: -70px;
    border-bottom: 2px dotted #ddd;
    margin-bottom: 20px;

    table.twosides {
        padding: 0 !important;
        margin: 0 !important;
        border: none !important;

        td {
            padding: 0 !important;
            margin: 0 !important;
            border: none !important;
        }
    }

    h2 {
        font-size: 26px;
        color: #333;
        padding: 0 0 20px 0;
        text-align: left;
    }
    h3 {
            font-size: 20px;
            color: #333;
            padding: 0 0 20px 0;
            text-align: left;
        }

    &:last-child {
        border-bottom: none
    }

    ul.page-list, ol.page-list {
        padding-left: 20px;
        color: #333;

        & > li {
            padding-bottom: 4px;
        }
    }

    div.page-links {
        margin: 20px 0 10px 0px;
        font-weight: bold;
    }

    div.page-heading {
        padding-top: 10px;
        font-weight: 700;
        padding-bottom: 10px;
    }

    .code-examples {
        clear: both;
        margin: 20px 0 10px 0;
    }

    .videos > ul {
        list-style: none;
        padding-left: 0;

        li {
            padding: 3px 0;

            i.fa {
                color: $color-river;
            }
        }

        .video-title {
            padding-left: 10px;
        }

        .video-duration {
            padding-left: 5px;
            color: #aaa;
            font-size: 12px
        }
    }

    .screencasts {
        iframe {
            border: 1px solid #eee;
        }
    }
}

section.page-section .first {
    padding-top: 75px;
}

section.page-section .page-box {
    div.page-left {
        float: left;

        ul.page-list {
            padding-left: 20px;

            & > li {
                padding-bottom: 4px;
            }
        }
    }

    div.page-right {
        padding-top: 10px;
        float: right;
    }
}

.syntaxhighlighter .code,
.syntaxhighlighter .gutter { 
    font-size: 16px !important;
}

img[usemap], map area{
    outline: none;
}

#list table {
    width: auto;

    & > thead > tr {
        background: #f5f5f5;

        & > th {
            text-align: center;
        }
    }

    & > tbody > tr {
        & > td:nth-child(3) {
            text-align: center;
        }
    }
}

.submenu-header {
    display: block;
    font-weight: bold;
    padding: 3px 15px 0 15px;
    font-size: 14px;
    line-height: 1.9;
    white-space: nowrap;
}

.dropdown-menu >li >a {
    font-size: 13px !important;
    font-weight: normal;
    line-height: 1.4;
}

.dropdown-menu >li >a:hover {
    color: $red;
}

.dropdown-menu .last {
    padding-bottom: 3px;
}


.dropdown:hover .dropdown-menu {
    display: block;
    border-radius: 5px 5px 5px 5px ;
}

.dropdown-menu .divider {
    margin: 0;
}

table.overview {
    width: 92% !important;
    border: none !important;
    margin: auto !important;

    & > thead > tr {
        border-bottom: 1px solid grey !important;

        & > th {
            color: #000;
            font-size: 21px !important;
            font-weight: bold;
            border: none !important;
            padding: 20px !important;
        }
        & .left {
            padding-left: 20px !important;
        }
        & .border-right {
            border-right: 1px solid grey !important;
        }
    }

    & > tbody {
        & > tr:nth-child(even){
            background: #f5f5f5;
        }

        & > tr {

            & > td {
                border: none !important;
                font-size: 18px !important;
                font-weight: 400;

                & > p {
                    margin-top :8px;
                    margin-bottom :8px
                }

            }
            & .left {
                padding-left: 20px !important;
            }
            & .border-right {
                border-right: 1px solid grey !important;
            }
        }
    }
}

table.formatted {
    border: 1px solid #ddd !important;
    width: 98% !important;
    margin-bottom: 40px;
    position: relative;

    & > thead > tr {
        background: #cfcfcf;
        border: 1px solid #cfcfcf;

        & > th {
            color: #000;
            font-weight: bold;
            border: none !important;
        }
        & .left {
            padding-left: 20px !important;
        }
    }

    & > tbody {

        & > tr:nth-child(even){
            background: #f5f5f5;
        }

        & > tr {

            & > td {
                border: none !important;

                & > p {
                    margin-top :8px;
                    margin-bottom :8px;
                    @media (max-width: $mobile) {
                        margin-top :0px;
                        margin-right :5px;
                        padding-right: 5px;
                    }
                }

                @media (max-width: $mobile) {
                    white-space: normal !important;
                }
            }

            & .left {
                font-weight: bold;
                padding-left: 20px !important;
            }
        }

        @media (max-width: $mobile) {
            border: none !important;
        }
    }
}

#main table {
    & td {
        @media (max-width: $mobile) {
              margin: 10px 0 5px -110px !important;
              white-space: normal !important;
        }

        & ul {
            @media (max-width: $mobile) {
                padding:0 0 0 20px ! important;
                margin-right: 5px;
            }
        }
    }

    & tr:nth-child(odd) td {
        @media (max-width: $mobile) {
            background-color: white;
        }
    }

    @media (max-width: $mobile) {
        margin: 0 0 20px 0 !important;
    }
}

section.usecase-page-section {
    padding: 90px 0 10px 0;
    margin-top: -70px;

    h2 {
        font-size: 26px;
        color: #333;
        padding: 0 0 20px 0;
        text-align: left;
    }
}

section.usecase-page-section .first {
    padding-top: 75px;
}

.centeredImage {
    display: block;
    margin-left: auto;
    margin-right: auto;
}

.page-menu {

    text-indent: 20px;
    padding: 20px 0 0 0;

    & h3 {
        font-size: 21px !important;
        border-right: 1px solid grey;
        border-bottom: 1px solid grey;
        @media (max-width: $mobile) {
            border: none;
        }
    }

    & ul {
        list-style-type: none;
        padding-left: 0;
        border-right: 1px solid grey;
        @media (max-width: $mobile) {
            border: none;
            padding-bottom: 20px;
        }

        & > li {
            padding-bottom: 10px;
            padding-top: 10px;
            height:40px;
        }

        & > li:nth-child(even) {
            background: #f5f5f5;
            @media (max-width: $mobile) {
                  background: none;
            }
        }
    }

    & .last {
        border-right: none !important;
    }

    & .empty {
        @media (max-width: $mobile) {
              height:0;
              padding:0;
        }
    }

    & .col-sm-4, .col-md-4, .col-xs-12 {
        padding-left: 0;
        padding-right: 0;
    }
}

.dropdown-menu {
    @media (max-width: $mobile) {
        position: relative !important;
    }
}

iframe {
   @media (max-width: $mobile) {
       width : auto;
       height: auto;
   }
}

.carousel .carousel-control {
    @media (max-width: $mobile) {
        visibility: hidden;
    }
}

.carousel {
    @media (max-width: $mobile) {
        min-height: 300px !important;
    }
}

#people {
    & .col-xs-12 {
        @media (max-width: $mobile) {
            padding-right: 0px !important;

            & table.formatted.committers > tbody> tr > td:nth-child(odd) {
                font-weight: 500;
            }
        }
    }
}

.syntaxhighlighter table td.gutter .line {
    @media (max-width: $mobile) {
        display: none !important;
    }
}

.ignite-img {
    margin: 45px;

    @media (max-width: $mobile) {
        margin: 17px;
    }
}

#main table.benchmarks {
    @media screen { 
        @media (max-width: $mobile) {
            & > thead {
                display: block !important;
            }


            & > thead > tr {
                height: 50px;
                & > th {
                    text-align: center;
                    display: block !important;
                }
            }
        }
    }
}

.news-box {
    background: #e8f1fc;
    text-align: left;
    border-radius: 6px;
    padding: 12px 12px 0px 12px;

    h4 {
        font-size: 16px;
        margin-bottom: 12px;
    }

    ul {
        list-style-type: none;
        padding-left: 0px;

        li {
            padding-bottom: 15px;
            font-size: 15px;
            line-height: 1.2em;
            color: #333;
            a {
                color: #333;

                &:hover {
                    text-decoration: underline;
                }
            }
        }
    }

    p {
        font-size: 15px;
        margin-bottom: 5px;
    }
}

.news-box-date {
    font-size: 12px;
    color: #888;
}

.news-date {
    font-size: 15px;
    color: #888;
}

section.news-section {
    h3 {
        padding: 0 0 10px 0;
        line-height: 1.2em;
    }
    p {
        padding-top: 10px;
         a {
           color: #f00;
        }
    }

    a {
        color: #333;
    }
}

.testimonials {
    background: #e8f1fc;
    text-align: left;
    border-radius: 6px;
    padding: 12px 12px 0px 12px;

    h4 {
        font-size: 16px;
        margin-bottom: 12px;
    }

    ul {
        list-style-type: none;
        padding-left: 0px;

        li {
            padding-bottom: 25px;
            font-size: 15px;
            line-height: 1.2em;
            color: #333;
            font-style: italic;
        }
    }
}

.credits {
    font-style: normal;
    font-size: 15px;
}

.video-duration {
    margin: 17px;
    color: #888;
    font-size: 16px;
    line-height: 1.6em;
}

section#chatroom #gitter-badge {
  margin-left: 10px;
}

.delta {
    color: #449d44
}

.img-caption {
    font-size: 13px;
    text-align: center;
    margin-bottom: 0px;
}

.addons-contibutor {
    font-size: 13px;
}

table.features {
    & p {
        margin-bottom: 20px !important;
    }
}

tr.sub-heading {
    & > th {
        background: #cfcfcf !important;
        border: 1px solid #cfcfcf !important;
        color: #000;
        font-weight: bold;
    }
}

.feature-section {
    padding: 90px 0 10px 0;
    margin-top: -70px;
}

.feature-header {
    color: #333;
    font-size: 24px;

    &:hover {
        color: $red;
    }
}

.features-left {
    padding-left: 20px !important;
    font-weight: bold;
    width :35%;
}
