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

.detail-dialog {
  overflow: hidden;
}

.checkbox-group {
  position: relative;

  label {
    input[type="checkbox"] {
      margin: 10px 0;
    }
  }

  span {
    &.danger_color {
      position: absolute;
      bottom: -20px;
      right: 0;
    }
  }
}

.config-details {
  height: 0;
  opacity: 0;
  visibility: hidden;
  text-align: left;
  position: relative;

  &.show {
    height: 200px;
    visibility: visible;
    opacity: 1;

    textarea {
      height: 100%;
      resize: none;
      font-size: 14px;
      line-height: 1.5;
      font-family: Consolas, monospace;
    }

    span {
      .danger_color {
        position: absolute;
        bottom: -16px;
        right: 0;
      }
    }
  }
}

.spark-url{
  max-width: 250px;
  overflow: hidden;
}

.copy-icon-wrapper{
  margin-top: -2px;
  margin-left: 5px;
}
