@layer components {
  :root {
    --account-width: 28rem;
  }

  /* A message over an account card takes the card's width, so it reads as
     part of the form it is about rather than a banner across the page. */
  .flash:has(+ .main > .account) {
    max-inline-size: calc(var(--account-width) + 2 * var(--inline-space-double));
  }

  .account {
    padding: var(--block-space-double) var(--inline-space-double);
    border-radius: 1.5rem;
    background-color: var(--color-surface);
    box-shadow: var(--shadow-soft);
    inline-size: 100%;
    margin-inline: auto;
    max-inline-size: var(--account-width);
  }

  .account__title {
    font-size: var(--text-2xl);
    font-weight: 700;
    letter-spacing: -0.025em;
  }

  .account__lead {
    color: oklch(var(--lch-gray-600));
    line-height: 1.625;
    margin-block-start: var(--block-space-quarter);
  }

  .account__form {
    display: flex;
    flex-direction: column;
    gap: var(--block-space);
    margin-block-start: var(--block-space);
  }

  .account__field {
    display: flex;
    flex-direction: column;
    gap: var(--block-space-quarter);

    label {
      font-size: var(--text-sm);
      font-weight: 500;
    }

    input {
      --field-border-color: var(--color-border);

      padding: var(--block-space-half) var(--inline-space);
      border: 1px solid var(--field-border-color);
      border-radius: var(--border-radius);
      background-color: var(--color-shade);
      transition: border-color 200ms, box-shadow 200ms;

      &:focus {
        --field-border-color: var(--color-primary);

        box-shadow: var(--shadow);
        outline: none;
      }
    }
  }

  .account__errors {
    padding: var(--block-space-half) var(--inline-space);
    border: 1px solid var(--color-negative);
    border-radius: var(--border-radius);
    background-color: var(--color-negative-subtle);
    color: var(--color-negative);
    font-size: var(--text-sm);
    list-style: disc inside;
  }

  .account__button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: var(--block-space-half) var(--inline-space);
    border-radius: var(--border-radius);
    background-color: var(--color-primary);
    color: var(--color-ink-inverted);
    font-weight: 600;
    transition: background-color 150ms;

    &:hover {
      background-color: var(--color-primary-hover);
    }
  }

  .account__button--secondary {
    background-color: var(--color-shade);
    color: var(--color-ink);

    &:hover {
      background-color: var(--color-border);
    }
  }

  .account__links {
    display: flex;
    flex-direction: column;
    color: oklch(var(--lch-gray-600));
    font-size: var(--text-sm);
    gap: var(--block-space-quarter);
    margin-block-start: var(--block-space);

    a {
      color: var(--color-link);
      font-weight: 500;

      &:hover {
        text-decoration: underline;
      }
    }
  }

  .account__details {
    display: grid;
    gap: var(--block-space-quarter) var(--inline-space);
    grid-template-columns: auto 1fr;
    margin-block-start: var(--block-space);

    dt {
      color: var(--color-muted);
      font-size: var(--text-sm);
    }

    dd {
      font-weight: 500;
    }
  }

  .account__status {
    display: inline-flex;
    align-items: center;
    padding: 0.125em 0.625em;
    border-radius: 1em;
    font-size: var(--text-xs);
    font-weight: 600;
    gap: 0.25em;
  }

  .account__status--verified {
    background-color: var(--color-positive-subtle);
    color: var(--color-positive);
  }

  .account__actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--inline-space-half);
    margin-block-start: var(--block-space);
  }
}
