@layer components {
  .accordion {
    border-bottom: 1px solid var(--line-strong);
  }

  .accordion__item {
    border-top: 1px solid var(--line-strong);
  }

  .accordion__heading {
    font: inherit;
  }

  .accordion__trigger {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-m);
    width: 100%;
    min-height: 4.5rem;
    padding-block: 1.25rem;
    text-align: left;
    color: var(--ink);
  }

  .accordion__question {
    font-family: var(--font-display);
    font-size: var(--text-lg);
    font-weight: var(--weight-heading);
    line-height: 1.25;
    text-wrap: pretty;
    transition: color var(--duration-base) ease;
  }

  .accordion__icon {
    position: relative;
    flex: none;
    width: 2.5rem;
    height: 2.5rem;
    border: 1px solid var(--line-strong);
    border-radius: 50%;
    transition: background-color var(--duration-slow) var(--ease-out-expo), border-color var(--duration-slow) var(--ease-out-expo), color var(--duration-slow) var(--ease-out-expo);
  }

  .accordion__icon::before,
  .accordion__icon::after {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    width: 0.875rem;
    height: 1.25px;
    margin: -0.625px 0 0 -0.4375rem;
    background: currentColor;
    transition: transform var(--duration-slow) var(--ease-out-expo);
  }

  .accordion__icon::after {
    transform: rotate(90deg);
  }

  .accordion__trigger[aria-expanded="true"] .accordion__icon {
    background: var(--accent);
    border-color: var(--accent);
    color: var(--ink-on-accent);
  }

  .accordion__trigger[aria-expanded="true"] .accordion__icon::after {
    transform: rotate(0deg);
  }

  .accordion__trigger[aria-expanded="true"] .accordion__icon::before {
    transform: rotate(180deg);
  }

  .accordion__answer {
    max-width: 62ch;
    padding-bottom: var(--space-l);
    color: var(--ink-soft);
    text-wrap: pretty;
  }

  .accordion.is-enhanced .accordion__panel {
    display: grid;
    grid-template-rows: 0fr;
    visibility: hidden;
    transition: grid-template-rows var(--duration-slow) var(--ease-out-expo), visibility 0s linear var(--duration-slow);
  }

  .accordion.is-enhanced .accordion__panel.is-open {
    grid-template-rows: 1fr;
    visibility: visible;
    transition: grid-template-rows var(--duration-slow) var(--ease-out-expo), visibility 0s linear 0s;
  }

  .accordion.is-enhanced .accordion__panel-inner {
    min-height: 0;
    overflow: hidden;
  }

  @media (hover: hover) {
    .accordion__trigger:hover .accordion__question {
      color: var(--ink-accent);
    }

    .accordion__trigger:hover .accordion__icon {
      border-color: var(--ink);
    }
  }
}
