$pf-c-description-list--breakpoint-map: build-breakpoint-map("base", "sm", "md", "lg", "xl", "2xl");

.pf-c-description-list {
  --pf-c-description-list--RowGap: var(--pf-global--gutter--md);
  --pf-c-description-list--ColumnGap: var(--pf-global--spacer--lg);
  --pf-c-description-list--GridTemplateColumns--count: 1;
  --pf-c-description-list--GridTemplateColumns--width: 1fr;
  --pf-c-description-list--GridTemplateColumns--min: 0;
  --pf-c-description-list--GridTemplateColumns: repeat(var(--pf-c-description-list--GridTemplateColumns--count), var(--pf-c-description-list--GridTemplateColumns--width));

  // group
  --pf-c-description-list__group--RowGap: var(--pf-global--spacer--sm);
  --pf-c-description-list__group--ColumnGap: var(--pf-global--spacer--sm);
  --pf-c-description-list__group--GridTemplateColumns: auto;
  --pf-c-description-list__group--GridColumn: auto;

  // compact
  --pf-c-description-list--m-compact--RowGap: var(--pf-global--gutter);
  --pf-c-description-list--m-compact--ColumnGap: var(--pf-global--spacer--sm);

  // term
  --pf-c-description-list__term--Display: inline;
  --pf-c-description-list__term--sm--Display: flex;
  --pf-c-description-list__term--FontWeight: var(--pf-global--FontWeight--bold);
  --pf-c-description-list__term--FontSize: var(--pf-global--FontSize--sm);
  --pf-c-description-list__term--LineHeight: var(--pf-global--LineHeight--sm);

  @media screen and (min-width: $pf-global--breakpoint--sm) {
    --pf-c-description-list__term--Display: var(--pf-c-description-list__term--sm--Display);
  }

  // icon
  --pf-c-description-list__term-icon--MinWidth: var(--pf-global--icon--FontSize--sm);
  --pf-c-description-list__term-icon--MarginRight: var(--pf-global--spacer--sm);
  --pf-c-description-list__term-icon--Color: var(--pf-global--icon--Color--light);

  // vertical
  --pf-c-description-list--m-vertical__group--GridTemplateColumns: repeat(var(--pf-c-description-list--GridTemplateColumns--count));

  // horizontal
  --pf-c-description-list--m-horizontal__term--width: 12ch;
  --pf-c-description-list--m-horizontal__description--width: minmax(10ch, auto);
  --pf-c-description-list--m-horizontal__group--GridTemplateColumns: var(--pf-c-description-list__term--width) var(--pf-c-description-list--m-horizontal__description--width); // use --pf-c-description-list__term--width here as it is re-defined on line 45
  --pf-c-description-list--m-1-col--GridTemplateColumns--count: 1;
  --pf-c-description-list--m-2-col--GridTemplateColumns--count: 2;
  --pf-c-description-list--m-3-col--GridTemplateColumns--count: 3;

  // auto-fit
  --pf-c-description-list--m-auto-fit--GridTemplateColumns--min: #{pf-size-prem(250px)};
  --pf-c-description-list--m-auto-fit--GridTemplateColumns--minmax--min: var(--pf-c-description-list--m-auto-fit--GridTemplateColumns--min);

  // help text
  --pf-c-description-list__text--m-help-text--TextDecorationColor: var(--pf-global--BorderColor--200);
  --pf-c-description-list__text--m-help-text--TextDecorationThickness: var(--pf-global--BorderWidth--sm);
  --pf-c-description-list__text--m-help-text--TextDecorationOffset: #{pf-size-prem(4px)};
  --pf-c-description-list__text--m-help-text--hover--TextDecorationColor: var(--pf-global--Color--100);
  --pf-c-description-list__text--m-help-text--focus--TextDecorationColor: var(--pf-global--Color--100);

  display: grid;
  align-items: baseline;
  row-gap: var(--pf-c-description-list--RowGap);
  column-gap: var(--pf-c-description-list--ColumnGap);
  grid-template-columns: var(--pf-c-description-list--GridTemplateColumns);

  &[class*="pf-m-horizontal"] {
    @include pf-build-css-variable-stack("--pf-c-description-list__term--width", "--pf-c-description-list--m-horizontal__term--width", $pf-c-description-list--breakpoint-map);
  }

  &.pf-m-inline-grid {
    display: inline-grid;
  }

  &.pf-m-auto-column-widths {
    --pf-c-description-list--GridTemplateColumns--width: minmax(8ch, max-content);
  }

  &.pf-m-auto-fit {
    grid-template-columns: repeat(auto-fit, minmax(var(--pf-c-description-list--m-auto-fit--GridTemplateColumns--minmax--min), 1fr));

    @include pf-build-css-variable-stack("--pf-c-description-list--GridTemplateColumns--minmax--min", "--pf-c-description-list--GridTemplateColumns--min", $pf-c-description-list--breakpoint-map);
  }

  &.pf-m-compact {
    --pf-c-description-list--RowGap: var(--pf-c-description-list--m-compact--RowGap);
    --pf-c-description-list--ColumnGap: var(--pf-c-description-list--m-compact--ColumnGap);
  }

  &.pf-m-fluid {
    --pf-c-description-list--m-horizontal__term--width: fit-content(20ch);
  }

  &.pf-m-fill-columns {
    display: block;
    column-count: var(--pf-c-description-list--GridTemplateColumns--count);
    margin-bottom: calc(var(--pf-c-description-list--RowGap) * -1);

    .pf-c-description-list__group {
      display: inline-grid;
      width: 100%;
      margin-bottom: var(--pf-c-description-list--RowGap);
      break-inside: avoid;
      page-break-inside: avoid;

      // stylelint-disable property-no-vendor-prefix
      -webkit-column-break-inside: avoid;
      -moz-column-break-inside: avoid;
      // stylelint-enable
    }
  }
}

