/* Jedno miejsce definicji wyglądu tekstu; tag HTML nie determinuje roli. */
.t-head-1,
.t-head-2,
.t-head-3,
.t-head-4,
.t-head-5,
:where(.prose) :where(h1, h2, h3, h4, h5, h6) {
  font-family: var(--font-family-heading);
  font-weight: var(--font-weight-heading);
  letter-spacing: var(--letter-spacing-heading);
}

.t-head-1,
:where(.prose) :where(h1) {
  font-size: var(--font-size-head-1);
  line-height: var(--line-height-head-1);
}

.t-head-2,
:where(.prose) :where(h2) {
  font-size: var(--font-size-head-2);
  line-height: var(--line-height-head-2);
}

.t-head-3,
:where(.prose) :where(h3, h4, h5, h6) {
  font-size: var(--font-size-head-3);
  line-height: var(--line-height-md);
}

.t-body,
.t-body-lg,
.t-body-lead,
.t-body-sm,
.t-caption,
:where(.c-contact-form .wpcf7-not-valid-tip),
:where(.c-article__content .gallery-caption),
:where(.c-article__content .wp-caption-text) {
  font-family: var(--font-family-body);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-lg);
}

.t-body-lg { font-size: var(--font-size-body-lg); }
.t-body { font-size: var(--font-size-body); }
.t-body-sm { font-size: var(--font-size-body-sm); }
.t-caption,
:where(.c-contact-form .wpcf7-not-valid-tip),
:where(.c-article__content .gallery-caption),
:where(.c-article__content .wp-caption-text) {
  font-size: var(--font-size-caption);
  line-height: var(--line-height-sm);
}

.t-title-sm {
  font-family: var(--font-family-heading);
  font-size: var(--font-size-title-sm);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-lg);
}

/* Treść redakcyjna korzysta z tego samego systemu co role t-*. */
.prose {
  max-inline-size: var(--container-reading);
}

.prose > * + * {
  margin-block-start: var(--stack-space);
}

:where(.prose) :where(ul, ol) {
  padding-inline-start: var(--space-5);
}

:where(.prose) :where(li + li) {
  margin-block-start: var(--space-2);
}

:where(.prose) :where(blockquote) {
  padding-inline-start: var(--space-5);
  border-inline-start: var(--border-width-sm) solid var(--color-border);
}

:where(.prose) :where(pre) {
  max-inline-size: 100%;
  overflow-x: auto;
  padding: var(--space-4);
  background: var(--color-surface-subtle);
}

/* Role do ponownego użycia, niezależne od komponentu Hero. */
.t-body-lead {
  font-size: var(--font-size-lead);
  letter-spacing: var(--letter-spacing-lead);
}

.t-head-3 { letter-spacing: var(--letter-spacing-tight); }

@media (max-width: 69.999rem) {
  .t-head-compact { font-size: var(--font-size-head-compact); }
}

/* Rola h4 z Figmy, wspólna dla kart i kolejnych komponentów. */
.t-head-4 {
  font-size: var(--font-size-head-4);
  line-height: var(--line-height-md);
  letter-spacing: var(--letter-spacing-tight);
}

/* Mały nagłówek h5 i jego mobilny wariant dla ról większych. */
.t-head-5 { font-size: var(--font-size-head-5); line-height: var(--line-height-md); letter-spacing: var(--letter-spacing-tight); }
@media (max-width: 69.999rem) {
  .t-head-small-mobile { font-size: var(--font-size-head-5); }
}

/* Rola podsumowania: Headland 16 mobile, Gotu 20 desktop, zgodnie z Figmą. */
.t-summary {
  font-family: var(--font-family-summary);
  font-size: var(--font-size-summary);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-lg);
  letter-spacing: var(--letter-spacing-summary);
}

/* Wariant roli nagłówka h2 mobile z Figmy, wspólny dla sekcji treści. */
@media (max-width: 69.999rem) {
  .t-head-mobile-md { font-size: var(--font-size-head-mobile-md); }
}

/* Mały nagłówek kart i śródtytułów opisów usług. */
.t-head-xs,
:where(.c-service-content) :where(h3) {
  font-family: var(--font-family-heading);
  font-size: var(--font-size-head-xs);
  font-weight: var(--font-weight-heading);
  line-height: var(--line-height-lg);
  letter-spacing: normal;
}

/* Mobilny wariant małego tytułu, wspólny dla rozwijanych usług. */
@media (max-width: 69.999rem) {
 .t-title-mobile-xs { font-size: var(--font-size-head-xs); }
}

/* Drugorzędny tekst na ciemnych powierzchniach. */
.t-muted-inverse { color: var(--color-text-inverse-secondary); }

/* Gotu i Headland One mają w projekcie wyłącznie odmianę Regular.
   Zachowujemy semantykę wyróżnienia bez syntetycznego pogrubiania glifów. */
:where(.c-site-main) :where(strong, b) {
  font-weight: inherit;
}

/* Projekt korzysta z odmiany Regular: bez sztucznego pogrubiania glifów. */
:where(.c-site-header, .c-site-main, .c-site-footer, .c-mobile-menu) {
  font-synthesis-weight: none;
}
