/* Materialize Styling */
body{
  overscroll-behavior-y: none;
}

nav .brand-logo{
  height: 48px;
  line-height: 48px;
  font-size: 1.8rem;
}
#nav-mobile{
  line-height: 48px;
}
.navbar-fixed, .nav-comp, .snav-wrapper *:not(ul):not(svg), nav{
  height: 48px;
}

.dropdown-content{
  overflow: hidden;
  position: fixed !important; 
}

#nav-mobile li a span{
  font-size: 18px;
  vertical-align: top;
}

.wrapper {
 padding-left: 300px;
}

.lf{
  font-weight: 300;
}

.sidenav li > a{
  font-size: 16px;
}

.slide-btm{
  position: absolute;
  bottom: 60px; /*height is set by Materialize to 100%+60px for some reason*/
  width: 100%
}

.collection{
  overflow: visible;
}

.collection-item{
  transition: background 0.25s; 
  
}

.sidenav li {
  transition: all 0.2s; 
}

.sidenav li > a{
  transition: all 0.2s;
}

h1{
  font-size: 2.8rem; 
 }
 
h2{
  font-size: 2.1rem;
}
 
h3{
  font-size: 1.7rem;
  margin: 8px 0;
}

hr{
  border-top: none;
}

ul.browser-default{
  padding-inline-start: 20px;
}

/* Accessibility */

.collection-header.c-li span:focus {
  outline: none;
}

.collection-header.c-li span:focus-visible {
  background: #8d8d8d4f;
}

.c-li:focus, .selectable:focus {
  outline: none;
}

.selectable:focus-visible {
  outline: 1px solid;
  background: rgba(138, 141, 148, 0.3);
}

a[tabindex]:focus {
  outline: none;
}

a[tabindex]:not(.c-li):focus-visible {
  border-bottom: 1px solid;
  background: #8d8d8d4f;
}

.sidenav-trigger svg {
  height: 32px;
  width: 32px !important;
  margin: 8px 4px;
  padding: 6px;
  transition: background 0.2s;
}

.sidenav-trigger:focus {
  outline: none;
}

.sidenav-trigger:focus svg {
  background: rgba(138, 141, 148, 0.6);
}

.sidenav li > a:focus {
  outline: none;
}

.sidenav li > a:focus-visible {
  border-top: 1px solid; 
  border-bottom: 1px solid; 
}

.tr-hdr:focus {
  outline: none; 
}

.tr-hdr:focus-visible {
  outline: 1px solid;
}

/* Vue Transitions */

.collection.with-header .collection-header.ch-animated, .ci-animated {
  /* Overflow and transition CSS will break headers with dropdowns, hence the need to restrict this to only headers with the .ch-animated class */
  transition: background 0.2s;
  overflow: hidden;
  position: relative;
}

.anim-msg-enter-active {
  animation: anim-msg .36s;
}
.anim-msg-leave-active {
  animation: anim-msg .36s reverse;
}
@keyframes anim-msg {
  0% {
    max-height: 0px;
    padding-top: 0;
    padding-bottom: 0;
  }
  100% {
    max-height: 88px;
    padding-top: 10px;
    padding-bottom: 10px;
  }
}

.anim-div-enter-active {
  animation: anim-div .24s;
  animation-timing-function: ease-in;
}
.anim-div-leave-active {
  animation: anim-div .24s reverse;
  animation-timing-function: ease-out;
}

.anim-div-sm-enter-active {
  animation: anim-div-sm .24s;
  animation-timing-function: ease-in;
}
.anim-div-sm-leave-active {
  animation: anim-div-sm .24s reverse;
  animation-timing-function: ease-out;
}

@keyframes anim-div {
  0% {
    max-height: 0px;
    padding-top: 0;
    padding-bottom: 0;
    overflow: hidden;
  }
  100% {
    max-height: 540px;
    padding-top: 10px;
    padding-bottom: 10px;
    overflow: hidden;
  }
}

@keyframes anim-div-sm {
  0% {
    max-height: 0px;
    padding-top: 0;
    padding-bottom: 0;
    overflow: hidden;
  }
  100% {
    max-height: 80px;
    padding-top: 10px;
    padding-bottom: 10px;
    overflow: hidden;
  }
}

.btn-dismiss, .btn-dismiss-lg {
  /* Used in messages under cbList as well as trends and grade calculator quick actions */
  position: absolute;
  right: 20px;
  overflow-x: hidden; 
  white-space: nowrap;
  opacity: 0.5;
  transition: all 0.36s;
  border: 1px solid transparent;
}
.btn-dismiss {
  max-width: 12px;
}
.btn-dismiss-lg {
  font-size: 16px;
  max-width: 16px;
}
.btn-dismiss-lg svg {
  font-size: 20px;
  vertical-align: text-bottom;
}
/* .btn-close{ 
  font-size: 20px;
  float: right;
  opacity: 0.2;
  transition: opacity 0.2s;
}

.btn-close:hover{
  opacity: 1.0;
  cursor: pointer;
}
 */

