@font-face{font-family:Festival;src:url('/assets/title.woff') format('woff');font-style:normal;font-weight:700;font-display:swap}
@font-face{font-family:Editorial;src:url('/assets/editorial.woff') format('woff');font-style:italic;font-weight:400;font-display:swap}
@font-face{font-family:Sans;src:url('/assets/sans.woff') format('woff');font-style:normal;font-weight:400;font-display:swap}
:root{color-scheme:dark;--ivory:#f3f0e8;--muted:#c0bdb7;--amber:#d7ac7b}
*{box-sizing:border-box}html,body{width:100%;height:100%;overflow:hidden;margin:0}body{background:#080d11;color:var(--ivory);font-family:Sans,Arial,sans-serif;-webkit-font-smoothing:antialiased}.poster{isolation:isolate;position:relative;width:100%;height:100vh;height:100dvh;overflow:hidden;min-height:0}.landscape,#cinema,.shade{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.landscape{z-index:-4;background:#080d11 url('/assets/gulf.webp') center center/cover no-repeat;animation:landscape-reveal 2.4s ease-out both}#cinema{z-index:-3;opacity:0;transition:opacity 1.6s}#cinema.ready{opacity:1}.shade{z-index:-2;background:linear-gradient(180deg,rgba(4,8,12,.45),transparent 48%,rgba(3,7,10,.07) 62%,rgba(3,7,10,.86) 100%)}.edition,.category{position:absolute;top:max(35px,env(safe-area-inset-top));font-size:12px;letter-spacing:.15em;line-height:1.5}.edition{left:max(40px,env(safe-area-inset-left));display:flex;align-items:center;gap:13px}.edition-line{height:1px;width:30px;background:#bdb8ad80}.category{right:max(40px,env(safe-area-inset-right));text-align:right}.identity{position:absolute;top:18%;left:50%;width:min(83vw,1060px);transform:translateX(-50%);text-align:center}.eyebrow{margin:0 0 21px;font-size:12px;letter-spacing:.3em;color:var(--muted)}.wordmark-row{display:flex;align-items:center;justify-content:center;gap:clamp(12px,3vw,48px)}h1{margin:0;font-family:Festival,'Arial Narrow',Arial,sans-serif;font-size:clamp(130px,22vw,300px);font-weight:700;line-height:.84;letter-spacing:-.027em;white-space:nowrap;overflow:hidden}h1 span{display:block;animation:title-reveal 1.65s cubic-bezier(.16,1,.3,1) .55s both}.laurel{width:clamp(34px,5.2vw,67px);height:clamp(98px,14vw,181px);flex-shrink:0;stroke:var(--ivory);stroke-width:1.1;opacity:.8;animation:fade-in 2s ease .85s both}.laurel-right{transform:scaleX(-1)}.festival-name{font-size:clamp(14px,1.6vw,21px);letter-spacing:.34em;margin:28px 0 0;padding-left:.34em}.announcement{position:absolute;bottom:11.7%;left:20px;right:20px;text-align:center}.tagline{font-family:Editorial,Georgia,serif;font-style:italic;font-size:clamp(23px,2.4vw,33px);line-height:1.2;letter-spacing:-.01em;margin:0 0 29px}.mobile-break{display:none}.coming{font-size:14px;letter-spacing:.27em;display:flex;align-items:center;justify-content:center;gap:20px;margin:0}.coming-rule{width:35px;height:1px;background:var(--amber);opacity:.75}.location{font-size:12px;letter-spacing:.21em;margin:14px 0 0;color:var(--muted)}.coordinates{position:absolute;left:max(40px,env(safe-area-inset-left));bottom:max(29px,env(safe-area-inset-bottom));font-size:12px;letter-spacing:.08em;color:#b3b6b7}.reveal{animation:fade-in 1.6s ease 1s both}.announcement{animation-delay:1.3s}.introduction{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:12px;letter-spacing:.35em;white-space:nowrap;animation:intro 1.7s ease both;pointer-events:none}.introduction span{margin:0 12px;color:var(--amber)}
@keyframes title-reveal{from{transform:translateY(110%);filter:blur(5px);opacity:0}to{transform:translateY(0);filter:blur(0);opacity:1}}@keyframes fade-in{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}@keyframes landscape-reveal{from{opacity:0;transform:scale(1.045)}to{opacity:1;transform:scale(1)}}@keyframes intro{0%,12%{opacity:0}30%,55%{opacity:1}100%{opacity:0;visibility:hidden}}.laurel{animation-name:laurel-reveal}@keyframes laurel-reveal{from{opacity:0}to{opacity:.8}}
@media(min-width:1600px){.identity{top:19%}}
@media(max-width:700px){.edition,.category{top:max(27px,calc(env(safe-area-inset-top) + 12px));font-size:12px;letter-spacing:.12em}.edition{left:max(23px,env(safe-area-inset-left));gap:9px}.edition-line{width:18px}.category{right:max(23px,env(safe-area-inset-right))}.identity{top:23%;width:90%}.eyebrow{font-size:12px;letter-spacing:.22em;margin-bottom:22px}.wordmark-row{gap:10px}h1{font-size:27vw}.laurel{width:8vw;height:24vw;stroke-width:1.25}.festival-name{font-size:12px;letter-spacing:.23em;margin-top:20px}.announcement{bottom:13%}.tagline{font-size:27px;line-height:1.15;margin-bottom:25px}.mobile-break{display:block}.coming{font-size:13px;gap:17px;letter-spacing:.25em}.coming-rule{width:25px}.location{font-size:12px;margin-top:14px}.coordinates{left:max(23px,env(safe-area-inset-left));bottom:max(27px,calc(env(safe-area-inset-bottom) + 12px));font-size:12px}.shade{background:linear-gradient(180deg,rgba(4,8,12,.48),rgba(4,8,12,.05) 45%,transparent 60%,rgba(3,7,10,.9) 100%)}}
@media(max-height:650px) and (min-width:701px){.identity{top:17%}.eyebrow{margin-bottom:12px}h1{font-size:min(22vw,35vh)}.laurel{height:23vh;width:8vh}.festival-name{margin-top:17px;font-size:16px}.announcement{bottom:10%}.tagline{font-size:24px;margin-bottom:15px}.location{margin-top:9px}.edition,.category{top:22px}.coordinates{bottom:17px}}
@media(max-height:600px) and (max-width:700px){.identity{top:22%}.eyebrow{display:none}h1{font-size:min(27vw,30vh)}.laurel{height:20vh;width:7vh}.festival-name{margin-top:13px}.announcement{bottom:13%}.tagline{font-size:22px;margin-bottom:17px}.location{margin-top:10px}}
@media(orientation:landscape) and (max-height:450px){.identity{top:20%}.eyebrow{display:none}.festival-name{font-size:12px;margin-top:14px}.announcement{bottom:14%}.tagline{font-size:20px;margin-bottom:12px}.mobile-break{display:none}.location{display:none}.coming{font-size:12px}.coordinates{bottom:13px}.category{font-size:12px}.edition{font-size:12px}.laurel{height:22vh}h1{font-size:32vh}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}.introduction{display:none}.landscape{opacity:1}.reveal{opacity:1}h1 span{transform:none}.laurel{opacity:.8}}
/* Moving light is a permanent part of the composition, including the GPU fallback. */
#light-field{position:absolute;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none}
.shade{background:linear-gradient(180deg,rgba(4,8,12,.32),transparent 48%,rgba(3,7,10,.05) 67%,rgba(3,7,10,.88) 100%)}
.wordmark-row{transform:translate3d(var(--drift-x,0px),var(--drift-y,0px),0);will-change:transform}
h1 span{background:linear-gradient(110deg,#bcb9b0 15%,#f3f0e8 32%,#fffdf4 43%,#d4b78d 48%,#f3f0e8 53%,#bcb9b0 75%);background-size:240% 100%;background-clip:text;-webkit-background-clip:text;color:transparent;animation:title-reveal 1.65s cubic-bezier(.16,1,.3,1) .55s both,title-light 9s linear 2.2s infinite}
.aperture{position:absolute;left:0;right:0;top:60%;height:1px;z-index:1;background:linear-gradient(90deg,transparent,#dfaf72,#fff8df,#dfaf72,transparent);box-shadow:0 0 30px 5px #d8a66355;pointer-events:none;animation:aperture-reveal 2.8s cubic-bezier(.2,.8,.2,1) both}
.canvas-fallback .landscape{animation:landscape-reveal 2.4s ease-out both,fallback-drift 16s ease-in-out 2.4s infinite alternate}
.motion-paused *,.motion-paused *::before,.motion-paused *::after{animation-play-state:paused!important}
@keyframes title-light{0%{background-position:140% 0}100%{background-position:-100% 0}}
@keyframes aperture-reveal{0%{opacity:0;transform:scaleX(0)}18%{opacity:1;transform:scaleX(.1)}55%{opacity:.9;transform:scaleX(1)}100%{opacity:0;transform:scaleX(1.2)}}
@keyframes fallback-drift{from{transform:scale(1.025) translateX(-.4%)}to{transform:scale(1.07) translateX(.6%)}}
@media(max-width:700px){.identity{top:19%}.announcement{bottom:10%}.tagline{font-size:25px}.shade{background:linear-gradient(180deg,rgba(4,8,12,.3),transparent 48%,rgba(3,7,10,.08) 69%,rgba(3,7,10,.92) 100%)}}
@media(prefers-reduced-motion:reduce){h1 span{color:var(--ivory);background:none}.aperture{display:none}.wordmark-row{transform:none}}
