/*
 * Copyright (c) 2014 The Chromium Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

::slotted(input.dt-radio-button) {
    height: 17px;
    width: 17px;
    min-width: 17px;
    border: 1px solid rgb(165, 165, 165);
    background-image: linear-gradient(to bottom, rgb(252, 252, 252), rgb(223, 223, 223));
    border-radius: 8px;
    -webkit-appearance: none;
    vertical-align: middle;
    margin: 0 5px 5px 0;
}

::slotted(input.dt-radio-button:active:not(:disabled)) {
    background-image: linear-gradient(to bottom, rgb(194, 194, 194), rgb(239, 239, 239));
}

::slotted(input.dt-radio-button:checked) {
    background: url(Images/radioDot.png) center no-repeat,
                linear-gradient(to bottom, rgb(252, 252, 252), rgb(223, 223, 223));
}

::slotted(input.dt-radio-button:checked:active) {
    background: url(Images/radioDot.png) center no-repeat,
                linear-gradient(to bottom, rgb(194, 194, 194), rgb(239, 239, 239));
}
