body {
  font-size: var(--fs-body);
  line-height: var(--lh-copy);
}

h1,
h2,
h3,
h4,
p,
ul {
  margin: 0;
}

h1,
h2,
h3,
h4,
.display,
.page-title,
.project-title,
.publication-title,
.hero-title,
.publication-block--heading,
.publication-block--quote {
  font-family: var(--font-sans);
  font-weight: 300;
  color: var(--text);
}

h1,
h2,
h3,
.display,
.page-title,
.project-title,
.publication-title {
  letter-spacing: var(--type-nav-letter-spacing);
  line-height: 1.18;
}

.display,
.page-title,
.project-title,
.publication-title,
.hero-title,
.publication-block--heading {
  text-transform: uppercase;
}

h1 {
  font-size: var(--fs-h1);
}

h2 {
  font-size: var(--fs-h2);
}

h3,
h4 {
  font-size: var(--fs-h3);
}

.display {
  font-size: var(--fs-display);
  line-height: 1.18;
  font-weight: 300;
  letter-spacing: var(--type-nav-letter-spacing);
}

.hero-title {
  font-family: var(--font-sans);
  font-size: var(--fs-hero);
  line-height: var(--lh-tight);
  font-weight: 300;
  letter-spacing: var(--type-nav-letter-spacing);
}

.hero-kicker,
.meta-label,
.nav-link,
.section-label,
.small-caps,
.card-meta,
.list-meta,
.text-link,
.mobile-menu__nav a,
.mobile-menu__close,
.menu-toggle,
.project-single-group-button {
  font-family: var(--font-sans);
  font-size: var(--fs-small);
  line-height: 1.3;
  color: var(--text);
  text-transform: uppercase;
  letter-spacing: var(--type-nav-letter-spacing);
  font-weight: var(--type-nav-weight);
}

.editorial {
  font-family: var(--font-sans);
  font-weight: var(--type-nav-weight);
  letter-spacing: var(--type-nav-letter-spacing);
  line-height: 1.18;
}

.body-copy,
.rich-text p {
  max-width: 760px;
  font-family: var(--font-sans);
  font-weight: 400;
  letter-spacing: 0.01em;
  color: var(--text);
  opacity: 0.84;
}

.rich-text p + p {
  margin-top: 1em;
}


/* Final typography refinement: lighter architectural typography across public pages */
body:not(.admin-body) h1,
body:not(.admin-body) h2,
body:not(.admin-body) h3,
body:not(.admin-body) h4,
body:not(.admin-body) .display,
body:not(.admin-body) .page-title,
body:not(.admin-body) .project-title,
body:not(.admin-body) .publication-title,
body:not(.admin-body) .hero-title,
body:not(.admin-body) .publication-block--heading,
body:not(.admin-body) .publication-block--quote,
body:not(.admin-body) .editorial {
  font-family: var(--font-light);
  font-weight: 300;
}

body:not(.admin-body) .hero-kicker,
body:not(.admin-body) .meta-label,
body:not(.admin-body) .nav-link,
body:not(.admin-body) .section-label,
body:not(.admin-body) .small-caps,
body:not(.admin-body) .card-meta,
body:not(.admin-body) .list-meta,
body:not(.admin-body) .text-link,
body:not(.admin-body) .mobile-menu__nav a,
body:not(.admin-body) .mobile-menu__close,
body:not(.admin-body) .menu-toggle,
body:not(.admin-body) .project-single-group-button {
  font-family: var(--font-light);
  font-weight: 300;
}

body:not(.admin-body) .body-copy,
body:not(.admin-body) .rich-text p {
  font-family: var(--font-light);
  font-weight: 300;
}

/* 0104.11 safe rich text links from admin markdown/plain URLs */
body:not(.admin-body) .rich-text a,
body:not(.admin-body) .body-copy a,
body:not(.admin-body) .card-meta a,
body:not(.admin-body) .project-slide__caption a,
body:not(.admin-body) .publication-block__caption a {
  color: inherit;
  text-decoration: underline;
  text-underline-offset: 0.18em;
  text-decoration-thickness: 0.06em;
}
