/* ============================================================
   Container — shared responsive layout constraint
   Provides 1024px max content width with responsive side padding.
   Import this in any component that uses the .container class.
   ============================================================ */

.container {
  position:   relative;
  width:      100%;
  max-width:  calc(1024px + 160px); /* 1024px content + 80px × 2 */
  padding:    0 80px;
  margin:     0 auto;
  box-sizing: border-box;
}

/* Tablet (≤991px): 60px sides */
@media (max-width: 991px) {
  .container {
    padding: 0 60px;
  }
}

/* Landscape mobile (≤767px): 2rem sides */
@media (max-width: 767px) {
  .container {
    padding: 0 2rem;
  }
}



/* ============================================================
   Wide container — 1360px content + 48px side padding
   Used for full-bleed section content blocks (slider, big cards)
   that need to be wider than the standard 1024px text container.
   ============================================================ */

.container-wide {
  width:      100%;
  max-width:  calc(1384px + 96px);   /* 1384px content + 48px × 2 */
  padding:    0 3rem;                /* 48px sides */
  margin:     0 auto;
  box-sizing: border-box;
}

/* Tablet (≤991px): 16px less than .container (60px → 44px) */
@media (max-width: 991px) {
  .container-wide {
    padding: 0 44px;
  }
}

/* Landscape mobile (≤767px): 16px less than .container (2rem → 1rem) */
@media (max-width: 767px) {
  .container-wide {
    padding: 0 1rem;
  }
}


/* ============================================================
   LegalHubCostSection — Figma Z4nd44TYu5d8ttn7Y73Djs, nodes 865:6477 + 865:6514.
   Spec: LegalHubCostSection.figma.md.
   ============================================================ */

.legal-hub-cost {
  background: var(--background);
}

/* Figma puts only 64px between this section's header and the end of
   LegalHubEndToEndSection — they share one frame ("How it works", 865:6080) and
   the preceding section already owns its 128px bottom padding. `.hp-section`'s
   8rem here would render 256px of dead space. */
.legal-hub-cost {
  padding-top: 4rem;   /* 64px */
}

/* The section-header + sticky-badge convention: this stack owns the
   header → content gap. See docs/conventions.md. */
.legal-hub-cost__content {
  display:        flex;
  flex-direction: column;
  gap:            4rem;   /* 64px */
  width:          100%;
}

/* Figma: four 247px cards + three 12px gaps = 1024, exactly the container. */
.legal-hub-cost__cards {
  display:               grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap:                   var(--spacing-3);   /* 12px */
  align-items:           stretch;
  width:                 100%;
}

.legal-hub-cost__card {
  display:        flex;
  flex-direction: column;
  gap:            var(--spacing-8);   /* 32px */
  align-items:    flex-start;
  padding:        var(--spacing-7);   /* 28px */
  background:     var(--card);
  border:         0.5px solid var(--border);
  border-radius:  12px;
  box-sizing:     border-box;
}

.legal-hub-cost__card-icon {
  display:     inline-flex;
  flex-shrink: 0;
  color:       var(--primary);
}

.legal-hub-cost__card-copy {
  display:        flex;
  flex-direction: column;
  gap:            var(--spacing-2);   /* 8px */
}

.legal-hub-cost__card-title,
.legal-hub-cost__card-body {
  margin:      0;
  font-size:   var(--font-size-base);     /* 16px */
  line-height: var(--line-height-base);   /* 24px */
}

.legal-hub-cost__card-title {
  font-weight: var(--font-weight-bold);
  color:       var(--popover-foreground);
}

.legal-hub-cost__card-body {
  font-weight: var(--font-weight-regular);
  color:       var(--muted-foreground);
}


/* ============================================================
   Responsive
   ============================================================ */

@media (max-width: 991px) {
  .legal-hub-cost__cards {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* The section-header convention holds `__content` at a flat 4rem everywhere;
   this section takes 3rem on mobile, where 64px between the heading and the
   first card is more air than the stack needs. Owner's call — a scoped
   exception, not a change to the convention. */
@media (max-width: 767px) {
  .legal-hub-cost__content {
    gap: 3rem;   /* 48px */
  }
}

@media (max-width: 559px) {
  .legal-hub-cost__cards {
    grid-template-columns: minmax(0, 1fr);
  }

  .legal-hub-cost__card {
    gap:     var(--spacing-5);   /* 20px — 32px is a lot of air on one column */
    padding: var(--spacing-5);
  }
}

