/* ============================================================
   RODUCTIONS
   A24-inspired editorial system: black ground, white type,
   restrained gray metadata, and artwork as the only colour.
   ============================================================ */

:root{
  --ground:#FFF;
  --surface:#F4F4F2;
  --ink:#090B0B;
  --ink-2:#626262;
  --ink-3:#858585;
  --rule:#E6E6E4;
  --rule-strong:#CFCFCD;

  --wrap:1440px;
  --pad:clamp(20px, 4.4vw, 64px);

  --f-display:Arial,"Helvetica Neue",Helvetica,sans-serif;
  --f-body:Arial,"Helvetica Neue",Helvetica,sans-serif;
  --f-mono:Arial,"Helvetica Neue",Helvetica,sans-serif;
}

*,*::before,*::after{box-sizing:border-box}

html{-webkit-text-size-adjust:100%}

body{
  margin:0;
  background:var(--ground);
  color:var(--ink);
  font-family:var(--f-body);
  font-size:16px;
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}

img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}

:focus-visible{
  outline:2px solid var(--ink);
  outline-offset:3px;
}

.wrap{max-width:var(--wrap);margin:0 auto;padding-left:var(--pad);padding-right:var(--pad)}
.bleed{max-width:var(--wrap);margin:0 auto}

.label{
  font-family:var(--f-mono);
  font-size:10px;
  letter-spacing:.13em;
  text-transform:uppercase;
  color:var(--ink-3);
  font-weight:500;
}
.label--bright{color:var(--ink)}

.skip{
  position:absolute;left:-9999px;top:0;
  background:var(--ink);color:var(--ground);
  padding:12px 18px;font-family:var(--f-mono);font-size:12px;z-index:50;
}
.skip:focus{left:0}

/* ---------- header ---------- */

.site-head{
  border-bottom:0;
  position:sticky;top:0;z-index:20;
  background:var(--ground);
}
.site-head__in{
  position:relative;display:flex;justify-content:center;
  align-items:center;gap:24px;
  padding-top:30px;padding-bottom:30px;
}

.wordmark{
  display:block;
  line-height:0;
}
.wordmark img{display:block;width:100%;height:auto}
.wordmark--image{width:clamp(180px,20vw,250px)}
.wordmark--image img{filter:invert(1)}

