/*
 * 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 span[is="dt-radio"].checked > * {
    display: none
}

.network-config-ua input {
    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;
}
