@layer components {
  .accordion {
    border-radius: 0.25rem;
  }
  .accordion.focus, .accordion:has(.accordion__trigger:focus-visible) {
    outline: 0.125rem solid var(--theme-focus-primary);
    outline-offset: 0.25rem;
  }
  .accordion__heading {
    margin: 0;
    font: inherit;
  }
  .accordion__trigger {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    min-height: 2.75rem;
    padding: 0;
    padding-bottom: 0.5rem;
    background: none;
    border: none;
    cursor: pointer;
    text-align: left;
    color: inherit;
    transition: background-color 0.15s cubic-bezier(0.19, 1, 0.22, 1), color 0.15s cubic-bezier(0.19, 1, 0.22, 1);
  }
  .accordion__trigger:disabled {
    cursor: default;
    pointer-events: none;
  }
  .accordion__trigger:focus-visible:focus, .accordion__trigger:focus-visible:focus-visible {
    outline: none;
    box-shadow: none;
  }
  .accordion__title {
    margin-right: 1rem;
  }
  .accordion__chevron {
    flex-shrink: 0;
    width: 2rem;
    height: 2rem;
    margin: 0;
  }
  @media (min-width: 1024px) {
    .accordion__chevron {
      width: 1.5rem;
      height: 1.5rem;
    }
  }
  .accordion__chevron {
    transition: transform 0.25s cubic-bezier(0.55, 0.06, 0.68, 0.19);
  }
  .accordion--open .accordion__chevron {
    transform: rotate(180deg);
    transition: transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);
  }
  .accordion__body {
    display: grid;
    grid-template-rows: 0fr;
    transition: grid-template-rows 0.25s cubic-bezier(0.55, 0.06, 0.68, 0.19);
  }
  .accordion__body-inner {
    overflow: hidden;
    padding: 0.125rem;
    margin: -0.125rem;
    max-width: var(--accordion-body-max-width, none);
  }
  .accordion__body-inner a:focus-visible {
    outline-offset: unset;
  }
  .accordion--open .accordion__body {
    grid-template-rows: 1fr;
    transition: grid-template-rows 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);
  }
  @media (min-width: 1024px) {
    .accordion[data-desktop-always-open] .accordion__trigger {
      border-bottom: none;
      padding-top: 0;
      padding-bottom: 2rem;
      cursor: default;
      pointer-events: none;
    }
    .accordion[data-desktop-always-open] .accordion__chevron {
      display: none;
    }
    .accordion[data-desktop-always-open] .accordion__body {
      grid-template-rows: 1fr;
      transition: none;
      border: none;
    }
    .accordion[data-desktop-always-open] .accordion__body-inner {
      overflow: visible;
      padding-top: 0.125rem;
      padding-bottom: 1rem;
      transition: none;
    }
  }
  @media (max-width: 1023px) {
    .accordion[data-mobile-always-open] .accordion__trigger {
      border-bottom: none;
      cursor: default;
      pointer-events: none;
    }
    .accordion[data-mobile-always-open] .accordion__chevron {
      display: none;
    }
    .accordion[data-mobile-always-open] .accordion__body {
      grid-template-rows: 1fr;
      transition: none;
      border: none;
    }
    .accordion[data-mobile-always-open] .accordion__body-inner {
      padding-top: 0.125rem;
      padding-bottom: 1rem;
      transition: none;
    }
  }
  @media (prefers-reduced-motion: reduce) {
    .accordion__body, .accordion__chevron, .accordion__body-inner {
      transition: none;
    }
  }
  .accordion-list {
    display: flex;
    flex-direction: column;
    gap: var(--accordion-list-gap, 1rem);
    padding: var(--accordion-list-padding, 0.5rem);
    background-color: var(--accordion-list-background-color, var(--theme-surface-secondary));
    border: 1.5px solid transparent;
    border-radius: 0.5rem;
  }
  .accordion-list .accordion {
    width: 100%;
    padding: 0 0.5rem;
  }
  @media (min-width: 1024px) {
    .accordion-list {
      gap: var(--accordion-list-gap, 1.5rem);
      padding: var(--accordion-list-padding, 1rem);
    }
  }
  .accordion-list {
    transition: border-color 0.15s cubic-bezier(0.19, 1, 0.22, 1);
  }
  .accordion-list:hover, .accordion-list:has(.accordion__trigger:hover), .accordion-list:has(.accordion__trigger:focus-visible) {
    border-color: var(--accordion-list-border-hover-color, var(--theme-border-primary));
  }
  .accordion-list--large {
    gap: var(--accordion-list-gap, 3rem);
    padding: var(--accordion-list-padding, 1.5rem 0.5rem);
  }
  @media (min-width: 1024px) {
    .accordion-list--large {
      gap: var(--accordion-list-gap, 1.5rem);
      padding: var(--accordion-list-padding, 2rem 1rem);
    }
  }
  @media (prefers-reduced-motion: reduce) {
    .accordion-list {
      transition: none;
    }
  }
}