// 1. Set up color classes
// ========================

// Color variables are defined in "./global-colors.styl"

// array of keywords and their associated color vars
$stages = (worst $worst) (worse $worse) (bad $bad) (neutral $neutral) (good $good) (better $better) (best $best)

// for each color stage, generate a named class w/ the appropriate color
for $stage in $stages
  .task-column:not(.rewards)
    .color-{$stage[0]}:not(.completed)
      background-color: $stage[1]
      border: 1px solid shade($stage[1],10%)
      .priority-multiplier, .task-attributes, .repeat-days
        li
          hrpg-button-color-mixin($stage[1])
          button
            &.active
              box-shadow: inset 0 0 0 1px darken($stage[1],40%) !important
              background-color: darken($stage[1],5%) !important
            &:focus
              border: 1px solid darken($stage[1],30%)
              outline: 0
      .plusminus
        .task-checker
          label:after
            border: 1px solid darken($stage[1], 30%) !important
          input[type=checkbox]:checked + label:after
            //border: 1px solid darken($stage[1], 50%) !important
            box-shadow: inset 0 0 0 1px darken($stage[1],40%) !important
            background-color: darken($stage[1],5%) !important
      .save-close, .task-checklist-edit li
        hrpg-button-color-mixin(darken($stage[1],5%))
        button
          &:focus
            border: 1px solid darken($stage[1],30%)
            outline: 0
      .task-actions
        background-color: darken($stage[1], 30%)
      .action-yesno label,
      .task-action-btn,
      .task-actions a
        background-color: darken($stage[1], 30%)
        &:hover, &:focus
          background-color: darken($stage[1], 40%)
      .task-actions a:nth-of-type(2)
        border-top: 1px solid darken($stage[1],50%) // If there are two habit buttons (+ -), add a border to separate them
      .task-options
        background-color: $stage[1]
      .option-group:not(.task-checklist)
        border-bottom: 1px solid darken($stage[1], 15%)
      .option-content
        border-color: darken($stage[1], 16.18%) !important
        &:hover
          border-color: darken($stage[1], 32.8%) !important
        &:focus
          border-color: darken($stage[1], 61.8%) !important
          outline: none;

// completed has to be outside the loop to override the color class
.completed
  color: darken($completed,30%)
  background-color: $completed
  border: 1px solid shade($completed,10%)
  .priority-multiplier, .task-attributes, .repeat-days
    li
      hrpg-button-color-mixin($completed)
      button
        &.active
          box-shadow: inset 0 0 0 1px darken($completed,40%) !important
          background-color: darken($completed,5%) !important
        &:focus
          border: 1px solid darken($completed,30%)
          outline: 0
  .plusminus
    .task-checker
      label:after
        border: 1px solid darken($completed, 30%) !important
      input[type=checkbox]:checked + label:after
        box-shadow: inset 0 0 0 1px darken($completed,40%) !important
        background-color: darken($completed,5%) !important
  .save-close, .task-checklist-edit li
    hrpg-button-color-mixin(darken($completed,5%))
    button
      &:focus
        border: 1px solid darken($completed,30%)
        outline: 0
  .action-yesno label,
  .task-action-btn
    background-color: darken($completed, 30%)
    &:hover, &:focus
      background-color: darken($completed, 40%)
  .task-options
    background-color: $completed
  .option-group:not(.task-checklist)
    border-bottom: 1px solid darken($completed, 15%)
  .option-content
    border-color: darken($completed, 16.18%) !important
    &:hover
      border-color: darken($completed, 32.8%) !important
    &:focus
      border-color: darken($completed, 61.8%) !important
      outline: 0;

.reward, .reward-item
  background-color: white
  border: 1px solid $completed !important

// 2. Columns & Tasks
// ===================

.tasks-lists

  .row
    margin-left: -5px
    margin-right: -5px

    .col-md-3
      padding-left: 10px // Override Bootstrap 15px padding
      padding-right: 10px // Override Bootstrap 15px padding
      margin-bottom: 15px