.btn-dismiss:hover, .btn-dismiss:focus, .btn-dismiss-lg:hover, .btn-dismiss-lg:focus {
  opacity: 1;
  cursor: pointer;
}

.btn-dismiss:not(.we-disabled):focus, .btn-dismiss-lg:not(.we-disabled):focus {
  outline: none; 
  border-color: inherit;
}

/* General Styling */

#loadingDiv-p1{
  display: none;
}

#loadingDiv #loadingDiv-p2{
  display: block;
}

@keyframes ld-pb {
  0%  {width: 0px}
  25% {width: 50px}
  50% {width: 80px}
  100% {width: 100px}
}
#ld-innerPB{
  width: 140px;
  animation: ld-pb 12s ease-out;
}

.cf, nav .brand-logo{ /* custom font */
  font-family: 'zen-new', -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;
}

.nw{
  white-space: nowrap;
}
div.nw{
  display: inline-block;
}

::selection{
  background: #cde;
}

html{
  cursor: default;  
  user-select: none;
  -webkit-user-select: none; 
}

.selectable{
  user-select: text;
  -webkit-user-select: text; 
}

.noselect, #ch-data h3{
  user-select: none;
  -webkit-user-select: none; 
}

.pointer{
  cursor: pointer;
}

.nopad{
  padding: 0 !important;
}

p, .p{
  font-size: 1.2rem;
}

br.smOnly {
  display: none;
}

.absright{ /*for use in display:flex situations*/
  position: absolute;
  right: 20px;
}

.lg, .med-lg{ /*med-lg only has an impact on smaller displays*/
  font-size: 24px;
}

.trim-120{ /*Used in course header to prevent text from cutting into raw score*/
  max-width: calc(100% - 120px);
  display: inline-block;
}

.va-raise{
  vertical-align: -0.15em; /*for FA icons*/
}

/* Fancy welcome modal */

#modal-welcome{
  max-height: 480px;
}

#wel-landing{
  background: linear-gradient(135deg, #8ba9fd, #0d2f8f); 
  color: #fff;
}

#wel-next{
  width: 110px;
}

#wel-carousel{
  height: 480px !important; /*override Materialize*/
}

#wel-carousel .carousel-fixed-item{
  bottom: 54px; 
}

#wel-carousel .carousel-fixed-item a:not(.btn){ /*skip link*/
  display: block;
  margin-top: 4px;
}

#wel-carousel .carousel-item{
  padding: 20px 10px 0;
}

#wel-carousel .carousel-item .btn-flat{
  color: #fff; 
}

#wel-carousel .carousel-item div.collection{
  width: 80%; 
  margin-left: 10%;
}

/* Weather dropdown */
#sp-weather-drop {
  padding: 12px 4px; 
  width: 185px;
}

#sp-weather-drop * {
  outline: none; 
  margin: 0;
  text-align: center;
}

#sp-weather-drop p {
  line-height: 1.2;
}

.spin-on-hover:hover {
  animation: fa-spin 2s infinite linear; 
}

/* Course items */

.hidden, .hidden-temp{
  display: none; /* Shows after loading for course-item */
}

#v-course{
  overflow: hidden;
}

.asc{ /* Assignment Score */
  font-size: 20px;
}

.ascs{ /* If "score" string is too long */
  font-size: 17px;
}

.class-item-title{
  display: inline-block;
  font-size: 18px;
  width: calc(100% - 165px);
}

.pb-outer{ /*Progress bar styling*/
  width: 150px; 
  height: 4px; 
  border-radius: 2px; 
  margin-bottom: 5px; 
  position: relative;
}

.pb-inner{
  position: absolute;
  top: 0; 
  height: 4px;
  border-radius: 2px;
}

.tb-sm tr td{
  padding: 5px 5px;
}

.qa-btn{ /* quick action button - also contains css for .right, .btn-flat, and .white=text */
  float: right !important; 
  margin-left: 4px; 
  color: #fff; 
}

.hl-new.hlt{ /*"New item" indicator*/
  margin-right: 4px; 
}

.hl-modified{
  background: #fd3;
  color: #000; 
}

#div-fixedBar{
  top: 38px;
}

#div-fixedBar ul{
  border-bottom: none; 
}

#div-fixedBar ul li span{
  font-size: 20px;
}

#div-fixedBar ul li{
  height: 48px;
}

#div-fb-title{
  display: inline-block; 
  width: calc(100% - 92px);
}

#div-fb-title.shorten{
  width: calc(100% - 120px);
}

#div-cbf-input{ /*Item filter section*/
  display: inline-block; 
  width: calc(100% - 300px);
}

#div-cbf-cat, #div-cbf-points{
  display: inline-block;
  width: 294px;
}

#gc-result{
  padding: 4px 8px; 
  background: rgba(50, 255, 50, 0.1)
}

ul.browser-default li{
  margin-bottom: 6px; /*Add space on bottom for readability*/
}

/*Notifier CSS*/
.nt-icon{
  font-size: 24px;
  margin-right: 8px;
}

#courseHistory h2, #ch-data div h3{
  margin: 12px 6px 6px;
}

