/*
Theme Name: Paralelo 34
Theme URI: https://example.com/paralelo34
Author: Paralelo 34
Description: Classic theme for the Paralelo 34 Film Festival. Pixel-perfect port of the 1980px reference layout, with a mobile and tablet layer below 1280px. Not a block theme by design: the layout is absolutely positioned on a hand-tuned coordinate grid that the block editor cannot preserve.
Version: 1.0.0
Requires at least: 6.5
Tested up to: 7.1
Requires PHP: 8.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: paralelo34
Domain Path: /languages
Tags: custom-menu, translation-ready
*/

/* NOTE: this file is both the WordPress theme header and the MERIDIAN
   stylesheet for the front page. It is enqueued only on the front page;
   the other three pages load p34-base.css instead. Keeping it here (rather
   than renaming it) means every url() in the theme still resolves against
   the theme root, so img/ and img2/ needed no path rewriting. */

/* =========================================================
   MERIDIAN — pixel-perfect layout of the 1980px reference.
   1rem = 10 design px.  html font-size scales with the
   viewport, so the whole page keeps its exact proportions
   at any width (exact 1:1 at 1980px).
   ========================================================= */

:root{
  --bg:        #0a0a09;
  --bg-warm:   #0f0d0a;
  --black:     #010101;
  --cream:     #efebe3;
  --cream-2:   #e0dcd4;
  --gold:      #c9aa6f;
  --gold-2:    #c7a86e;
  --muted:     #898781;
  --dim:       #73706d;
  --faint:     rgba(239,235,227,.34);
  --line:      rgba(239,235,227,.09);

  --serif: "Fraunces", "Playfair Display", Georgia, "Times New Roman", serif;
  --sans:  "Parkinsans", "Poppins", "Segoe UI", system-ui, sans-serif;

  --pad: 4rem;              /* 40px page gutter */
}

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

html{
  font-size: 0.5050505051vw;   /* 10px @1980 */
  -webkit-text-size-adjust:100%;
  background:var(--black);     /* overscroll area matches the footer */
}

