/*!
 * 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.
 */
.endpoints-dialog {
  .content-box {
    padding: 10px 30px 30px;
    height: 400px;

    .split {
      display: flex;
      flex-direction: column;
      justify-content: space-between;
      height: 100%;

      form {
        padding: 20px 10px;

        .control-group {
          .error {
            position: absolute;
            right: 0;
            bottom: 5px;
            font-family: 'Open Sans', sans-serif;
            font-weight: 300;
            top: 34px;
          }
        }
      }
    }

    .action-group {
      display: flex;
      justify-content: space-between;
      padding: 0 10px;
    }

    .endpoints {
      height: 310px;
      padding-right: 5px;
      overflow: auto;

      table.mat-table {
        width: 100%;
        thead{
          background: transparent;
          .mat-header-row{
            background-clip:padding-box;
          }
        }
        tr {
          td {
            vertical-align: middle;
            max-width: 150px;
            overflow: hidden;
            text-overflow: ellipsis;
            &::after{
              content: '';
              display: block;
            }
          }
        }

        .actions {
          color: #607d8b;
          text-align: center;
          width: 14%;

          span {
            transition: all .5s ease-in-out;
            cursor: pointer;

            .mat-icon {
              font-size: 18px;
              padding-top: 5px;
            }

            &:hover {
              color: darken(#607d8b, 10%);
            }
          }
        }
      }

      .content {
        p {
          margin-bottom: 30px;
        }
      }
    }
  }
}
