/* The Absurd Solution — Feature Film.
   The whole site is seen through a letterbox: the HUD lives in the black bars,
   scenes open and close like cuts, and the credits roll at the end.
   One typeface, Libre Franklin: thin and widely tracked for titles, medium for subtitles. */

:root{
  --bar:56px;
  --hud-t:56px;
  --hud-b:44px;
  --pad:clamp(1.25rem,5vw,5.5rem);
  --bone:#ece5d4;
  --bone-2:#c8c1b0;
  --mute:#8f8a7d;
  --line:rgba(236,229,212,.2);
  --paper:#efe7d6;
  --paper-ink:#1e1b16;
  --paper-mute:#665f52;
  --red:#d92a1a;
  --red-text:#ff5c47;
  --sub:#f7efca;
  --lf:"Libre Franklin",system-ui,sans-serif;
}
*,*::before,*::after{box-sizing:border-box}
html{background:#000;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;background:#000;color:var(--bone);font:400 1.0625rem/1.6 var(--lf);-webkit-font-smoothing:antialiased;overflow-x:clip}
img,video{display:block;max-width:100%}
a{color:inherit;text-underline-offset:.22em}
p,h1,h2,h3,h4,dl,dd,ol,figure,blockquote{margin:0}
::selection{background:var(--red);color:#fff}
:focus-visible{outline:2px solid var(--red-text);outline-offset:4px}
.nw{white-space:nowrap}
.skip{position:fixed;left:1rem;top:-6rem;z-index:100;background:var(--bone);color:#000;padding:.7rem 1rem;font:600 .8rem/1 var(--lf);text-decoration:none}
.skip:focus{top:1rem}

/* ---------- HUD: the permanent letterbox ---------- */
.hud-top,.hud-bottom{position:fixed;left:0;right:0;z-index:50;background:#000;transition:opacity .9s ease}
.hud-top{top:0;height:var(--hud-t);display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:0 var(--pad)}
.mark{font:600 1.25rem/1 var(--lf);letter-spacing:-.045em;color:var(--bone);text-decoration:none;padding:.4rem 0}
.mark span{color:var(--red-text)}
.hud-nav{display:flex;align-items:center;gap:clamp(1rem,2.6vw,2.6rem)}
.hud-nav a{font:500 .66rem/1 var(--lf);letter-spacing:.26em;text-transform:uppercase;text-decoration:none;color:var(--bone-2);padding:.75rem 0;transition:color .2s}
.hud-nav a:hover{color:var(--bone)}
.hud-nav .hud-cta{color:var(--bone);border:1px solid var(--red);padding:.72rem .95rem .72rem 1.15rem;transition:background .2s,color .2s}
.hud-nav .hud-cta:hover{background:var(--red);color:#fff}

.hud-bottom{bottom:0;height:var(--hud-b);display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:clamp(1rem,2vw,2rem);padding:0 var(--pad);font:500 .72rem/1 var(--lf);letter-spacing:.08em;color:var(--bone-2)}
.tc{display:flex;align-items:center;gap:.6rem;white-space:nowrap;font-variant-numeric:tabular-nums}
.rec{width:.5rem;height:.5rem;border-radius:50%;background:var(--red);box-shadow:0 0 10px rgba(217,42,26,.7);animation:rec 1.6s steps(1,end) infinite}
.tc-rec{color:var(--red-text);letter-spacing:.16em}
.tc-val{display:inline-flex;color:var(--bone);letter-spacing:0}
.tc-d{display:inline-block;width:.68em;text-align:center}
.tc-sep{display:inline-block;width:.42em;text-align:center;color:var(--mute)}
@keyframes rec{0%{opacity:1}50%{opacity:.15}}
.timeline{position:relative;height:100%;min-width:0}
.tl-line,.tl-fill{position:absolute;left:0;right:0;top:50%;height:1px}
.tl-line{background:rgba(236,229,212,.2)}
.tl-fill{background:rgba(236,229,212,.65);transform-origin:0 50%;transform:scaleX(0)}
.tl-head{position:absolute;left:0;top:50%;width:2px;height:13px;margin:-6.5px 0 0 -1px;background:var(--red-text);box-shadow:0 0 8px rgba(255,92,71,.6)}
.tick{position:absolute;top:50%;width:1px;height:7px;margin-top:-3.5px;background:rgba(236,229,212,.6)}
.tick::before{content:'';position:absolute;inset:-14px -8px}
.tick-label{position:absolute;left:50%;bottom:16px;transform:translateX(-50%);white-space:nowrap;background:#000;border:1px solid var(--line);padding:.45rem .6rem .42rem;font:500 .64rem/1 var(--lf);letter-spacing:.14em;text-transform:uppercase;color:var(--bone);opacity:0;pointer-events:none;transition:opacity .15s}
.tick:hover .tick-label,.tick:focus-visible .tick-label{opacity:1}
.tick:first-child .tick-label{left:0;transform:none}
.tick:last-child .tick-label{left:auto;right:0;transform:none}
.chap{width:clamp(10rem,20vw,18.5rem);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right;text-transform:uppercase;letter-spacing:.16em;color:var(--bone)}
.rolling .chap-val::after{content:' · rolling';color:var(--red-text)}

.skip-intro{position:fixed;right:var(--pad);bottom:calc(var(--hud-b) + 1.25rem);z-index:60;display:none;background:transparent;border:1px solid rgba(236,229,212,.38);color:var(--bone-2);font:500 .62rem/1 var(--lf);letter-spacing:.32em;text-transform:uppercase;padding:.85rem 1rem .85rem 1.3rem;cursor:pointer}
.skip-intro:hover{color:var(--bone);border-color:var(--bone)}
.intro .skip-intro{display:block}
.intro .hud-top,.intro .hud-bottom{opacity:0}
.intro .hud-top:focus-within{opacity:1}
.intro.i3 .hud-top,.intro.i3 .hud-bottom{opacity:1}

/* Grain: a small noise tile drifting in steps, like film stock. */
.grain{position:fixed;inset:-20%;z-index:70;pointer-events:none;opacity:.075;background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'220'%20height%3D'220'%20viewBox%3D'0%200%20220%20220'%3E%3Cfilter%20id%3D'n'%20x%3D'0'%20y%3D'0'%20width%3D'100%25'%20height%3D'100%25'%3E%3CfeTurbulence%20type%3D'fractalNoise'%20baseFrequency%3D'.9'%20numOctaves%3D'2'%20seed%3D'7'%20stitchTiles%3D'stitch'%2F%3E%3CfeColorMatrix%20type%3D'saturate'%20values%3D'0'%2F%3E%3C%2Ffilter%3E%3Crect%20width%3D'100%25'%20height%3D'100%25'%20filter%3D'url(%23n)'%2F%3E%3C%2Fsvg%3E");background-size:220px 220px;animation:grain .9s steps(1,end) infinite}
@keyframes grain{0%{transform:translate3d(0,0,0)}12%{transform:translate3d(-4%,3%,0)}25%{transform:translate3d(3%,-5%,0)}37%{transform:translate3d(-6%,-2%,0)}50%{transform:translate3d(5%,4%,0)}62%{transform:translate3d(-2%,6%,0)}75%{transform:translate3d(6%,-3%,0)}87%{transform:translate3d(-3%,-6%,0)}}

/* ---------- Screens, frames, bars ---------- */
.track{position:relative}
.screen{position:relative;height:100vh;height:100svh;overflow:hidden;background:#000;isolation:isolate}
.js .track{height:calc(100svh + var(--len,100svh))}
.js .screen{position:sticky;top:0}
.frame{position:absolute;left:0;right:0;top:var(--bar);bottom:var(--bar);overflow:hidden;background:#0d0d0c}
.weave{position:absolute;inset:-6px;animation:weave 2.6s steps(1,end) infinite}
@keyframes weave{0%{transform:translate3d(0,0,0)}9%{transform:translate3d(.4px,-.35px,0)}21%{transform:translate3d(-.3px,.45px,0)}33%{transform:translate3d(.25px,.15px,0)}46%{transform:translate3d(-.45px,-.25px,0)}58%{transform:translate3d(.3px,.5px,0)}71%{transform:translate3d(-.2px,-.45px,0)}84%{transform:translate3d(.45px,.2px,0)}}
.frame-media{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:cover}
.vignette,.shade,.scrim,.dip,.leak{position:absolute;inset:0;pointer-events:none}
.vignette{background:radial-gradient(ellipse 75% 70% at 50% 48%,transparent 55%,rgba(0,0,0,.6) 100%)}
.bar{position:absolute;left:0;right:0;height:50%;background:#000;z-index:3;pointer-events:none;will-change:transform}
.bar-t{top:0;transform:translate3d(0,calc(var(--bar) - 100%),0)}
.bar-b{bottom:0;transform:translate3d(0,calc(100% - var(--bar)),0)}
.intro .open .bar{transform:none}

/* Scene headings (sluglines) sit in the frame, or in the top bar when it is tall enough. */
.slug{font:600 .66rem/1.4 var(--lf);letter-spacing:.24em;text-transform:uppercase;color:var(--bone-2)}
.frame-slug{position:absolute;z-index:2;left:var(--pad);top:calc(var(--bar) + 1.1rem);text-shadow:0 1px 6px rgba(0,0,0,.85);transition:opacity .6s}
.frame-cue{position:absolute;z-index:2;right:var(--pad);top:calc(var(--bar) + 1.1rem);font:500 .66rem/1.4 var(--lf);letter-spacing:.24em;text-transform:uppercase;color:var(--bone-2);text-shadow:0 1px 6px rgba(0,0,0,.85)}
.frame-cue span{display:inline-block;color:var(--red-text);animation:cue 1.6s ease-in-out infinite}
@keyframes cue{50%{transform:translateX(4px)}}
.roomy .frame-slug,.roomy .frame-cue{z-index:4;top:calc((var(--bar) + var(--hud-t)) / 2);transform:translateY(-50%);text-shadow:none}
.roomy .frame-slug{color:var(--mute)}
.roomy .scene .frame-slug{left:50%;transform:translate(-50%,-50%);white-space:nowrap}
.portrait .open .frame-slug{display:none}
.portrait .scene .frame::before{content:'';position:absolute;inset:0 0 auto;height:24%;z-index:1;background:linear-gradient(180deg,rgba(0,0,0,.7),rgba(0,0,0,0));pointer-events:none}
@media (max-width:1180px){.roomy .open .frame-slug{display:none}}
.intro .open .frame-slug,.intro .open .frame-cue{opacity:0}
.intro.i3 .open .frame-slug,.intro.i3 .open .frame-cue{opacity:1;transition:opacity 1s ease .7s}

/* ---------- Cold open ---------- */
.open .track{--len:80svh}
.hero-film{object-position:50% 24%;filter:brightness(.84) contrast(1.06)}
.shade{background:linear-gradient(0deg,rgba(0,0,0,.8) 0%,rgba(0,0,0,.42) 30%,rgba(0,0,0,0) 56%),linear-gradient(180deg,rgba(0,0,0,.35) 0%,rgba(0,0,0,0) 22%)}
.leak{inset:-25%;background:radial-gradient(circle at 18% 22%,rgba(255,150,70,.6),rgba(255,120,40,0) 42%);mix-blend-mode:screen;opacity:0;animation:leak 13s ease-in-out 5s infinite}
@keyframes leak{0%,58%{opacity:0;transform:translate3d(0,0,0)}66%{opacity:.5}74%{opacity:.18;transform:translate3d(6%,3%,0)}82%,100%{opacity:0;transform:translate3d(9%,4%,0)}}
.dip{background:#000;opacity:0;transition:opacity .38s ease}
.dip.on{opacity:1}

.bar-title{position:absolute;z-index:6;left:50%;top:calc(var(--bar) + 1.6rem);transform:translateX(-50%);display:grid;justify-items:center;gap:.5rem;width:max-content;max-width:calc(100% - 2 * var(--pad));text-align:center;font-weight:400;transition:opacity 1.2s ease}
.roomy .bar-title{top:calc((var(--bar) + var(--hud-t)) / 2);transform:translate(-50%,-50%)}
.bt-main{font:300 clamp(1.05rem,1.6vw,1.5rem)/1 var(--lf);letter-spacing:.5em;margin-right:-.5em;text-transform:uppercase;color:var(--bone)}
.bt-sub{font:italic 300 .86rem/1.3 var(--lf);letter-spacing:.02em;color:var(--mute)}
.intro .bar-title{opacity:0}
.intro.i3 .bar-title{opacity:1;transition-delay:.5s}

.hero-copy{position:absolute;z-index:5;left:var(--pad);right:var(--pad);bottom:calc(var(--bar) + clamp(1.4rem,4.5vh,3.4rem));transition:opacity 1.2s ease,transform 1.4s cubic-bezier(.2,.7,.2,1)}
.intro .hero-copy{opacity:0;transform:translateY(16px)}
.hero-copy-in{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);align-items:end;gap:clamp(1.5rem,4vw,5rem)}
.tagline{font:italic 300 clamp(2.2rem,4.9vw,5.3rem)/1.02 var(--lf);letter-spacing:-.03em;color:var(--bone);text-shadow:0 2px 24px rgba(0,0,0,.45)}
.tagline span{display:block;text-wrap:balance}
.tagline span:last-child{color:#fff;font-weight:400}
.hero-side{display:grid;gap:1rem;justify-items:start;max-width:30rem;justify-self:end;padding-bottom:.4rem}
.lede{font-size:clamp(1rem,1.15vw,1.12rem);line-height:1.55;color:var(--bone)}
.genre{font:500 .66rem/1.6 var(--lf);letter-spacing:.22em;text-transform:uppercase;color:var(--bone-2)}
.hero-cta{font:500 .66rem/1.4 var(--lf);letter-spacing:.26em;text-transform:uppercase;text-decoration:none;color:var(--bone);border-bottom:1px solid var(--red-text);padding:.5rem 0 .45rem;transition:color .2s}
.hero-cta:hover{color:var(--red-text)}

.intro-veil{position:absolute;inset:0;z-index:8;pointer-events:none;visibility:hidden}
.intro .intro-veil{visibility:visible}
.ic{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);text-align:center;opacity:0;width:max-content;max-width:94vw}
.ic-1{font:300 clamp(.7rem,1vw,.92rem)/1.6 var(--lf);letter-spacing:.6em;margin-right:-.6em;text-transform:uppercase;color:var(--bone-2);transition:opacity .9s ease}
.i1 .ic-1{opacity:1}
.ic-2{font:200 clamp(1.7rem,3.3vw,3.8rem)/1.25 var(--lf);letter-spacing:.84em;margin-right:-.84em;text-transform:uppercase;color:var(--bone);transition:opacity 1.1s ease,letter-spacing 2.6s cubic-bezier(.16,.84,.24,1),margin 2.6s cubic-bezier(.16,.84,.24,1),transform 1.3s cubic-bezier(.5,0,.2,1)}
.ic-2 span{white-space:nowrap}
.i2 .ic-2{opacity:1;letter-spacing:.42em;margin-right:-.42em}
.i3 .ic-2{opacity:0;letter-spacing:.42em;margin-right:-.42em;transform:translate(-50%,-50%) scale(.94);transition:opacity .55s ease,transform 1.3s cubic-bezier(.5,0,.2,1)}

/* ---------- Logline ---------- */
.pitch{position:relative;min-height:100svh;display:grid;align-content:center;padding:calc(var(--hud-t) + clamp(4rem,9vh,7rem)) var(--pad) calc(var(--hud-b) + clamp(4rem,9vh,7rem))}
.pitch-in{width:100%;max-width:1240px;margin:0 auto}
.kicker{font:500 .66rem/1.4 var(--lf);letter-spacing:.4em;text-transform:uppercase;color:var(--red-text);margin:0 0 1.8rem}
.logline{font:300 clamp(1.6rem,3.35vw,3.4rem)/1.22 var(--lf);letter-spacing:-.02em;max-width:30ch;margin:0 0 clamp(3rem,7vh,5rem)}
.logline .doc{color:var(--mute);text-decoration:line-through;text-decoration-thickness:1px;text-decoration-color:rgba(236,229,212,.45)}
.logline .real{font-style:italic;color:#fff;text-decoration:underline;text-decoration-color:var(--red-text);text-decoration-thickness:2px;text-underline-offset:.16em}
.pitch-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(1.2rem,2.5vw,2.6rem);border-top:1px solid var(--line);padding-top:1.6rem}
.pitch-facts dt{font:500 .62rem/1.4 var(--lf);letter-spacing:.32em;text-transform:uppercase;color:var(--mute);margin:0 0 .75rem}
.pitch-facts dd{font-size:.98rem;line-height:1.5;color:var(--bone)}
.pitch-facts a{color:var(--bone);text-decoration-color:var(--red-text)}
[data-runtime]{font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:.06em;color:#fff}

/* ---------- Scenes ---------- */
.scene .track{--len:calc(var(--steps,5) * 40svh)}
.kb{position:absolute;inset:0;transform-origin:var(--ox,50%) var(--oy,50%);transform:scale(calc(var(--s0,1.1) + (var(--s1,1) - var(--s0,1.1)) * var(--p,0)));will-change:transform}
.kb img{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:cover}
.kb-top img{object-position:50% 0}
.kb-mono{filter:grayscale(1) contrast(1.08) brightness(.9) sepia(.14);opacity:calc(1 - var(--c,0))}
.scrim{background:#000;opacity:var(--dim,.62);transition:opacity .7s ease}
.scene .frame::after{content:'';position:absolute;inset:auto 0 0;height:38%;background:linear-gradient(0deg,rgba(0,0,0,.62),rgba(0,0,0,0));pointer-events:none}
.card{position:absolute;z-index:6;left:var(--pad);right:var(--pad);top:var(--bar);bottom:var(--bar);display:grid;place-content:center;justify-items:center;text-align:center;opacity:0;transform:translateY(12px);transition:opacity .7s ease,transform 1s cubic-bezier(.2,.7,.2,1)}
.card.on{opacity:1;transform:none}
.card-num{font:500 .7rem/1 var(--lf);letter-spacing:.44em;margin-right:-.44em;text-transform:uppercase;color:var(--red-text);margin-bottom:1.6rem}
.card-title{font:200 clamp(2.2rem,6.2vw,6.6rem)/1.04 var(--lf);letter-spacing:.14em;margin-right:-.14em;text-transform:uppercase;color:var(--bone);max-width:15ch;text-wrap:balance;overflow-wrap:break-word;text-shadow:0 2px 28px rgba(0,0,0,.65)}
.card-line{font:italic 300 clamp(1.08rem,1.65vw,1.55rem)/1.45 var(--lf);color:var(--bone);max-width:38ch;margin-top:1.7rem;text-wrap:balance}

.subs{position:absolute;z-index:6;left:var(--pad);right:var(--pad);bottom:calc(var(--hud-b) + 1.1rem);height:4.6em;list-style:none;padding:0;margin:0;font:500 clamp(1.08rem,1.5vw,1.6rem)/1.32 var(--lf);pointer-events:none}
.subs li{position:absolute;left:50%;bottom:0;width:min(100%,34em);transform:translateX(-50%);text-align:center;color:var(--sub);text-shadow:0 0 1px #000,0 0 2px #000,0 1px 2px #000,0 2px 6px rgba(0,0,0,.9),0 0 18px rgba(0,0,0,.55);opacity:0;transition:opacity .32s ease;text-wrap:balance}
.subs li.on{opacity:1}

/* ---------- Director's notes: call sheet + shooting script ---------- */
.notes{display:grid;grid-template-columns:minmax(11rem,16rem) minmax(0,48rem);justify-content:center;align-items:start;gap:clamp(2rem,5vw,5.5rem);padding:clamp(4.5rem,10vw,8.5rem) var(--pad) clamp(5rem,11vw,9rem);background:#000}
.callsheet{position:sticky;top:calc(var(--hud-t) + 2.2rem);font:400 .86rem/1.5 var(--lf);color:var(--bone)}
.cs-title{font:500 .62rem/1 var(--lf);letter-spacing:.36em;text-transform:uppercase;border-top:1px solid rgba(236,229,212,.4);border-bottom:1px solid rgba(236,229,212,.4);padding:.9rem 0;margin-bottom:.4rem}
.callsheet dt{font-weight:500;font-size:.62rem;letter-spacing:.2em;text-transform:uppercase;color:var(--mute);margin-top:1.2rem}
.callsheet dd{margin:.32rem 0 0}
.callsheet a{text-decoration-color:var(--red-text)}
.page{position:relative;background:var(--paper);color:var(--paper-ink);font:400 1.02rem/1.68 var(--lf);padding:4.6rem clamp(1.6rem,6vw,5.4rem) 4.2rem clamp(2.6rem,7.5vw,6.6rem);box-shadow:0 40px 100px rgba(0,0,0,.7),0 0 0 1px rgba(0,0,0,.4)}
.page::before,.page::after{content:'';position:absolute;left:1.35rem;width:.95rem;height:.95rem;border-radius:50%;background:radial-gradient(circle at 35% 35%,#e4c77a,#a8822f 55%,#6b5119);box-shadow:0 1px 2px rgba(0,0,0,.35)}
.page::before{top:12%}
.page::after{bottom:12%}
.page-no{position:absolute;top:2.1rem;right:2.4rem;font-weight:500;font-variant-numeric:tabular-nums}
.page-kind{font:600 .64rem/1 var(--lf);letter-spacing:.3em;text-transform:uppercase;color:var(--paper-mute);margin-bottom:2.3rem}
.sp-slug{position:relative;font:700 .96rem/1.45 var(--lf);letter-spacing:.06em;text-transform:uppercase;margin-bottom:1.35rem}
.sn{position:absolute;left:-2.6rem;top:0;font-weight:700}
.sn-r{left:auto;right:-2.6rem}
.sp-action{margin-bottom:1.35rem}
.sp-dialogue{margin:2.1rem 18% 2.1rem 17%}
.sp-char{padding-left:24%;font-weight:600;letter-spacing:.1em;text-transform:uppercase}
.sp-paren{padding-left:12%;font-style:italic;font-weight:300;color:var(--paper-mute)}
.sp-line{font-weight:400}
.sp-insert{font:700 .9rem/1.45 var(--lf);letter-spacing:.06em;text-transform:uppercase;margin:2.3rem 0 .55rem}
.sp-also{font-size:.92rem;color:var(--paper-mute);margin-top:2.2rem;border-top:1px dashed rgba(30,27,22,.3);padding-top:1.2rem}
.sp-also b{color:var(--paper-ink);text-transform:uppercase;font-size:.78rem;letter-spacing:.12em}
.sp-trans{text-align:right;text-transform:uppercase;font-weight:700;letter-spacing:.14em;margin-top:2.4rem}

/* ---------- Cast ---------- */
.cast{padding:clamp(6rem,13vw,10rem) var(--pad) clamp(6rem,12vw,9rem);background:#000}
.cast-head{text-align:center;margin-bottom:clamp(3.5rem,8vw,6.5rem)}
.cast-head .kicker{margin-right:-.4em}
.cast-title{font:200 clamp(1.8rem,4vw,4rem)/1.18 var(--lf);letter-spacing:.12em;text-transform:uppercase;text-wrap:balance}
.cast-title span{display:block;color:var(--mute)}
.cast-grid{display:grid;grid-template-columns:minmax(0,1fr) 1px minmax(0,1fr);gap:clamp(2rem,5vw,5.5rem);max-width:1240px;margin:0 auto}
.role{text-align:center}
.headshot{position:relative;width:min(100%,21rem);aspect-ratio:1;margin:0 auto 2.2rem;display:grid;place-items:center}
.headshot::before{content:'';position:absolute;inset:-12% -18% -2%;background:radial-gradient(closest-side,rgba(242,228,196,.2),rgba(242,228,196,.06) 55%,transparent 72%)}
.headshot::after{content:'';position:absolute;left:12%;right:12%;bottom:4%;height:10%;background:radial-gradient(closest-side,rgba(0,0,0,.85),transparent);filter:blur(4px)}
.headshot img{position:relative;z-index:1;width:84%;height:auto;filter:grayscale(1) contrast(1.12) brightness(.96)}
.billing{display:flex;justify-content:center;align-items:baseline;gap:.7rem;margin-bottom:.8rem}
.b-name{font:500 .7rem/1 var(--lf);letter-spacing:.34em;text-transform:uppercase;color:var(--bone-2)}
.b-as{font:italic 300 1.05rem/1 var(--lf);color:var(--mute)}
.b-role{font:200 clamp(1.7rem,3vw,2.9rem)/1.1 var(--lf);letter-spacing:.16em;margin-right:-.16em;text-transform:uppercase;margin-bottom:1.3rem}
.role-line{font:italic 300 1.16rem/1.5 var(--lf);color:var(--bone);max-width:31ch;margin:0 auto 2.3rem;text-wrap:balance}
.known{font:500 .62rem/1 var(--lf);letter-spacing:.34em;text-transform:uppercase;color:var(--mute);margin-bottom:1rem}
.skills{list-style:none;padding:0;margin:0 auto;max-width:25rem;text-align:left;border-top:1px solid var(--line)}
.skills li{display:grid;grid-template-columns:2.1rem minmax(0,1fr);padding:.85rem 0;border-bottom:1px solid var(--line)}
.skills .n{font:500 .72rem/1.9 var(--lf);font-variant-numeric:tabular-nums;letter-spacing:.06em;color:var(--red-text)}
.skills b{display:block;font-weight:600;color:var(--bone)}
.skills .d{display:block;font-size:.92rem;color:var(--bone-2)}
.seam{position:relative;background:linear-gradient(180deg,transparent,rgba(236,229,212,.32) 12%,rgba(236,229,212,.32) 88%,transparent)}
.seam span{position:absolute;left:50%;top:9.5rem;transform:translate(-50%,-50%);background:#000;padding:.7rem 0;color:var(--red-text);font:500 1.5rem/1 var(--lf)}
.cast-quote{max-width:50rem;margin:clamp(4.5rem,9vw,7.5rem) auto 0;text-align:center}
.cast-quote p{font:italic 300 clamp(1.35rem,2.5vw,2.3rem)/1.38 var(--lf);letter-spacing:-.01em;text-wrap:balance}
.cast-quote cite{display:block;margin-top:1.5rem;font:500 .64rem/1 var(--lf);font-style:normal;letter-spacing:.28em;text-transform:uppercase;color:var(--mute)}

/* ---------- Four acts ---------- */
.acts{padding:clamp(6rem,12vw,9.5rem) var(--pad);background:#0b0b0a;border-top:1px solid rgba(236,229,212,.08);border-bottom:1px solid rgba(236,229,212,.08)}
.acts-head{max-width:1240px;margin:0 auto clamp(3rem,6vw,5rem);display:flex;justify-content:space-between;align-items:flex-end;gap:2rem;flex-wrap:wrap}
.acts-head .kicker{margin-bottom:1.4rem}
.acts-title{font:200 clamp(2.3rem,5.6vw,5.4rem)/1 var(--lf);letter-spacing:.12em;text-transform:uppercase}
.acts-note{font:italic 300 1.16rem/1.5 var(--lf);color:var(--bone-2);max-width:30ch}
.slates{list-style:none;padding:0;margin:0 auto;max-width:1240px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(1rem,2vw,1.8rem)}
.slate{position:relative;padding-top:2.9rem}
.clapper{position:absolute;left:0;right:0;top:0;height:2.6rem}
.clapper i{position:absolute;left:0;right:0;height:1.12rem;border:1px solid #d9d2c1;background:repeating-linear-gradient(118deg,#e9e2d1 0 15px,#121211 15px 30px)}
.clapper .base{bottom:.15rem}
.clapper .stick{top:.05rem;transform-origin:2px 100%;transform:rotate(-17deg);transition:transform .26s cubic-bezier(.7,0,.84,0)}
.slate.in .stick{transform:rotate(0)}
.slate:nth-child(2) .stick{transition-delay:.16s}
.slate:nth-child(3) .stick{transition-delay:.32s}
.slate:nth-child(4) .stick{transition-delay:.48s}
.slate-body{position:relative;min-height:15.5rem;display:flex;flex-direction:column;padding:1.1rem 1.15rem 1.5rem;background:#161614;border:1px solid rgba(236,229,212,.22);font:500 .64rem/1.4 var(--lf);color:var(--bone-2)}
.slate-body::after{content:'';position:absolute;inset:0;background:#fff;opacity:0;pointer-events:none}
.slate.in .slate-body::after{animation:flash .5s ease-out .26s}
.slate:nth-child(2).in .slate-body::after{animation-delay:.42s}
.slate:nth-child(3).in .slate-body::after{animation-delay:.58s}
.slate:nth-child(4).in .slate-body::after{animation-delay:.74s}
@keyframes flash{0%{opacity:0}6%{opacity:.16}100%{opacity:0}}
.slate-row{display:flex;justify-content:space-between;gap:.6rem;padding:.55rem 0;border-bottom:1px solid rgba(236,229,212,.16);text-transform:uppercase;letter-spacing:.16em;color:var(--bone)}
.slate-row span{color:var(--mute)}
.slate h3{font:300 clamp(1.15rem,1.7vw,1.6rem)/1.15 var(--lf);letter-spacing:.16em;text-transform:uppercase;color:var(--bone);margin:1.4rem 0 .7rem}
.slate .d{font:400 1rem/1.5 var(--lf);color:var(--bone-2)}

/* ---------- Director's statement ---------- */
.director{padding:clamp(6rem,13vw,10rem) var(--pad);background:#000}
.dir-in{max-width:1240px;margin:0 auto}
.dir-top{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:clamp(2rem,6vw,6rem);margin-bottom:clamp(3.5rem,8vw,6.5rem)}
.dir-quote p{font:italic 300 clamp(1.9rem,4vw,4rem)/1.14 var(--lf);letter-spacing:-.025em;max-width:21ch}
.dir-quote footer{margin-top:1.8rem;font:500 .66rem/1.5 var(--lf);letter-spacing:.26em;text-transform:uppercase;color:var(--mute)}
.dir-still{position:relative;width:clamp(9rem,15vw,13.5rem);margin-right:clamp(0rem,3vw,3rem)}
.dir-still::before{content:'';position:absolute;inset:-18% -40% -4%;background:radial-gradient(closest-side,rgba(242,228,196,.16),transparent 72%)}
.dir-still img{position:relative;width:100%;height:auto;filter:grayscale(1) contrast(1.1) brightness(.95)}
.dir-still figcaption{position:relative;margin-top:1rem;text-align:center;font:500 .6rem/1.4 var(--lf);letter-spacing:.26em;text-transform:uppercase;color:var(--mute)}
.dir-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(2rem,6vw,6rem);border-top:1px solid var(--line);padding-top:2.4rem}
.dir-grid h3{font:500 .62rem/1.4 var(--lf);letter-spacing:.34em;text-transform:uppercase;color:var(--bone-2);margin-bottom:1.3rem}
.dir-note p{font-size:1.12rem;line-height:1.65;max-width:42ch;margin-bottom:1rem}
.specs{font:400 .95rem/1.5 var(--lf)}
.specs div{display:grid;grid-template-columns:8.6rem minmax(0,1fr);gap:1rem;padding:.62rem 0;border-bottom:1px dotted rgba(236,229,212,.24)}
.specs dt{font-weight:500;font-size:.62rem;letter-spacing:.2em;text-transform:uppercase;color:var(--mute);padding-top:.25rem}
.specs dd{color:var(--bone)}

/* ---------- End credits ---------- */
.credits .track{--len:300svh}
.credits .screen{-webkit-mask-image:linear-gradient(180deg,transparent 0,transparent var(--hud-t),#000 24%,#000 76%,transparent calc(100% - var(--hud-b)),transparent 100%);mask-image:linear-gradient(180deg,transparent 0,transparent var(--hud-t),#000 24%,#000 76%,transparent calc(100% - var(--hud-b)),transparent 100%)}
.roll{position:absolute;left:0;right:0;top:0;padding:0 var(--pad);text-align:center;will-change:transform;transform:translate3d(0,100svh,0)}
.roll-pre{font:500 .68rem/1 var(--lf);letter-spacing:.38em;text-transform:uppercase;color:var(--mute);margin-bottom:1.7rem}
.roll-pre span,.roll-mark span{color:var(--red-text)}
.roll-title{font:200 clamp(1.8rem,3.7vw,3.6rem)/1.2 var(--lf);letter-spacing:.34em;margin-right:-.34em;text-transform:uppercase}
.roll-sub{font:italic 300 1.12rem/1.5 var(--lf);color:var(--bone-2);margin:1.2rem 0 5rem}
.roll h3{font:500 .62rem/1.4 var(--lf);letter-spacing:.46em;margin-right:-.46em;text-transform:uppercase;color:var(--red-text);margin-top:4.4rem;margin-bottom:1.7rem}
.roll-dl{max-width:48rem;margin:0 auto;display:grid;gap:.95rem}
.roll-dl div{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:2.4rem;align-items:baseline}
.roll-dl dt{text-align:right;font:500 .62rem/1.6 var(--lf);letter-spacing:.26em;text-transform:uppercase;color:var(--mute)}
.roll-dl dd{text-align:left;font-size:1.08rem;line-height:1.45;color:var(--bone)}
.roll-lead dd{font-size:1.3rem;font-weight:300}
.roll-line{font-size:1.08rem;color:var(--bone)}
.roll-note{font:italic 300 1.02rem/1.5 var(--lf);color:var(--bone-2);margin-top:6.5rem}
.roll-mark{font:600 2.3rem/1 var(--lf);letter-spacing:-.045em;margin-top:5.5rem}
.roll-copy{font:500 .64rem/1.6 var(--lf);letter-spacing:.22em;text-transform:uppercase;color:var(--mute);margin-top:1rem;padding-bottom:2rem}

/* ---------- Post-credits ---------- */
.post{min-height:100svh;display:grid;align-content:center;justify-items:center;text-align:center;padding:calc(var(--hud-t) + 4rem) var(--pad) calc(var(--hud-b) + 4rem);background:radial-gradient(ellipse 60% 50% at 50% 46%,rgba(236,229,212,.07),transparent 70%),#000}
.post .kicker{margin-right:-.4em}
.post h2{font:200 clamp(2.1rem,5vw,5rem)/1.1 var(--lf);letter-spacing:.1em;margin-right:-.1em;text-transform:uppercase;max-width:15ch;text-wrap:balance}
.post-q{font:italic 300 clamp(1.18rem,1.95vw,1.65rem)/1.5 var(--lf);max-width:34ch;margin:2rem 0 2.8rem;text-wrap:balance}
.post-mail{display:inline-block;max-width:100%;overflow-wrap:anywhere;background:var(--red);border:1px solid var(--red);color:#fff;text-decoration:none;font:600 clamp(1rem,1.4vw,1.2rem)/1.2 var(--lf);padding:1.15rem 1.7rem;transition:background .2s,color .2s}
.post-mail:hover{background:transparent;color:var(--bone)}
.post-promise{font:400 .9rem/1.5 var(--lf);color:var(--bone-2);margin-top:1.4rem}
.replay{margin-top:3.8rem;font:500 .62rem/1 var(--lf);letter-spacing:.32em;text-transform:uppercase;text-decoration:none;color:var(--mute);padding:.6rem 0;transition:color .2s}
.replay:hover{color:var(--bone)}
.foot{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding:1.6rem var(--pad) calc(var(--hud-b) + 1.6rem);border-top:1px solid rgba(236,229,212,.1);font:400 .76rem/1.5 var(--lf);letter-spacing:.04em;color:var(--mute)}
.foot b{color:var(--red-text);font-weight:400}

/* ---------- Reveal ---------- */
.js [data-reveal]{opacity:0;transform:translateY(18px);transition:opacity .9s ease,transform 1.1s cubic-bezier(.2,.7,.2,1)}
.js [data-reveal].in{opacity:1;transform:none}
.js .role[data-reveal]:nth-of-type(3){transition-delay:.12s}

/* ---------- Portrait: a vertical trailer ---------- */
.portrait .hero-film{object-position:47% 50%}
.portrait .kb{transform:none}
.portrait .kb img{width:auto;height:100%;transform:translate3d(calc((100vw - 100%) * var(--p,0)),0,0);will-change:transform}
.portrait .scene .frame::after{height:55%;background:linear-gradient(0deg,rgba(0,0,0,.8),rgba(0,0,0,0))}
.portrait .shade{background:linear-gradient(0deg,rgba(0,0,0,.86) 0%,rgba(0,0,0,.55) 36%,rgba(0,0,0,0) 62%),linear-gradient(180deg,rgba(0,0,0,.6) 0%,rgba(0,0,0,0) 28%)}

@media (max-width:900px){
  .hero-copy-in{grid-template-columns:1fr;gap:1.4rem}
  .hero-side{justify-self:start}
  .pitch-facts{grid-template-columns:repeat(2,minmax(0,1fr))}
  .notes{grid-template-columns:1fr;gap:2rem}
  .callsheet{position:static}
  .slates{grid-template-columns:repeat(2,minmax(0,1fr))}
  .dir-top{grid-template-columns:1fr}
  .dir-still{display:none}
  .dir-grid{grid-template-columns:1fr}
}
@media (max-width:720px){
  :root{--hud-t:50px;--hud-b:40px}
  .hud-nav a:not(.hud-cta):not(:first-child){display:none}
  .hud-nav .hud-cta{padding:.62rem .75rem .62rem .95rem}
  .hud-bottom{grid-template-columns:auto minmax(0,1fr);font-size:.7rem}
  .timeline{position:absolute;left:0;right:0;top:0;height:2px}
  .timeline .tick{display:none}
  .tl-line,.tl-fill{top:0}
  .tl-head{top:0;height:4px;margin-top:-1px}
  .chap{width:auto;max-width:none;justify-self:end;font-size:.64rem}
  .tc-rec{display:none}
  .frame-cue{display:none}
  .frame-slug{font-size:.58rem;right:var(--pad)}
  .bt-main{font-size:.95rem;letter-spacing:.36em;margin-right:-.36em}
  .bt-role{display:none}
  .tagline{font-size:clamp(2.15rem,10.4vw,3.1rem)}
  .lede{font-size:1rem}
  .ic-1{letter-spacing:.4em;margin-right:-.4em;font-size:.66rem}
  .ic-2{font-size:clamp(1.5rem,7.6vw,2.4rem);letter-spacing:.5em;margin-right:-.5em}
  .ic-2 span{display:block}
  .i2 .ic-2,.i3 .ic-2{letter-spacing:.26em;margin-right:-.26em}
  .card-title{font-size:clamp(1.9rem,9.4vw,2.9rem);letter-spacing:.08em;margin-right:-.08em}
  .card-line{font-size:1.08rem}
  .subs{font-size:1.08rem;bottom:calc(var(--hud-b) + 1.4rem)}
  .pitch-facts{grid-template-columns:1fr;gap:1.4rem}
  .logline{font-size:clamp(1.5rem,6.6vw,2.1rem)}
  .page{padding:3.4rem 1.25rem 2.8rem 1.6rem;font-size:.96rem;line-height:1.62}
  .page::before,.page::after{display:none}
  .page-no{top:1.3rem;right:1.25rem}
  .page-kind{margin-bottom:1.6rem}
  .sn{display:none}
  .sp-dialogue{margin:1.7rem 4% 1.7rem 8%}
  .sp-char{padding-left:18%}
  .sp-paren{padding-left:9%}
  .cast-grid{grid-template-columns:1fr;gap:3.5rem}
  .seam{height:1px;background:linear-gradient(90deg,transparent,rgba(236,229,212,.32) 15%,rgba(236,229,212,.32) 85%,transparent)}
  .seam span{top:50%;padding:0 .8rem}
  .headshot{width:min(72%,16rem)}
  .slates{grid-template-columns:1fr;gap:2.6rem}
  .clapper .stick{transform:rotate(-7deg)}
  .slate-body{min-height:0}
  .roll-dl div{grid-template-columns:1fr;gap:.25rem}
  .roll-dl dt,.roll-dl dd{text-align:center}
  .roll-dl{gap:1.3rem}
  .specs div{grid-template-columns:6.6rem minmax(0,1fr)}
  .foot{flex-direction:column}
}

/* ---------- Reduced motion: a calm, complete cut ---------- */
@media (prefers-reduced-motion:reduce){
  .grain,.leak{display:none}
  .weave,.rec,.frame-cue span{animation:none}
  .card,.subs li,.scrim,.hero-copy,.bar-title,[data-reveal]{transition:none!important}
  .clapper .stick{transform:none;transition:none}
  .slate-body::after{display:none}
  .kb{transform:scale(1.04)}
  .kb-mono{opacity:0}
  .portrait .kb img{transform:none;width:100%;object-position:50% 50%}
}
.rm .credits .track{height:auto}
.rm .credits .screen{position:relative;height:auto;-webkit-mask-image:none;mask-image:none}
.rm .roll{position:relative;transform:none;padding:calc(var(--hud-t) + 5rem) var(--pad) 5rem}
