/*
 * Copyright (c) 2015 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.
 */

.network-config {
    padding: 12px;
    display: block;
}

.network-config-group {
    display: flex;
    margin-bottom: 10px;
    flex-wrap: wrap;
    flex: 0 0 auto;
    min-height: 30px;
}

.network-config-title {
    margin-right: 16px;
    width: 130px;
}

.network-config-fields {
    flex: 2 0 200px;
}

.panel-section-separator {
    height: 1px;
    margin-bottom: 10px;
    background: #f0f0f0;
}

/* Disable cache */

.network-config-disable-cache {
    line-height: 28px;
    border-top: none;
    padding-top: 0;
}

/* Network throttling */

.network-config-throttling .chrome-select {
    width: 100%;
    max-width: 250px;
}

.network-config-throttling > .network-config-title {
    line-height: 24px;
}

/* User agent */

.network-config-ua > .network-config-title {
    line-height: 20px;
}

.network-config-ua label[is="dt-radio"].checked > * {
    display: none
}

.network-config-ua input:not(.dt-radio-button) {
    display: block;
    width: calc(100% - 20px);
    max-width: 250px;
}

.network-config-ua input[readonly] {
    background-color: rgb(235, 235, 228);
}

.network-config-ua input[type=text], .network-config-ua .chrome-select {
    margin-top: 8px;
}

.network-config-ua .chrome-select {
    width: calc(100% - 20px);
    max-width: 250px;
}

.network-config-ua label[is="dt-radio"] {
    display: block;
}

.network-config-ua-auto, .network-config-ua-custom {
    opacity: 0.5;
}

.network-config-ua-auto.checked, .network-config-ua-custom.checked {
    opacity: 1;
}