.site-nav{display:contents}
.site-nav a{
  position:absolute;
  font-family:var(--f-mono);
  font-size:10px;letter-spacing:.13em;text-transform:uppercase;
  color:var(--ink-2);
  padding:10px 0;
  transition:color .2s ease;
  white-space:nowrap;
}
.site-nav a:first-child{left:var(--pad)}
.site-nav a:last-child{right:var(--pad)}
.site-nav a:hover{color:var(--ink)}
.site-nav a[aria-current="page"]{color:var(--ink)}
body:has(.home-hero) .site-head{
  position:absolute;left:0;right:0;top:0;
  background:transparent;color:#fff;
}
body:has(.home-hero) .site-nav a{color:rgba(255,255,255,.78)}
body:has(.home-hero) .site-nav a:hover,
body:has(.home-hero) .site-nav a[aria-current="page"]{color:#fff}
body:has(.home-hero) .wordmark--image img{filter:none}

/* ---------- statement ---------- */

.home-hero{
  position:relative;
  min-height:max(100svh,1050px);
  display:flex;align-items:center;
  background-position:center;
  background-size:cover;
  background-color:#222;
  transform-origin:center;
}
.home-hero__bg{
  position:absolute;inset:0;z-index:0;
  background-position:center;
  background-size:cover;
  opacity:0;
  transition:opacity 2.4s ease-in-out;
}
.home-hero__bg.is-active{
  opacity:1;
  animation:heroDrift 8s ease-out both;
}
@keyframes heroDrift{
  from{background-position:48% center}
  to{background-position:52% center}
}
.home-hero__shade{
  position:absolute;inset:0;z-index:1;
  background:rgba(0,0,0,.7);
}
.home-hero::after{
  content:"";
  position:absolute;inset:0;z-index:2;
  pointer-events:none;
  opacity:.24;
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.65'/%3E%3C/svg%3E");
  background-size:180px 180px;
  mix-blend-mode:soft-light;
  animation:grainShift .24s steps(2) infinite;
}
@keyframes grainShift{
  0%{background-position:0 0}
  25%{background-position:34px -18px}
  50%{background-position:-22px 31px}
  75%{background-position:16px 42px}
  100%{background-position:-38px -12px}
}
.statement{
  position:relative;z-index:3;
  width:100%;
  padding-top:clamp(92px,13vw,176px);
  padding-bottom:650px;
  text-align:center;
}
.statement p{
  margin:0 auto;
  max-width:760px;
  font-size:clamp(18px,2vw,27px);
  font-weight:700;
  line-height:1.14;
  letter-spacing:-.04em;
  color:#fff;
  text-wrap:balance;
}
@media (prefers-reduced-motion:reduce){
  .home-hero__bg{transition:none}
  .home-hero__bg.is-active{animation:none}
  .home-hero::after{animation:none}
}

/* ---------- slate ---------- */

.slate{
  padding-top:clamp(56px,8vw,100px);padding-bottom:clamp(64px,9vw,112px);
  background:#050505;color:#fff;
}
.slate .label{color:#9b9b9b}
.slate--overlay{
  position:absolute;left:0;right:0;bottom:0;z-index:4;
  padding:0 0 clamp(20px,3vw,34px);
  background:transparent;
}
.slate--overlay .slate__head{margin-bottom:12px}
.slate--overlay .label{color:rgba(255,255,255,.7)}
.slate--overlay .grid{
  gap:clamp(16px,2vw,30px);
}
.slate--overlay .card{
  min-width:0;
  display:flex;
  padding:0;
  background:transparent;
  backdrop-filter:none;
  border:0;
}
.slate--overlay .card__frame{
  width:100%;aspect-ratio:2/3;
}
.slate--overlay .card__title{
  margin-top:8px;
  color:#fff;
  font-size:clamp(14px,1.15vw,17px);
}
.slate--overlay .card__description{
  margin:3px 0 0;
  color:rgba(255,255,255,.65);
  font-size:14px;line-height:1.4;
}
.slate__head{
  display:flex;justify-content:space-between;align-items:baseline;
  gap:20px;margin-bottom:clamp(24px,3vw,36px);
}

.grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:clamp(24px,2.8vw,42px) clamp(16px,2vw,30px);
}
@media (max-width:760px){.grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:760px){
  .home-hero{min-height:1500px}
  .statement{padding-bottom:1120px}
  .slate--overlay .grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}

.card{display:flex;flex-direction:column;gap:7px}

.card__frame{
  position:relative;
  aspect-ratio:2/3;
  overflow:hidden;
  background:var(--surface);
  border:1px solid #262626;
}
.card__frame img{
  width:100%;height:100%;object-fit:cover;
  transition:transform .5s cubic-bezier(.22,.61,.36,1),filter .25s ease;
}
.card:hover .card__frame img,
.card:focus-visible .card__frame img{transform:scale(1.03);filter:brightness(.72)}
.card__explore{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-44%);
  z-index:2;padding:11px 16px;background:var(--ground);color:var(--ink);
  font-family:var(--f-body);font-size:11px;font-weight:600;line-height:1;
  white-space:nowrap;opacity:0;pointer-events:none;
  transition:opacity .2s ease,transform .2s ease;
}
.card:hover .card__explore,
.card:focus-visible .card__explore{opacity:1;transform:translate(-50%,-50%)}
@media (hover:none){
  .card__explore{display:none}
}

.card__veil{
  position:absolute;inset:0;
   background:linear-gradient(to top, rgba(255,255,255,.96) 30%, rgba(255,255,255,.78));
  display:flex;flex-direction:column;justify-content:flex-end;gap:14px;
   padding:clamp(18px,2vw,28px);
  opacity:0;
  transition:opacity .25s ease;
}
.card:hover .card__veil,
.card:focus-within .card__veil{opacity:1}
.card__veil p{margin:0;font-size:14px;line-height:1.42;color:var(--ink)}
.card__cta{
  font-family:var(--f-mono);font-size:11px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--ink);
   border-top:1px solid rgba(9,11,11,.25);padding-top:12px;
}

.card__title{
  margin-top:8px;
  font-family:var(--f-body);font-weight:600;
  font-size:clamp(14px,1.15vw,17px);letter-spacing:-.03em;line-height:1.2;
}
.card__description{
  margin:3px 0 0;font-size:14px;line-height:1.4;color:#9b9b9b;
}

/* touch devices get no hover, so the logline lives under the poster */
.card__logline{
  display:none;margin:0;font-size:14.5px;line-height:1.45;color:var(--ink-2);
}
@media (hover:none){
  .card__veil{display:none}
  .card__logline{display:block}
}

/* ---------- project page ---------- */

.proj-head{
  display:grid;grid-template-columns:1fr 360px;gap:clamp(28px,5vw,60px);
   padding-top:clamp(64px,9vw,112px);
  padding-bottom:clamp(32px,4.5vw,52px);
}
@media (max-width:900px){.proj-head{grid-template-columns:1fr}}

