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

.dags-page-search {
  text-align: justify;

  position: relative;

  width: 100%;
  height: 65px;

  .form-group {
    position: absolute;
    left: 0px;
    right: 35px;
  }

  button {
    position: absolute;
    right: 0px;
    top: 22px;
    width: 30px;
    height: 30px;
    padding: 4px;
  }

  .search-element {
    display: inline-block;
    width: 14.25%;

    vertical-align: top;

    padding-left: 3px;

    label {
      margin-bottom: 2px;
    }
  }

  .dag-name {
    padding-left: 0px;
  }
}

.all-dags-table {
  .pagination-ui, .table-controls {
    margin-top: -5px;
    margin-bottom: 5px;
  }
}

@media screen and (min-width: 1300px) {
  .dags-page-search{
    float: left;
    width: 75%;

    .form-group {
      margin-bottom: 0px;
    }
  }

  .all-dags-table {
    .pagination-ui, .table-controls {
      margin-top: 21px;
    }
  }
}
