/*
 * Copyright (c) 2020 Eclipse Foundation, Inc.
 * 
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 * 
 * Contributors:
 *   Eric Poirier <eric@eclipse.org>
 * 
 * SPDX-License-Identifier: EPL-2.0
*/
.header-eclipseide {
  background-image:url("/eclipseide/2020-06/images/background.jpg");
  background-position:center;
  background-size:cover;
}

.featured-jumbotron a:not(.btn):not(.jumbotron-icon),
.featured-jumbotron a:not(.btn):not(.jumbotron-icon):visited,
.featured-jumbotron a:not(.btn):not(.jumbotron-icon):hover {
  color:#fff;
}

.header-eclipseide h1 {
  font-size:92px;
}
.header-eclipseide h1:after {
  display:none;
}
.header-eclipseide hr {
  width:60%;
  border-top:4px solid #f7941e;
  margin-bottom:24px;
}
.header-eclipseide .btn-white:hover {
  background-color:#e2e2e2;
  color:#333;
}
.featured-circle-outline {
  width:80px;
  height:80px;
  border-radius:80px;
}
.featured-circle-outline .icon{
  font-size:42px;
  color:#f7941e;
}
.featured-stats {
  background-image:url("/eclipseide/2020-06/images/background.jpg");
  background-position:center;
  background-size:cover;
}

.featured-stats h3 {
  margin-bottom: 20px;
  color: #fff;
}

.featured-community {
  background-color:#f9f9f9;
  background-position:bottom center;
  background-size:cover;
  position:relative;
}

.featured-community .container {
  z-index: 1;
  position: relative;
}

.featured-community:before, .featured-community:after {
  content: "";
  display: block;
  width: 200px;
  height: 218px;
  position: absolute;
  bottom: 0;
  background-size: cover;
}

.featured-community:before {
  background-image:url(/eclipseide/2020-06/images/lattice-left.svg);
  left:0;
}

.featured-community:after {
  background-image:url(/eclipseide/2020-06/images/lattice-right.svg);
  right:0;
}

.featured-community p {
  font-size:18px;
}

.featured-community .btn {
  width:150px;
}

.featured-social-links a, .featured-social-links a:visited {
  color:#2d2252;
}

.featured-social-links a:hover {
  color:#110c23;
}

@media (min-width: 768px) {
  .featured-new-links li:not(:last-child){
    margin-right:30px;
  }
}

.featured-stats-text-container a,
.featured-stats-text-container a:hover,
.featured-stats-text-container a:visited {
  color:#fff;
}


@media (max-width: 768px) {
  .header-eclipseide h1 {
    font-size:72px;
  }
  .featured-new-links li:not(:last-child){
    margin-bottom:20px;
  }
  
  .featured-community-links li:not(:last-child) {
    margin-bottom:20px;
  }
}

.featured-circle-stats {
  padding-top:14px;
}

.eclipseide-btn {
  width:20px;
  height:20px;
  position: relative;
  top: -2px;
}

.featured-circle-outline {
  background-color:#f7941e;
}

.featured-circle-outline .icon {
  
  color:#fff;
}

.solstice-block-white-bg {
  background: #fff;
  border: 1px solid #ccc;
  padding: 15px;
}

.eclipseide-icon {
  width:40px;
  height:40px;
  display: block;
  background-repeat: no-repeat;
  background-position: center;
  margin: 0 auto;
}

.eclipseide-icon-1{
  background-image:url(images/icon-1-performance.svg);
}
.eclipseide-icon-2{
  background-image:url(images/icon-2-sharing.svg);
}
.eclipseide-icon-3{
  background-image:url(images/icon-3-java.svg);
}
.eclipseide-icon-4{
  width:40px;
  background-image:url(images/icon-4-dark.svg);
}
.eclipseide-icon-5{
  width:40px;
  background-image:url(images/icon-5-proven.svg);
}
.eclipseide-icon-6{
  width:40px;
  background-image:url(images/icon-6-free.svg);
}
.eclipseide-icon-7{
  background-image:url(images/icon-7-projects.svg);
}
.eclipseide-icon-8{
  background-image:url(images/icon-8-committers.svg);
}
.eclipseide-icon-9{
  background-image:url(images/icon-9-code.svg);
}
.eclipseide-icon-10{
  background-image:url(images/icon-10-contributors.svg);
}

.header-eclipseide hr {
  width: 70%;
  border-top: 2px solid #f7941e;
}

.eclipsefdn-video {
  border:2px solid #f7941e;
}
