/*
 * Copyright (C) 2006, 2007, 2008 Apple Inc.  All rights reserved.
 * Copyright (C) 2009 Anthony Ricaud <rik@webkit.org>
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1.  Redistributions of source code must retain the above copyright
 *     notice, this list of conditions and the following disclaimer.
 * 2.  Redistributions in binary form must reproduce the above copyright
 *     notice, this list of conditions and the following disclaimer in the
 *     documentation and/or other materials provided with the distribution.
 * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
 *     its contributors may be used to endorse or promote products derived
 *     from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

.timeline-toolbar-container {
  display: flex;
  align-items: flex-start;
  flex: none;
  background-color: var(--sys-color-cdt-base-container);
  border-bottom: 1px solid var(--sys-color-divider);

  & > :first-child {
    flex: 1 1 auto;
  }
}

.timeline-settings-pane {
  display: grid;
  grid-template-columns: 50% 50%;
  padding-top: var(--sys-size-3);
  row-gap: var(--sys-size-3);
  flex: none;
  background-color: var(--sys-color-cdt-base-container);
  border-bottom: 1px solid var(--sys-color-divider);

  & > div {
    margin-left: 5px;
    display: flex;
    align-items: center;
    gap: 5px;
  }
}

#timeline-overview-panel {
  flex: none;
  position: relative;
  border-bottom: 1px solid var(--sys-color-divider);
}

#timeline-overview-grid {
  background-color: var(--sys-color-cdt-base-container);
}

#timeline-overview-grid .timeline-grid-header {
  height: 12px;
}

#timeline-overview-grid .resources-dividers-label-bar {
  pointer-events: auto;
  height: 12px;
}

#timeline-overview-grid .resources-divider-label {
  top: 1px;
}

.timeline-details-split {
  flex: auto;
}

.timeline.panel .status-pane-container {
  z-index: 1000;
  display: flex;
  align-items: center;
  pointer-events: none;
}

.timeline.panel .status-pane-container.tinted {
  background-color: var(--sys-color-cdt-base-container);
  pointer-events: auto;
}

.timeline-landing-page.legacy > div > p {
  flex: none;
  white-space: pre-line;
  line-height: 18px;
}

.popover ul {
  margin: 0;
  padding: 0;
  list-style-type: none;
}

#memory-graphs-canvas-container {
  overflow: hidden;
  flex: auto;
  position: relative;

  .no-events-found {
    position: absolute;
    font: var(--sys-typescale-body4-regular);
    left: var(--sys-size-5);
    bottom: var(--sys-size-5);

    p {
      margin: 0;
    }
  }
}

#memory-counters-graph {
  flex: auto;
}

#memory-graphs-canvas-container .memory-counter-marker {
  position: absolute;
  border-radius: 3px;
  width: 5px;
  height: 5px;
  margin-left: -3px;
  margin-top: -2px;
}

#memory-graphs-container .timeline-memory-header {
  flex: 0 0 26px;
  background-color: var(--sys-color-surface2);
  border-bottom: 1px solid var(--sys-color-divider);
  justify-content: space-between;
}

#memory-graphs-container .timeline-memory-header::after {
  content: "";
  /* stylelint-disable-next-line custom-property-pattern */
  background-image: var(--image-file-toolbarResizerVertical);
  background-repeat: no-repeat;
  background-position: right center, center;
  flex: 20px 0 0;
  margin: 0 4px;
}

.timeline-memory-toolbar {
  flex-shrink: 1;
}

.memory-counter-value {
  margin: 8px;
}

#counter-values-bar {
  flex: 0 0 20px;
  border-top: solid 1px var(--sys-color-divider);
  width: 100%;
  overflow: hidden;
  line-height: 18px;
}

.timeline-flamechart {
  overflow: hidden;
}

.brick-game {
  background-color: var(--sys-color-neutral-container);
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 9999; /* A high value to ensure it's on top */
}

.game-close-button {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 25px;
  height: 25px;
  position: absolute;
  right: 15px;
  top: 15px;
  border-radius: 50%;
  cursor: pointer;
}

.scorePanel {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  white-space: pre-line;
  padding: 15px;
  position: absolute;
  left: 15px;
  bottom: 15px;
  border: double 7px transparent;
  border-radius: 20px;
  background-origin: border-box;
  background-clip: content-box, border-box;
  font-weight: 200;
}

