/* Project roles follow the established display, reading and label faces. */
.single-our_projects .ai-page-hero h1 {
  font-size: var(--ai-type-page-size);
  font-weight: var(--ai-type-heading-weight);
  line-height: var(--ai-type-page-leading);
  letter-spacing: var(--ai-type-heading-tracking);
  text-wrap: balance;
  overflow-wrap: break-word;
}
.ai-case-study .ai-case-heading h2,
.ai-case-study .ai-case-cta h2 {
  font-family: var(--ai-font-display);
  font-size: var(--ai-type-section-size);
  font-weight: var(--ai-type-heading-weight);
  line-height: var(--ai-type-section-leading);
  letter-spacing: var(--ai-type-heading-tracking);
  margin-block: 0 var(--ai-type-section-gap);
  text-wrap: balance;
  overflow-wrap: break-word;
}
.ai-case-study .ai-case-prose {
  font-family: var(--ai-font-body);
  font-size: var(--ai-type-body-size);
  font-weight: 400;
  line-height: var(--ai-type-body-leading);
}
.ai-case-study .ai-case-prose :is(p,li) {
  color: inherit;
  font-size: inherit;
  line-height: inherit;
  max-width: var(--ai-type-reading-measure);
  overflow-wrap: break-word;
}
.ai-case-study .ai-case-prose p { margin-block: 0 var(--ai-type-paragraph-gap); }
.ai-case-study .ai-case-prose p:last-child { margin-bottom: 0; }
.ai-case-study .ai-case-challenges .ai-case-prose { color: inherit; }
.ai-case-study .ai-case-challenge h3:first-child { margin-top: 0; }
.ai-case-study .ai-case-result__grid { align-items: start; gap: clamp(1.5rem, 5vw, 4.5rem); }
.ai-case-result__grid > .ai-case-heading h2 { margin-bottom: 0; }
.ai-case-result__content { min-width: 0; display: grid; gap: clamp(1.5rem, 3vw, 2rem); }
.ai-case-result__quote { margin: 0; padding: clamp(1.25rem, 3vw, 2rem); background: var(--case-soft); border-top: 1px solid var(--case-line); }
.ai-case-result__quote blockquote { margin: 0; font-family: var(--ai-font-display); font-size: clamp(1.25rem, 1.9vw, 1.65rem); line-height: 1.4; }
.ai-case-result__quote blockquote p { margin: 0; font: inherit; }
.ai-case-result__quote figcaption { margin-top: 1rem; color: var(--case-muted); }
@media (max-width: 850px) {
  .ai-case-study .ai-case-result__grid { grid-template-columns: minmax(0,1fr); }
}
.ai-case-study .ai-case-prose :is(ul,ol) {
  max-width: var(--ai-type-reading-measure);
}
.ai-case-study .ai-case-heading > div {
  font-family: var(--ai-font-body);
  font-size: var(--ai-type-body-size);
  line-height: var(--ai-type-body-leading);
  max-width: var(--ai-type-reading-measure);
  overflow-wrap: break-word;
}
.ai-case-study .ai-case-heading > div > p {
  font-size: inherit;
  line-height: inherit;
}
.ai-case-study .ai-case-prose h3,
.ai-case-study .ai-case-scope__item h3,
.ai-case-study .ai-case-challenge h3 {
  font-family: var(--ai-font-display);
  font-size: var(--ai-type-card-size);
  font-weight: var(--ai-type-card-weight);
  line-height: var(--ai-type-card-leading);
  letter-spacing: var(--ai-type-card-tracking);
  margin-block: 0 var(--ai-type-card-gap);
  text-wrap: balance;
  overflow-wrap: break-word;
}
.ai-case-study .ai-case-prose h3 { margin-block: 2rem 1rem; }
.ai-case-study .ai-case-prose h3:first-child { margin-top: 0; }
.ai-case-study .ai-case-facts span,
.ai-case-study .ai-case-heading > p,
.ai-case-study .ai-case-story__panel span,
.ai-case-study .ai-case-details dt {
  font-family: var(--ai-font-label);
  font-size: var(--ai-type-label-size);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: .04em;
  overflow-wrap: break-word;
}
.ai-case-study .ai-case-facts strong,
.ai-case-study .ai-case-details dd {
  font-size: var(--ai-type-body-size);
  line-height: 1.5;
  font-variant-numeric: tabular-nums;
  overflow-wrap: anywhere;
}
.ai-case-study .ai-case-details summary { font-size: 1.0625rem; line-height: 1.5; }
.ai-case-study .ai-case-highlight strong {
  font-size: clamp(2.25rem, 3vw, 2.75rem);
  line-height: 1.1;
  letter-spacing: -.03em;
  font-variant-numeric: tabular-nums;
}
.ai-case-study .ai-case-highlight.has-long-value strong {
  font-size: clamp(1.5rem, 1.8vw, 1.6875rem);
  line-height: 1.2;
  letter-spacing: -.02em;
}
.ai-case-study .ai-case-challenge strong {
  font-size: clamp(1.875rem, 2.5vw, 2.625rem);
  line-height: 1.15;
  letter-spacing: -.025em;
  white-space: normal;
  overflow-wrap: anywhere;
  font-variant-numeric: tabular-nums;
}
.ai-case-study .ai-case-filters button,
.ai-case-study .ai-case-gallery__load-more,
.ai-case-study .ai-case-project-footer a {
  font-size: var(--ai-type-control-size);
  line-height: 1.5;
}
.ai-project-index .ai-project-index__intro h2,
.ai-project-index .ai-project-index__toolbar h2 {
  font-family: var(--ai-font-display);
  font-size: var(--ai-type-section-size);
  font-weight: var(--ai-type-heading-weight);
  line-height: var(--ai-type-section-leading);
  letter-spacing: var(--ai-type-heading-tracking);
  margin-block: 0 var(--ai-type-section-gap);
  text-wrap: balance;
  overflow-wrap: break-word;
}
.ai-project-index .ai-project-card__title {
  font-family: var(--ai-font-display);
  font-size: var(--ai-type-card-size);
  font-weight: var(--ai-type-card-weight);
  line-height: var(--ai-type-card-leading);
  letter-spacing: var(--ai-type-card-tracking);
  text-wrap: balance;
  overflow-wrap: anywhere;
}
.ai-project-index .ai-project-card__type,
.ai-project-index .ai-project-index__filters button {
  font-family: var(--ai-font-label);
  font-size: var(--ai-type-label-size);
  font-weight: 600;
  line-height: 1.5;
  white-space: normal;
  overflow-wrap: break-word;
}
.ai-project-index .ai-project-card__meta { line-height: 1.5; }
/* Project narratives use a full-width title and readable sections instead of narrow tracks. */
.ai-case-study .ai-case-overview__grid,
.ai-case-study .ai-case-approach__grid {
  display: grid;
  grid-template-columns: minmax(0,1fr);
  gap: 36px;
}
.ai-case-study :is(.ai-case-overview,.ai-case-approach) .ai-case-heading h2 {
  max-width: 34ch;
  font-size: clamp(2rem,3.5vw,3rem);
  letter-spacing: -.02em;
  line-height: 1.16;
  margin-bottom: 0;
}
.ai-case-study .ai-case-overview__grid.has-highlight {
  grid-template-columns: minmax(0,1fr) minmax(240px,.32fr);
  column-gap: clamp(32px,4vw,64px);
}
.ai-case-study .ai-case-overview__grid > .ai-case-heading { grid-column: 1 / -1; }
.ai-case-study .ai-case-overview__grid.has-highlight > .ai-case-highlight { grid-column: 2; grid-row: 2; }
.ai-case-study :is(.ai-case-overview,.ai-case-approach) .ai-case-prose { max-width: none; }
.ai-case-study :is(.ai-case-overview,.ai-case-approach) .ai-case-prose :is(p,ul,ol) { max-width: 75ch; }
.ai-case-reading__sections { display: grid; grid-template-columns: minmax(0,1fr); gap: 32px; }
.ai-case-reading__section { min-width: 0; }
.ai-case-study .ai-case-reading__section > :first-child { margin-top: 0; }
.ai-case-study .ai-case-reading__section > :last-child { margin-bottom: 0; }
.ai-case-study .ai-case-approach .ai-case-prose ul { grid-template-columns: minmax(0,1fr); }
.ai-case-study .ai-case-gallery__overlay small { grid-column: 1; grid-row: 1; margin-bottom: 0; }
.ai-case-study .ai-case-gallery__overlay i { grid-row: 1; }
@media (min-width: 1100px) {
  .ai-case-reading__sections { grid-template-columns: repeat(2,minmax(0,1fr)); column-gap: 56px; }
  .ai-case-overview__grid.has-highlight .ai-case-reading__sections { grid-template-columns: minmax(0,1fr); }
}
/* Read each approach in one centered column, with every heading directly above the paragraphs it introduces. */
.ai-case-study .ai-case-approach__grid {
  max-width: 55rem;
}
.ai-case-study .ai-case-reading__sections--approach {
  grid-template-columns: minmax(0,1fr);
  gap: 40px;
}
.ai-case-reading__sections--approach .ai-case-reading__section {
  display: grid;
  grid-template-columns: minmax(0,1fr);
  align-items: start;
  gap: 16px;
}
.ai-case-reading__body { min-width: 0; }
.ai-case-study .ai-case-reading__sections--approach .ai-case-reading__section > :is(h2,h3) {
  max-width: none;
  margin: 0;
  font-size: clamp(1.25rem,1.65vw,1.5rem);
  font-weight: var(--ai-type-heading-weight);
  line-height: 1.4;
  letter-spacing: 0;
  text-wrap: pretty;
}
.ai-case-study .ai-case-approach .ai-case-reading__body :is(p,ul,ol) {
  max-width: var(--ai-type-reading-measure);
}
.ai-case-reading__body > :first-child { margin-top: 0; }
.ai-case-reading__body > :last-child { margin-bottom: 0; }
.ai-case-study .ai-case-approach .ai-case-reading__body :is(ul,ol) {
  display: block;
  margin-block: var(--ai-type-paragraph-gap);
  padding-left: 1.25em;
}
.ai-case-study .ai-case-approach .ai-case-reading__body ul { list-style: disc; }
.ai-case-study .ai-case-approach .ai-case-reading__body li {
  list-style: inherit;
  border: 0;
  padding: 0;
  margin-block: .5rem;
}
.ai-case-study .ai-case-approach .ai-case-reading__body li::marker { color: var(--case-blue); }
/* Disclosure preserves whole authored blocks and uses the existing project link treatment. */
.ai-case-narrative [hidden] { display: none !important; }
.ai-case-narrative.has-more .ai-case-reading__sections { grid-template-columns: minmax(0,1fr); }
.ai-case-narrative__more { margin-top: var(--ai-type-paragraph-gap); }
.ai-case-narrative__more.is-animating { overflow: hidden; }
.ai-case-narrative__more > :first-child { margin-top: 0; }
.ai-case-narrative__more > :last-child { margin-bottom: 0; }
.ai-case-narrative__toggle {
  display: inline-flex;
  align-items: center;
  gap: .75rem;
  min-height: 44px;
  margin-top: 24px;
  padding: 8px 0;
  border: 0;
  border-bottom: 1px solid currentColor;
  border-radius: 0;
  background: transparent;
  color: var(--case-blue);
  font: 600 var(--ai-type-control-size)/1.5 var(--ai-font-body);
  cursor: pointer;
}
.ai-case-narrative__toggle:hover { color: var(--case-navy); }
.ai-case-narrative__toggle:focus-visible { outline: 2px solid var(--case-blue); outline-offset: 5px; }
.ai-case-narrative__toggle svg { transition: transform .2s ease; }
.ai-case-narrative.is-expanded .ai-case-narrative__toggle svg { transform: rotate(180deg); }
@media (prefers-reduced-motion: reduce) { .ai-case-narrative__toggle svg { transition: none; } }
@media (max-width: 900px) {
  .ai-case-study .ai-case-overview__grid.has-highlight { grid-template-columns: minmax(0,1fr); }
  .ai-case-study .ai-case-overview__grid.has-highlight > .ai-case-highlight { grid-column: 1; grid-row: auto; }
}
/* Let the real captions set the minimum size of each masonry row. */
.ai-project-index .ai-project-masonry-group.is-complete {
  grid-template-rows: repeat(6, minmax(clamp(58px, 5vw, 76px), 1fr));
}
.ai-project-index .ai-project-card { min-height: min-content; }
.ai-project-index .ai-project-card > a { display: flex; min-height: 100%; }
.ai-project-index .ai-project-card__content {
  min-width: 0;
  position: relative;
  inset: auto;
  flex: 1;
  height: auto;
  min-height: 100%;
  gap: 1rem;
}
@media (max-width: 700px) {
  .ai-case-study .ai-case-prose,
  .ai-case-study .ai-case-heading > div,
  .ai-case-study .ai-case-details summary { font-size: var(--ai-type-body-size); }
  .ai-case-study .ai-case-highlight strong { font-size: clamp(3rem, 15vw, 4rem); }
  .ai-case-study .ai-case-highlight.has-long-value strong { font-size: 1.5rem; }
  .ai-project-index .ai-project-masonry-group,
  .ai-project-index .ai-project-masonry-group.is-complete { grid-template-columns: 1fr; grid-template-rows: none; }
  .ai-project-index .ai-project-masonry-group .ai-project-card { grid-column: 1 !important; grid-row: auto !important; aspect-ratio: auto !important; }
  .ai-project-index .ai-project-card > a { display: grid; height: auto; min-height: 0; }
  .ai-project-index .ai-project-card > a::before { content: ""; grid-area: 1 / 1; padding-top: calc(100% / 1.24); }
  .ai-project-index .ai-project-card__content { grid-area: 1 / 1; min-height: 0; }
}
.ai-project-index .ai-project-card__meta { overflow-wrap: anywhere; }
@media (min-width: 701px) {
  .ai-project-index .ai-project-masonry-group.is-remainder-1 { grid-template-rows: minmax(clamp(240px,28vw,390px), auto); }
  .ai-project-index .ai-project-masonry-group.is-remainder-2 { grid-template-rows: minmax(clamp(260px,27vw,380px), auto); }
  .ai-project-index .ai-project-masonry-group.is-remainder-3 { grid-template-rows: repeat(2, minmax(clamp(150px,14vw,200px), auto)); }
  .ai-project-index .ai-project-masonry-group.is-remainder-4 { grid-template-rows: repeat(2, minmax(clamp(190px,19vw,270px), auto)); }
}

/* Two readable columns replace narrow masonry tracks on tablets. */
@media (min-width: 701px) and (max-width: 1000px) {
  .ai-project-index .ai-project-masonry-group,
  .ai-project-index .ai-project-masonry-group.is-complete,
  .ai-project-index .ai-project-masonry-group.is-remainder-1,
  .ai-project-index .ai-project-masonry-group.is-remainder-2,
  .ai-project-index .ai-project-masonry-group.is-remainder-3,
  .ai-project-index .ai-project-masonry-group.is-remainder-4 {
    grid-template-columns: repeat(2,minmax(0,1fr));
    grid-template-rows: none;
    grid-auto-rows: minmax(340px,auto);
  }
  .ai-project-index .ai-project-masonry-group[class] .ai-project-card:nth-child(n) { grid-column: auto; grid-row: auto; }
  .ai-project-index .ai-project-masonry-group.is-complete .ai-project-card:last-child { grid-column: 1 / -1; }
  .ai-project-index .ai-project-card__content { min-height: 340px; gap: 28px; }
}
