/* Shared type and spacing for equivalent content across the portfolio.
   Sizes interpolate between phone and desktop without a tablet breakpoint jump. */
:root {
  --type-title: clamp(2rem, calc(.575rem + 4.222222vw), 4.375rem);
  --type-heading: clamp(1rem, calc(.6625rem + 1vw), 1.5625rem);
  --type-body: clamp(.875rem, calc(.725rem + .444444vw), 1rem);
  /* Preserve the previous absolute leading while reducing only the glyph size. */
  --line-body: calc(clamp(.875rem, calc(.725rem + .444444vw), 1.125rem) * 1.5);
  --weight-body: 375;
  --type-date: clamp(.875rem, calc(.8rem + .222222vw), 1rem);
  --space-paragraph: clamp(20px, calc(17.6px + .444444vw), 24px);
  --space-heading: clamp(16px, calc(11.2px + .888889vw), 24px);
  --space-block: clamp(32px, calc(22.4px + 1.777778vw), 48px);
  --space-section: clamp(40px, calc(25.6px + 2.666667vw), 64px);
}

.site-header nav :is(.gallery-title, .page-title) a { line-height: 22px; }
.page-header {
  padding-top: var(--space-section);
  padding-bottom: var(--space-block);
}
.page-header .title {
  font: 300 var(--type-title)/1.05 FS, sans-serif;
  padding-block: 0;
  margin: 0 0 var(--space-block);
}
.page-header .title span { font: inherit; }
.page-header .description {
  font: var(--weight-body) var(--type-body)/var(--line-body) FS, sans-serif;
  padding-block: 0;
  margin: 0 0 var(--space-paragraph);
}
.page-header :is(.date, .custom1, .custom2) {
  padding-block: 0;
  margin-block: 0;
  font-family: FS, sans-serif;
  font-size: 14px;
  line-height: 20px;
}
.page-header .date { font-size: var(--type-date); font-weight: 600; }
.page-header .custom1 { margin-top: 8px; font-weight: 400; }
.page-header .custom2 { margin-top: 4px; font-weight: 600; }
.page-header > :last-child { margin-bottom: 0; }
.page-header > :empty { display: none; }

/* Text blocks have one source of spacing, instead of nested editor padding. */
.standard-modules .rich-text,
.about-closing {
  font: var(--weight-body) var(--type-body)/var(--line-body) FS, sans-serif;
  color: #a0a0a0;
}
.standard-modules .rich-text :is(p, .main-text, div) {
  font-family: FS, sans-serif;
  font-size: var(--type-body) !important;
  line-height: var(--line-body) !important;
  font-weight: var(--weight-body);
  padding-block: 0;
  margin-block: 0;
}
.standard-modules .rich-text :is(h2, h3, .sub-title, .title),
.about-closing h2 {
  font-family: FS, sans-serif;
  font-size: var(--type-heading) !important;
  font-weight: 300;
  line-height: 1.2 !important;
  color: #2280a4;
  padding-block: 0;
  margin-block: 0 !important;
  text-align: left;
}
.standard-modules .rich-text :is(p, .main-text, h2, h3, .sub-title, .title) span {
  font-size: inherit !important;
  line-height: inherit !important;
}
.standard-modules .rich-text > * + * { margin-top: var(--space-paragraph) !important; }
.standard-modules .rich-text > :is(h2, h3, .sub-title, .title) + * {
  margin-top: var(--space-heading) !important;
}
.standard-modules .rich-text > * + :is(h2, h3, .sub-title, .title) {
  margin-top: var(--space-section) !important;
}

