/*
 * Copyright 2016-present Open Networking Laboratory
 *
 * Licensed 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.
 */

/* ------ for summary-list tables (theme) ------ */

.light div.summary-list .table-header td {
    background-color: #e5e5e6;
    color: #3c3a3a;
}
.dark div.summary-list .table-header td {
    /* TODO: dark theme */
    background-color: #e5e5e6;
    color: #3c3a3a;
}

.light div.summary-list td {
    color: #3c3a3a;
}
.dark div.summary-list td {
    /* TODO: dark theme */
    color: #3c3a3a;
}

.light div.summary-list tr:nth-child(even) {
    background-color: #f4f4f4;
}
.light div.summary-list tr:nth-child(odd) {
    background-color: #fbfbfb;
}
.dark div.summary-list tr:nth-child(even) {
    /* TODO: dark theme */
    background-color: #f4f4f4;
}
.dark div.summary-list tr:nth-child(odd) {
    /* TODO: dark theme */
    background-color: #fbfbfb;
}

.light div.summary-list tr.selected {
    background-color: #dbeffc !important;
}

.dark div.summary-list tr.selected {
    /* TODO: dark theme */
    background-color: #dbeffc;
}

.light div.summary-list tr.data-change {
    /* todo - theme color */
    background-color: #FDFFDC;
}
.dark div.summary-list tr.data-change {
    /* TODO: dark theme */
    background-color: #FDFFDC;
}


/* --- Control Buttons --- */

/* TODO: dark theme */

/* INACTIVE */
.light .ctrl-btns div svg.embeddedIcon g.icon use {
    fill: #e0dfd6;
}
/* note: no change for inactive buttons when hovered */


/* ACTIVE */
.light .ctrl-btns div.active svg.embeddedIcon g.icon use {
    fill: #939598;
}
.light .ctrl-btns div.active:hover svg.embeddedIcon g.icon use {
    fill: #ce5b58;
}

/* CURRENT-VIEW */
.light .ctrl-btns div.current-view svg.embeddedIcon g.icon rect {
    fill: #518ecc;
}
.light .ctrl-btns div.current-view svg.embeddedIcon g.icon use {
    fill: white;
}

/* REFRESH */
.light .ctrl-btns div.refresh svg.embeddedIcon g.icon use {
    fill: #cdeff2;
}
.light .ctrl-btns div.refresh:hover svg.embeddedIcon g.icon use {
    fill: #ce5b58;
}
.light .ctrl-btns div.refresh.active svg.embeddedIcon g.icon use {
    fill: #009fdb;
}
.light .ctrl-btns div.refresh.active:hover svg.embeddedIcon g.icon use {
    fill: #ce5b58;
}