// main columns
// ------------
.task-column
  padding: 1.5em
  background: $color-tasks
  border: 1px solid darken($color-tasks,16.18%)
  font-family: 'Lato', sans-serif

  &:after
    clear: both;
    display: block;
    content: "";

  h2
    color: darken($color-tasks,61.8%)

  .task-column_title
    margin: 0 0 0.5em
    padding: 0
    font-weight: 300

.task-column.preview
  padding: 0
  background: transparent
  border: 0;

  .task:hover
    cursor: auto

// 50% width columns with scrollbars for tablets
@media (min-width: 768px) and (max-width: 970px)
  .task-column
    max-height: 18.6em
    overflow-y: scroll

// "Add new task" form
// -----------------
.task-add
  position: relative
  margin-top: 1.5em
  @extend $hrpg-button-with-input
  hrpg-button-color-mixin($color-options-submenu)
  input, button
    height: 2.618em
  input, textarea
    width: 80%
  textarea
    float: none
    resize: vertical
    border-radius: 4px 0 0 4px
    + button
      position: absolute
      top: 0
      bottom: 0
      right: 0
      height: 100%
  button
    width: 20%
    span
      font-size: 0.8em
  .help-block a
    border: 0
    float: right
    font-size: 0.85em
  .empty-task-notification
    height: 100%;

// an individual task entry
// ------------------------
.task
  list-style: none
  clear: both
  padding: 0
  min-height: 3em
  margin-bottom: 0.75em
  // box-shadow: inset 0 0 1px rgba(0,0,0,0.5)
  position: relative
  &:hover
    cursor: move
  :last-child
    margin-bottom: 0

  label
    font-weight: 400

  input[type="text"], input[type="number"], textarea.option-content
    border: 1px solid #aaa
    border-radius: 0.382em
    padding-left: 0.618em
    background-color: #fff !important
    -webkit-appearance: none
    -moz-appearance: none
    appearance: none
    box-shadow: none //remove red glow in Firefox

// task content
.task-text
  display: block
  padding: 0.75em 0 0.75em 3.75em
  line-height: 1.4
  word-wrap: break-word

  markdown > ul > li // Otherwise, + gets turned into a bullet and gets masked by buttons
    margin-left:20px

  span.emoji
    width:1.5em
    height:1.5em
    background-size:1.5em
    vertical-align: middle

// when a task is being dragged
.task.ui-sortable-helper
  box-shadow: 0 0 3px rgba(0,0,0,0.15), 0 0 5px rgba(0,0,0,0.1)
  transform: scale(1.05)
  outline: 1px solid rgba(0,0,0,0.2)

// primary task commands
// ----------------------
.task-controls
  display: inline-block
  float: left
  margin-left: -0.5em
  margin-right: 0.5em

.task-controls.task-primary
  position: absolute
  top: 0
  bottom: 0
  left: 0
  float: none
  margin: 0

// plus/minus commands
.task-action-btn
  display: inline-block
  width: 2.12765em
  height: 2.12765em
  padding: 0
  font-size: 1.41em
  line-height: 2.12765
  text-align: center
  color: #222
  vertical-align: top
  border-right: 1px solid rgba(0,0,0,0.25)
  &:last-child
    border: 0
  &:hover, &:focus
    color: #222
    text-decoration: none

// checkbox
.task-checker input[type=checkbox]
  margin: 0
  padding: 0
  visibility: hidden

.task-checker label
  display: inline-block
  width: 3em
  height: 100%
  margin: 0
  vertical-align: top
  cursor: pointer

// plus/minus checkbox
.plusminus
  text-align: center
  .task-checker
    font-size: 1.5em // 1.41em
    @extend $hrpg-button
    margin-bottom: 0.5em
    &:first-of-type
      margin-right: 0.5em
    label:after
      width: 2em
      line-height: 1.5
    label[for$="plus"]:after
      content: '＋'
    label[for$="minus"]:after
      content: '−'

