@import 'definitions';

// HdyActionRow

row {
  label.subtitle {
    font-size: smaller;
    opacity: 0.55;
    text-shadow: none;
  }

  > box.header {
    margin-left: 12px;
    margin-right: 12px;
    min-height: 50px;

    > box.title {
      margin-top: 8px;
      margin-bottom: 8px;
    }
  }
}

// HdyExpanderRow

row.expander {
  // Drop transparent background on expander rows to let nested rows handle it,
  // avoiding double highlights.
  background-color: transparent;

  list.nested > row {
    background-color: hdyalpha($bg_color, 0.5);
    border-color: hdyalpha($borders_color, 0.7);
    border-style: solid;
    border-width: 1px 0px 0px 0px;
  }

  // HdyExpanderRow arrow rotation

  image.expander-row-arrow {
    transition: 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94);
  }

  &:checked image.expander-row-arrow {
    -gtk-icon-transform: rotate(0turn);
  }

  &:not(:checked) image.expander-row-arrow {
    opacity: 0.55;
    text-shadow: none;

    &:dir(ltr) {
      -gtk-icon-transform: rotate(-0.25turn);
    }

    &:dir(rtl) {
      -gtk-icon-transform: rotate(0.25turn);
    }
  }

  &:checked image.expander-row-arrow:not(:disabled) {
    color: $selected_bg_color;
  }

  & image.expander-row-arrow:disabled {
    color: $insensitive_fg_color;
  }
}

// Shadows

flap,
deck,
leaflet {
  > dimming {
    background: $leaflet_dimming;
  }

  > border {
    min-width: 1px;
    min-height: 1px;
    background: $leaflet_border;
  }

  > shadow {
    min-width: 56px;
    min-height: 56px;

    &.left  { @include background-shadow(to right); }
    &.right { @include background-shadow(to left); }
    &.up    { @include background-shadow(to bottom); }
    &.down  { @include background-shadow(to top); }
  }

  > outline {
    min-width: 1px;
    min-height: 1px;
    background: $leaflet_outline;
  }
}

// Avatar

avatar {
  border-radius: 9999px;
  -gtk-outline-radius: 9999px;
  font-weight: bold;

  // The list of colors to generate avatars.
  // Each avatar color is represented by a font color, a gradient start color and a gradient stop color.
  // There are 8 different colors for avtars in the list if you change the number of them you
  // need to update the NUMBER_OF_COLORS in src/hdy-avatar.c.
  // The 2D list has this form: ((font-color, gradient-top-color, gradient-bottom-color)).
  $avatarcolorlist: (
   (#cfe1f5, #83b6ec, #337fdc), // blue
   (#caeaf2, #7ad9f1, #0f9ac8), // cyan
   (#cef8d8, #8de6b1, #29ae74), // green
   (#e6f9d7, #b5e98a, #6ab85b), // lime
   (#f9f4e1, #f8e359, #d29d09), // yellow
   (#ffead1, #ffcb62, #d68400), // gold
   (#ffe5c5, #ffa95a, #ed5b00), // orange
   (#f8d2ce, #f78773, #e62d42), // raspberry
   (#fac7de, #e973ab, #e33b6a), // magenta
   (#e7c2e8, #cb78d4, #9945b5), // purple
   (#d5d2f5, #9e91e8, #7a59ca), // violet
   (#f2eade, #e3cf9c, #b08952), // beige
   (#e5d6ca, #be916d, #785336), // brown
   (#d8d7d3, #c0bfbc, #6e6d71), // gray
  );

  @for $i from 1 through length($avatarcolorlist) {
    &.color#{$i} {
      $avatarcolor: nth($avatarcolorlist, $i);
      background-image: linear-gradient(nth($avatarcolor, 2), nth($avatarcolor, 3));
      color: nth($avatarcolor, 1);
    }
  }

  &.contrasted { color: #fff; }

  &.image { background: none; }
}

// HdyViewSwitcherTitle

viewswitchertitle viewswitcher {
  margin-left: 12px;
  margin-right: 12px;
}

// HdyStatusPage

statuspage > scrolledwindow > viewport > box {
  margin: 36px 12px;

  > clamp {
    &:not(:last-child) > box {
      margin-bottom: 36px;
    }

    > box {
      > .icon:not(:last-child) {
        margin-bottom: 36px;
      }

      > .title:not(:last-child) {
        margin-bottom: 12px;
      }
    }
  }
}

// Preferences

window.preferences > deck > deck > box > stack > stack > scrolledwindow > viewport > clamp,
preferencespage > scrolledwindow > viewport > clamp {
  margin: 0 12px;

  transition: margin-bottom 200ms ease;

  > list,
  > box > preferencesgroup {
    transition: margin-top 200ms ease;
  }

  $sizes: ("small": 18px, "medium": 24px, "large": 30px);

  @each $name, $size in $sizes {
    &.#{$name} {
      margin-bottom: $size;

      > list,
      > box > preferencesgroup { margin-top: $size; }
    }
  }
}

preferencesgroup > box {
  // Add space between the description and the title.
  > label:not(:first-child) {
    margin-top: 6px;
  }

  // Add space between the box and the labels.
  > box:not(:first-child) {
    margin-top: 12px;
  }
}

tabbar .tab-indicator:not(.clickable) {
  background: none;
  box-shadow: none;
  border-color: transparent;
}
