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

// Colors
$color-ghost-white: #f1f2f8;
$color-white: #fff;

$color-gray-20: #333;
$color-gray-40: #666666;
$color-gray-60: #999999;
$color-gray-97: #f7f7f7;
$color-light-gray: #d5d5d5;

$color-green-primary: #60cea5;
$color-green-secondary: #43b135;

$color-red-primary: #ef6162;
$color-red-secondary: #b04b4e;

$color-blue-primary: #26bbf0;
$color-blue-secondary:#1c95c0;

$color-yellow-primary: #ffbc0b;
$color-yellow-secondary: #dca41b;