// yes/no checkbox
.action-yesno
  position: relative
  // uncompleted icon
  label:after, label:before
    content: ''
    display: block
    height: 1.714285714em
    width: 1.714285714em
    font-size: 1.75em
    line-height: 1.714285714em
    text-align: center
    color: black
    opacity: 0.2

  label:after
    height 10px
    width 10px
    margin 15px auto
    border 1px solid #222
  label:before
    position: absolute
    left: 0
  // hint at completed icon
  label:hover:before,
  label:focus:before
    content: ''
  label:hover:after,
  label:focus:after
    content: "\E013"
    font-family: "Glyphicons Halflings"
    border: none
    margin: 0
    line-height: 1.714285714em
    height: 1.714285714em
    width: 1.714285714em
    text-align: center
    opacity: 0.5 !important
  label:active:after
    opacity: 0.75 !important

  // completed icon
  input[type=checkbox]:checked + label:after
    content: "\E013"
    font-family: "Glyphicons Halflings"
    border: none
    margin: 0
    line-height: 1.714285714em
    height: 1.714285714em
    width: 1.714285714em
    text-align: center
    opacity: 0.75


// secondary task commands
// -----------------------
.task-meta-controls
  float: right
  margin: 0.75em 0.5em 0 0.5em
  height: 1em
  opacity: 0.25

  a
    text-decoration: none

  // improve alignment of task icons
  .glyphicon-signal
    margin-left: 0.25em
  .glyphicon-remove, .glyphicon-ok, a.badge
    margin-right: 0.25em
  .glyphicon-tags
    margin-left: 0.1em
    margin-right: 0.4em
  a.badge
    position: relative; top:-2px

.task:hover .task-meta-controls
  opacity: 1

.popover
  line-height: 1.5

  // prevent box-shadow from being clipped/overlapped
  margin-bottom: 10px
  margin-right: 5px

// task editing
// ------------
form
  margin-bottom: 0 // stupid bootstrap override

[class$="-options"]
  padding: 1em 1em 0
  color: #333
  position: relative
  //background-color:

  .option-group
    //border-bottom: 1px solid rgba(0,0,0,0.1)
    padding: 0 0 1em
    margin-bottom: 1em

  .option-title
    font-size: 1em
    margin: 0 0 0.5em
    line-height: 2.5
    border: 0
    padding: 0
    //color: #333
    //font-style: italic
    font-weight: bold
    text-align: center
    &.mega
      cursor: pointer
      //font-style: normal
      &:after
        font-family: "Glyphicons Halflings"
        font-size: 0.75em
        content: "\E114"
        padding-left: 0.75em
    //&:not(.mega):after
      //content: ':'

  .option-content
    height: 2.5em
    width: 100%
    margin: 0 0 1em
    padding: 0 0 0 0.5em

  textarea.option-content
    height: 5em
    padding-top: 0.25em
    resize: none
    margin-bottom: 0

.option-short
  .option-content
    width: 4em
    display: inline-block
  .input-suffix
    vertical-align: 20%
    padding-left: 0.25em

.option-medium
  .option-content
    width: 6em
    display: inline-block
  .input-suffix
    vertical-align: 20%
    padding-left: 0.25em

// button-group
.task-controls.tile-group
  display: block
  text-align: center
  margin: 0

  &.task-attributes
    text-align: left

.task-action-btn.tile
  border: 0
  font-size: 1.15em
  font-weight: 300
  outline: 1px solid rgba(0,0,0,0.2)
  outline-offset: -1px
  margin: 0 0 0 3px
  font-family: 'Lato', sans-serif
  text-align: inherit
  opacity: 0.5
  width: auto
  padding: 0 0.5em
  &.active
    opacity: 1

.tile.solid
  opacity: 1
.tile.spacious
  margin: 0.75em 0
  font-size: 1.25em
  opacity: 1