.pf-c-description-list__group {
  display: grid;
  grid-column: var(--pf-c-description-list__group--GridColumn);
  row-gap: var(--pf-c-description-list__group--RowGap);
  column-gap: var(--pf-c-description-list__group--ColumnGap);
  grid-template-columns: var(--pf-c-description-list__group--GridTemplateColumns);
  align-items: baseline;
}

.pf-c-description-list__term,
.pf-c-description-list__description {
  min-width: 0; // this allows overflow-wrap to work
  text-align: left;
  overflow-wrap: break-word;
}

.pf-c-description-list__term {
  display: var(--pf-c-description-list__term--Display);
  font-size: var(--pf-c-description-list__term--FontSize);
  font-weight: var(--pf-c-description-list__term--FontWeight);
  line-height: var(--pf-c-description-list__term--LineHeight);

  .pf-c-description-list__text {
    display: inline;
  }
}

.pf-c-description-list__term-icon {
  flex-shrink: 0;
  min-width: var(--pf-c-description-list__term-icon--MinWidth);
  margin-right: var(--pf-c-description-list__term-icon--MarginRight);
  color: var(--pf-c-description-list__term-icon--Color);
}

.pf-c-description-list__text {
  &.pf-m-help-text {
    text-decoration: underline;
    cursor: pointer;
    text-decoration-style: dashed;
    text-decoration-thickness: var(--pf-c-description-list__text--m-help-text--TextDecorationThickness);
    text-underline-offset: var(--pf-c-description-list__text--m-help-text--TextDecorationOffset);
    text-decoration-color: var(--pf-c-description-list__text--m-help-text--TextDecorationColor);

    &:hover {
      --pf-c-description-list__text--m-help-text--TextDecorationColor: var(--pf-c-description-list__text--m-help-text--hover--TextDecorationColor);
    }

    &:focus {
      --pf-c-description-list__text--m-help-text--TextDecorationColor: var(--pf-c-description-list__text--m-help-text--focus--TextDecorationColor);
    }
  }
}

// Responsive modifiers
// stylelint-disable no-duplicate-selectors
.pf-c-description-list {
  @each $breakpoint, $breakpoint-value in $pf-c-description-list--breakpoint-map {
    $breakpoint-name: if($breakpoint != "base", -on-#{$breakpoint}, "");

    @include pf-apply-breakpoint($breakpoint) {
      &.pf-m-1-col#{$breakpoint-name} {
        --pf-c-description-list--GridTemplateColumns--count: var(--pf-c-description-list--m-1-col--GridTemplateColumns--count);
      }

      &.pf-m-2-col#{$breakpoint-name} {
        --pf-c-description-list--GridTemplateColumns--count: var(--pf-c-description-list--m-2-col--GridTemplateColumns--count);
      }

      &.pf-m-3-col#{$breakpoint-name} {
        --pf-c-description-list--GridTemplateColumns--count: var(--pf-c-description-list--m-3-col--GridTemplateColumns--count);
      }

      &.pf-m-horizontal#{$breakpoint-name} {
        --pf-c-description-list__group--GridTemplateColumns: var(--pf-c-description-list--m-horizontal__group--GridTemplateColumns);
      }

      &.pf-m-vertical#{$breakpoint-name} {
        --pf-c-description-list__group--GridTemplateColumns: var(--pf-c-description-list--m-vertical__group--GridTemplateColumns);
      }
    }
  }
}
// stylelint-enable
