/*
  states: .a-dialog--open (closed default)
*/

.a-dialog {
  --bg: var(--lens-semantic-color-surface-default);
  --py: var(--lens-semantic-spacing-desktop-padding-3);
  --shadow: var(--lens-semantic-shadow-high);
  --radius: var(--lens-semantic-radius-lg);
  --offset: var(--lens-semantic-spacing-desktop-padding-3);
  --max-width: 480px;
  display: none;
  flex-direction: column;
  padding-inline: 0;
  padding-block: var(--a-dialog-py, var(--py));
  background: var(--a-dialog-bg, var(--bg));
  border: none;
  border-radius: var(--a-dialog-radius, var(--radius));
  box-shadow: var(--a-dialog-shadow, var(--shadow));
  overflow: hidden;
  opacity: 0;
  transform: scale(0.98);
  transition:
    opacity var(--a-transition-duration) var(--a-transition-easing),
    transform var(--a-transition-duration) var(--a-transition-easing),
    overlay var(--a-transition-duration) var(--a-transition-easing) allow-discrete,
    display var(--a-transition-duration) var(--a-transition-easing) allow-discrete;
  &:open,
  &.a-dialog--open {
    display: flex;
    opacity: 1;
    transform: scale(1);
    &::backdrop {
      background-color: var(--lens-semantic-color-background-backdrop);
    }
  }
  &::backdrop {
    transition: all var(--a-transition-duration) var(--a-transition-easing) allow-discrete;
    background-color: transparent;
  }
  &:focus-visible {
    outline: var(--lens-semantic-border-width-focus-width) solid
      var(--lens-semantic-color-ui-focus-ring);
    outline-offset: var(--lens-semantic-border-width-focus-offset);
  }
  & .a-dialog-content {
    overflow-y: auto;
  }
}

html:has(.a-dialog[open]) {
  overflow: hidden;
}

@starting-style {
  .a-dialog:open {
    opacity: 0;
    transform: scale(0.98);
  }
  .a-dialog:open::backdrop {
    background-color: transparent;
  }
}

@media (max-width: 480px) {
  .a-dialog {
    max-height: calc(100svh - 2 * var(--a-dialog-offset, var(--offset)));
    max-width: calc(100svw - 2 * var(--a-dialog-offset, var(--offset)));
  }
}

@media (min-width: 481px) {
  .a-dialog {
    max-width: min(
      calc(100svw - 2 * var(--a-dialog-offset, var(--offset))),
      var(--a-dialog-max-width, var(--max-width))
    );
  }
}

.a-dialog-header {
  --px: var(--a-dialog-header-px, var(--lens-semantic-spacing-desktop-padding-3));
  --pt: var(--a-dialog-header-pt, var(--lens-semantic-spacing-desktop-padding-0));
  --pb: var(--a-dialog-header-pb, var(--lens-semantic-spacing-desktop-padding-3));
  --gap-x: var(--a-dialog-header-gap-x, var(--lens-semantic-spacing-desktop-gap-0-5));
  display: grid;
  grid-template-columns: 1fr min-content;
  place-items: center flex-start;
  padding-inline: var(--px);
  padding-block-start: var(--pt);
  padding-block-end: var(--pb);
  column-gap: var(--gap-x);
  &:has(.a-dialog-header-extra-content) {
    grid-template-columns: 1fr min-content min-content;
  }
  & .a-dialog-header-title,
  & .a-dialog-header-description {
    grid-column: 1;
    margin: 0;
  }
  & .a-dialog-header-title {
    grid-row: 1;
  }
  & .a-dialog-header-description {
    grid-row: 2;
    grid-column: 1 / -1;
  }
  & .a-dialog-header-close-btn {
    grid-row: 1;
    grid-column: -1;
  }
}

.a-dialog-header-title {
  --font-family: var(--a-dialog-header-title-font-family, var(--lens-semantic-font-family-label));
  --font-size: var(
    --a-dialog-header-title-font-size,
    var(--lens-semantic-font-title-h3-lg-font-size)
  );
  --font-weight: var(
    --a-dialog-header-title-font-weight,
    var(--lens-semantic-font-weight-emphasis)
  );
  --line-height: var(
    --a-dialog-header-title-line-height,
    var(--lens-semantic-font-title-h3-lg-line-height)
  );
  --letter-spacing: var(
    --a-dialog-header-title-letter-spacing,
    var(--lens-semantic-font-title-h3-lg-letter-spacing)
  );
  &:is(h1, h2, h3, h4, h5, h6) {
    font-family: var(--font-family);
    font-size: var(--font-size);
    font-weight: var(--font-weight);
    line-height: var(--line-height);
    letter-spacing: var(--letter-spacing);
  }
}

.a-dialog-header-description {
  --font-family: var(
    --a-dialog-header-description-font-family,
    var(--lens-semantic-font-family-label)
  );
  --font-size: var(
    --a-dialog-header-description-font-size,
    var(--lens-semantic-font-text-md-font-size)
  );
  --font-weight: var(
    --a-dialog-header-description-font-weight,
    var(--lens-semantic-font-weight-default)
  );
  --line-height: var(
    --a-dialog-header-description-line-height,
    var(--lens-semantic-font-text-md-line-height)
  );
  --letter-spacing: var(
    --a-dialog-header-description-letter-spacing,
    var(--lens-semantic-font-text-md-letter-spacing)
  );
  font-family: var(--font-family);
  font-size: var(--font-size);
  font-weight: var(--font-weight);
  line-height: var(--line-height);
  letter-spacing: var(--letter-spacing);
}

.a-dialog-header-extra-content {
  grid-row: 1;
}

.a-dialog-content {
  --px: var(--a-dialog-content-px, var(--lens-semantic-spacing-desktop-padding-3));
  --pb: var(--a-dialog-content-pb, var(--lens-semantic-spacing-desktop-padding-3));
  padding-inline: var(--px);
  padding-block-end: var(--pb);
}
