[data-component-id="befora:related-grid"] {
  margin: var(--s-7, 48px) 0;

  .befora-related-header {
    margin: 0 0 var(--s-5, 24px);
  }

  .befora-related-kicker {
    font-family: var(--bef-mono);
    font-size: var(--fs-10);
    letter-spacing: 0.24em;
    color: var(--bef-ember);
    text-transform: uppercase;
    margin: 0 0 14px;
  }

  .befora-related-heading {
    font-family: var(--bef-display);
    font-size: var(--fs-34);
    line-height: 1.1;
    letter-spacing: -0.01em;
    margin: 0;
    color: var(--bef-ink, #1B1814);
  }

  .befora-related-lede {
    font-family: var(--bef-body);
    font-size: var(--fs-16);
    line-height: 1.6;
    color: var(--bef-graphite);
    max-width: 62ch;
    margin: 14px 0 0;
  }

  .befora-related-list {
    display: grid;
    gap: var(--s-3, 12px);
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    list-style: none;
    padding: 0;
    margin: 0;
  }

  &[data-columns="2"] .befora-related-list { grid-template-columns: repeat(2, 1fr); }
  &[data-columns="3"] .befora-related-list { grid-template-columns: repeat(3, 1fr); }
  &[data-columns="4"] .befora-related-list { grid-template-columns: repeat(4, 1fr); }
  &[data-columns="5"] .befora-related-list { grid-template-columns: repeat(5, 1fr); }

  /* Fixed-column grids collapse to two columns under 720px so cards
     stay readable. The auto-fit default already handles its own
     wrapping at the 220px minimum. */
  @media (width <= 720px) {
    &[data-columns="3"] .befora-related-list,
    &[data-columns="4"] .befora-related-list,
    &[data-columns="5"] .befora-related-list {
      grid-template-columns: repeat(2, 1fr);
    }
  }

  /* Phone-portrait viewports go single-column. The card content
     (label + summary + CTA) gets cramped under ~170px. */
  @media (width <= 480px) {
    &[data-columns="2"] .befora-related-list,
    &[data-columns="3"] .befora-related-list,
    &[data-columns="4"] .befora-related-list,
    &[data-columns="5"] .befora-related-list {
      grid-template-columns: 1fr;
    }
  }

  /* When a related-card carries data-is-current="true", hide it. The
     operator (or a future preprocess hook) sets this on the child to
     match the parent's current_url. */
  [data-component-id="befora:related-card"][data-is-current="true"] {
    display: none;
  }
}
