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

.versionBanner {
  background-color: var(--ifm-color-emphasis-100);
  padding: 0.5rem 1rem;
  margin-bottom: 1rem;
  border-bottom: 1px solid var(--ifm-color-emphasis-200);
}

.versionContainer {
  display: flex;
  align-items: center;
  max-width: var(--ifm-container-width);
  margin: 0 auto;
  padding: 0 var(--ifm-spacing-horizontal);
}

.versionLabel {
  font-weight: bold;
  margin-right: 0.5rem;
}

.versionSelector {
  cursor: pointer;
  color: var(--ifm-color-primary);
  font-weight: 500;
}

.versionSelector:hover {
  text-decoration: none;
  color: var(--ifm-color-primary-darker);
}
