//
// Copyright © 2021 Anticrm Platform Contributors.
// 
// Licensed under the Eclipse Public 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 https://www.eclipse.org/legal/epl-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.
//

/* Panels */
* {
  --app-panel-width: 4rem;
}
.antiPanel-application {
  flex-shrink: 0;
  display: flex;
  justify-content: space-between;
  align-items: center;
  background-color: var(--board-bg-color);

  &.vertical {
    flex-direction: column;
    min-width: var(--app-panel-width);
    width: var(--app-panel-width);
    height: 100%;
  }
  &.horizonatl {
    min-height: var(--app-panel-width);
    height: var(--app-panel-width);
    width: 100%;
  }
}
.antiPanel-navigator,
.antiPanel-component {
  flex-grow: 1;
  display: flex;
  flex-direction: column;
  height: 100%;
  overflow: hidden;

  &.filled { background-color: var(--body-accent); }
  &.border-left { border-left: 1px solid var(--divider-color); }
  &.border-right { border-right: 1px solid var(--divider-color); }
}
.antiPanel-navigator {
  position: relative;
  min-width: 18rem;
  max-width: 18rem;
  width: 18rem;
}
@media (max-width: 1024px) {
  .antiPanel-navigator {
    position: fixed;
    background-color: var(--body-accent);
    filter: drop-shadow(2px 0 1px rgba(0, 0, 0, .2));
    z-index: 450;

    &.portrait {
      top: var(--status-bar-height);
      left: 0;
    }
    &.landscape {
      top: var(--status-bar-height);
      left: var(--app-panel-width);  
    }
  }
}
.antiPanel-component:not(.aside) {
  flex-grow: 1;
  // background-color: var(--board-bg-color);
}
.antiPanel-component.aside {
  min-width: 30rem;
  width: 30rem;
  max-width: 30rem;
}

/* Navigation */
.antiNav-header {
  flex-shrink: 0;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0 1.75rem;
  height: 4rem;
}
.antiNav-subheader {
  display: flex;
  justify-content: stretch;
  align-items: stretch;
  margin: .5rem 0.5rem .75rem 1rem;
}
.antiNav-element {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  margin: 1px 1rem;
  padding: .25rem;
  height: 1.75rem;
  border-radius: .25rem;
  user-select: none;
  cursor: pointer;

  .an-element__icon {
    min-width: 1rem;
    color: var(--content-color);
    margin: 0 .625rem 0 .375rem;
  }
  .an-element__label {
    flex-grow: 1;
    margin-right: .75rem;
    white-space: nowrap;
    text-overflow: ellipsis;
    overflow: hidden;
    user-select: none;
    font-weight: 400;
    color: var(--accent-color);
    &.title {
      font-weight: 500;
      color: var(--accent-color);
    }
    &.bold {
      font-weight: 600;
      color: var(--theme-caption-color);
    }
  }
  .an-element__icon-arrow {
    margin-left: .5rem;
    opacity: 0;
    transform-origin: 35% center;
    transform: rotate(90deg);
    transition: transform .2s ease;

    &.collapsed { transform: rotate(0deg); }
    &.small {
      width: .325rem;
      height: .325rem;
    }
    &.medium {
      width: .375rem;
      height: .375rem;
    }
  }
  .an-element__tool {
    margin-left: .75rem;
    visibility: hidden;
  }
  .an-element__counter {
    margin-left: .75rem;
    font-weight: 600;
    font-size: .75rem;
    color: var(--accent-color);
  }

  &:hover, &.hovered, &.selected {
    background-color: var(--menu-bg-select);
    .an-element__icon { color: var(--menu-icon-hover); }
    .an-element__icon-arrow { opacity: 1; }
  }
  &:hover .an-element__tool, &.hovered .an-element__tool { visibility: visible; }

  &:not(.collapsed) .an-element__icon-arrow { opacity: 1; }
  &.parent {
    margin: .5rem 1rem 1px;
    padding: 0 .5rem;
    height: 1.5rem;
    font-size: .75rem;
    line-height: 1.5rem;

    .an-element__icon-arrow { opacity: 0; }
    .an-element__label { color: var(--content-color); }
    &.collapsed .an-element__icon-arrow,
    &:hover .an-element__icon-arrow { opacity: 1; }
  }
  &.child { padding: 0 .25rem 0 1.5rem; }

  &__dropbox {
    height: auto;
    margin-bottom: .5rem;
  }
}
.antiNav-divider {
  flex-shrink: 0;
  margin: .25rem 0;
  height: 1px;

  &.line { background-color: var(--divider-color); }
  &.short { margin: .25rem 1rem; }
}
.antiNav-scroll {
  flex-grow: 1;
  min-height: 0;
  max-height: 10rem;
  height: max-content;
  overflow-x: hidden;
  overflow-y: auto;
  mask-image: linear-gradient(0deg, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 1) 2rem);

  &::-webkit-scrollbar-track { margin: 0; }
  &::-webkit-scrollbar-thumb {
    background-color: var(--theme-bg-accent-color);
    &:hover { background-color: var(--theme-menu-divider); }
  }
}
.antiNav-box {
  display: flex;
  flex-direction: column;
  height: 100%;
}
.antiNav-space {
  flex-shrink: 0;
  height: 1rem;
}
.antiNav-footer {
  align-items: flex-end;
  display: flex;
  flex: 1;
  margin: 2rem .75rem;
}