.proj-title{
  margin:0;
   font-family:var(--f-display);font-weight:500;
   font-size:clamp(52px,9vw,112px);
   line-height:.86;letter-spacing:-.07em;text-transform:none;
  text-wrap:balance;
}
.proj-tagline{
   margin:0;font-size:clamp(18px,2vw,25px);line-height:1.25;
  max-width:42ch;color:var(--ink);
}
.proj-head__left{display:flex;flex-direction:column;gap:clamp(16px,2vw,24px)}

.specs{display:flex;flex-direction:column;gap:20px;margin:0;padding-top:8px}
.spec{display:flex;flex-direction:column;gap:5px;border-top:1px solid var(--rule);padding-top:12px}
.spec:first-child{border-top-color:var(--rule-strong)}
.spec dd{margin:0;font-family:var(--f-display);font-size:15px;font-weight:400;line-height:1.35}
.spec dt{margin:0}

.keyart{
  width:100%;aspect-ratio:16/9;object-fit:cover;
  background:var(--surface);border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);
}
@media (max-width:760px){.keyart{aspect-ratio:4/5}}

.trailer{
  padding-top:clamp(44px,6vw,72px);padding-bottom:clamp(44px,6vw,72px);
  border-bottom:1px solid var(--rule);
}
.trailer__video{
  display:block;width:100%;max-height:80vh;margin-top:18px;
  background:#050505;border:1px solid var(--rule);object-fit:contain;
}
.trailer__link{
  position:relative;display:block;width:100%;aspect-ratio:16/9;
  margin-top:18px;overflow:hidden;background:#050505;border:1px solid var(--rule);
}
.trailer__link img{
  display:block;width:100%;height:100%;object-fit:cover;
  transition:transform .45s cubic-bezier(.22,.61,.36,1);
}
.trailer__link:hover img{transform:scale(1.015)}
.trailer__play{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  display:inline-flex;align-items:center;justify-content:center;
  min-height:50px;padding:0 22px;background:#fff;color:#090b0b;
  font-family:var(--f-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  border:1px solid rgba(9,11,11,.2);
}

.presentation{
  display:grid;grid-template-columns:1fr auto;align-items:center;gap:28px;
  padding-top:clamp(30px,4vw,46px);padding-bottom:clamp(30px,4vw,46px);
  border-bottom:1px solid var(--rule);
}
.presentation__copy{display:flex;flex-direction:column;gap:10px}
.presentation__text{margin:0;font-size:clamp(16px,1.5vw,19px);line-height:1.45}
.presentation__link{
  display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;
  min-height:48px;padding:0 20px;border:1px solid var(--ink);
  font-family:var(--f-mono);font-size:11px;letter-spacing:.14em;
  text-transform:uppercase;transition:background .2s ease,color .2s ease;
}
.presentation__link:hover,.presentation__link:focus-visible{background:var(--ink);color:#fff}
.presentation__viewer{
  position:relative;grid-column:1/-1;display:block;width:100%;
  border:1px solid var(--rule);background:var(--surface);
}
.presentation__slide{
  display:block;width:100%;aspect-ratio:16/9;object-fit:contain;background:#111;
}
.presentation__controls{
  position:absolute;inset:0;pointer-events:none;
}
.presentation__button{
  position:absolute;top:50%;display:grid;place-items:center;
  width:clamp(52px,5vw,68px);height:clamp(52px,5vw,68px);
  transform:translateY(-50%);
  appearance:none;border:1px solid rgba(255,255,255,.55);border-radius:50%;
  background:rgba(0,0,0,.72);color:#fff;
  font-family:Arial,sans-serif;font-size:clamp(28px,3vw,42px);line-height:1;
  cursor:pointer;pointer-events:auto;
  transition:background .2s ease,transform .2s ease,opacity .2s ease;
}
.presentation__button:first-child{left:clamp(12px,2vw,28px)}
.presentation__button:last-child{right:clamp(12px,2vw,28px)}
.presentation__button:disabled{cursor:default;opacity:.25}
.presentation__button:not(:disabled):hover,
.presentation__button:not(:disabled):focus-visible{
  background:#000;transform:translateY(-50%) scale(1.08);
}
.presentation__controls .label{
  position:absolute;left:50%;bottom:14px;transform:translateX(-50%);
  padding:8px 12px;border-radius:999px;background:rgba(0,0,0,.75);color:#fff;
  text-align:center;
}
@media (max-width:680px){
  .presentation__button{width:48px;height:48px;font-size:28px}
}
@media (max-width:680px){
  .presentation{grid-template-columns:1fr;align-items:stretch}
  .presentation__link{width:100%}
}

.synopsis{
  display:grid;grid-template-columns:280px 1fr;gap:clamp(20px,5vw,60px);
  padding-top:clamp(48px,7vw,84px);padding-bottom:clamp(44px,6vw,72px);
  border-bottom:1px solid var(--rule);
}
@media (max-width:900px){.synopsis{grid-template-columns:1fr;gap:18px}}
.synopsis__body{display:flex;flex-direction:column;gap:20px;max-width:66ch}
.synopsis__body p{margin:0;font-size:clamp(16.5px,1.5vw,19px);line-height:1.58}

.gallery{padding-top:clamp(40px,6vw,68px);padding-bottom:clamp(40px,6vw,68px)}
.gallery__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:18px}
@media (max-width:760px){.gallery__grid{grid-template-columns:1fr}}
.gallery__grid img{width:100%;aspect-ratio:16/10;object-fit:cover;background:var(--surface);border:1px solid var(--rule)}

.next{
  display:flex;justify-content:space-between;align-items:center;gap:20px;
  padding-top:clamp(36px,5vw,56px);padding-bottom:clamp(36px,5vw,56px);
  border-top:1px solid var(--rule-strong);border-bottom:1px solid var(--rule-strong);
}
.next__title{
  font-family:var(--f-display);font-weight:500;
  font-size:clamp(30px,5vw,58px);letter-spacing:-.06em;text-transform:none;line-height:1;
  transition:opacity .2s ease;
}
.next:hover .next__title{opacity:.6}

/* ---------- company ---------- */

.company{
  display:grid;grid-template-columns:1fr 420px;gap:clamp(28px,6vw,80px);
  padding-top:clamp(56px,8vw,96px);padding-bottom:clamp(44px,6vw,72px);
}
@media (max-width:980px){.company{grid-template-columns:1fr}}
.company__left{display:flex;flex-direction:column;gap:clamp(20px,3vw,30px)}
.company__lede{margin:0;font-size:clamp(24px,2.8vw,36px);line-height:1.14;letter-spacing:-.055em;max-width:27ch}
.company__body{display:flex;flex-direction:column;gap:18px;max-width:62ch}
.company__body p{margin:0;font-size:16px;line-height:1.55;color:var(--ink-2)}
.company__portrait{width:100%;aspect-ratio:4/5;object-fit:cover;background:var(--surface);border:1px solid var(--rule)}

.facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(20px,3vw,40px);padding-bottom:clamp(56px,8vw,88px)}
@media (max-width:840px){.facts{grid-template-columns:1fr}}
.fact{display:flex;flex-direction:column;gap:9px;border-top:1px solid var(--rule-strong);padding-top:14px}
.fact span:last-child{font-size:16px;line-height:1.5}

