/* Focused interaction and layout updates for the 2026 cohort experience. */
.what-we-do{min-height:92svh;display:grid;align-items:center}
.what-we-do .intro-grid{grid-template-columns:1fr;align-items:center}
.what-we-do h2{font-size:clamp(3.25rem,7.2vw,7.4rem);line-height:.91;letter-spacing:-.075em;max-width:none;margin-bottom:clamp(2rem,4vw,4.5rem)}
.what-we-do .lead{font-size:clamp(1.2rem,1.65vw,1.7rem);max-width:48rem}
.what-we-do p:not(.kicker){max-width:48rem}
.word-band{overflow:hidden;display:flex;white-space:nowrap;font-size:38px}
.word-band-track{display:flex;flex:0 0 auto;min-width:max-content;animation:word-loop 26s linear infinite}
.word-band-track span{display:inline-flex;align-items:center}
@keyframes word-loop{to{transform:translateX(-100%)}}
/* Explore: three compact, distinctly coloured cards on a single row */
.door-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;max-width:1180px;margin-inline:auto}
.door{min-height:0;padding:26px 24px;border-radius:20px}
.door-cohorts,.door-people,.door-interest{grid-column:auto;min-height:0}
.door span{font-size:11px;opacity:.72}
.door h3{font-size:clamp(22px,2vw,28px);margin:14px 0 10px}
.door p{font-size:14px;line-height:1.45;margin:0 0 18px}
.door b{font-size:14px}
/* Distinct card colours */
.door-cohorts{background:var(--blue);border-color:var(--blue);color:#fff}
.door-cohorts p{color:#eaefff}
.door-people{background:var(--coral);border-color:var(--coral);color:#fff}
.door-people p{color:#ffe7e2}
.door-interest{background:var(--yellow);border-color:var(--yellow);color:#10131a}
.door-cohorts:hover,.door-people:hover,.door-interest:hover{transform:translateY(-6px);filter:brightness(1.04);border-color:currentColor}
.page-head{padding:clamp(1.6rem,4vw,3.25rem) 0 clamp(3rem,6vw,5.25rem)}
.case-switch{position:sticky;top:5.75rem;z-index:9;display:inline-flex;gap:6px;padding:6px;margin-bottom:clamp(2.5rem,5vw,5rem);border:1px solid #ffffffaa;border-radius:999px;background:#1f2c66;box-shadow:0 10px 30px #10131a3d}
.case-switch button{position:relative;z-index:1;border:0;font-weight:800;letter-spacing:-.01em;color:#fff}
.case-switch button[aria-pressed=true]{background:transparent;color:#10131a}
.case-switch-indicator{display:block;position:absolute;top:6px;bottom:6px;left:6px;border-radius:999px;background:var(--yellow);pointer-events:none;transition:transform .35s cubic-bezier(.16,1,.3,1),width .35s cubic-bezier(.16,1,.3,1)}
/* Left case header stays pinned; only the right-hand case copy scrolls */
.case-panel aside{position:sticky;top:9.75rem;align-self:start}
/* Project cards fit the 4:3 aspect ratio matching moments cards, with 24px rounded corners */
.project-card{min-height:0;aspect-ratio:4/3;border-radius:24px;overflow:hidden;background:#10131a}
.project-card picture{display:block;position:absolute;inset:0;width:100%;height:100%}
.project-card img{width:100%;height:100%;object-fit:cover;object-position:center;filter:saturate(.85);transition:transform .5s cubic-bezier(.16,1,.3,1),filter .4s ease}
/* Per-photo framing: keep every person inside the crop at every width. */
.project-card.time img{object-position:50% 50%}
.project-card.sawa img{object-position:48% 50%}
.project-card:hover img{transform:scale(1.03);filter:saturate(1)}
/* View TimeKeeper / View Sawa text is hidden by default, visible only on hover */
/* Collapse the hidden CTA so the "Group 01" label still sits on the card floor. */
.project-card strong{display:block;max-height:0;overflow:hidden;opacity:0;transform:translateY(10px);transition:max-height .4s cubic-bezier(.16,1,.3,1),opacity .3s cubic-bezier(.16,1,.3,1),transform .35s cubic-bezier(.16,1,.3,1)}
.project-card:hover strong,.project-card:focus-visible strong,.project-card[aria-pressed=true]:hover strong{max-height:2.4em;opacity:1;transform:translateY(0)}
.project-card em{display:none}
/* Moments: fluid 4:3 cards capped at 581px wide, 24px rounded edges.
   The box must stay 4:3 at every width — a fixed pixel height beats aspect-ratio
   and silently squares off the crop once the column drops below its cap. */
.moments{grid-template-columns:repeat(2,minmax(0,1fr));max-width:1182px;margin-inline:auto;justify-content:center;align-items:start;gap:20px}
.moments figure{align-self:start;margin:0;max-width:581px;width:100%}
.moments picture{display:block;width:100%}
.moments img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;object-position:var(--focus,50% 50%);border-radius:24px}


@media (max-width:760px){.what-we-do{min-height:auto;padding-block:clamp(5rem,14vw,7rem)}.what-we-do .intro-grid{grid-template-columns:1fr}.what-we-do h2{font-size:clamp(3rem,14vw,5rem)}.door-grid{grid-template-columns:1fr;max-width:none}.door-cohorts{grid-column:auto;min-height:330px}.door-people,.door-interest{min-height:330px}.case-switch{top:4.75rem}.case-panel aside{position:static}.moments{grid-template-columns:1fr}}
/* Programme institutions: one optical size for every mark at every breakpoint.
   Capping height alone let the M5 lockup (padding baked into the bitmap) render
   about a third the visual weight of the wordmarks, and differently per width. */
.marks>div{height:clamp(96px,9vw,120px);padding:clamp(14px,1.6vw,22px);background:#fff;overflow:hidden}
.marks img{max-height:clamp(44px,4.2vw,58px);max-width:100%;width:auto;height:auto;object-fit:contain}
.marks .m5-mark{background:#fff}
@media (max-width:760px){.marks{gap:16px}}

/* People: Sheffield crest + hover popover */
.inspiration{display:flex;gap:22px;align-items:center}
.uos-crest{flex:0 0 auto;width:88px;height:88px}
.person-pop{position:fixed;z-index:70;left:0;top:0;width:300px;display:grid;grid-template-columns:84px 1fr;gap:14px;align-items:center;padding:16px;border:1px solid var(--line);border-radius:20px;background:var(--panel);color:var(--ink);box-shadow:0 22px 55px #10131a45;opacity:0;pointer-events:none;transform-origin:bottom center;transform:translate(-50%,12px) scale(.92);transition:opacity .26s ease,transform .34s cubic-bezier(.34,1.56,.64,1)}
.person-pop.show{opacity:1;transform:translate(-50%,0) scale(1)}
.person-pop.below{transform-origin:top center;transform:translate(-50%,-12px) scale(.92)}
.person-pop.below.show{transform:translate(-50%,0) scale(1)}
.person-pop img{width:84px;height:100px;object-fit:cover;border-radius:12px}
.person-pop .kicker{font-size:10px;color:var(--muted);margin:0 0 4px}
.person-pop h3{margin:0 0 6px;font-size:19px;line-height:1.05;letter-spacing:-.02em}
.person-pop p:last-child{margin:0;font-size:12.5px;line-height:1.42;color:var(--muted)}
@media (max-width:760px){.inspiration{flex-direction:column;align-items:flex-start;gap:14px}}
@media (pointer:coarse){.person-pop{display:none}}
@media (prefers-reduced-motion:reduce){.word-band-track{animation:none}.person-pop{transition:opacity .2s ease}}

/* Hero. A full-height hero on a phone is portrait, but the cohort photo is 3:2,
   so `cover` scales it by height and shows a ~13% vertical sliver of the frame.
   Shortening the hero on small screens keeps the group readable; the scroll cue
   is dropped there because it collides with the CTA. */
.home-hero img{object-position:50% 42%}
@media (max-width:760px){
  .home-hero{min-height:66svh}
  .hero-cue{display:none}
}