body{
  margin:0;
  width:100%;
  overflow-x:clip;            /* NOT hidden: hidden breaks position:sticky */
  background:var(--bg);
  color:var(--cream);
  font-family:var(--sans);
  font-weight:400;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

img{ display:block; max-width:none; }
a{ color:inherit; text-decoration:none; }
h1,h2,h3,p,ul,figure{ margin:0; }
ul{ padding:0; list-style:none; }

section{ position:relative; width:100%; }

/* ---------- shared type ---------- */

.lbl{
  position:absolute;
  left:4.9rem;
  font-family:var(--sans);
  font-size:1.5rem;
  font-weight:500;
  letter-spacing:.19em;
  line-height:1;
  color:var(--gold);
  white-space:nowrap;
}

.h2{
  position:absolute;
  left:4.9rem;
  font-family:var(--serif);
  font-variation-settings:"opsz" 144,"SOFT" 0,"WONK" 1;
  font-weight:700;
  font-size:12rem;
  line-height:1;
  letter-spacing:-.024em;
  color:var(--cream);
  white-space:nowrap;
}

.body-sm{
  font-size:1.8rem;
  line-height:1.5;
  color:var(--muted);
  font-weight:300;
}

.link{
  display:inline-block;
  font-size:1.4rem;
  font-weight:500;
  letter-spacing:.213em;
  line-height:1;
  color:var(--gold);
  transition:color .25s ease, transform .25s ease;
}
.link:hover{ color:var(--cream); transform:translateX(.4rem); }

.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-family:var(--sans);
  font-size:1.3rem;
  font-weight:600;
  letter-spacing:.16em;
  line-height:1;
  white-space:nowrap;
  transition:background-color .25s ease, color .25s ease, border-color .25s ease;
}
.btn--gold{ background:var(--gold-2); color:#090908; }
.btn--gold:hover{ background:var(--cream); }
.btn--ghost{ border:1px solid rgba(239,235,227,.28); color:var(--cream); background:rgba(10,10,9,.35); }
.btn--ghost:hover{ border-color:var(--cream); background:rgba(239,235,227,.08); }

/* =========================================================
   1. HERO  (0 – 1020)
   ========================================================= */

.hero{ height:102rem; overflow:hidden; }

.hero__bg{
  position:absolute; inset:0;
  background:url("img/Group%203.png") center top / 100% 100% no-repeat;
}
.hero__veil{
  position:absolute; inset:0;
  background:
    linear-gradient(to bottom, rgba(10,10,9,.55) 0%, rgba(10,10,9,0) 14%),
    linear-gradient(to bottom, rgba(10,10,9,0) 62%, rgba(10,10,9,.75) 92%, var(--bg) 100%);
}

/* header */
.hdr{
  position:absolute; top:0; left:0; right:0; height:8.9rem;
  display:flex; align-items:center;
  padding:0 var(--pad);
  z-index:5;
}
.hdr__logo{
  font-size:1.6rem; font-weight:500; letter-spacing:.155em; color:var(--cream-2);
}
.hdr__nav{
  position:absolute; left:58.8rem; top:50%; transform:translateY(-50%);
  margin-top:-.1rem;
  display:flex; gap:3.52rem;
}
.hdr__nav a{
  font-size:1.5rem; font-weight:400; letter-spacing:.13em;
  color:rgba(239,235,227,.82);
  transition:color .25s ease;
}
.hdr__nav a:hover{ color:var(--gold); }

.hdr__right{
  position:absolute; right:4.1rem; top:50%; transform:translateY(-50%);
  display:flex; align-items:center; gap:2.6rem;
}
.hdr__ico{ display:block; width:2rem; color:rgba(239,235,227,.6); }
.hdr__ico svg{ width:100%; height:auto; display:block; }
.hdr__mini{
  font-size:1.35rem; font-weight:400; letter-spacing:.14em;
  color:rgba(239,235,227,.62);
  transition:color .25s ease;
}
.hdr__mini:hover{ color:var(--cream); }
.btn--sm{ width:11rem; height:3.3rem; }

/* hero type */
.hero__eyebrow{
  position:absolute; top:39.6rem; left:0; right:0;
  text-align:center;
  font-size:1.5rem; font-weight:500; letter-spacing:.24em; line-height:1;
  color:var(--gold);
  transform:translateX(-1.25rem);
  z-index:3;
}
.hero__title{
  position:absolute; top:41.4rem; left:0; right:0;
  text-align:center;
  font-family:var(--serif);
  font-variation-settings:"opsz" 144,"SOFT" 0,"WONK" 1;
  font-weight:700;
  font-size:23.74rem;
  line-height:1;
  letter-spacing:.0047em;
  color:#eeeae2;
  z-index:3;
}
.hero__scroll{
  position:absolute; top:49.2rem; right:8rem;
  font-size:1.15rem; letter-spacing:.3em; font-weight:400;
  color:rgba(239,235,227,.38);
  z-index:3;
}
.hero__tag{
  position:absolute; left:var(--pad); top:87.6rem;
  font-family:var(--serif);
  font-variation-settings:"opsz" 72,"SOFT" 0,"WONK" 1;
  font-style:italic; font-weight:400;
  font-size:3rem; line-height:1; letter-spacing:.045em;
  color:var(--cream);
  z-index:3;
}
.hero__cta{
  position:absolute; right:4.05rem; top:87.1rem;
  display:flex; gap:1.5rem;
  z-index:3;
}
.hero__cta .btn{ height:4.3rem; }
.hero__cta .btn--gold{ width:19.6rem; }
.hero__cta .btn--ghost{ width:22.7rem; }

/* =========================================================
   2. MISSION  (1020 – 1830)
   ========================================================= */

.mission{ height:81rem; }
.mission::after{
  content:"";
  position:absolute; right:0; bottom:0; width:52rem; height:60rem;
  background:radial-gradient(120% 100% at 100% 100%, rgba(96,58,150,.16) 0%, rgba(10,10,9,0) 72%);
  pointer-events:none;
}
.mission .lbl{ top:20rem; }

.mission__img{ position:absolute; }
.mission__img--a{ left:24rem; top:22.4rem; width:49.2rem; height:34.2rem; z-index:2; }
.mission__img--b{ left:4.1rem; top:43.3rem; width:34rem;  height:24rem;  z-index:1; opacity:.85; }

.mission__quote{
  position:absolute; left:86rem; top:20.25rem; width:112rem;
  font-family:var(--serif);
  font-variation-settings:"opsz" 144,"SOFT" 0,"WONK" 1;
  font-style:italic; font-weight:300;
  font-size:7.6rem; line-height:.954;
  letter-spacing:-.004em;
  color:#f2eee6;
}
.mission__body{
  position:absolute; left:86rem; top:46.6rem; width:72rem;
  font-size:1.615rem; line-height:1.672; font-weight:300;
  color:var(--muted);
}
.mission .link{ position:absolute; left:86rem; top:62.5rem; }

/* =========================================================
   3. IDENTITY  (1830 – 2450)
   ========================================================= */

.identity{ height:62rem; }
.identity::after{
  content:"";
  position:absolute; right:0; top:0; width:60rem; height:100%;
  background:radial-gradient(120% 100% at 100% 45%, rgba(96,58,150,.22) 0%, rgba(60,34,96,.10) 45%, rgba(10,10,9,0) 78%);
  pointer-events:none;
}
.identity .lbl{ top:5.87rem; }

.identity__grid{
  position:absolute; left:var(--pad); top:15.8rem;
  display:grid; grid-template-columns:repeat(4, 50.93rem);
  height:33.9rem;
}
.idc{ position:relative; border-left:1px solid var(--line); padding-left:4.8rem; }
.idc__num{
  position:absolute; left:4.8rem; top:4.43rem;
  font-family:var(--serif);
  font-variation-settings:"opsz" 144,"SOFT" 0,"WONK" 1;
  font-weight:700; font-size:8.9rem; line-height:1;
  letter-spacing:.03em;
  color:rgba(239,235,227,.055);
}
.idc__title{
  position:absolute; left:4.8rem; top:14.85rem;
  font-family:var(--serif);
  font-variation-settings:"opsz" 144,"SOFT" 0,"WONK" 1;
  font-style:italic; font-weight:400;
  font-size:4.7rem; line-height:1; letter-spacing:.06em;
  color:#f0ece4;
}
.idc__text{
  position:absolute; left:4.8rem; top:22.8rem; width:30rem;
  font-size:1.315rem; line-height:1.71; font-weight:300;
  color:var(--dim);
}

/* =========================================================
   4. STORIES  (2450 – 3450)
   ========================================================= */

.stories{ height:100rem; overflow:hidden; }
.st{ position:absolute; }
.st--1{ left:36.3rem;  top:8.1rem;  width:29.2rem; height:21.2rem; }
.st--2{ left:139.9rem; top:10.6rem; width:58.1rem; height:50.1rem; }
.st--3{ left:9.3rem;   top:49.4rem; width:46.7rem; height:33.9rem; }
.st--4{ left:115.9rem; top:79.7rem; width:24rem;   height:17.4rem; }

.stories__quote{
  position:absolute; left:0; right:0; top:35.3rem;
  text-align:center;
  transform:translateX(-.4rem);
  font-family:var(--serif);
  font-variation-settings:"opsz" 144,"SOFT" 0,"WONK" 1;
  font-style:italic; font-weight:300;
  font-size:8.35rem; line-height:1.115;
  color:#f2eee6;
  z-index:2;
}

/* =========================================================
   5. AWARDS  (3450 – 4600)
   ========================================================= */

.awards{ height:115rem; }
.awards::before{
  content:"";
  position:absolute; left:0; top:0; width:90rem; height:60rem;
  background:radial-gradient(90% 90% at 0% 20%, rgba(120,96,52,.10) 0%, rgba(10,10,9,0) 70%);
  pointer-events:none;
}
.awards .lbl{ top:3.07rem; }
.awards__h2{ top:5.87rem; }

.awards__aside{ position:absolute; left:153.3rem; top:8.6rem; width:45rem; }
.awards__aside .body-sm{ font-size:1.6rem; line-height:1.47; letter-spacing:.005em; white-space:nowrap; }
.awards__aside .link{ margin-top:2.6rem; letter-spacing:.221em; }

.awards__list{ position:absolute; left:0; right:0; top:0; height:100%; }
.aw{
  position:absolute; left:13rem; right:4rem;
  text-align:center;
  font-family:var(--sans);
  font-weight:700;
  line-height:1;
  color:#f0ece4;
}
.aw__t{ position:relative; display:inline-block; }
.aw__n{
  position:absolute; right:100%; top:-.1em; margin-right:.45em;
  font-family:var(--sans);
  font-style:normal; font-weight:400;
  font-size:.09em; letter-spacing:.1em;
  color:rgba(239,235,227,.5);
}
.aw__d{
  position:absolute; right:0; top:100%; margin-top:.24em;
  font-family:var(--serif);
  font-variation-settings:"opsz" 14,"SOFT" 0,"WONK" 0;
  font-style:normal; font-weight:400;
  font-size:.088em; letter-spacing:.02em; white-space:nowrap;
  color:rgba(239,235,227,.42);
}

.aw--1{ top:35.8rem; transform:translateY(-50%); font-size:12.9rem; filter:blur(.65rem); opacity:.62; }
.aw--2{ top:55.85rem; transform:translateY(-50%); font-size:16.8rem; }
.aw--3{ top:76rem;   transform:translateY(-50%); font-size:12.81rem; filter:blur(.42rem); opacity:.8; }
.aw--4{ top:92.2rem; transform:translateY(-50%); font-size:6.5rem; filter:blur(.55rem);  opacity:.5; }

/* =========================================================
   6. PROGRAMME  (4600 – 5900)
   ========================================================= */

.programme{ height:130rem; overflow:hidden; }
.programme .lbl{ top:4.97rem; }
.programme__h2{ top:7.77rem; }

.pcards{ position:absolute; inset:0; }
.pc{ position:absolute; display:block; transition:filter .35s ease; }
.pc img{ width:100%; height:100%; }
.pc:hover{ filter:brightness(1.14); }

.pc--21{ left:162.7rem; top:9.7rem;  width:35.3rem; height:44.2rem; z-index:1; }
.pc--19{ left:116.8rem; top:27.6rem; width:65.2rem; height:50.6rem; z-index:2; }
.pc--23{ left:0;        top:73.7rem; width:24.8rem; height:44.2rem; z-index:2; }
.pc--22{ left:10.3rem;  top:54.9rem; width:65.2rem; height:50.6rem; z-index:3; }
.pc--6 { left:35.6rem;  top:35.9rem; width:120rem;  height:128.5rem; z-index:4; }

.pc__cap{
  position:absolute; left:15rem; top:46rem; width:90rem;
  display:block; text-align:center;
}
.pc__films{
  display:block;
  font-family:var(--sans); font-style:normal;
  font-size:.88rem; line-height:1; letter-spacing:.2em; color:var(--gold);
}
.pc__name{
  font-family:var(--serif);
  font-variation-settings:"opsz" 144,"SOFT" 0,"WONK" 1;
  display:block; margin-top:1.1rem;
  font-style:italic; font-weight:400;
  font-size:4.1rem; line-height:1; color:#f2eee6;
}
.pc__arrow{
  display:block; margin-top:1.55rem;
  font-style:normal; font-size:1.6rem; line-height:1; color:rgba(239,235,227,.55);
}

/* =========================================================
   7. JOURNAL  (5900 – 7150)
   ========================================================= */

.journal{ height:125rem; }
.journal .lbl{ top:8.37rem; }
.journal__h2{ top:10.86rem; font-size:10.4rem; }
.journal__all{ position:absolute; right:3.9rem; top:19.1rem; letter-spacing:.215em; }

.feat{ position:absolute; left:4.8rem; top:30.7rem; width:123.8rem; display:block; }
.feat__img{ width:123.8rem; height:50.9rem; }
.feat__body{
  display:block; width:123.8rem; height:20rem;
  background:linear-gradient(100deg,#050505 0%,#08060a 55%,#0c080e 100%);
  padding:4rem 4rem 0;
}
.feat__title{
  display:block; margin-top:1.4rem; width:93rem;
  font-size:3.5rem; font-weight:700; line-height:1.229;
  letter-spacing:-.005em;
  color:var(--cream);
}

.meta{ display:flex; align-items:baseline; gap:2.7rem; }
.meta__cat{
  font-style:normal; font-size:.87rem; font-weight:600;
  letter-spacing:.2em; color:var(--gold);
}
.meta__date{
  font-family:var(--serif);
  font-variation-settings:"opsz" 14,"SOFT" 0,"WONK" 0;
  font-style:normal; font-weight:400;
  font-size:.82rem; letter-spacing:.12em;
  color:rgba(239,235,227,.42);
}

.news{ position:absolute; left:128.8rem; top:30.9rem; width:65rem; }
.nw{
  position:relative; display:flex; height:23.5rem;
  background:rgba(24,14,40,.22);
  transition:background .3s ease;
}
.nw + .nw{ margin-top:0; }
.nw:hover{ background:rgba(44,28,72,.34); }
.nw__img{ width:13rem; height:23.5rem; object-fit:cover; flex:none; }
.nw__body{ display:block; padding:7.8rem 5rem 0 2.4rem; }
.nw__title{
  display:block; margin-top:1.15rem;
  font-size:1.74rem; font-weight:700; line-height:1.436;
  letter-spacing:-.004em; color:var(--cream);
}

/* =========================================================
   8. ARCHIVE  (7150 – 8080)
   ========================================================= */

.archive{ height:93rem; }
.archive::before{
  content:"";
  position:absolute; right:0; top:0; width:70rem; height:38rem;
  background:radial-gradient(110% 100% at 100% 0%, rgba(96,58,150,.16) 0%, rgba(10,10,9,0) 70%);
  pointer-events:none;
}
.archive .lbl{ top:2.67rem; }
.archive__h2{ top:5.05rem; left:4.4rem; }
.archive__sub{ position:absolute; left:4.4rem; top:18.1rem; font-size:1.62rem; }
.archive__link{ position:absolute; right:3.9rem; top:18.7rem; font-family:var(--sans); letter-spacing:.29em; }

.years{
  position:absolute; left:var(--pad); top:30.4rem;
  display:flex; gap:.54rem;
}
.yr{
  position:relative; display:block;
  width:31.2rem; height:45.6rem;
  overflow:hidden;
}
.yr img{ width:100%; height:100%; object-fit:cover; transition:transform .5s ease; }
.yr:hover img{ transform:scale(1.04); }
.yr::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(to bottom, rgba(9,9,8,.08) 0%, rgba(9,9,8,.42) 45%, rgba(9,9,8,.92) 80%, #090908 100%);
}
.yr__in{ position:absolute; left:2.8rem; bottom:3.95rem; z-index:2; display:block; }
.yr__ed{
  display:block; font-style:normal;
  font-size:1.1rem; font-weight:500; letter-spacing:.24em;
  color:rgba(239,235,227,.34);
}
.yr__y{
  display:block; margin-top:.9rem;
  font-family:var(--serif);
  font-variation-settings:"opsz" 144,"SOFT" 0,"WONK" 1;
  font-weight:700; font-size:7.69rem; line-height:1;
  letter-spacing:-.01em; color:#f4f0e8;
}
.yr__t{
  display:block; margin-top:1.1rem; font-style:normal;
  font-size:.86rem; font-weight:600; letter-spacing:.22em;
  color:rgba(201,170,111,.66);
}
.yr__c{
  display:block; margin-top:.7rem; font-style:normal;
  font-size:1.21rem; font-weight:300; color:var(--muted);
}
.yr__ar{
  display:block; margin-top:2.5rem; font-style:normal;
  font-size:1.4rem; line-height:1; color:rgba(239,235,227,.42);
  transition:transform .3s ease;
}
.yr:hover .yr__ar{ transform:translateX(.6rem); }

/* =========================================================
   9. NEWSLETTER  (8080 – 8700)
   ========================================================= */

.news-cta{ height:62rem; }
.news-cta__panel{
  position:absolute; left:0; top:3rem; width:100%; height:52.6rem;
  background:linear-gradient(102deg, #100e0a 0%, #0a0906 42%, #040404 72%, #010101 100%);
}
.news-cta__h2{
  position:absolute; left:27rem; top:15.9rem;
  font-family:var(--serif);
  font-variation-settings:"opsz" 144,"SOFT" 0,"WONK" 1;
  font-style:italic; font-weight:700;
  font-size:10.9rem; line-height:.96;
  letter-spacing:-.012em;
  color:#f2eee6;
}
.news-cta__body{
  position:absolute; left:103rem; top:18.6rem; width:46rem;
  font-size:2.03rem; line-height:1.35; white-space:nowrap;
}
.sub{
  position:absolute; left:103rem; top:33.4rem; width:68rem;
  display:flex; align-items:flex-end; justify-content:space-between;
  border-bottom:1px solid rgba(239,235,227,.16);
  padding-bottom:1.6rem;
}
.sub__input{
  flex:1; min-width:0;
  background:none; border:0; outline:none;
  font-family:var(--sans); font-size:1.7rem; font-weight:300;
  color:var(--cream);
}
.sub__input::placeholder{ color:rgba(239,235,227,.38); }
.sub__btn{
  background:none; border:0; cursor:pointer; padding:0;
  font-family:var(--sans); font-size:1.35rem; font-weight:500;
  letter-spacing:.18em; color:var(--gold);
  transition:color .25s ease;
}
.sub__btn:hover{ color:var(--cream); }

/* =========================================================
   10. PARTNERS  (8700 – 9450)
   ========================================================= */

.partners{ height:75rem; }
.partners .lbl{ top:13.57rem; }
.partners__h2{
  top:17.7rem; font-size:6.88rem; line-height:.81; white-space:normal;
  letter-spacing:-.01em;
}
.partners__grid{
  position:absolute; left:84rem; top:16.2rem;
  display:grid; grid-template-columns:repeat(4, 28.8rem);
  row-gap:2.2rem;
}
.partners__grid li{
  font-size:2.2rem; font-weight:300; letter-spacing:.02em;
  color:rgba(239,235,227,.4);
  transition:color .3s ease;
}
.partners__grid li:hover{ color:var(--cream); }
.partners__link{ position:absolute; left:var(--pad); top:42.3rem; letter-spacing:.235em; }

/* =========================================================
   11. CONTACT  (9450 – 10180)
   ========================================================= */

.contact{ height:73rem; }
.contact__h2{
  position:absolute; left:var(--pad); top:7rem;
  font-family:var(--serif);
  font-variation-settings:"opsz" 144,"SOFT" 0,"WONK" 1;
  font-weight:700; font-size:21rem; line-height:.902;
  letter-spacing:-.02em; color:#f2eee6;
}
.contact__h2 em{ font-style:italic; font-weight:300; }

.contact__grid{
  position:absolute; left:121.9rem; top:13.3rem;
  display:grid; grid-template-columns:37.2rem auto; row-gap:11.6rem;
}
.cc__k{
  display:block; font-size:1.67rem; font-weight:600;
  letter-spacing:.07em; color:var(--gold);
}
.cc__v{
  display:block; margin-top:1.1rem;
  font-size:1.63rem; font-weight:300; color:var(--muted);
  transition:color .25s ease;
}
a.cc__v:hover{ color:var(--cream); }

.contact__rule{
  position:absolute; left:var(--pad); right:var(--pad); top:54.4rem;
  height:1px; background:var(--line);
}
.social{
  position:absolute; left:var(--pad); top:64.1rem;
  display:flex; gap:3.4rem;
}
.social a{
  font-size:1.53rem; font-weight:400; letter-spacing:.105em;
  color:rgba(239,235,227,.5);
  transition:color .25s ease;
}
.social a:hover{ color:var(--cream); }

/* =========================================================
   12. FOOTER  (10180 – 10631)
   ========================================================= */

.ft{
  position:relative; width:100%; height:45.1rem;
  background:var(--black);
}
.ft__brand{ position:absolute; left:4rem; top:9.6rem; }
.ft__logo{
  display:block; font-size:1.23rem; font-weight:500;
  letter-spacing:.26em; color:var(--cream-2);
}
.ft__addr{
  margin-top:2.1rem;
  font-size:1.33rem; font-weight:300; line-height:1.6;
  color:rgba(239,235,227,.45);
}
.ft__col{ position:absolute; top:9.6rem; display:flex; flex-direction:column; }
.ft__col--1{ left:51.6rem; }
.ft__col--2{ left:99.3rem; }
.ft__col--3{ left:146.6rem; }
.ft__k{
  font-size:.83rem; font-weight:600; letter-spacing:.24em;
  color:rgba(239,235,227,.32);
  margin-bottom:1.6rem;
}
.ft__col a{
  font-size:1.33rem; font-weight:300; line-height:1.15;
  color:rgba(239,235,227,.55);
  padding:.785rem 0;
  transition:color .25s ease;
}
.ft__col a:hover{ color:var(--cream); }

.ft__rule{
  position:absolute; left:3.9rem; right:4.1rem; top:35.9rem;
  height:1px; background:rgba(239,235,227,.07);
}
.ft__copy{
  position:absolute; left:4.2rem; top:39.3rem;
  font-size:.9rem; font-weight:400; letter-spacing:.135em;
  color:rgba(239,235,227,.26);
}
.ft__lang{
  position:absolute; right:4.1rem; top:39rem;
  display:flex; gap:1.8rem;
}
.ft__lang a{
  font-size:1.15rem; letter-spacing:.14em;
  color:rgba(239,235,227,.35);
  transition:color .25s ease;
}
.ft__lang a:hover{ color:var(--cream); }

/* =========================================================
   13. SCROLL ENGINE  (see script.js)
   ========================================================= */

/* ---- pinned sections ---------------------------------- */
/* --sec = section height in rem, --len = pin length in vh  */
.pin{ position:relative; }
/* gated on .js so the page degrades to the plain static layout
   when scripting is unavailable                                */
.js .pin{
  height:calc(max(var(--sec) * 1rem, 100vh) + var(--len) * 1vh);
}
.js .pin > section{
  position:sticky;
  top:0;
  min-height:100vh;
  overflow:hidden;
}

.hero__bg,
.stories .st,
.awards .aw,
.pcards{ will-change:transform; }

/* headings stay above the moving artwork while the section is pinned */
.programme .lbl, .programme__h2,
.awards .lbl, .awards__h2, .awards__aside{ z-index:10; }

/* Explore Cinema — two identical sets form the seamless loop.
   The clone sits one full period up-right of the original.      */
.pcset{ position:absolute; inset:0; }
.pcset--clone{ transform:translate3d(210rem, -80rem, 0); z-index:-1; }

/* ---- reveal on enter ---------------------------------- */
.js [data-rev]{
  opacity:0;
  translate:0 3.2rem;
  transition:opacity .9s cubic-bezier(.22,.61,.36,1),
             translate .9s cubic-bezier(.22,.61,.36,1);
  transition-delay:calc(var(--i, 0) * 70ms);
}
.js [data-rev].is-in{ opacity:1; translate:none; }
.js .mission__img--b[data-rev].is-in{ opacity:.85; }

/* ---- escape hatches ----------------------------------- */
.nopin .pin{ height:auto; }
.nopin .pin > section{ position:static; min-height:0; }

@media (prefers-reduced-motion: reduce){
  .js .pin{ height:auto; }
  .js .pin > section{ position:static; min-height:0; overflow:visible; }
  .js [data-rev]{ opacity:1; translate:none; transition:none; }
  .js .mission__img--b[data-rev]{ opacity:.85; }
  .yr img, .link, .btn, .nw, .partners__grid li,
  .hdr__nav a, .hdr__mini, .social a, .ft__col a, .ft__lang a,
  .cc__v, .sub__btn, .pc, .yr__ar{ transition:none; }
}
