@layer components {
  /* Base
  /* ------------------------------------------------------------------------ */

  .card {
    --card-bg-color: var(--color-canvas);
    --card-border: 1px solid var(--color-ink-lighter);
    --card-padding-block: var(--block-space);
    --card-padding-inline: var(--inline-space);
    --card-radius: 0.5em;

    background-color: var(--card-bg-color);
    border: var(--card-border);
    border-radius: var(--card-radius);
    box-shadow: var(--shadow);
    display: flex;
    flex-direction: column;
    min-inline-size: 16rem;
    padding: var(--card-padding-block) var(--card-padding-inline);
  }

  /* Header
  /* ------------------------------------------------------------------------ */

  .card__header {
    border-block-end: var(--card-border);
    font-size: var(--text-large);
    font-weight: 900;
    margin-block-end: var(--block-space-half);
    padding-block-end: var(--block-space-half);
  }

  /* Body
  /* ------------------------------------------------------------------------ */

  .card__body {
    flex-grow: 1;
  }

  /* Footer
  /* ------------------------------------------------------------------------ */

  .card__footer {
    border-block-start: var(--card-border);
    display: flex;
    gap: 0.5rem;
    margin-block-start: var(--block-space-half);
    padding-block-start: var(--block-space-half);
  }

  /* Meta - key/value grid using definition list
  /* ------------------------------------------------------------------------ */

  .card__meta {
    --meta-spacer-block: 0.5ch;
    --meta-spacer-inline: 1ch;

    display: grid;
    font-size: var(--text-small);
    gap: var(--meta-spacer-block) var(--meta-spacer-inline);
    grid-template-columns: 1fr auto;
    margin: 0;
  }

  .card__meta dt {
    color: var(--color-ink-dark);
    font-weight: 500;
  }

  .card__meta dd {
    font-weight: 700;
    margin: 0;
    text-align: end;
  }

  /* Divider between rows - desktop only */
  @media (min-width: 640px) {
    .card__meta > :nth-child(n+3) {
      border-block-start: 1px solid var(--color-ink-lighter);
      padding-block-start: var(--meta-spacer-block);
    }
  }

  /* Stack on mobile */
  @media (max-width: 639px) {
    .card__meta {
      grid-template-columns: 1fr;
    }

    .card__meta dd {
      margin: 0;
      text-align: start;
    }

    /* Divider only above labels (not values) starting from 2nd row */
    .card__meta > dt:not(:first-child) {
      border-block-start: 1px solid var(--color-ink-lighter);
      margin-block-start: var(--block-space-half);
      padding-block-start: var(--block-space-half);
    }
  }

  /* Card form - inline edit form for card footer
  /* ------------------------------------------------------------------------ */

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

  .card__form-row {
    align-items: center;
    display: grid;
    gap: var(--meta-spacer-inline, 1ch);
    grid-template-columns: auto 1fr;
  }

  .card__form-row .label {
    margin-block-end: 0;
  }

  .card__form-row .input {
    text-align: end;
  }

  /* Stack on mobile - same as card__meta */
  @media (max-width: 639px) {
    .card__form-row {
      grid-template-columns: 1fr;
    }

    .card__form-row .input {
      text-align: start;
    }
  }

  .card__form-actions {
    display: flex;
    gap: var(--inline-space);
    justify-content: space-between;
  }

  /* Card form title
  /* ------------------------------------------------------------------------ */

  .card__form-title {
    font-size: var(--text-medium);
    font-weight: 700;
  }

  /* Card form variants - styled forms for domain actions
  /* ------------------------------------------------------------------------ */

  .card__form[class*="card__form--"] {
    border: var(--card-border);
    border-radius: 0.5em;
    box-shadow: var(--shadow);
    margin-block-start: var(--block-space-half);
    padding: var(--block-space);
  }
}