.confetti-100 {
  display: block;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

.confetti-100 > .confetti-100-particle {
  opacity: 0%;
  position: fixed;
  animation: confetti-100-animation 1s none ease-out;
  font-size: 30px;
}

@keyframes confetti-100-animation {
  0% {
    opacity: 100%;
    transform: translateY(0%) translateY(0%) rotate(0deg);
  }

  100% {
    opacity: 0%;
    /* stylelint-disable-next-line custom-property-pattern */
    transform: translateY(var(--to-Y)) translateX(var(--to-X)) rotate(var(--rotation));
  }
}

@media (prefers-reduced-motion) {
  .confetti-100 > .confetti-100-particle {
    animation-name: dissolve;
  }
}

.timeline-layers-view-properties table {
  width: 100%;
  border-collapse: collapse;
}

.timeline-layers-view-properties td {
  border: 1px solid var(--sys-color-divider);
  line-height: 22px;
}

.timeline-filmstrip-preview > img {
  max-width: 500px;
  max-height: 300px;
  cursor: pointer;
  border: 1px solid var(--sys-color-divider);
}

.timeline-details .filter-input-field {
  width: 120px;
}

.timeline-stack-view-header {
  height: 27px;
  background-color: var(--sys-color-cdt-base-container);
  padding: 6px 10px;
  color: var(--sys-color-on-surface);
  white-space: nowrap;
  border-bottom: 1px solid var(--sys-color-divider);
}

.timeline-landing-page {
  position: absolute;
  background-color: var(--sys-color-cdt-base-container);
}

.timeline-landing-page.legacy {
  justify-content: center;
  align-items: center;
  overflow: auto;
  font-size: 13px;
  color: var(--sys-color-on-surface-subtle);
}

.timeline-landing-page.legacy > div {
  max-width: 450px;
  margin: 10px;
}

.timeline-paint-profiler-log-split > div:last-child {
  background-color: var(--color-background-elevation-1);
  z-index: 0;
}

.timeline-layers-view > div:last-child,
.timeline-layers-view-properties > div:last-child {
  background-color: var(--color-background-elevation-1);
}

.timeline.panel .status-pane-container > div {
  pointer-events: auto;
}

.timeline-tree-view .data-grid .name-container div {
  flex: none;
}


devtools-performance-third-party-tree-view {
  .background-bar-container {
    /* Dont need the bars in 3p table */
    display: none;
  }

   .timeline-tree-view devtools-toolbar {
    border: 0;
   }

  .timeline-tree-view .data-grid .odd {
    background: none;
  }

  .timeline-tree-view .data-grid {
    border-width: 0 !important; /* stylelint-disable-line declaration-no-important */

    th {
      background-color: var(--sys-color-cdt-base-container);
      font-weight: var(--ref-typeface-weight-medium);
      /* Center to give some gap against sorting triangle */
      text-align: center;

      &.site-column {
        text-align: left;
      }
    }

    tr .numeric-column,
    tr .site-column {
      border-left: none;
      border-bottom: var(--sys-size-1) solid var(--sys-color-divider);
      /* Don't let devtools-button size mess with things */
      contain: strict;
      padding: 0;
      line-height: 21px;
    }

    .bottom-filler-td,
    th.sortable {
      border: none;
    }

    tr {
      height: 22px;
    }

    devtools-button {
      display: inline-flex;
      visibility: hidden;
      margin: 0 8px 0 4px;
      vertical-align: top;
    }

    tr.revealed:hover,
    tr.selected {
     devtools-button {
        visibility: visible;
      }
    }

    /* Default data-grid has this element on the edge of the rows,
      we don't need them for the 3P table. So for now set display to none. */
    .corner,
    &.data-grid-fits-viewport .corner {
      display: none;
    }

    .data-grid-resizer:hover {
        background: linear-gradient(to right, transparent, transparent 2px, var(--sys-color-divider) 2px, var(--sys-color-divider) 3px, transparent 3px) no-repeat 0 0 / 100% 100%;
    }
  }

  .widget.vbox.timeline-tree-view {
    /* See column width comments in populateColumns() */
    max-width: min(100%, 550px);
    min-width: 350px; /* Lower than this, there's not enough room for the entity name */
    padding: 0 0 0 var(--sys-size-6);
    border-left: var(--sys-size-1) solid var(--sys-color-divider);
  }

  /* While timeline treeview name-container uses flexbox to layout, it's overkill for this table's purposes.
     By not using it, we can benefit from text-overflow:ellipsis applying correctly to names and entity-badges */
 .timeline-tree-view .data-grid .name-container {
    display: block;
    padding-left: 2px;

    .activity-name {
      display: inline;
    }

    .activity-icon-container {
      display: none;
    }

    .entity-badge {
      margin-left: var(--sys-size-4);
      font-weight: var(--ref-typeface-weight-medium);
      padding: 0 var(--sys-size-2);
      background-color: var(--sys-color-tonal-container);
      border-radius: var(--sys-shape-corner-extra-small);
      height: 16px;
      line-height: 16px;
      font-size: var(--sys-typescale-body5-size);
      display: inline-block;
    }
 }
}

devtools-toolbar {
  .history-dropdown-button {
    width: var(--sys-size-23);
    height: var(--sys-size-9);
    border-radius: var(--sys-shape-corner-extra-small);
    text-align: left;
    display: flex;
    padding-right: var(--sys-size-5);

    &:hover {
      background-color: var(--sys-color-state-hover-on-subtle);
    }

    &:active {
      background-color: var(--sys-color-state-ripple-neutral-on-subtle);
    }

    &:hover:active {
      background:
        linear-gradient(var(--sys-color-state-hover-on-subtle), var(--sys-color-state-hover-on-subtle)),
        linear-gradient(var(--sys-color-state-ripple-neutral-on-subtle), var(--sys-color-state-ripple-neutral-on-subtle));
    }

    &:focus-visible {
      outline: var(--sys-size-2) solid var(--sys-color-state-focus-ring);
    }

    &[disabled] {
      pointer-events: none;
      color: var(--sys-color-state-disabled);
      background-color: var(--sys-color-state-disabled-container);

      .content::after {
        background-color: var(--sys-color-state-disabled);
      }
    }

    & > .content {
      margin-left: 5px;
      padding-right: 5px;
      overflow: hidden;
      text-overflow: ellipsis;
      flex: 1 1;
      min-width: 35px;

      &::after {
        float: right;
        user-select: none;
        mask-image: var(--image-file-triangle-down);
        width: 14px;
        height: 14px;
        content: "";
        position: absolute;
        background-color: var(--icon-default);
        right: var(--sys-size-3);
        top: var(--sys-size-3);
      }
    }
  }

  @media (forced-colors: active) {
    .history-dropdown-button[disabled] {
      opacity: 100%;
    }

    .history-dropdown-button > .content::after {
      background-color: ButtonText;
    }

    .history-dropdown-button[disabled] > .content::after {
      background-color: GrayText;
    }
  }
}