.tile.bright
  background-color: lighten($best, 20%)
  &:hover, &:focus
    background-color: lighten($best, 40%)
.tile.flush
  margin-left: 0
  border: 1px solid rgba(0,0,0,0.2)
  outline: 0
  line-height: 2em
  &:first-child
    border-right: 0

.task-options
  .task-action-btn.tile
    margin: 3px

  form
    padding-bottom: 1em
  .priority-multiplier, .task-attributes, .repeat-days
    text-align: center
    li
      @extend $hrpg-button
      margin-bottom: 1em
      margin-right: 0.75em
      display: inline-block
      &:last-of-type
        margin-right: 0
  .repeat-days
    li
      button
        min-width: 2.5em
  .save-close
    text-align: center
    @extend $hrpg-button

// Habits – task button styles (+ -)
.habits
  .task-actions
    width: 3em
    height: 100%

    a
      display: block
      width: 100%
      height: 100%
      position: relative
      font-size: 0.8em

      span
        position: absolute
        margin: auto
        display: block
        height: 1em
        width: 1em
        top: 0
        left: 0
        bottom: 0
        right: 0

      &:hover, &:focus
        color: #222
        text-decoration: none

  .habit-wide
    // When there are two buttons...
    min-height: 4.5em
    .task-actions
      a
        height: 50%

  .habit-narrow
    // When there are no buttons...
    .task-actions
      display: none
    .task-text
      padding-left: 1em

// todos ui
// --------

// Checklists
// --------
.task-checklist-edit
  > ul
    text-align: center
    li
      @extend $hrpg-button
      button
        span
          margin-right: 0.5em
  > form
    li
      @extend $hrpg-button-with-input
      @extend $clearfix
    input
      width: 70%

      /* Add interaction cues on hover and focus */
      &:hover,&:focus
        background-color: #FFD
        transition: background-color 0.5s

    .checklist-icon
      opacity:0.25
      text-align: center
      line-height: 1.5
      float: left
      padding: 0.25em 0.5em

    li
      margin-bottom: 1em
      &:hover .checklist-icon
        opacity:1

// Task filters
// --------
.task-filter
  margin: 1.5em 0 1em 0
  hrpg-button-bar-mixin($color-tasks)
  @extend $hrpg-button-bar
  width: 100%
  li
    @extend $hrpg-button-master
    hrpg-button-color-mixin($color-tasks)
    width: 33.333%
    text-align: center
    &:nth-child(3n + 1):nth-last-child(2),
    &:nth-child(3n + 1):nth-last-child(2) + li
      width: 50%;
    a
      width: 100%
      height: 100%
.rewards
  .task
    min-height: 3.07em  // Temp fix for slight misalignment of btn-buy
  .task-filter
    li:nth-child(3n + 1):nth-last-child(2)
      width: 33.333%
    li:nth-child(3n + 1):nth-last-child(2) + li
      width: 66.666%
  .btn-buy
    word-wrap: break-word
    padding-left: 0.2em
    text-align: left
    border:none
    span
      position: relative
      left: -2px
      &:only-child
        position: static
        padding-left: 0.75em

    &.highValue  // If reward value exceeds three digits, drop the number below the coin icon
      padding: 0.3em
      text-align: center
      span
        display: block
        margin: auto
    .shop_gold + .reward-cost
      line-height: 1
      top: -0.1em

// Hide interativity if task is locked (i.e. is a challenge reward)
.locked-task
  .action-yesno label:hover:after
    height: 10px
    width: 10px
    margin: 15px auto
    border: 1px solid #222
    opacity: 0.2 !important
  .action-yesno label:focus,
  .action-yesno label:hover
    background-color: #ffcf42 !important
  .task-actions a,
  .task-checker label,
  .task-text
    cursor: initial
  .task-actions a:hover
    background-color:inherit !important
  .task-checker label:hover:after
    content: ''
