/* Adapted from the original Meteor Todos app CSS file. */

@import "constants";

*,
:before,
:after {
  box-sizing: border-box;
}

html {
  font: 400 16px/1.5 sans-serif;
}

html, body {
  height: 100%;
}

body {
  font-size: 16px;
  line-height: 1.5;
  background-color: #eee;
  color: #333;
  margin: 0;
}

h1, h2, h3, h4, h5, h6, p {
  margin: 0;

  &:not(:last-child) {
    margin-bottom: 1em;
  }
}

h1, h2, h3, h4, h5, h6 {
  &:not(:first-child) {
    margin-top: 2em;
  }
}

p {
  &:not(:first-child) {
    margin-top: 1em;
  }
}

input {
  font: inherit;

  &:focus {
    outline: none;
  }
}

/* Pane arrangement ***********************************************************/

#page-pane {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  overflow: hidden;
}

#page-pane, #tags-and-todos-pane {
  display: flex;
}

#tags-and-todos-pane {
  flex-direction: column;
}

#tags-and-todos-pane, #todos-pane {
  flex: 1;
}

#lists-pane {
  flex: 0 0 240px;
}

#tags-pane {
  flex: 0 0 48px;
}

#todos-pane, #lists-pane, #tags-pane {
  overflow: auto;
}

/* Generic classes ************************************************************/

.hcenter {
  display: flex;
  justify-content: center;
}

.vcenter {
  display: flex;
  align-items: center;
}

.loading {
  padding: 4px 8px;
}

.tag {
  display: inline-block;
  margin-left: 8px;
  padding: 4px 8px;
  border-radius: 4px;
  background-color: #999;
  color: #fff;
  font-size: 13px;
  font-weight: bold;
  cursor: pointer;
}

/* Lists pane *****************************************************************/

#lists-pane {
  border-right: 1px solid #999;
  background-color: #ddd;

  .lists-title {
    font-weight: bold;
    text-decoration: underline;
    font-size: 20px;
    margin: 8px 0;
    text-align: center;
  }

  .list, .new-list {
    .vcenter;
    padding: 0 12px;
    width: 100%;
    height: 40px;
  }

  .list{
    &.selected {
      background-color: #9be;
      font-weight: bold;
    }

    .status {
      position: relative;
      display: inline-block;
      margin-left: -8px;
      padding: 8px;
      cursor: pointer;

      .circle {
	      width: 8px;
	      height: 8px;
        border-radius: 50%;
        background-color: #888;
      }
    }

    .list-name {
      cursor: pointer;
      color: #000;
      text-decoration: none;
    }
  }

  .new-list input {
    margin-top: 8px;
    width: 100%;
  }
}

/* Status pane (currently, within #lists-pane) ********************************/

#status-pane {
  .hcenter;
  .vcenter;
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  overflow: hidden;
  background-color: rgba(255, 255, 255, 0.85);
  z-index: 10;  /* above everything */

  .status-dialog {
    position: relative;
    width: 600px;
    padding: 32px;
    background-color: #fff;
    border: 1px solid rgba(0, 0, 0, 0.3);
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);

    .title {
      font-size: 18px;
      margin-bottom: 1em;
    }

    .close {
      position: absolute;
      top: 0;
      right: 0;
      margin: 6px;
      background: url("/public/destroy.png") no-repeat 0 0;
      cursor: pointer;
      height: 20px;
      width: 20px;

      &:hover {
        background-position: 0 -20px;
      }
    }
  }
}

/* Tags pane ******************************************************************/

#tags-pane {
  .vcenter;
  border-bottom: 1px solid #999;
  background-color: #ddd;

  .label {
    display: inline-block;
  }

  .label {
    margin-left: 16px;
    margin-right: 8px;
  }

  .tag {
    border: 1px solid #666;

    &.selected {
      background: #69d;
    }
  }

  .count {
    font-weight: normal;

    &:before {
      content: " ";
    }
  }
}

/* Todos pane *****************************************************************/

#todos-pane {
  overflow-y: scroll;

  #new-todo {
    margin: 16px 32px;
    font-size: 20px;

    input {
      width: 100%;
    }
  }

  #todo-list {
    list-style: none;
    margin: 0;
    padding: 0;
  }

  #todo-list .todo-row {
    .vcenter;
    display: flex;
    height: 48px;
    margin: 0 16px;
    border-top: 1px solid #ccc;
    overflow: hidden;

    &.edit {
      .destroy, .checkbox {
        visibility: hidden;
      }
    }

    .destroy {
      cursor: pointer;
      height: 20px;
      width: 20px;
      margin: 6px;
    }

    &:hover .destroy {
      background: url("/public/destroy.png") no-repeat 0 0;

      &:hover {
        background-position: 0 -20px;
      }
    }

    .description {
      flex: 1;
      margin-left: 16px;
    }

    &.done .description {
      text-decoration: line-through;
      color: #999;
    }

    .item-tags {
      overflow: auto;

      #edittag-input {
        width: 80px;
      }

      .tag.removable {
        position: relative;
        padding-right: 24px;
      }

      .remove {
        position: absolute;
        top: 0;
        right: 4px;
        bottom: 0;
        width: 16px;
        background: url("/public/close_16.png") no-repeat 0 center;

        &:hover {
          background-position: -16px center;
        }
      }

      .addtag {
        margin-right: 8px;
        border: 1px dashed #999;
        background-color: transparent;
        color: #333;
      }
    }
  }
}

/* Other **********************************************************************/

#log {
  position: fixed;
  bottom: 0;
  width: 100%;
  height: 300px;
  z-index: 2;  /* above .disp-type */
  padding: 16px;
  border-top: 1px solid #000;
  overflow-y: scroll;
  background-color: #fff;
  color: #000;
  font: 400 14px/1.4 monospace;
  white-space: pre-wrap;
  word-wrap: break-word;
  transform: translate3d(0, 100%, 0);
  transition: transform 0.2s ease-out;

  &.visible {
    transform: translate3d(0, 0, 0);
  }
}

#disp-type {
  position: fixed;
  top: 0;
  right: 0;
  padding: 0 16px;
  color: #fff;
  cursor: pointer;
  z-index: 1;

  &.collection {
    background-color: @color-red-700;
  }

  &.syncbase {
    background-color: @color-green-700;
  }
}
