:root { --wide: min(1180px, calc(100vw - 64px)); }

body.festival-page.global-animation-awards {
  --bg: #101113;
  --bg-deep: #050606;
  --panel: #17181a;
  --panel-2: #202123;
  --line: rgba(255, 255, 255, 0.09);
  --text: #fff;
  --muted: #828282;
  --gold: #cdb279;
  --gold-bright: #ead9a3;
  --gold-matte: #bfa777;
  --gold-mid: #cdb279;
  --gold-light: #ead9a3;
  --gold-dark: #8e733a;
  --gold-border: rgba(205, 178, 121, 0.24);
  --gold-prize: linear-gradient(90deg, #9f8754 0%, #ead9a3 42.308%, #8e733a 100%);
  --petrol: #0a403a;
  --acid: #b9f527;
  --font-display: "Space Grotesk", ui-sans-serif, system-ui, sans-serif;
  --font-body: "Inter", ui-sans-serif, system-ui, sans-serif;
  --font-ui: "Inter", ui-sans-serif, system-ui, sans-serif;
  --display-xl-size: 72px;
  --display-xl-weight: 700;
  --display-xl-leading: 72px;
  --display-xl-tracking: -2.88px;
  --display-lg-size: 48px;
  --display-lg-weight: 700;
  --display-lg-leading: 56px;
  --display-lg-tracking: -1.92px;
  --heading-md-size: 32px;
  --heading-md-weight: 700;
  --heading-md-leading: 36px;
  --heading-md-tracking: -1.28px;
  --body-size: 16px;
  --body-leading: 24px;
  --meta-size: 14px;
  --meta-leading: 20px;
  --meta-tracking: 1px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 90px; overflow-x: clip; background: #101113; }
body.festival-page { margin: 0; overflow-x: clip; background: var(--bg); color: var(--text); font-family: var(--font-body); font-size: var(--body-size); line-height: var(--body-leading); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
body.festival-page :is(h1,h2,h3,p,figure,dl,dd) { margin: 0; }
body.festival-page :is(h1,h2) { font-family: var(--font-display); font-feature-settings: "ss04" 1; }
body.festival-page :is(h1,h2,h3,p,a,button,span,strong,small) { text-shadow: none; }
body.festival-page :is(a,button) { color: inherit; font: inherit; }
body.festival-page a { text-decoration: none; }
body.festival-page img, body.festival-page video { display: block; width: 100%; max-width: 100%; }
body.festival-page button { border: 0; }
.festival-controlled { width: var(--wide); margin-inline: auto; }
.festival-skip { position: fixed; z-index: 1000; top: 8px; left: 8px; padding: 10px 14px; transform: translateY(-150%); background: #fff; color: #000 !important; }
.festival-skip:focus { transform: none; }

.festival-header { position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 50px; display: grid; grid-template-columns: 290px 1fr 290px; align-items: center; padding: 0 16px; border-bottom: 1px solid var(--line); background: rgba(16,17,19,.98); }
.festival-brand { display: inline-flex; align-items: center; gap: 10px; width: max-content; }
.festival-brand-mark { width: 32px; height: 32px; display: grid; place-items: center; border: 1px solid var(--gold-border); border-radius: 8px; background: #171819; color: var(--gold-mid); font: 700 10px/1 var(--font-ui); }
.festival-brand > span:last-child { display: flex; flex-direction: column; line-height: 1.05; }
.festival-brand strong { font: 700 11px/1 var(--font-ui); }
.festival-brand small { margin-top: 3px; color: var(--muted); font: 500 8px/1 var(--font-ui); }
.festival-primary-nav { display: flex; justify-content: center; gap: 30px; color: #828282; font: 500 14px/20px var(--font-ui); letter-spacing: .1px; }
.festival-primary-nav a:hover { color: #fff; }
.festival-header-actions { display: flex; justify-content: flex-end; align-items: center; gap: 16px; }
.festival-portfolio-link { font: 500 14px/20px var(--font-ui); letter-spacing: .1px; }
.festival-button { min-height: 42px; display: inline-flex; align-items: center; justify-content: center; gap: 12px; padding: 0 18px; border: 1px solid var(--line); border-radius: 9px; background: #1c1d1f; font: 600 18px/24px var(--font-ui); letter-spacing: -.4px; transition: background-color .25s ease, color .25s ease, transform .25s ease; }
.festival-button:hover { transform: translateY(-1px); background: #27282a; }
.festival-button.is-light { border-color: #fff; background: #fff; color: #101113; }
.festival-button.is-light:hover { background: #ececec; }
.festival-menu-toggle { display: none; width: 36px; height: 36px; padding: 11px 8px; background: transparent; }
.festival-menu-toggle i { display: block; height: 1px; margin: 5px 0; background: #fff; }

.festival-index { position: fixed; z-index: 90; top: 50px; right: 0; left: 0; height: 40px; display: flex; align-items: center; justify-content: space-between; padding: 0 16px; border-bottom: 1px solid var(--line); background: rgba(16,17,19,.98); color: #828282; font: 500 14px/20px var(--font-ui); letter-spacing: .1px; }
.festival-index > span b { color: #ddd; }
.festival-index > div { position: absolute; left: 50%; height: 100%; display: flex; gap: 28px; transform: translateX(-50%); }
.festival-index a { position: relative; display: grid; place-items: center; white-space: nowrap; }
.festival-index a:hover, .festival-index a.is-active { color: #fff; }
.festival-index a.is-active::after { position: absolute; right: 0; bottom: 0; left: 0; height: 2px; background: #fff; content: ""; }
#competition-main { padding-top: 90px; }

.festival-hero { position: relative; height: 664px; overflow: hidden; background: #020303; }
.festival-hero-haze { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(2,3,3,.96), transparent 33%, transparent 67%, rgba(2,3,3,.96)); pointer-events: none; }
.festival-hero-media { position: absolute; inset: 0; }
.festival-hero-media video { height: 100%; object-fit: cover; }
.festival-announcement { position: absolute; z-index: 2; top: 42px; right: max(32px, calc((100vw - 1180px)/2)); width: 194px; padding: 9px; border: 1px solid rgba(205,177,122,.25); border-radius: 10px; background: rgba(29,27,23,.88); text-align: center; }
.festival-announcement :is(small,strong,span,a) { display: block; }
.festival-announcement small { color: #9d9a93; font-size: 9px; text-transform: uppercase; }
.festival-announcement strong { margin-top: 7px; color: var(--gold-mid); font-size: 13px; }
.festival-announcement span { color: #a6a6a3; font-size: 9px; }
.festival-announcement a { margin-top: 9px; padding: 6px; border-radius: 5px; background: var(--gold-mid); color: #151515; font-size: 9px; font-weight: 700; }
.festival-hero-copy { position: absolute; z-index: 2; right: 0; bottom: 38px; left: 0; text-align: center; }
.festival-hero-copy > p { color: #d3bf88; font: 500 16px/24px var(--font-ui); }
.festival-hero-copy h1 { display: flex; align-items: center; justify-content: center; gap: 18px; margin-top: 16px; font: var(--display-xl-weight) var(--display-xl-size)/var(--display-xl-leading) var(--font-display); letter-spacing: var(--display-xl-tracking); text-transform: uppercase; }
.festival-hero-copy h1 span { background: var(--gold-prize); background-clip: text; color: transparent; -webkit-background-clip: text; }
.festival-hero-copy h1 i { width: 22px; height: 55px; background: url("assets/competition/reference/laurel-left.svg") center/contain no-repeat; }
.festival-hero-copy h1 i:last-child { background-image: url("assets/competition/reference/laurel-right.svg"); }
.festival-hero-copy em { display: block; margin-top: 15px; color: #858585; font-style: normal; font-size: 11px; }
.festival-hero-pitch { display: flex; align-items: center; justify-content: center; gap: 28px; margin-top: 18px; }
.festival-hero-pitch p { display: flex; flex-direction: column; align-items: flex-start; font-size: 12px; }
.festival-hero-pitch strong { color: #d3bf88; }

.festival-timeline { position: relative; z-index: 4; width: var(--wide); height: 46px; display: grid; grid-template-columns: repeat(var(--timeline-count,5),1fr); margin: -5px auto 0; overflow: hidden; border: 1px solid var(--line); border-radius: 10px; background: #18191b; }
.festival-timeline article { position: relative; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 9px; padding: 0 16px; border-right: 1px solid var(--line); color: #858688; font-size: 10px; }
.festival-timeline article:last-child { border-right: 0; }
.festival-timeline article i { width: 10px; height: 10px; border: 1px solid currentColor; border-radius: 50%; }
.festival-timeline article strong { color: #a6a7a7; }
.festival-timeline article.is-current { background: linear-gradient(90deg,#93ad22,#b0cd38 55%,rgba(176,205,56,.1)); color: #fff; }

.festival-award-chapter { width: var(--wide); margin: 110px auto 0; }
.festival-statement { padding-bottom: 78px; text-align: center; }
.festival-statement span, .festival-section-head > span, .festival-entry-head > span { color: #828282; font: 500 var(--meta-size)/var(--meta-leading) var(--font-ui); letter-spacing: var(--meta-tracking); text-transform: uppercase; }
.festival-statement h2 { margin-top: 12px; font: var(--heading-md-weight) var(--heading-md-size)/var(--heading-md-leading) var(--font-display); letter-spacing: var(--heading-md-tracking); text-transform: uppercase; }
.festival-statement strong { color: inherit; font-weight: inherit; }
.festival-prize { min-height: 710px; padding: 72px 70px 52px; overflow: hidden; border: 1px solid var(--gold-border); border-radius: 18px; background: radial-gradient(ellipse at 50% -12%, rgba(234,217,163,.22), rgba(21,21,21,.96) 48%, #111 76%); }
.festival-prize > header { display: flex; align-items: center; justify-content: center; gap: 20px; }
.festival-prize > header img { width: 42px; height: 74px; object-fit: contain; }
.festival-prize > header strong { background: var(--gold-prize); background-position: 77.5712% 50%; background-size: 180% 100%; background-clip: text; color: transparent; font: 700 clamp(76px,8.4vw,120px)/1.25 var(--font-display); letter-spacing: -2.4px; -webkit-background-clip: text; }
.festival-prize-grid { display: grid; grid-template-columns: repeat(6,1fr); margin-top: 95px; }
.festival-prize-grid article { min-height: 146px; display: flex; flex-direction: column; align-items: center; justify-content: center; border-right: 1px solid var(--line); text-align: center; }
.festival-prize-grid article:nth-child(1) { grid-column: 1 / 3; }
.festival-prize-grid article:nth-child(2) { grid-column: 3 / 5; }
.festival-prize-grid article:nth-child(3) { grid-column: 5 / 7; border-right: 0; }
.festival-prize-grid article:nth-child(4) { grid-column: 2 / 4; margin-top: 55px; }
.festival-prize-grid article:nth-child(5) { grid-column: 4 / 6; margin-top: 55px; border-right: 0; }
.festival-prize-grid small { padding: 7px 16px; border: 1px solid var(--gold-border); border-radius: 8px; background: var(--gold-prize); color: rgba(0,0,0,.62); font: 700 11px/1 var(--font-display); text-transform: uppercase; }
.festival-prize-grid article:nth-child(n+4) small { background: #272727; color: #ccc; }
.festival-prize-grid strong { margin-top: 25px; color: #fff; font: 700 56px/64px var(--font-display); letter-spacing: -2.24px; }
.festival-prize-grid b { margin-top: 8px; color: #777; font-size: 11px; font-weight: 500; }

.festival-public { position: relative; width: var(--wide); min-height: 930px; margin: 95px auto 0; padding: 28px 22px 24px; overflow: hidden; border: 1px solid var(--line); border-radius: 24px; background: #050606; }
.festival-public-glow { position: absolute; width: 70%; opacity: .5; pointer-events: none; }
.festival-public-glow.g1 { top: -10%; right: -16%; }
.festival-public-glow.g2 { bottom: -20%; left: -15%; }
.festival-public-top, .festival-public-grid { position: relative; z-index: 1; }
.festival-public-top { min-height: 285px; display: grid; grid-template-columns: 43% 57%; align-items: center; border-bottom: 1px solid var(--line); }
.festival-public-copy { max-width: 470px; }
.festival-public-copy p { display: flex; gap: 5px; }
.festival-public-copy p span { padding: 4px 9px; border-radius: 5px; background: #202124; font-size: 9px; }
.festival-public-copy h2 { margin-top: 28px; background: var(--gold-prize); background-clip: text; color: transparent; font: 700 48px/56px var(--font-display); letter-spacing: -1.2px; text-transform: uppercase; -webkit-background-clip: text; }
.festival-public-copy > div { max-width: 430px; margin-top: 14px; color: #828282; font: 400 16px/24px var(--font-body); }
.festival-public-copy .festival-button { margin-top: 26px; }
.festival-public-collab { position: relative; height: 220px; }
.festival-public-collab figure { position: absolute; top: 48px; width: 37%; aspect-ratio: 16/9; overflow: hidden; border: 2px solid rgba(19,105,94,.8); border-radius: 12px; box-shadow: 0 15px 35px rgba(0,0,0,.4); }
.festival-public-collab figure:nth-child(1) { left: 2%; }
.festival-public-collab figure:nth-child(2) { z-index: 2; top: 37px; left: 31%; width: 42%; }
.festival-public-collab figure:nth-child(3) { right: 0; }
.festival-public-collab :is(img,video) { height: 100%; object-fit: cover; }
.festival-public-collab b { position: absolute; padding: 5px 9px; border-radius: 99px; background: #8c8d8d; color: #fff; font-size: 8px; font-weight: 500; }
.festival-public-collab .c1 { top: 11px; left: 15%; }.festival-public-collab .c2 { right: 3%; bottom: 0; }.festival-public-collab .c3 { left: 3%; bottom: 5px; }
.festival-public-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 20px 16px; padding-top: 28px; }
.festival-public-grid figure { min-width: 0; }
.festival-public-grid img { aspect-ratio: 16/9; object-fit: cover; border-radius: 8px; }
.festival-public-grid figcaption { padding: 10px 4px 0; overflow: hidden; color: #c4c4c3; font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }

.festival-jury { margin-top: 105px; padding: 90px 0 100px; background: #111214; }
.festival-section-head { position: relative; }
.festival-section-head h2 { margin-top: 13px; font: var(--display-lg-weight) var(--display-lg-size)/var(--display-lg-leading) var(--font-display); letter-spacing: var(--display-lg-tracking); text-transform: uppercase; }
.festival-section-head .festival-button { position: absolute; right: 0; bottom: 0; }
.festival-jury-list { display: grid; gap: 28px; margin-top: 42px; }
.festival-judge { position: relative; min-height: 510px; overflow: hidden; border: 1px solid var(--line); border-radius: 14px; background: #030303 url("assets/competition/reference/jury-bg.webp") left center/cover no-repeat; }
.festival-judge::after { position: absolute; inset: 0; background: linear-gradient(90deg,transparent 26%,rgba(0,0,0,.17) 48%,rgba(0,0,0,.98) 70%); content: ""; pointer-events: none; }
.festival-judge figure { position: absolute; z-index: 1; top: 0; bottom: 0; left: 0; width: 58%; }
.festival-judge figure img { height: 100%; object-fit: cover; object-position: center top; filter: saturate(.75) contrast(1.07); -webkit-mask-image: linear-gradient(90deg,#000 70%,transparent 100%); mask-image: linear-gradient(90deg,#000 70%,transparent 100%); }
.festival-judge-copy { position: relative; z-index: 2; width: 42%; margin-left: 58%; padding: 138px 64px 60px 0; }
.festival-judge-copy > span { color: #777; font-size: 10px; text-transform: uppercase; }
.festival-judge-copy h3 { margin-top: 14px; background: var(--gold-prize); background-clip: text; color: transparent; font: 700 40px/48px var(--font-display); letter-spacing: -1.6px; text-transform: uppercase; -webkit-background-clip: text; }
.festival-judge-copy h3::before,.festival-judge-copy h3::after { width: 15px; height: 32px; display: inline-block; margin-right: 10px; background: url("assets/competition/reference/laurel-left.svg") center/contain no-repeat; vertical-align: -6px; content: ""; }
.festival-judge-copy h3::after { margin-right: 0; margin-left: 10px; background-image: url("assets/competition/reference/laurel-right.svg"); }
.festival-judge-copy p { max-width: 420px; margin-top: 38px; color: #626262; font: 600 20px/24px var(--font-body); }
.festival-judge-copy p strong { color: rgba(255,255,255,.96); font-weight: inherit; }
.festival-judge-copy dl { display: flex; gap: 10px; margin-top: 36px; }
.festival-judge-copy dl div { padding: 9px 12px; border: 1px solid var(--line); border-radius: 6px; color: #aaa; font-size: 9px; }
.festival-judge-copy dt { color: var(--gold); text-transform: uppercase; }.festival-judge-copy dd { margin-top: 3px; }
.festival-judge-credit { position: absolute; z-index: 2; bottom: 14px; left: 28px; color: #777; font-size: 8px; }

.festival-projects { padding: 115px 0 125px; background: #111214; }
.festival-section-head.is-centered { text-align: center; }
.festival-section-head.is-centered h2 strong { background: var(--gold-prize); background-clip: text; color: transparent; font-weight: inherit; -webkit-background-clip: text; }
.festival-project-stage { margin-top: 78px; }
.festival-project-slide { display: none; grid-template-columns: minmax(0,1fr) 210px; gap: 12px; }
.festival-project-slide.is-active { display: grid; }
.festival-project-media { position: relative; aspect-ratio: 16/9; overflow: hidden; border: 1px solid rgba(30,90,79,.5); border-radius: 14px; background: #020202; }
.festival-project-media video { height: 100%; object-fit: cover; }
.festival-project-cast { position: absolute; z-index: 2; top: 18px; right: 18px; left: 18px; display: flex; align-items: center; justify-content: center; gap: 6px; }
.festival-project-cast span { width: 46px; height: 46px; overflow: hidden; border: 2px solid #eee; border-radius: 50%; background: #111; }
.festival-project-cast img { height: 100%; object-fit: cover; }
.festival-project-title { position: absolute; z-index: 2; right: 0; bottom: 0; left: 0; padding: 80px 34px 30px; background: linear-gradient(transparent,rgba(0,0,0,.88)); }
.festival-project-title small { color: var(--gold); font-size: 10px; text-transform: uppercase; }
.festival-project-title h3 { margin-top: 8px; font: 700 48px/56px var(--font-display); letter-spacing: -1.92px; text-transform: uppercase; }
.festival-project-aside { display: flex; flex-direction: column; gap: 9px; padding: 14px; border: 1px solid var(--line); border-radius: 12px; background: #202123; }
.festival-project-aside > small { color: #ddd; font-size: 9px; }
.festival-project-aside > strong { color: var(--acid); font-size: 10px; }
.festival-project-aside p { color: #8b8c8e; font-size: 10px; line-height: 1.5; }
.festival-project-link { min-height: 82px; display: flex; align-items: flex-end; padding: 10px; border: 1px solid var(--line); border-radius: 8px; background: #2a2b2d; font-size: 9px; }
.festival-project-aside .festival-button { margin-top: auto; font-size: 14px; letter-spacing: .1px; }
.festival-project-nav { display: flex; justify-content: center; align-items: center; gap: 8px; margin-top: 46px; }
.festival-project-nav button { width: 44px; height: 44px; padding: 0; overflow: hidden; border: 2px solid transparent; border-radius: 50%; background: #1c1d1f; cursor: pointer; }
.festival-project-nav button.is-active { width: 72px; border-radius: 22px; border-color: var(--gold); }
.festival-project-nav img { height: 100%; object-fit: cover; }

.festival-entry { padding: 120px 0 140px; background: #131416; }
.festival-entry-layout { display: grid; grid-template-columns: 440px minmax(0,1fr); gap: 46px; align-items: start; }
.festival-entry-head { position: sticky; top: 138px; min-height: 260px; }
.festival-entry-head h2 { margin-top: 13px; font: 700 48px/56px var(--font-display); letter-spacing: -1.92px; text-transform: uppercase; }
.festival-entry-head .festival-button { margin-top: 42px; }
.festival-step-list { position: relative; display: grid; gap: 70px; }
.festival-step-list::before { position: absolute; top: 18px; bottom: 18px; left: -29px; width: 1px; background: var(--line); content: ""; }
.festival-step { position: relative; min-height: 520px; }
.festival-step-number { position: absolute; top: 0; left: -49px; width: 42px; height: 42px; display: grid; place-items: center; border: 1px solid var(--line); border-radius: 50%; background: #242527; color: #b0b0b0; font-weight: 600; }
.festival-step-copy h3 { font: 600 24px/28px var(--font-body); letter-spacing: -.4px; }.festival-step-copy small { display: none; }
.festival-step-copy p { max-width: 580px; margin-top: 4px; color: #828282; font: 400 18px/24px var(--font-body); }
.festival-step figure { margin-top: 16px; padding: 28px; border-radius: 13px; background: #1b1c1e; }
.festival-step :is(img,video) { aspect-ratio: 16/9; object-fit: cover; border-radius: 9px; }
.festival-winner-step { min-height: 570px; }
.festival-winner-step figure { padding: 0; background: transparent; }

.festival-learn { padding: 105px 0 120px; }
.festival-learn-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 42px 16px; margin-top: 70px; }
.festival-tutorial figure { position: relative; aspect-ratio: 16/9; overflow: hidden; border: 1px solid var(--line); border-radius: 12px; background: #191a1c; }
.festival-tutorial :is(img,video) { position: absolute; inset: 0; height: 100%; object-fit: cover; transition: opacity .3s ease, transform .5s ease; }
.festival-tutorial video { opacity: 0; }
.festival-tutorial:hover video { opacity: 1; }.festival-tutorial:hover img { opacity: 0; }.festival-tutorial:hover figure :is(img,video) { transform: scale(1.015); }
.festival-tutorial h3 { margin-top: 13px; font: 500 16px/24px var(--font-body); }.festival-tutorial span { color: #828282; font: 500 12px/16px var(--font-ui); }

.festival-details { padding: 105px 0 100px; }
.festival-details-layout { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-top: 66px; }
.festival-details-grid { display: grid; grid-template-columns: repeat(2,1fr); gap: 12px; }
.festival-details-grid > div { min-height: 150px; display: flex; flex-direction: column; justify-content: flex-end; padding: 20px; border: 1px solid var(--line); border-radius: 12px; background: #202123; }
.festival-details-grid dt { color: #777; font-size: 9px; text-transform: uppercase; }
.festival-details-grid dd { display: flex; flex-direction: column; margin-top: 20px; }
.festival-details-grid strong { font-size: 19px; font-weight: 500; }.festival-details-grid span { margin-top: 5px; color: #777; font-size: 11px; }
.festival-world { position: relative; min-height: 636px; overflow: hidden; border-top: 1px solid var(--line); background: #030404; }
.festival-world video { height: 100%; object-fit: contain; mix-blend-mode: screen; }
.festival-world::after { position: absolute; inset: 0; box-shadow: inset 0 0 80px 36px #030404; content: ""; pointer-events: none; }
.festival-world figcaption { position: absolute; z-index: 2; right: 24px; bottom: 20px; left: 24px; display: flex; justify-content: space-between; color: #96991f; font-size: 10px; text-transform: uppercase; }
.festival-rule-note { margin-top: 18px; color: #616264; font-size: 10px; }

.festival-faq { width: min(700px,calc(100vw - 40px)); margin: 0 auto; padding: 115px 0 135px; }
.festival-faq header h2 { font: 700 32px/36px var(--font-display); letter-spacing: -1.28px; text-transform: uppercase; }
.festival-accordion { margin-top: 28px; }
.festival-accordion article { border-bottom: 1px solid rgba(255,255,255,.04); }
.festival-accordion button { width: 100%; min-height: 42px; display: flex; align-items: center; justify-content: space-between; padding: 0; background: transparent; color: #eee; text-align: left; cursor: pointer; }
.festival-accordion button span { font: 400 16px/24px var(--font-body); }
.festival-accordion button i { position: relative; width: 12px; height: 12px; }
.festival-accordion button i::before,.festival-accordion button i::after { position: absolute; top: 5px; left: 1px; width: 10px; height: 1px; background: #777; content: ""; transition: transform .2s ease; }
.festival-accordion button i::after { transform: rotate(90deg); }
.festival-accordion article.is-open button i::after { transform: rotate(0); }
.festival-answer { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .35s ease; }
.festival-answer > p { overflow: hidden; color: #828282; font: 400 16px/24px var(--font-body); }
.festival-accordion article.is-open .festival-answer { grid-template-rows: 1fr; }
.festival-accordion article.is-open .festival-answer p { padding: 2px 0 18px; }

.festival-finale { position: relative; min-height: 920px; overflow: hidden; background: #0e0f10; }
.festival-finale::after { position: absolute; inset: 0; background: radial-gradient(ellipse at 50% 94%,rgba(159,135,84,.12),transparent 25%), linear-gradient(180deg,transparent 50%,rgba(14,15,16,.94) 80%); content: ""; pointer-events: none; }
.festival-finale > figure { position: absolute; inset: 0; }
.festival-finale video { height: 100%; object-fit: cover; }
.festival-finale > div { position: absolute; z-index: 2; right: 0; bottom: 68px; left: 0; text-align: center; }
.festival-finale h2 { background: var(--gold-prize); background-position: 1.52506% 50%; background-size: 180% 100%; background-clip: text; color: transparent; font: 700 56px/64px var(--font-display); letter-spacing: -2.24px; -webkit-background-clip: text; }
.festival-finale > div > strong { display: block; margin-top: 8px; background: linear-gradient(69deg,rgba(0,0,0,0) 24.153%,rgba(0,0,0,.27) 45.226%,rgba(0,0,0,.12) 77.836%),linear-gradient(90deg,#fff,#fff); background-clip: text; color: transparent; font: 700 56px/64px var(--font-display); letter-spacing: -2.24px; text-transform: uppercase; -webkit-background-clip: text; }
.festival-finale > div > p { margin-top: 9px; color: #777; font-size: 11px; }
.festival-finale nav { display: flex; justify-content: center; gap: 10px; margin-top: 28px; }
.festival-footer { min-height: 86px; display: flex; align-items: center; justify-content: space-between; padding: 0 28px; border-top: 1px solid var(--line); background: #0d0e0f; color: #777; font-size: 9px; }
.festival-footer nav { display: flex; gap: 18px; }.festival-footer nav a:hover { color: #fff; }

[data-reveal] { opacity: 0; transform: translateY(24px); transition: opacity .7s ease, transform .7s cubic-bezier(.2,.7,.2,1); }
[data-reveal].is-visible { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } [data-reveal] { opacity: 1; transform: none; transition: none; } }

@media (max-width: 900px) {
  :root { --wide: calc(100vw - 32px); }
  .festival-header { grid-template-columns: 1fr auto; height: 54px; }
  .festival-primary-nav,.festival-portfolio-link { display: none; }
  .festival-header-actions { grid-column: 2; }
  .festival-header-actions .festival-button { min-height: 36px; padding: 0 13px; font-size: 10px; }
  .festival-menu-toggle { display: block; }
  .festival-primary-nav.is-open { position: fixed; z-index: 120; top: 54px; right: 0; left: 0; display: grid; gap: 0; padding: 12px 18px; border-bottom: 1px solid var(--line); background: #111214; }
  .festival-primary-nav.is-open a { padding: 13px 0; border-bottom: 1px solid var(--line); }
  .festival-index { top: 54px; height: 50px; overflow-x: auto; padding: 0 8px; scrollbar-width: none; }
  .festival-index::-webkit-scrollbar { display: none; }.festival-index > span { display: none; }.festival-index > div { position: static; gap: 23px; transform: none; }
  #competition-main { padding-top: 104px; }
  .festival-hero { height: 620px; }
  .festival-announcement { display: none; }
  .festival-hero-media { top: 0; height: 420px; }
  .festival-hero-media video { object-fit: cover; }
  .festival-hero-copy { bottom: 30px; padding: 0 15px; }
  .festival-hero-copy > p { font-size: 18px; }
  .festival-hero-copy h1 { gap: 8px; margin-top: 11px; font-size: 36px; line-height: 36px; letter-spacing: -1.44px; }
  .festival-hero-copy h1 span { max-width: 275px; }.festival-hero-copy h1 i { width: 16px; height: 46px; }
  .festival-hero-pitch { flex-direction: column; gap: 15px; }.festival-hero-pitch p { align-items: center; }
  .festival-timeline { width: calc(100vw - 32px); grid-auto-columns: 180px; grid-template-columns: none; grid-auto-flow: column; overflow-x: auto; margin-top: -2px; scrollbar-width: none; }
  .festival-timeline::-webkit-scrollbar { display: none; }
  .festival-award-chapter { width: calc(100vw - 32px); margin-top: 64px; }
  .festival-statement { padding: 54px 26px 20px; border: 1px solid rgba(205,177,122,.18); border-bottom: 0; border-radius: 16px 16px 0 0; background: radial-gradient(circle at 50% 0,rgba(205,177,122,.32),#111 55%); }
  .festival-statement h2 { font-size: 32px; line-height: 36px; letter-spacing: -1.28px; }
  .festival-prize { min-height: 990px; padding: 45px 24px; border-top: 0; border-radius: 0 0 16px 16px; background: linear-gradient(#111,#0e0e0e); }
  .festival-prize > header { gap: 8px; }.festival-prize > header img { width: 29px; }.festival-prize > header strong { font-size: 40px; line-height: 48px; letter-spacing: -1.6px; }
  .festival-prize-grid { display: flex; flex-direction: column; margin-top: 52px; }
  .festival-prize-grid article { min-height: 178px; margin: 0 !important; border-right: 0; border-bottom: 1px solid var(--line); }
  .festival-prize-grid strong { font-size: 36px; line-height: 40px; letter-spacing: -1.44px; }
  .festival-public { min-height: auto; margin-top: 70px; padding: 16px; border-radius: 18px; }
  .festival-public-top { grid-template-columns: 1fr; padding-bottom: 28px; }
  .festival-public-copy h2 { font-size: 32px; line-height: 32px; letter-spacing: -.8px; }.festival-public-copy > div { font-size: 14px; line-height: 22px; }
  .festival-public-collab { margin-top: 24px; }
  .festival-public-grid { grid-template-columns: repeat(2,1fr); gap: 18px 10px; }
  .festival-jury { margin-top: 70px; padding: 70px 0; }
  .festival-section-head h2 { font-size: 32px; line-height: 36px; letter-spacing: -1.28px; }.festival-section-head .festival-button { position: static; margin-top: 28px; }
  .festival-jury-list { gap: 18px; }.festival-judge { min-height: 650px; }.festival-judge::after { background: linear-gradient(180deg,transparent 32%,rgba(0,0,0,.95) 60%); }
  .festival-judge figure { right: 0; width: 100%; height: 390px; }.festival-judge figure img { -webkit-mask-image: linear-gradient(#000 72%,transparent); mask-image: linear-gradient(#000 72%,transparent); }
  .festival-judge-copy { width: auto; margin: 0; padding: 400px 24px 30px; }.festival-judge-copy h3 { font-size: 30px; line-height: 36px; letter-spacing: -1.2px; }.festival-judge-copy p { margin-top: 20px; font-size: 14px; line-height: 20px; }.festival-judge-copy dl { flex-wrap: wrap; margin-top: 20px; }
  .festival-projects { padding: 80px 0; }.festival-project-stage { margin-top: 45px; }.festival-project-slide.is-active { grid-template-columns: 1fr; }.festival-project-title h3 { font-size: 32px; line-height: 36px; letter-spacing: -1.28px; }.festival-project-aside { min-height: 320px; }.festival-project-link { min-height: 52px; }
  .festival-entry { padding: 80px 0; }.festival-entry-layout { grid-template-columns: 1fr; gap: 55px; }.festival-entry-head { position: static; min-height: 0; }.festival-entry-head h2 { font-size: 36px; line-height: 40px; letter-spacing: -1.44px; }.festival-step-list { margin-left: 28px; gap: 50px; }.festival-step { min-height: 0; }.festival-step-copy p { font-size: 14px; line-height: 22px; }.festival-step figure { padding: 14px; }.festival-step-list::before { left: -20px; }.festival-step-number { left: -40px; width: 36px; height: 36px; }
  .festival-learn { padding: 80px 0; }.festival-learn-grid { grid-template-columns: 1fr; gap: 34px; margin-top: 45px; }.festival-tutorial video { display: none; }
  .festival-details { padding: 80px 0; }.festival-details-layout { grid-template-columns: 1fr; }.festival-details-grid { grid-template-columns: 1fr; }.festival-details-grid > div { min-height: 170px; }.festival-world { min-height: 358px; grid-row: 1; }.festival-world::after { box-shadow: inset 0 0 38px 18px #030404; }
  .festival-faq { padding: 80px 0; }.festival-faq header h2 { font-size: 32px; }.festival-accordion button { min-height: 50px; }.festival-accordion button span { max-width: calc(100% - 34px); }
  .festival-finale { min-height: 760px; }.festival-finale video { object-fit: cover; }.festival-finale > div { bottom: 48px; padding: 0 16px; }.festival-finale h2,.festival-finale > div > strong { font-size: 40px; line-height: 48px; letter-spacing: -1.6px; }.festival-finale nav { flex-direction: column; align-items: center; }
  .festival-footer { flex-direction: column; gap: 20px; padding: 28px 16px; text-align: center; }
}

@media (max-width: 430px) {
  .festival-brand > span:last-child small { display: none; }
  .festival-brand-mark { width: 30px; height: 30px; }
  .festival-header-actions .festival-button { font-size: 9px; }
  .festival-hero-copy h1 { font-size: 36px; }
  .festival-prize > header strong { font-size: 40px; }
  .festival-public-collab { height: 190px; }.festival-public-collab figure { top: 54px; }.festival-public-collab figure:nth-child(2) { top: 43px; }
  .festival-project-title { padding: 50px 18px 18px; }.festival-project-cast span { width: 34px; height: 34px; }
}
