// ── App layout ────────────────────────────────────────────────────────────────

// Основний layout після хедера (body = sidebar + main + right panel)
.vt-layout {
  &__header {
    height: 60px;
    width: 100%;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    background: var(--color-primary-hover);
    padding: 0 var(--vt-padding-base);

    // Внутрішній wrapper: logo зліва, actions зправа
    &-inner {
      display: flex;
      align-items: center;
      justify-content: space-between;
      width: 100%;
    }
  }

  &__body {
    display: flex;
    flex-grow: 1;
    overflow: hidden;
    min-height: 0;
    height: calc(100vh - 60px); // 60px = висота top panel
  }

  &__main {
    flex-grow: 1;
    position: relative;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    min-width: 0;
    padding: var(--vt-padding-base);

    .vt-breadcrumb {
      margin-bottom: var(--vt-gap-base);
    }
  }
}

.vt-page {
  // Стилі сторінки
  display: flex;
  flex-direction: column;
  height: 100%;
  overflow: hidden;

  &__card {
    // Головний стиль картки (врапер без бердкрампу та пагінації)
    background: #fff;
    width: 100%;
    height: 100%;
    border-radius: var(--radius-main);
    display: flex;
    flex-direction: column;
    overflow: hidden;

    // Модифікатор: картка по висоті контенту (не розтягується)
    &--shrink {
      height: auto;
      flex-shrink: 0;
    }

    // Модифікатор: картка займає залишок висоти (flex-grow)
    &--grow {
      flex: 1 1 0;
      min-height: 0;
    }

    &-header {
      // Хедер картки (в ньому фільтр + можлива кнопка зправа)
      display: flex;
      flex-direction: row;
      align-items: center;
      justify-content: space-between;
      padding: var(--vt-padding-base);
      gap: var(--vt-gap-base);

      // Модифікатор: контент притиснутий вправо (одна кнопка без фільтра)
      &--end {
        justify-content: flex-end;
      }

      &--actions {
        display: flex;
        align-items: center;
        flex-direction: row;
        gap: var(--vt-gap-base);
      }
    }


    &-filter {
      // Стилі динамічного фільтру
      display: flex;
      align-items: center;
      gap: var(--vt-gap-base);
      box-sizing: border-box;

      &__inline {
        display: flex;
        gap: var(--vt-gap-base);
        align-items: center;
        flex-shrink: 1;
        min-width: 0;
      }

      &__actions {
        display: flex;
        gap: var(--vt-gap-base);
        flex-shrink: 0;
      }

      &__dropdown {
        flex-shrink: 0;

        &-target {
          display: flex;
          flex-direction: column;
          gap: var(--vt-gap-base);
        }
      }

      &__measure {
        &-root {
          position: absolute;
          left: -9999px;
          top: -9999px;
          width: auto;
          height: auto;
          visibility: hidden;
          pointer-events: none;
          white-space: nowrap;
        }

        &-element {
          display: inline-block;
          white-space: nowrap;
          margin-right: 10px;
        }
      }

      &__control {
        white-space: nowrap;
        flex-shrink: 0;
        min-width: 150px;
        max-width: 100%;

        > * {
          width: 100%;
        }
      }
    }

    &-table {
      display: flex;
      flex-grow: 1;
      min-height: 0;
      overflow: hidden;
    }

    &-form {
      flex-grow: 1;
      min-height: 0;
      overflow: hidden;
      display: flex;
      gap: var(--vt-gap-base);

      // Модифікатор: колонка замість рядка (для правого side-панелі)
      &--column {
        flex-direction: column;
      }

      &-header {
        height: 46px;
        border-bottom: 1px solid var(--color-gray-5);
        padding: var(--vt-padding-base) var(--vt-padding-lg);
        flex-shrink: 0;
        display: flex;
        align-items: center;

        > span {
          color: var(--color-primary-main);
          font-size: var(--font-size-base);
          font-weight: var(--font-weight-regular);
          line-height: 1.5;
        }
      }

      &-body {
        padding: var(--vt-padding-base) 0;
        flex-grow: 1;
        overflow-y: auto;
        min-height: 0;
        display: flex;
        flex-direction: column;

        container-type: inline-size;
        container-name: vt-page__card-form-body;

        &--padded {
          padding-left: var(--vt-padding-lg);
          padding-right: var(--vt-padding-lg);
        }

        &-item {
          display: flex;
          flex-direction: row;
          align-items: center;
          padding: 0 var(--vt-padding-lg) var(--vt-padding-base);

          @container vt-page__card-form-body (max-width: 400px) {
            flex-direction: column;
            align-items: flex-start;
            gap: 4px;
          }
        }

        &-label {
          width: 250px;
          font-size: var(--font-size-sm);
          font-weight: var(--font-weight-regular);
          color: var(--color-gray-2);
          text-align: left;
          flex-shrink: 0;
          transition: color 0.2s ease, width 0.2s ease;

          @container vt-page__card-form-body (max-width: 400px) {
            width: 100%;
            margin-bottom: 0;
          }

          &.vt-label-required::after {
            content: ' *';
            color: var(--color-danger-main);
            margin-left: 4px;
            font-weight: bold;
          }

          &.vt-label-error {
            color: var(--color-danger-main);
          }
        }

        // Рядок всередині body без label (для inline-форм типу caller-id)
        &-row {
          display: flex;
          flex-direction: row;
          align-items: center;
          gap: var(--vt-gap-base);
          padding: 0 var(--vt-padding-lg) var(--vt-padding-base);

          &--nested {
            padding-left: calc(var(--vt-padding-lg) + 16px);
          }
        }
      }
    }


  }

  &__footer {
    flex-shrink: 0;
    position: relative;
    display: flex;
    padding-top: var(--vt-padding-base);
    justify-content: flex-end;
    gap: var(--vt-gap-base);
    align-items: center;
  }
}

// ── Утиліти layout ────────────────────────────────────────────────────────────

// Вертикальний стек карток (side-панель з кількох карток)
.vt-card-stack {
  display: flex;
  flex-direction: column;
  gap: var(--vt-gap-base);
  min-height: 0;
  overflow: hidden;
}

// ── Form primitives ───────────────────────────────────────────────────────────

// Секція з floating title (fieldset-паттерн)
.vt-fieldset {
  position: relative;
  border: 1px solid var(--color-gray-5);
  border-radius: var(--radius-main);
  padding: var(--vt-padding-lg) var(--vt-padding-base) var(--vt-padding-base);
  margin-bottom: var(--vt-gap-base);

  &__title {
    position: absolute;
    top: -10px;
    left: 40px;
    padding: 0 var(--vt-padding-sm);
    background: #fff;
    font-weight: 500;
    color: var(--color-primary-main);
    font-size: var(--font-size-sm);
  }

  &--invalid {
    border-color: var(--color-danger-main);

    .vt-fieldset__title {
      color: var(--color-danger-main);
    }
  }
}