/*
 Copyright 2020 TATA ELXSI

 Licensed 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.

 Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
*/
@import "../../assets/scss/mixins/mixin";
@import "../../assets/scss/variable";
#main-wrapper {
  @include wh-value(100%, null);
  .layout-wrapper {
    @include flexbox(flex, null, null, null, stretch, null);
    .content-section {
      @include wh-value(100%, null);
      @include transition(all, 0.3s, null, null);
      overflow-x: auto;
    }
  }
  .goto-top {
    @include position_value(fixed, null, 30px, 10px, null);
    @include font(null, 20px, null);
    outline: none;
    @include wh-value(40px, 40px);
  }
}