/* Keep authored horizontal widths and reserved image/video aspect ratios. */
.standard-modules #project-modules {
  display: flex;
  flex-direction: column;
}
.standard-modules .tree-child-wrapper { display: flow-root; }
.standard-modules #project-modules .project-module {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
  margin-top: 0;
  margin-bottom: 0;
}
.standard-modules #project-modules > .project-module + .project-module,
.standard-modules #project-modules .tree-child-wrapper > .project-module + .project-module {
  margin-top: var(--space-block);
}
.standard-modules #project-modules > .project-module + [data-flow^="heading"],
.standard-modules #project-modules > .project-module + .project-module-tree:has(> .tree-wrapper > .tree-child-wrapper:first-child > [data-flow^="heading"]:first-child),
.standard-modules #project-modules .tree-child-wrapper > .project-module + [data-flow^="heading"] {
  margin-top: var(--space-section);
}
.standard-modules #project-modules > [data-flow="heading-only"] + .project-module,
.standard-modules #project-modules .tree-child-wrapper > [data-flow="heading-only"] + .project-module {
  margin-top: var(--space-heading);
}
.standard-modules #project-modules > [data-flow="text"] + [data-flow="text"] {
  margin-top: var(--space-paragraph);
}
/* A row gap spaces wrapped gallery rows without an invisible final border. */
.standard-modules .modules .media_collection .grid--main { row-gap: 20px; }
.standard-modules .modules .media_collection .grid--main > .grid__item-container {
  border-bottom-width: 0 !important;
}
/* These modules use Grid; a legacy clearfix would create an empty final row. */
.standard-modules :is(.joan-outcome, .softgrab-gallery, .pwm-story-gallery,
  .nero-campaign-gallery, .sara-story-gallery, .hangprinter-outcome,
  .lotto-visuals, .plastic-story-gallery, .spa-model-gallery,
  .pepsi-campaign-gallery, .dew-campaign-gallery)::after { display: none; }

.standard-modules .module-caption-container { max-width: none; }
.standard-modules figcaption,
.standard-modules .module-caption,
.standard-modules .rich-text.module-caption :is(p, div, span),
.standard-modules .pwm-video-caption {
  font-family: FS, sans-serif;
  font-size: 13px !important;
  font-weight: 400;
  line-height: 19px !important;
  color: #999;
  text-align: left;
  padding: 0;
  margin: 0;
}
.standard-modules figcaption,
.standard-modules .module-caption-container,
.standard-modules .pwm-video-caption { padding-top: 8px; }
.standard-modules #project-modules .module-caption-container { padding-top: 8px !important; }
.standard-modules .module-caption > * + * { margin-top: 8px !important; }
.standard-modules .grid__caption-text { font: 400 13px/19px FS, sans-serif; }

/* The desktop context belongs above the detail; stacked reading order stays intact. */
.standard-modules .dew-campaign-detail {
  display: flex;
  flex-direction: column;
  gap: var(--space-block);
}
.standard-modules .dew-campaign-context { margin-top: 0; }
@media (min-width: 1101px) {
  .standard-modules .dew-campaign-context { order: -1; }
}
.standard-modules .pepsi-mobile-text { margin-top: var(--space-block); }

.page-header.about-header .title { text-transform: none; }
.about-closing {
  margin-top: var(--space-section);
  padding-top: var(--space-block);
  padding-bottom: 12px;
}
.about-closing h2 + p { margin-top: var(--space-heading); }
.about-closing p { margin-bottom: var(--space-paragraph); }
.about-closing .contact-link { font: inherit; }
.project-navigation {
  margin-top: var(--space-section);
  font-size: clamp(16px, calc(14.8px + .222222vw), 18px);
  line-height: 1.5;
}
@media (max-width: 932px) {
  .about-closing { margin-inline: 5%; padding-inline: 0; width: 90%; }
}
@media (max-width: 900px) {
  .standard-modules .modules .about-intro > .tree-wrapper { gap: var(--space-block); }
  .standard-modules .about-intro .project-module-image {
    margin-inline-start: 5%;
    width: 90% !important;
    max-width: 500px;
  }
}
@media (max-width: 540px) {
  :root { --weight-body: 400; }
  .standard-modules .project-module-tree:not(.about-intro):not(.sara-outcomes) > .tree-wrapper > .tree-child-wrapper + .tree-child-wrapper {
    margin-top: var(--space-block);
  }
  .standard-modules .tree-child-wrapper > .project-module-text {
    float: none !important;
    width: 100% !important;
  }
  .standard-modules .tree-child-wrapper > .project-module-image {
    float: none !important;
    width: 90% !important;
    margin-inline: 5%;
  }
}
