/* Film programme: readable credits, a visual index and a clear final enquiry. */
body { font-size: 1rem; }
.hero h1 { line-height: .87; letter-spacing: -.08em; }
.hero-copy > p:not(.eyebrow) { max-width: 40ch; line-height: 1.5; }
.hero-actions { gap: 1.25rem 2rem; }
.hero .text-link, .hero-contact { font-size: .875rem; line-height: 1.35; }
.hero-contact { min-height: 44px; }
.hero-motion {
  position: absolute; right: clamp(1.25rem,3vw,3.2rem); bottom: 5.2rem;
  z-index: 2; display: flex; align-items: center; gap: .7rem;
  min-height: 44px; padding: .65rem .85rem; border: 1px solid #ffffff70;
  color: #fff; background: #10101070; font: .75rem/1.3 'DM Mono',monospace;
  cursor: pointer; backdrop-filter: blur(8px);
}
.hero-motion:hover { background: #101010; }
.hero-motion:focus-visible { outline: 2px solid #fff; outline-offset: 4px; }
.hero .eyebrow, .hero-reel-stamp, .hero-scroll { font-size: .75rem; line-height: 1.4; }
.site-header nav { font-size: .75rem; gap: clamp(.8rem,1.4vw,1.6rem); }
.site-header nav a, .menu-button { min-height: 44px; display: inline-flex; align-items: center; }
.menu-button { display: none; font-size: .875rem; }
.language-switch { font-size: .75rem; }
.language-switch button { min-width: 36px; min-height: 44px; }
.eyebrow { font-size: .75rem; line-height: 1.5; letter-spacing: .1em; }
.manifesto-copy { max-width: 22ch; }
.manifesto-meta, .mosaic-card figcaption, .studio-image figcaption,
.discipline-frame figcaption, .case-study-visual figcaption { font-size: .75rem; line-height: 1.45; }
.mosaic-card figcaption { gap: 1rem; }
.reel .section-intro { gap: 2rem; margin-bottom: 3rem; }
.reel-note { font: 1rem/1.5 Manrope,Arial,sans-serif; text-transform: none; letter-spacing: 0; max-width: 31ch; }
#programme-index {
  display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1.5rem;
  margin-bottom: clamp(4rem,7vw,7rem); padding-top: 1.5rem;
}
#programme-index::before { content: none; }
#programme-index a {
  display: grid; grid-template-columns: 1fr auto; grid-template-rows: auto auto auto;
  min-width: 0; min-height: 0; gap: .65rem; padding: 0 0 1rem;
  border: 0; border-bottom: 1px solid #ffffff45; color: #f3f0e9; overflow: visible;
}
#programme-index a::before { content: none; }
#programme-index a:hover, #programme-index a:focus-visible, #programme-index a.active { padding: 0 0 1rem; color: #f3f0e9; }
#programme-index .programme-still {
  grid-column: 1/-1; grid-row: 1; width: 100%; height: auto; aspect-ratio: 16/9;
  object-fit: cover; filter: none; transition: opacity .25s ease;
}
#programme-index a:hover .programme-still { opacity: .82; }
#programme-index a > span { position: absolute; top: .65rem; left: .65rem; background: #101010c9; padding: .35rem .5rem; font-size: .75rem; }
#programme-index a > strong { grid-column: 1; grid-row: 2; font: 400 clamp(1.35rem,2.3vw,2.4rem)/1.05 var(--display-serif); letter-spacing: -.03em; }
#programme-index a > em { grid-column: 1; grid-row: 3; font-size: .75rem; line-height: 1.4; letter-spacing: .04em; color: #c6c4be; }
#programme-index a > b { grid-column: 2; grid-row: 2; font-size: 1.3rem; }
#programme-index a.active { border-bottom-color: var(--accent); }
.cinema-index, .verified-role, .screening-credit { font-size: .75rem; line-height: 1.5; }
.cinema-item .project-card-copy span span { font-size: .875rem; line-height: 1.4; }
.cinema-item .project-card-copy strong { line-height: .94; letter-spacing: -.045em; }
.verified-role { max-width: 44ch; color: #f0eee8; }
.screening-navigation button { font-size: .875rem; min-height: 44px; }
.screening-navigation p { font-size: .75rem; }
.screening-start b { font-size: .75rem; }
.studio,.team,.contact,.editorial-credit,.archive { content-visibility: visible; contain-intrinsic-size: none; }
.archive summary { font-size: .875rem; min-height: 44px; align-items: center; }
.studio-copy { padding: clamp(3rem,6vw,6rem) clamp(1.25rem,4vw,4rem); }
.studio-copy h2 { line-height: .96; }
.studio-copy p { line-height: 1.65; }
.case-study { padding-block: clamp(4rem,7vw,7rem); }
.case-study::before { content: none; }
.case-study-intro { grid-template-columns: 1.3fr .7fr; gap: 2rem 5vw; margin-bottom: 3.5rem; }
.case-study-intro h2 { max-width: none; font-size: clamp(3rem,6.5vw,7rem); line-height: .97; letter-spacing: -.055em; text-transform: none; }
.case-study-intro h2 em { display: inline-block; font-size: .95em; }
.case-study-intro > p:last-child { max-width: 40ch; font-size: 1rem; line-height: 1.6; }
.approach-body { display: grid; grid-template-columns: 1fr 1fr; gap: 4vw; align-items: stretch; }
.case-study-visual { min-height: 0; margin: 0; aspect-ratio: auto; }
.case-study-visual img { filter: none; }
.case-study-moves { display: grid; grid-template-columns: 1fr; border-bottom: 0; }
.case-study-moves li { grid-template-columns: 2.5rem minmax(0,1fr); gap: 1rem; padding: 1.7rem 0; }
.case-study-moves li > span { font-size: .75rem; }
.case-study-moves h3 { margin-bottom: .65rem; font-size: clamp(1.65rem,2.4vw,2.7rem); line-height: 1.05; letter-spacing: -.04em; }
.case-study-moves p { max-width: 41ch; line-height: 1.5; }
.site-case { margin-top: 2.5rem; border-block: 1px solid #f0eee84d; }
.site-case summary { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1.4rem 0; font-size: .875rem; cursor: pointer; list-style: none; }
.site-case summary::-webkit-details-marker { display: none; }
.site-case summary b { font: 1.4rem/1 'DM Mono',monospace; }
.site-case[open] summary b { transform: rotate(45deg); }
.site-case .case-study-compare { border: 0; }
.site-case .case-study-compare article { min-height: 0; padding: 1.5rem; gap: 1.5rem; }
.site-case .case-study-compare p { margin: 0; font-size: clamp(1.35rem,2.2vw,2.2rem); line-height: 1.15; }
.site-case .case-study-compare span { font-size: .75rem; }
.site-case-note { max-width: 75ch; font-size: .875rem; line-height: 1.6; padding: 0 1.5rem 1.5rem; color: #cac8c1; }
.case-study-summary { grid-template-columns: minmax(0,1fr) minmax(180px,auto); gap: 2rem; padding-top: 3rem; }
.case-study-summary p { font-size: clamp(2rem,4vw,4rem); line-height: 1.05; }
.case-study-summary p span, .case-study-summary a { font-size: .875rem; line-height: 1.5; }
.case-study-summary a { white-space: normal; }
.last-train-finale { min-height: 0; padding-block: clamp(3rem,6vw,6rem); }
.last-train-finale .last-train-card { min-height: 0; }
.train-copy { gap: 1.75rem; }
.train-copy h3 { font-size: clamp(3.5rem,7vw,7.5rem); line-height: .9; }
.train-copy > span, .train-copy > p, .train-copy nav a, .train-copy nav .trailer-primary { font-size: .75rem; line-height: 1.5; }
.train-copy nav a { min-height: 44px; align-items: center; }
.people article::before { margin-bottom: 1.5rem; font-size: .75rem; }
.people p { font-size: .875rem; }
.team h2 { margin-bottom: 2.5rem; }
.contact { gap: clamp(2rem,6vw,7rem); padding-block: clamp(4rem,7vw,7rem); }
.contact h2 { font-size: clamp(3.25rem,6.6vw,7rem); line-height: .97; letter-spacing: -.055em; }
.contact h2 em { font-family: var(--display-serif); font-weight: 400; }
.contact > div > p:not(.eyebrow) { max-width: 39ch; line-height: 1.65; }
.contact .email { max-width: 100%; overflow-wrap: anywhere; }
.contact label, .contact button { font-size: .875rem; line-height: 1.4; }
.contact input, .contact textarea { min-height: 44px; }
.contact textarea { min-height: 140px; }
.contact textarea::placeholder { color: #25201ec4; }
.form-note { font-size: .875rem; line-height: 1.55; }
body > footer { font-size: .75rem; line-height: 1.5; }
:where(a,button,input,textarea,summary):focus-visible { outline: 2px solid currentColor; outline-offset: 5px; }
@media(min-width:801px) and (max-width:1100px) {
  .site-header .brand { max-width: 135px; }
  .site-header nav { font-size: .65rem; gap: .8rem; }
  .hero-motion { top: 6rem; bottom: auto; }
}
@media(max-width:800px) {
  .menu-button { display: inline-flex; }
  .site-header nav { font-size: 1rem; }
  .hero h1 { font-size: clamp(3rem,12vw,6rem); }
  .hero-copy { padding-bottom: 4rem; }
  .hero .eyebrow { max-width: 30ch; font-size: .75rem; }
  .hero-motion { bottom: 1rem; right: 1.25rem; font-size: .75rem; }
  .hero-actions { gap: 1rem; }
  .manifesto-copy { font-size: clamp(2.2rem,10.6vw,4rem); }
  .mosaic-card figcaption { display: block; padding: .75rem; font-size: .75rem; }
  .mosaic-card figcaption span { display: block; }
  .mosaic-card figcaption span:last-child { max-width: none; text-align: left; font-size: .75rem; margin-top: .35rem; }
  #programme-index { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1.3rem .85rem; margin-inline: 1.25rem; }
  #programme-index a > strong { font-size: 1.3rem; }
  #programme-index a > em { display: block; font-size: .75rem; }
  .programme-index { scroll-margin-top: 80px; }
  .reel-note { max-width: 32ch; }
  .verified-role { font-size: .75rem; max-width: 32ch; }
  .screening-navigation { grid-template-columns: 1fr auto 1fr; }
  .screening-navigation button { font-size: .75rem; }
  .screening-navigation p { font-size: .65rem; }
  .case-study-intro { display: block; }
  .case-study-intro h2 { font-size: clamp(2.7rem,11.5vw,4.8rem); }
  .approach-body { display: block; }
  .case-study-visual { aspect-ratio: 4/3; margin-inline: -1.25rem; }
  .case-study-visual figcaption { font-size: .75rem; flex-direction: column; gap: .3rem; }
  .case-study-moves { margin-top: 2rem; }
  .case-study-moves h3 { font-size: 1.8rem; }
  .site-case .case-study-compare article { padding-inline: 0; }
  .site-case-note { padding-inline: 0; }
  .case-study-summary { display: block; }
  .case-study-summary a { margin-top: 1.5rem; }
  .train-copy { min-height: 0; }
  .contact h2 { font-size: clamp(3rem,13vw,5rem); }
}
@media(prefers-reduced-motion:reduce) {
  .hero-motion { display: none; }
  #programme-index .programme-still { transition: none; }
}

/* One continuous contact sheet; each original still remains independently accessible. */
.opening-mosaic.frame-wall {
  display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); grid-template-rows: none;
  width: 100%; height: auto; min-height: 0; aspect-ratio: auto; margin: 0; gap: 0;
  background: #080808; overflow: hidden;
}
.wall-frame { position: relative; display: block; aspect-ratio: 4/3; min-width: 0; overflow: hidden; cursor: zoom-in; color: white; isolation: isolate; }
.wall-frame img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center; transition: transform .6s ease; }
.wall-frame::after { content: ''; position: absolute; inset: 65% 0 0; background: linear-gradient(transparent,#0009); pointer-events: none; }
.wall-number,.wall-expand,.wall-caption { position: absolute; z-index: 1; bottom: 1rem; font: .75rem/1.4 'DM Mono',monospace; text-shadow: 0 1px 6px #000; }
.wall-number { left: 1rem; }
.wall-expand { right: 1rem; font-size: 1.15rem; line-height: 1; }
.wall-caption { left: 3rem; right: 3rem; opacity: 0; transform: translateY(4px); transition: opacity .2s,transform .2s; }
.wall-frame:hover img,.wall-frame:focus-visible img { transform: scale(1.035); }
.wall-frame:hover .wall-caption,.wall-frame:focus-visible .wall-caption { opacity: 1; transform: none; }
.wall-frame:focus-visible { outline: 3px solid #fff; outline-offset: -5px; z-index: 2; }
.wall-last-train img { object-position: 67% center; }
.wall-theatre img { object-position: 59% center; }
.wall-losing-control img { transform: scale(1.1); }
.wall-losing-control:hover img,.wall-losing-control:focus-visible img { transform: scale(1.13); }
.manifesto-meta { flex-wrap: wrap; gap: .75rem 1.5rem; }
.mosaic-hint { text-transform: none; letter-spacing: 0; }
.discipline-frame img { object-position: 59% center; filter: none; }
.studio-image { min-height: 0; aspect-ratio: 1; align-self: center; }
.studio-image img { position: absolute; inset: 0; width: 100%; height: 100%; min-height: 0; aspect-ratio: auto; object-fit: cover; object-position: center; transform: none; mask-image: none; -webkit-mask-image: none; filter: none; }
.studio-image figcaption { color: #fff; border-color: #ffffff80; gap: 1rem; }
.image-screening { width: max-content; max-width: 96vw; max-height: 96dvh; overflow: auto; color: #fff; }
.image-screening img { max-width: 96vw; max-height: calc(94dvh - 4rem); width: auto; height: auto; object-fit: contain; }
#image-caption { margin: 0; padding: 1rem 1.25rem; font: .875rem/1.5 'DM Mono',monospace; }
@media(min-width:801px) and (max-width:1100px) {
  .opening-mosaic.frame-wall { grid-template-columns: repeat(3,minmax(0,1fr)); }
}
@media(max-width:800px) {
  .opening-mosaic.frame-wall { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .wall-number,.wall-expand { bottom: .65rem; }
  .wall-number { left: .65rem; }
  .wall-expand { right: .65rem; }
  .wall-caption { display: none; }
  .manifesto-meta .mosaic-hint { order: 3; flex-basis: 100%; }
  .discipline-frame { min-height: 0; aspect-ratio: 4/3; }
  .studio-image { aspect-ratio: 1; }
  .studio-image figcaption { font-size: .75rem; flex-direction: column; gap: .35rem; }
}
@media(prefers-reduced-motion:reduce) {
  .wall-frame img,.wall-caption { transition: none; }
}
