/* A continuous 35mm contact sheet between the funding and participation sections. */
.cast-corridor{padding:44px 0 30px;background:#14100e;overflow:clip;border-top:1px solid #332a1c;border-bottom:1px solid #332a1c;scroll-margin-top:90px}
.cast-heading,.cast-bottom{max-width:1296px;margin:auto;padding:0 36px;display:flex;justify-content:space-between;align-items:center;gap:24px}
.cast-heading{margin-bottom:22px}.cast-heading .section-kicker{font-size:10px;margin:0 0 9px;letter-spacing:.21em}
.cast-heading h2{font-size:28px;line-height:1.3;margin:0;color:#eddfc0;font-weight:600;letter-spacing:.06em}
.cast-heading p.cast-note{font-size:12px;color:#b4a48d;margin:10px 0 0;line-height:1.8}
.cast-controls{display:flex;gap:8px;flex-shrink:0}
.cast-controls button{width:44px;height:44px;display:grid;place-items:center;background:transparent;border:1px solid #75603d;color:#e4b765;font-size:22px;cursor:pointer;transition:background .18s,border-color .18s}
.cast-controls button:hover:not(:disabled){background:#372418;border-color:#e4b765}
.cast-controls button:disabled{opacity:.28;cursor:default}
.cast-controls button:focus-visible,.cast-track:focus-visible{outline:2px solid #e4b765;outline-offset:4px}
.cast-film{position:relative;background:#080807;border-top:1px solid #59482c;border-bottom:1px solid #59482c;padding:31px 0}
.cast-film:before,.cast-film:after{content:"";position:absolute;left:0;right:0;height:12px;pointer-events:none;background:repeating-linear-gradient(90deg,transparent 0 12px,#a18a60 12px 27px,transparent 27px 42px);opacity:.55}
.cast-film:before{top:10px}.cast-film:after{bottom:10px}
.cast-track{display:flex;gap:9px;padding:0 max(24px,calc((100vw - 1296px)/2 + 36px));overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scrollbar-width:none;scroll-snap-type:x proximity;cursor:grab;user-select:none;-webkit-user-select:none;touch-action:pan-x pan-y}
.cast-track::-webkit-scrollbar{display:none}.cast-track.is-dragging{cursor:grabbing;scroll-snap-type:none}
.cast-frame{position:relative;flex:0 0 210px;min-width:0;margin:0;scroll-snap-align:center;background:#201b17;border-left:1px solid #443723;border-right:1px solid #443723}
.cast-portrait{--portrait-height:262px;position:relative;height:var(--portrait-height);overflow:hidden;background:#26221e}
.cast-crop{position:absolute;top:0;left:50%;transform:translateX(-50%);width:max(100%,calc(var(--portrait-height) * var(--crop-ratio)));aspect-ratio:var(--crop-ratio)}
.cast-crop img{position:absolute;max-width:none}
.cast-portrait img{display:block;width:100%;height:100%;object-fit:cover;object-position:center 24%;pointer-events:none;filter:saturate(.64) sepia(.12);transition:filter .25s,transform .4s}
.cast-frame:hover img{filter:saturate(.95) sepia(0)}
.cast-portrait:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 65%,rgba(8,8,7,.55));pointer-events:none}
.cast-frame figcaption{padding:13px 15px 14px;background:#100e0b;display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:53px}
.cast-name{font-size:17px;font-weight:500;color:#efe1c4;letter-spacing:.08em;white-space:nowrap}
.cast-role{display:block;margin-top:5px;font-size:10px;line-height:1.6;color:#bcae97;letter-spacing:.04em}
.cast-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;background:linear-gradient(135deg,#241c13,#100f0c);gap:22px}
.cast-slate{width:74px;height:58px;border:1px solid #766039;position:relative;display:grid;place-items:center;color:#b59457;font:16px ui-monospace,monospace;letter-spacing:.1em}
.cast-slate:before{content:"";height:12px;position:absolute;top:-14px;left:-1px;right:-1px;border:1px solid #766039;background:repeating-linear-gradient(125deg,#766039 0 9px,transparent 9px 19px);transform:rotate(-10deg);transform-origin:left bottom}
.cast-placeholder p{font-size:11px;color:#a48c63;letter-spacing:.1em;margin:0}
.cast-frame-number{font:10px/1.4 ui-monospace,monospace;color:#c89c52;letter-spacing:.07em}
.cast-bottom{padding-top:17px;font-size:11px;color:#a8977c;line-height:1.8}
.cast-bottom p{margin:0}.cast-progress{width:180px;height:2px;background:#403321;flex-shrink:0;overflow:hidden}
.cast-progress span{display:block;width:100%;height:100%;background:#d9ae5c;transform:scaleX(0);transform-origin:left}
@media(max-width:700px){.cast-corridor{padding:30px 0 22px}.cast-heading,.cast-bottom{padding-left:20px;padding-right:20px;gap:14px}.cast-heading{align-items:flex-start}.cast-heading h2{font-size:23px}.cast-heading p.cast-note{font-size:11px;max-width:240px}.cast-heading .section-kicker{font-size:8px;letter-spacing:.13em}.cast-controls{gap:5px;margin-top:20px}.cast-controls button{width:36px;height:40px}.cast-frame{flex-basis:174px}.cast-portrait{height:220px}.cast-track{padding:0 20px;gap:7px}.cast-name{font-size:16px}.cast-frame figcaption{padding:12px;min-height:48px}.cast-progress{width:75px}.cast-bottom{font-size:10px}.cast-film{padding:27px 0}.cast-film:before,.cast-film:after{height:10px}.cast-film:before{top:9px}.cast-film:after{bottom:9px}}
@media(prefers-reduced-motion:reduce){.cast-portrait img,.cast-controls button{transition:none}.cast-frame:hover img{transform:none}}
@media(max-width:700px){.cast-portrait{--portrait-height:220px}}


/* A rotating film reel: the selected portrait faces the viewer, neighbours recede in depth. */
.cast-corridor{position:relative;padding:40px 0 28px;background:radial-gradient(ellipse at 50% 48%,#82242388,transparent 58%),radial-gradient(ellipse at 10% 80%,#8b191a33,transparent 40%),linear-gradient(115deg,#20090a,#420e11 48%,#21090a);border-color:#63212166;isolation:isolate}
.cast-heading{margin-bottom:0;position:relative;z-index:2}.cast-heading p.cast-note{color:#c2a697}.cast-heading h2{font-family:"STKaiti","KaiTi",serif;letter-spacing:.12em;font-size:32px}
.cast-controls button{border-color:#bb855c77;background:#24080744}.cast-controls button:hover{background:#79241b}
.cast-film{padding:0;background:transparent;border:0}
.cast-film:before{display:block;position:absolute;top:auto;bottom:23px;left:14%;right:14%;height:64px;background:radial-gradient(ellipse,#080101bd,transparent 70%);opacity:1;filter:blur(7px)}.cast-film:after{display:none}
.cast-track{display:block;padding:0;scroll-snap-type:none;position:relative;overflow:hidden;touch-action:pan-y;cursor:grab}
.cast-reel{position:relative;width:100%;height:505px;perspective:1100px;perspective-origin:50% 48%;transform-style:preserve-3d}
.cast-frame{position:absolute;left:50%;top:50%;width:264px;margin:0;padding:23px 10px 20px;flex:none;border:1px solid #9d704744;background:linear-gradient(120deg,#18110d,#050404 60%,#24160f);transform-origin:center;scroll-snap-align:none;will-change:transform;box-shadow:0 20px 26px #0008;backface-visibility:hidden;cursor:pointer}
.cast-frame:before,.cast-frame:after{content:"";position:absolute;left:8px;right:8px;height:9px;background:repeating-linear-gradient(90deg,#ac775440 0 10px,transparent 10px 21px);pointer-events:none}
.cast-frame:before{top:7px}.cast-frame:after{bottom:6px}
.cast-frame.is-current{border-color:#ba895666;box-shadow:0 22px 40px #080000aa,0 0 35px #dd8b3320;cursor:grab}
.cast-frame.is-current:before,.cast-frame.is-current:after{background:repeating-linear-gradient(90deg,#bc91647a 0 10px,transparent 10px 21px)}
.cast-frame figcaption{background:transparent;min-height:54px;padding:10px 5px 2px;align-items:center}
.cast-name{color:#f0d4ac;letter-spacing:.14em;font-size:20px;text-shadow:0 2px 3px #000}
.cast-frame-number{font-size:9px;color:#9f784e;line-height:1.3}
.cast-portrait{--portrait-height:306px;height:var(--portrait-height);box-shadow:inset 0 0 0 1px #e2b77b22;background:#1b1210}
.cast-portrait img{filter:saturate(.66) sepia(.1)}.cast-frame.is-current img{filter:saturate(.92)}
.cast-portrait:after{box-shadow:inset 0 0 24px #17070044;background:linear-gradient(180deg,#09030044,transparent 30%,transparent 78%,#08030070)}
.cast-role{position:absolute;top:10px;left:9px;z-index:2;max-width:calc(100% - 18px);padding:4px 7px;margin:0;background:#150906dc;border-left:2px solid #c8a06b;color:#f3d29e;font-size:11px;line-height:1.55;letter-spacing:0;box-shadow:0 2px 6px #0004}
.cast-bottom{padding-top:0;margin-top:-3px;position:relative;color:#c3a394;flex-wrap:wrap}.cast-progress{background:#a4694d44}.cast-progress span{background:#dfa866}.cast-current{order:1;width:100%;text-align:center;color:#edc194;font-size:12px;letter-spacing:.12em;margin-top:-17px;pointer-events:none}
.cast-track.is-dragging,.cast-track.is-dragging .cast-frame{cursor:grabbing}
@media(max-width:700px){.cast-corridor{padding:30px 0 25px}.cast-heading h2{font-size:27px}.cast-reel{height:410px;perspective:800px}.cast-frame{width:204px;padding:21px 7px 18px}.cast-portrait{--portrait-height:240px}.cast-frame figcaption{min-height:46px;padding:8px 3px 2px}.cast-name{font-size:17px}.cast-role{top:8px;left:7px;font-size:9px;max-width:calc(100% - 14px);padding:3px 5px}.cast-bottom{margin-top:0;gap:12px}.cast-current{margin-top:0}.cast-film:before{bottom:27px}.cast-frame:before,.cast-frame:after{left:7px;right:7px;height:8px}}
@media(prefers-reduced-motion:reduce){.cast-frame{will-change:auto}}

/* Generated film studio backdrop; keep the faces brighter than their environment. */
.cast-corridor{background-color:#100c08;background-image:linear-gradient(180deg,#0c080874,transparent 27%,#08070620 68%,#0a0707b3),url("assets/cast-studio.png");background-size:cover;background-position:center}
.cast-heading{padding-top:4px}.cast-heading p.cast-note{text-shadow:0 1px 5px #000;color:#d6c6ae}.cast-bottom{color:#cbb89e;text-shadow:0 1px 4px #000}
@media(max-width:700px){.cast-corridor{background-position:35% center}}

/* Poster-sized frames, expressive roll and a connected film edge. */
.cast-reel{height:650px;perspective:1250px;perspective-origin:50% 50%;transform-style:flat;isolation:isolate}
.cast-frame{width:340px;padding:25px 10px 21px;border-color:#ac793b66}
.cast-portrait{height:auto;aspect-ratio:var(--poster-ratio,.78)}
.cast-crop{width:100%;height:100%;left:0;top:0;transform:none;aspect-ratio:auto}
.cast-frame figcaption{padding:7px 9px 3px;min-height:62px}
.cast-name{font-family:"STXingkai","STKaiti","KaiTi",serif;font-size:34px;font-weight:900;color:#f4cd41;letter-spacing:.12em;text-shadow:2px 2px 0 #561409}
.cast-role{font-size:11px;transform:skewX(-7deg);border-left:3px solid #e1b452;background:linear-gradient(100deg,#99170dec,#310a08e8);padding:5px 9px;box-shadow:3px 3px 0 #d5a03b55}
.cast-connecting-film{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;filter:drop-shadow(0 24px 18px #0009);z-index:0}
.cast-frame.is-current{box-shadow:0 25px 48px #000b,0 0 45px #e0903636}
.cast-frame.is-current .cast-portrait:after{background:linear-gradient(115deg,transparent 15%,#f6c97910 45%,transparent 65%);animation:cast-shine 4.8s ease-in-out infinite}
.cast-portrait.role-conflict:before{content:"";position:absolute;z-index:1;left:28.4%;width:51.4%;top:72.6%;height:10.8%;background:#0d0808}
.cast-frame:hover .cast-name{color:#ffe889}
@keyframes cast-shine{0%,100%{opacity:.2}50%{opacity:1}}
@media(max-width:700px){.cast-reel{height:480px;perspective:900px}.cast-frame{width:232px;padding:21px 7px 18px}.cast-name{font-size:27px}.cast-frame figcaption{min-height:48px;padding:5px 4px 0}.cast-role{font-size:9px;padding:4px 6px}.cast-frame-number{font-size:8px}.cast-current{margin-top:0}}
@media(prefers-reduced-motion:reduce){.cast-frame.is-current .cast-portrait:after{animation:none}}

/* Selected concept: a textured, continuously curved S-ribbon. */
.cast-surface{position:absolute;inset:0;width:100%;height:100%;display:block;opacity:0;pointer-events:none}
.cast-track.has-webgl{height:650px}
.cast-track.has-webgl .cast-surface{opacity:1}
.cast-track.has-webgl .cast-reel{display:none}
.cast-track.has-webgl:focus-visible{outline:none}
.cast-film:has(.cast-track.has-webgl:focus-visible)+.cast-bottom .cast-current{text-decoration:underline;text-underline-offset:6px}
@media(max-width:700px){.cast-track.has-webgl{height:360px}}