.contact{
  display:flex;flex-direction:column;gap:16px;
  padding-top:clamp(52px,7vw,80px);padding-bottom:clamp(52px,7vw,80px);
  border-top:1px solid var(--rule-strong);border-bottom:1px solid var(--rule-strong);
}
.contact__mail{
  font-family:var(--f-display);font-weight:600;
  font-size:clamp(18px,2vw,27px);letter-spacing:-.04em;line-height:1.14;
  word-break:break-word;
  transition:opacity .2s ease;
}
.contact__mail:hover{opacity:.6}

.contact-page{
  display:flex;min-height:65vh;flex-direction:column;justify-content:center;
  gap:clamp(24px,4vw,42px);
  padding-top:clamp(72px,10vw,140px);padding-bottom:clamp(72px,10vw,140px);
}
.contact-page__lede{
  margin:0;max-width:34ch;
  font-family:var(--f-display);font-weight:600;
  font-size:clamp(18px,2vw,27px);line-height:1.14;letter-spacing:-.04em;
}

/* ---------- footer ---------- */

.site-foot{
  display:grid;grid-template-columns:1fr 1fr;
  gap:clamp(22px,3vw,40px);
  padding-top:clamp(44px,6vw,64px);padding-bottom:clamp(44px,6vw,64px);
}
body:has(.home-hero) .site-foot{
  background:#050505;color:#fff;
  box-shadow:0 0 0 100vmax #050505;
  clip-path:inset(0 -100vmax);
}
body:has(.home-hero) .site-foot .label{color:#858585}
@media (max-width:760px){.site-foot{grid-template-columns:1fr}}
.foot-col{display:flex;flex-direction:column;gap:9px}
.foot-col:last-child{text-align:right;align-items:flex-end}
@media (max-width:760px){.foot-col:last-child{text-align:left;align-items:flex-start}}
.foot-col a{font-size:16px;transition:opacity .2s ease}
.foot-col a:hover{opacity:.6}

/* ---------- motion ---------- */

.reveal{opacity:0;transform:translateY(14px)}
.reveal.is-in{opacity:1;transform:none;transition:opacity .5s ease,transform .5s cubic-bezier(.22,.61,.36,1)}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;transition-duration:.001ms!important}
  .reveal{opacity:1;transform:none}
}
