/*******************************************************************************
 * Copyright (c) 2015 Eclipse Foundation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Eric Poirier (Eclipse Foundation) - Initial implementation
 *******************************************************************************/

@import "_mixins.less";

h1, h2{
  font-family: 'Raleway', Arial, sans-serif;
  font-weight:100;
}

/* HEADER */

.jumbotron{
  background-image:url(../../../images/header-bg.jpg);
  background-size:cover;
  @media ( max-width : 767px) {
    background-position: bottom right;
  }
  h1, h2, p, li{
    color:#fff;
  }
  h1{
    font-weight:100;
  }
  h2{
    margin-bottom:20px;
  }
  .list-with-arrow{
    padding-left:15px;
    list-style:none;
    li{
      padding-bottom:20px;
      &:before {    
        font-family: 'FontAwesome';
        content: '\f054'; // Chevron-right
        margin:0 5px 0 -15px;
        color: #F7941E;
        font-weight:100;
      }
    }
  }
}

/* Projects section*/

.projects{
  h2{
    text-align:center;
    @media ( max-width : 767px) {
      font-size:32px;
      margin:30px 0 40px;
    }
    @media ( min-width : 768px) {
      font-size:48px;
      margin:60px 0 80px;
    }
  }
  h3{
    font-weight:bold;
  }
  .well{
    padding:0;
    border-radius:0;
    box-shadow:none;
    background-color:#fff;
    h3{
      margin-top:0;
    }
    @media (max-width : 767px) {
      text-align:center;
      .col-left-box, .col-right-box{
        background-color:#f2f2f2;
        padding:20px 0;
      }
    }
    .col-left-box, .col-right-box{
      background-color:#f2f2f2;
      @media (max-width : 767px) {
        padding:20px;
      }
      @media (min-width : 768px) {
        min-height:150px;
        padding:40px;
        &:before, &:after{
          display:block;
          content:"";
          position:absolute;
          width: 0;
          height: 0;
        }
        &:before{
          border-top: 100px solid #fff; 
          top:0;
        }
        &:after{
          border-bottom: 100px solid #fff; 
          bottom:0;
        }
      }
    }
    .col-left-box{
      @media (min-width : 768px) {
        text-align:left;
        &:before, &:after{
          right:0;
          border-left: 100px solid transparent;
        }
      }
    }
    .col-right-box{
      @media (min-width : 768px) {
        text-align:right;
        &:before, &:after{
          left:0;
          border-right: 100px solid transparent;
        }
      }
    }
    .content{
      padding:20px;
    }
  }
}

/* Together section */

.together{
  text-align:center;
  background-color:#e8e8e8;
  margin-top:40px;
  padding:40px 0;
  p{
    line-height:1.8;
    margin-bottom:20px;
  }
}

/* Utilities */

.bold{
  font-weight:700;
}

.btn-border-only{
  background-color:transparent;
  border:1px solid;
  font-weight:300;
  
  &:hover, &:active, &:focus{
    border-color:#ccc;
    color:#ccc;
    background-color:transparent;
  }
}

.btn-border-only.white{
  border-color:#fff;
  .transition;
  &:hover{
    border-color:#ccc;
    color:#ccc;
  }
}

.btn-border-only.black{
  border-color:#858585;
  color:#858585;
  .transition;
  &:hover{
    border-color:#3B3B3B;
    color:#3B3B3B;
  }
}

.vertical-align.for-sm-and-up {
  @media ( min-width : 768px) {
    display: flex;
    align-items: center;
  }
}