/* Basic */
.antiTitle {
  .icon-wrapper, &.icon-wrapper,
  .title-wrapper, &.title-wrapper {
    display: flex;
    flex-wrap: nowrap;
    min-width: 0;
  }
  .title-wrapper, &.title-wrapper {
    flex-direction: column;
    flex-grow: 1;
  }
  .icon-wrapper, &.icon-wrapper { align-items: center; }

  .wrapped-icon, &.wrapped-icon {
    margin-right: .75rem;
    color: var(--content-color);
  }
  .wrapped-title, &.wrapped-title {
    min-width: 0;
    font-weight: 500;
    font-size: 1rem;
    color: var(--caption-color);

    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .wrapped-subtitle, &.wrapped-subtitle {
    min-width: 0;
    font-size: 0.75rem;
    color: var(--dark-color);

    overflow: hidden;
    visibility: visible;
    display: -webkit-box;
    /* autoprefixer: ignore next */
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    user-select: text;

    b { color: var(--content-color); }
  }
}

.antiDivider {
  margin: .25rem 0;
  min-height: 1px;
  height: 1px;
  background-color: var(--divider-color);

  &.dark { background-color: var(--body-accent); }
  &.noMargin { margin: 0; }
}

.antiSection {
  display: flex;
  flex-direction: column;
  flex-shrink: 0;
  min-height: 0;

  &-header {
    display: flex;
    align-items: center;
    height: 2.5rem;
    min-height: 2.5rem;
    border-bottom: 1px solid var(--divider-color);

    &__icon {
      display: flex;
      justify-content: center;
      align-items: center;
      margin-right: .5rem;
      height: 2rem;
      color: var(--caption-color);
    }
    &__title {
      min-width: 0;
      font-weight: 500;
      font-size: 1rem;
      color: var(--caption-color);
      
      &:not(.short) { flex-grow: 1; }
    }
    &__header {
      display: flex;
      align-items: center;
      flex-grow: 1;
      margin: 0 .5rem 0 .75rem;
      padding: .25rem .75rem;
      height: 100%;
      min-width: 0;
      font-weight: 500;
      font-size: 1rem;
      color: var(--caption-color);
      background: var(--header-bg-color);
      border-radius: .5rem .5rem 0 0;
    }
    &__counter {
      display: flex;
      align-items: center;
      flex-wrap: nowrap;
      flex-shrink: 0;
      padding: 0.25rem 0.5rem;
      min-width: 1.325rem;
      text-align: center;
      font-weight: 500;
      font-size: 1rem;
      line-height: 1rem;
      color: var(--accent-color);
      background-color: var(--body-color);
      border: 1px solid var(--divider-color);
      border-radius: 1rem;
    }  
    &__tag {
      padding: .125rem .25rem;
      min-width: 0;
      font-size: .8125rem;
      background-color: var(--accent-bg-color);
      color: var(--dark-color);
      border-radius: .25rem;

      &.highlight { color: var(--content-color); }
    }
    &__tag + &__tag { margin-left: .125rem; }
  }
  .invisible { display: none; }
  &-empty {
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 1rem;
    font-size: .75rem;
    color: var(--dark-color);
    border: 1px dashed var(--divider-color);
    border-radius: 0.75rem;

    &.solid { border-style: solid; }
    &.items {
      justify-content: start;
      padding: .75rem;
    }
    &.solid.attachments {
      background-color: var(--accent-bg-color);

      .item { border-style: solid; }
    }
  }
}

// Button on selected card in Kanban
.card-container.checked .button.inline.link-bordered {
  background-color: var(--highlight-select);
  border-color: var(--highlight-select-border);

  &:hover {
    background-color: var(--highlight-select-hover);
    border-color: var(--highlight-select-border);
  }
}

// Replacing the background of a text editor in Activity
.activity-content .ref-container .textInput { background-color: var(--body-color) !important; }

// Emphasized
.antiEmphasized {
  padding: .75rem;
  background-color: var(--body-accent);
  border: 1px solid var(--button-border-color);
  border-radius: .5rem;
  transition-property: border, background-color;
  transition-duration: .15s;
  transition-timing-function: var(--timing-main);

  &:hover,
  &:focus-within {
    background-color: var(--body-color);
    border-color: var(--button-border-hover);
  }
}

// Accordion
.antiAccordion {
  display: flex;
  flex-direction: column;
  min-width: 0;
  min-height: 0;

  .description {
    // overflow: hidden;
    padding: 0.75rem;
    background-color: var(--body-accent);
    border: 1px solid var(--button-border-color);
    // border-radius: .5rem;
    transition-property: background-color, height;
    transition-duration: .15s;
    transition-timing-function: var(--timing-main);

    .label {
      color: var(--dark-color);
      text-shadow: var(--button-shadow);
    }
    .caption {
      display: flex;
      align-items: center;
      white-space: nowrap;
      text-overflow: ellipsis;
      overflow: hidden;
      margin: -.5rem;
      padding: .5rem .5rem .5rem 1rem;
      margin-bottom: 1rem;
      min-width: 0;

      font-weight: 500;
      font-size: 1rem;
      color: var(--caption-color);
      background: var(--popup-bg-color);
      border: 1px solid transparent;
      border-radius: .125rem;
      transition: margin-bottom .15s var(--timing-main),
                  border-radius .3s var(--timing-main),
                  box-shadow .15s var(--timing-main);
      box-shadow: 0 0 .25rem .125rem #00000020;
      // cursor: pointer;
      z-index: 1;

      .value {
        overflow: auto;
        display: flex;
        flex-direction: column;
        flex-grow: 1;
        margin: 0 .5rem;
        max-height: 1.5rem;
        font-weight: 400;
        transition: opacity .15s var(--timing-main);

        &::-webkit-scrollbar:vertical { width: 0; }
        &::-webkit-scrollbar:horizontal { height: 0; }
      }
      .rotated-icon {
        transform-origin: center;
        transition: transform .15s var(--timing-main);

        &.opened { transform: rotate(0deg); }
        &.closed { transform: rotate(90deg); }
      }
    }

    &.opened {
      .caption .value { opacity: 0; }
      .expand-collapse .expand-collapse,
      .expand-collapse {
        visibility: visible;
        max-height: max-content;
      }
    }
    &.closed {
      .caption {
        margin-bottom: -.5rem;

        .value { opacity: 1; }
        &.hasAttachments { margin-bottom: 0; }
      }
      .expand-collapse .expand-collapse,
      .expand-collapse:not(.hasAttachments) {
        overflow: hidden;
        visibility: hidden;
        max-height: 0;
      }
      &:hover .caption.hasAttachments { margin-bottom: .5rem; }
    }
    
    &:first-child {
      border-top-left-radius: .75rem;
      border-top-right-radius: .75rem;
    }
    &:first-child .caption {
      border-top-left-radius: .65rem;
      border-top-right-radius: .65rem;
    }
    &:last-child {
      border-bottom-left-radius: .75rem;
      border-bottom-right-radius: .75rem;
    }
    &:last-child.closed .caption {
      border-bottom-left-radius: .65rem;
      border-bottom-right-radius: .65rem;
    }
    &:last-child:not(:first-child),
    &:not(:first-child):not(:last-child) { border-top: none; }

    &:hover,
    &:focus-within { background-color: var(--body-color); }
    // &:focus-within .caption { box-shadow: 0 0 2px 1px var(--primary-edit-border-color); }
    &:focus-within .caption { border-color: var(--primary-edit-border-color); }
  }
}

// Consecutive messages in Telegram (incomung/outcoming)
.message-row-bg[data-type="in"] + .message-row-bg[data-type="in"] .message-row .message-container {
  padding-top: 0;
  .message { border-radius: 0.125rem 0.75rem 0.75rem 0.125rem; }
}
.message-row-bg[data-type="out"] + .message-row-bg[data-type="out"] .message-row .message-container {
  padding-top: 0;
  .message.outcoming { border-radius: 0.75rem 0.125rem 0.125rem 0.75rem; }
}
