@use '../styles/tokens' as *;

.blocks-view {
  display: flex;
  flex-direction: column;
  height: 100%;
  min-height: 0;

  &__toolbar {
    display: flex;
    flex-shrink: 0;
    align-items: center;
    gap: 12px;
    height: 28px;
    padding: 0 $spacing-12;
    border-bottom: 1px solid var(--border-subtle);
    font-size: 11px;
    color: var(--fg-muted);
    white-space: nowrap;
    overflow-x: auto;

    b {
      font-weight: 600;
      color: var(--fg);
    }
  }

  &__spacer {
    flex: 1;
  }

  &__count--error {
    color: var(--color-error);

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

  &__checkbox {
    display: flex;
    align-items: center;
    gap: $spacing-4;
    font-size: $font-size-xs;
    color: var(--fg-muted);
    cursor: pointer;
    user-select: none;
    white-space: nowrap;

    input {
      margin: 0;
    }
  }

  &__split {
    display: flex;
    flex: 1;
    min-height: 0;
  }

  // --- Tree pane ---

  &__tree {
    flex-shrink: 0;
    width: 340px;
    padding: $spacing-4 0;
    border-right: 1px solid var(--border);
    overflow-y: auto;
  }

  &__row {
    display: flex;
    align-items: center;
    gap: $spacing-6;
    height: 24px;
    padding-right: $spacing-8;
    border-left: 2px solid transparent;
    font-size: 11px;
    cursor: pointer;

    &:hover {
      background: var(--bg-hover);
    }

    &--selected {
      background: var(--bg-selected);
      border-left-color: var(--accent);

      &:hover {
        background: var(--bg-selected);
      }
    }
  }

  &__caret {
    flex-shrink: 0;
    width: 10px;
    padding: 0;
    border: none;
    background: none;
    font-size: 9px;
    text-align: center;
    color: var(--fg-muted);
    cursor: pointer;
  }

  &__variant {
    font-family: monospace;
    color: var(--accent);
    white-space: nowrap;
  }

  &__step-title {
    font-weight: 600;
    color: var(--fg);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  &__preview {
    font-family: monospace;
    color: var(--fg-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
  }

  &__row-chips {
    display: flex;
    flex-shrink: 0;
    align-items: center;
    gap: 4px;
    margin-left: auto;
  }

  // --- Inspector ---

  &__inspector {
    flex: 1;
    min-width: 0;
    padding: 10px $spacing-16 $spacing-16;
    overflow-y: auto;
  }

  &__inspector-title {
    display: flex;
    align-items: center;
    gap: $spacing-8;
    font-size: 12.5px;
    font-weight: 600;
  }

  &__inspector-variant {
    font-family: monospace;
    font-size: 12.5px;
    font-weight: 600;
    color: var(--fg);
  }

  &__inspector-sub {
    margin: 3px 0 10px;
    font-family: monospace;
    font-size: 11px;
    color: var(--fg-muted);
    overflow-wrap: anywhere;
  }

  &__subtabs {
    display: flex;
    gap: 2px;
    margin-bottom: $spacing-8;
    border-bottom: 1px solid var(--border-subtle);
  }

  &__subtab {
    display: flex;
    align-items: center;
    gap: $spacing-4;
    padding: 3px 8px 4px;
    border: none;
    background: none;
    font-size: 11px;
    color: var(--fg-muted);
    border-bottom: 2px solid transparent;
    cursor: pointer;

    &:hover {
      color: var(--fg);
    }

    &--active {
      color: var(--accent);
      border-bottom-color: var(--accent);
      font-weight: 600;
    }
  }

  &__count-pill {
    padding: 0 5px;
    border-radius: $radius-sm;
    background: color-mix(in srgb, var(--color-error) 14%, transparent);
    color: var(--color-error);
    font-size: 9px;
    font-weight: 600;
    line-height: 14px;
  }

  &__empty-note {
    padding: $spacing-8 $spacing-8 $spacing-8 0;
    font-size: 11.5px;
    color: var(--fg-muted);
  }

  // --- Props tree ---

  &__props {
    font-size: 11.5px;
  }

  &__prop-row {
    display: flex;
    align-items: baseline;
    gap: $spacing-6;
    padding: 2px $spacing-6;
    border-radius: $radius-sm;
  }

  &__prop-caret {
    flex-shrink: 0;
    width: 10px;
    font-size: 9px;
    text-align: center;
    color: var(--fg-muted);
    cursor: pointer;
  }

  &__prop-key {
    font-family: monospace;
    font-weight: 600;
    color: var(--fg);

    &--index {
      font-weight: 400;
      color: var(--fg-muted);
    }
  }

  &__prop-sep {
    color: var(--fg-muted);
  }

  &__prop-value {
    font-family: monospace;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  &__prop-preview {
    font-family: monospace;
    color: var(--fg-muted);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  &__prop-children {
    margin-left: 15px;
  }

  // --- Failure cards ---

  &__cards {
    display: flex;
    flex-direction: column;
    gap: $spacing-8;
  }

  &__fail-card {
    padding: $spacing-8 10px;
    border: 1px solid;
    border-radius: $radius-md;

    &--error {
      border-color: color-mix(in srgb, var(--color-error) 30%, transparent);
      background: color-mix(in srgb, var(--color-error) 6%, transparent);
    }

    &--warning {
      border-color: color-mix(in srgb, var(--color-warning) 30%, transparent);
      background: color-mix(in srgb, var(--color-warning) 6%, transparent);
    }
  }

  &__fail-head {
    display: flex;
    align-items: center;
    gap: $spacing-6;
    font-size: 11.5px;
  }

  &__fail-dot {
    flex-shrink: 0;
    width: 7px;
    height: 7px;
    border-radius: 50%;

    &--error {
      background: var(--color-error);
    }

    &--warning {
      background: var(--color-warning);
    }
  }

  &__fail-message {
    color: var(--fg);
  }

  &__fail-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    margin-top: $spacing-6;
  }

  // --- Chips ---

  &__chip {
    display: inline-block;
    padding: 0 5px;
    border-radius: $radius-sm;
    font-family: monospace;
    font-size: 9.5px;
    font-weight: 600;
    line-height: 15px;
    white-space: nowrap;

    &--accent {
      background: color-mix(in srgb, var(--accent) 14%, transparent);
      color: var(--accent);
    }

    &--error {
      background: color-mix(in srgb, var(--color-error) 14%, transparent);
      color: var(--color-error);
    }

    &--warning {
      background: color-mix(in srgb, var(--color-warning) 14%, transparent);
      color: var(--color-warning);
    }

    &--muted {
      background: color-mix(in srgb, var(--fg-muted) 16%, transparent);
      color: var(--fg-muted);
    }
  }
}