#courseHistory #ch-landing{
  margin: 0 6px; 
}

#ch-main p{
  margin: 12px 6px; 
}

.drop-bd{ /*drop-border: makes a dropdown input (NOT dropdwon content) look like a select dropdown*/
  border-bottom: 1px solid #9e9e9e;
  display: inline-block;
  width: 100%;
  height: 34px;
}

/* Settings CSS */
#settings-about a:hover{
  text-decoration: underline;
}

.collapsible-icon {
  /* it's only been used under the About page so far, hence why it's under Settings CSS */
  margin-right: 8px;
  height: 20px;
}

/* App-Specific Styling */

@media all and (display-mode: standalone) {
  .show-in-web {
    display: none; 
  }
}
@media all and (display-mode: browser) {
  .show-in-app {
    display: none; 
  }
}

/* Responsive Design */

@media only screen and (max-width : 992px) {
  .wrapper {
    padding-left: 0;
  }
  .col-w{
    width: 85%;
  }
  /* Accessibility - prevents user from selecting invisible elements while sidenav is closed */
  .sidenav.sidenav-fixed[style="transform: translateX(-105%);"], .sidenav.sidenav-fixed:not([style]) {
    display: none;
  }
}

@media only screen and (max-width : 600px) {
  #div-outer, .col-w{ /*Give more space to items*/
    width: 100% 
  }
  .showMargins{ /*Add margins (when appropirate) to counteract previous rule*/
    margin: 0 5%; 
  }
  .collection{
    margin: 0;
    border: none;
  }
  .class-item-title{ /*Attempt to truncate after 2 lines using the hacky css we have today*/
    width: calc(100% - 145px);
    max-height: 44px;
    display: inline-block; 
    display: -webkit-inline-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    line-clamp: 2; 
    white-space: normal;
    overflow: hidden;
  }
  .pb-outer{
    width: 130px; 
  }
  
  #div-fixedBar{
    margin-top: 6px; /*Adjust to compensate for smaller font*/
  }
  #div-fixedBar ul li{
    padding: 10px 10px 0px;
  }
  
  .lg{ /* "Large" is slightly smaller */
    font-size: 20px;
  }
  .med-lg{
    font-size: 16px;
  }
  .ascs{
    font-size: 15px;
  }

  .collection.with-header .collection-item{
    padding-left: 20px;
  }
  
  #div-cbf-input{ /* Place filter options on two separate rows */
    width: 100%;
  }
  #div-cbf-cat, #div-cbf-points{
    margin-top: 8px;
    width: 100%;
  }
  
  .modal{ /*Materialize changes, makes modals more readable*/
    width: 90%;
    max-height: 80%;
  }
  .modal.modal-fixed-footer{
    height: 80%;
  }

  .config-imgBtn{
    width: 150px; 
    margin-bottom: 6px;
  }

  br.smOnly{ /* Breaks that only show on small screens */
    display: initial;
  }

  #wel-carousel .carousel-item div.collection{
    width: 20%; 
    margin-left: 0;
  }

  ul.browser-default{
    padding-inline-start: 10px;
  }
}

@media only screen and (min-width: 600px) {
  /* Enable "Dismiss" text on hover only on larger screens */
  .btn-dismiss::after, .btn-dismiss-lg::after {
    content: ' Dismiss';
  }
  .btn-dismiss:not(.we-disabled):hover, .btn-dismiss:not(.we-disabled):focus {
    max-width: 70px;
    right: 16px; 
    padding: 0 4px;
    background: inherit;
  }
  .btn-dismiss-lg:not(.we-disabled):hover, .btn-dismiss-lg:not(.we-disabled):focus {
    max-width: 96px;
    right: 16px; 
    padding: 0 6px;
  }
}

@media only screen and (min-width : 992px) {
  .btn-dismiss:not(.we-disabled):hover, .btn-dismiss:not(.we-disabled):focus {
    max-width: 74px;
    right: 16px; 
    padding: 0 4px;
    background: inherit;
  }
  #slide-out {
    top: 48px;
  }
  .brand-logo{
    left: 18px;
  }
  .slide-btm{
    bottom: 108px; /*Make up for additional offset due to being shifted down*/
  }
  .col-w{
    width: calc(85% - 300px);
    max-width: 980px;
  }
  .modal:not(.md-scroll){
    overflow: visible; /*Allows dropdown menus on large screens to go outside of the modal box instead of scrolling the entire box*/
  }

  #courseHistory, #v-messages, #v-attendance{
    margin-top: 20px;
    margin-bottom: 20px;
  }
}

@media only screen and (min-width : 1200px) {
  .col-w{
    width: calc(70% - 300px);
  }
}

@media only screen and (max-width: 1200px) and (min-width : 992px) {
  .container{
    width: 85% !important; 
  }
}

.show-on-xs{
  display: none;
}
@media only screen and (max-width: 360px){
  .show-on-xs{
    display: initial;
  }
  .hide-on-xs{
    display: none; 
  }
  #sp-cacheDet{
    max-width: 100px; /*so it doesn't eat up all the space and leave no room for one's name*/
  }
}