:root{color-scheme:dark;--control-ink:oklch(89% .002 260);--control-bg:oklch(15% .002 260 / .95);--control-hover:oklch(25% .003 260);--ink:oklch(90% .025 85);--muted:oklch(72% .025 85);--panel:oklch(17% .012 145);--line:oklch(70% .02 85 / .24);--body:'Libre Franklin',sans-serif;--display:'Bodoni Moda','Baskerville',serif;--ease:cubic-bezier(.22,1,.36,1)}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}body{font:12px var(--body);background:oklch(12% .01 145);color:var(--ink)}button{-webkit-appearance:none;appearance:none;font:inherit;color:inherit;border:0;background:none;cursor:pointer;-webkit-tap-highlight-color:transparent}button:focus-visible{outline:1px solid var(--ink);outline-offset:5px}button:disabled{cursor:default}[hidden]{display:none!important}
.auditorium{position:relative;width:100%;height:100svh;isolation:isolate;overflow:clip}.room-frame{position:absolute;inset:0;background:linear-gradient(#10141080,#10141080),url('assets/cinema.png') center/cover}.room-scene{position:absolute;width:max(100vw,min(150svh,230vw));height:auto;aspect-ratio:3/2;left:50%;top:50%;transform:translate(-50%,-50%);isolation:isolate}.room-image{width:100%;height:auto;display:block;filter:brightness(.8) saturate(.86);transition:filter 1.8s ease}.room-shade{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 45%,transparent 20%,#080c0a48 100%);pointer-events:none}.room-frame::after{content:"";position:absolute;inset:0;background:linear-gradient(transparent 82%,#090d0b88);pointer-events:none}.lights-down .room-image{filter:brightness(.23) saturate(.72)}
.projection{position:absolute;left:29.36%;top:22.94%;width:40.77%;height:42.42%;overflow:clip;isolation:isolate;background:oklch(28% .026 145);color:oklch(90% .028 85);text-align:center;container-type:inline-size;box-shadow:none}.projection::before{content:"";position:absolute;inset:0;z-index:0;background:radial-gradient(ellipse,oklch(42% .035 145),oklch(26% .022 145))}.screen-border{position:absolute;inset:7%;border:1px solid #e1dfb52a;z-index:1;pointer-events:none}.screen-content,.intermission{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:8%;z-index:12}.screen-content h1,.projection h2{font:400 10cqw/1.06 var(--display);letter-spacing:-.04em;margin:0 0 9%}.projection h1 em,.projection h2 em{font-weight:400}.screen-content{inset:auto;left:29.36%;top:22.94%;width:40.77%;height:42.42%;padding:3.2%;container-type:inline-size;text-shadow:0 2px 10px #16060399;background:#13060421}.screen-content h1{font-size:8.8cqw}.projector-button{color:var(--control-ink);background:oklch(15% .002 260 / .7);border:1px solid oklch(75% .002 260 / .5);padding:3% 7%;font-size:3cqw;min-height:36px;transition:background .2s,color .2s}.projector-button span{margin-right:5px}.projector-button:hover{background:var(--control-hover);color:var(--control-ink)}.intermission{z-index:2}.screen-link{font-size:2.6cqw;min-height:32px;padding:3%;border-bottom:1px solid #e1dfb544}.screen-grain{position:absolute;inset:-50%;z-index:3;pointer-events:none;opacity:.12;background-image:url('data:image/svg+xml,%3Csvg viewBox="0 0 180 180" xmlns="http://www.w3.org/2000/svg"%3E%3Cfilter id="n"%3E%3CfeTurbulence type="fractalNoise" baseFrequency=".85" numOctaves="3" stitchTiles="stitch"/%3E%3C/filter%3E%3Cpath fill="%23fff" filter="url(%23n)" opacity=".7" d="M0 0h180v180H0z"/%3E%3C/svg%3E')}.projecting .screen-grain{animation:grain .55s steps(2) infinite}.countdown{position:absolute;inset:0;display:grid;place-items:center;z-index:4;background:oklch(76% .018 95);color:oklch(25% .016 130);font:400 40cqw/1 var(--display)}.countdown::before{content:"";position:absolute;width:55%;aspect-ratio:1;border:1px solid currentColor;border-radius:50%;box-shadow:0 0 0 5px #60695730}.countdown::after{content:"";position:absolute;inset:0;background:linear-gradient(transparent calc(50% - .5px),#49524388 50%,transparent calc(50% + .5px)),linear-gradient(90deg,transparent calc(50% - .5px),#49524388 50%,transparent calc(50% + .5px))}.countdown span{z-index:1}
/* Only the gap between the photographed curtains receives moving fabric.
   CSS windows repeat a native-scale strip of the original fabric, clear of the chairs. */
.stage-curtains{position:absolute;left:28.72%;top:21.2%;width:41.74%;height:54.6%;overflow:hidden;z-index:10;pointer-events:none}
.curtain{display:flex;position:absolute;top:0;bottom:0;width:50.2%;overflow:hidden;background:#560b14;box-shadow:inset -3px 0 5px #17030155;filter:brightness(.8) saturate(.86);transform:translateX(0);transition:transform 2.6s var(--ease),filter 1.8s ease;will-change:transform;pointer-events:none}
 .curtain-fabric{flex:0 0 35.5%;height:100%;background-image:url('assets/cinema.png');background-size:1344% 183.15%;background-position:22.51% 46.7%;background-repeat:no-repeat}
.curtain-left{left:0;transform-origin:left top}.curtain-right{right:0;transform-origin:right top}.curtain-right .curtain-fabric{transform:scaleX(-1)}
.curtains-open .curtain-left{transform:translateX(-101%)}.curtains-open .curtain-right{transform:translateX(101%)}.lights-down .curtain{filter:brightness(.23) saturate(.72)}

/* Warm candle pools remain visible when the house lights are lowered. */
.lamp-halo{position:absolute;pointer-events:none;z-index:1;mix-blend-mode:screen;background:radial-gradient(ellipse,oklch(88% .13 63 / .62) 0%,oklch(74% .17 45 / .4) 16%,oklch(59% .16 32 / .2) 34%,transparent 70%);--lamp-rest-opacity:.36;opacity:var(--lamp-rest-opacity);transition:opacity 1.8s ease}
.lamp-halo::after{content:"";position:absolute;inset:29% 27% 39%;background:radial-gradient(ellipse,#ffe2b877 0%,#ff7b4933 42%,transparent 75%);filter:blur(3px)}
.lamp-left{left:-.2%;top:17.4%;width:13%;height:25%}.lamp-right{right:.2%;top:17.4%;width:13%;height:25%}.lamp-ceiling{left:43.9%;top:-7%;width:12%;height:19%}
.lights-down .lamp-halo{--lamp-rest-opacity:.9}
.lamp-halo.is-faulty{animation:lamp-fault var(--fault-duration,2200ms) linear both;transition:none}

.room-controls{position:absolute;z-index:20;bottom:max(20px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:16px;padding:7px 18px;background:var(--control-bg);border:1px solid oklch(65% .002 260 / .25);border-radius:3px;white-space:nowrap;color:var(--control-ink)}.room-controls button{min-height:36px;display:flex;align-items:center;justify-content:center;gap:7px;font-size:10px;padding:0 3px;opacity:.8;transition:opacity .2s}.room-controls button:hover,.room-controls button:focus-visible{opacity:1;background:var(--control-hover)}.room-controls svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round}.control-divider{height:16px;width:1px;background:#c8baa92b}.film-player{position:absolute;inset:0;z-index:5;display:grid;place-items:center;background:#101310}.film-player iframe{width:100%;height:100%;border:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

@media(max-aspect-ratio:1/1){.room-scene{top:46%}.room-frame{background-position:center;}.room-frame::before{content:"";position:absolute;inset:0;background:#0a100dc9;backdrop-filter:blur(18px)}}
@media(max-width:600px){.room-controls{gap:12px;padding:5px 12px;bottom:max(16px,env(safe-area-inset-bottom))}.room-controls button{min-height:36px;font-size:10px}.room-controls button svg{width:17px;height:17px}.room-controls button:not(#programme-toggle) span{display:none}.projection h1{font-size:8.8cqw}.projector-button{font-size:3.8cqw;min-height:38px}.screen-link{font-size:3.4cqw}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}.curtain{will-change:auto}}
@keyframes grain{0%{transform:translate(0,0)}25%{transform:translate(1%,-1%)}50%{transform:translate(-1%,1%)}75%{transform:translate(1%,1%)}}
@keyframes lamp-fault{0%,6%,19%,24%,82%,88%,100%{opacity:var(--lamp-rest-opacity)}9%,16%{opacity:.025}27%,64%{opacity:.015}68%,78%{opacity:.18}91%,94%{opacity:.35}}

/* A printed handbill, inspired by Taste Archive TA-556C4B69. */
.programme{--paper:oklch(91% .024 88);--print:oklch(24% .018 65);position:absolute;z-index:25;right:clamp(18px,5vw,80px);bottom:88px;width:min(430px,calc(100vw - 32px));max-height:calc(100svh - 118px);overflow-y:auto;overscroll-behavior:contain;padding:48px 48px 38px;background:radial-gradient(ellipse at 10% 5%,#9f78360d,transparent 45%),radial-gradient(ellipse at 95% 95%,#9f78360c,transparent 40%),var(--paper);color:var(--print);font-family:'IM Fell English',serif;box-shadow:0 16px 55px #03080680,2px 3px 0 #c2b59f;transform:rotate(-.8deg);transform-origin:80% 100%;animation:programme-unfold .42s var(--ease) both}
.programme-border{position:absolute;inset:10px;background:url('assets/programme-border.svg') center/100% 100% no-repeat;pointer-events:none;opacity:.95}
.programme-close{position:absolute;right:30px;top:30px;z-index:2;font:24px/1 'IM Fell English',serif;width:32px;height:32px;display:grid;place-items:center;background:var(--paper)}
.programme button:focus-visible{outline:1px solid var(--print);outline-offset:5px}
.playbill-heading{text-align:center;padding:0 0 20px;border-bottom:2px solid var(--print)}
.playbill-house{font:400 31px/1.18 'Rye',serif;text-transform:uppercase;letter-spacing:-.025em;margin:12px 0 8px;transform:scaleY(1.08)}
.playbill-house span{font-size:22px;letter-spacing:.015em}
.printer-ornament{font:38px/1 'IM Fell English',serif;margin:12px 0 4px}
.programme h2{font:400 29px/1.1 'Rye',serif;margin:6px 0 0}
#film-list{position:relative;padding:22px 0 20px}
.film-choice{display:grid;grid-template-columns:28px 1fr;width:100%;text-align:left;padding:4px 0 0;column-gap:8px;row-gap:9px;color:var(--print)}
.film-number{font:25px/1.4 'IM Fell English',serif;grid-row:1/4}
.film-choice strong{font:400 31px/1.2 'Rye',serif;letter-spacing:-.035em;grid-column:2}
.film-subtitle{font:italic 20px/1.4 'IM Fell English',serif;grid-column:2}
.film-detail{font:16px/1.6 'IM Fell English',serif;grid-column:2}
.film-cta{grid-column:1/-1;text-align:center;justify-self:center;margin-top:18px;padding:10px 21px;border:1px solid var(--print);font:16px/1.2 'IM Fell English',serif;transition:background .18s,color .18s,transform .18s}
.film-choice:hover .film-cta{background:var(--print);color:var(--paper);transform:translateY(-1px)}
.playbill-footer{position:relative;border-top:2px solid var(--print);padding-top:14px;display:flex;justify-content:space-between;gap:16px;font:12px/1.2 'Rye',serif;text-transform:uppercase;letter-spacing:.06em}

@media(max-width:600px){.programme{right:16px;bottom:84px;padding:42px 38px 34px;transform:rotate(-.4deg);max-height:calc(100svh - 110px)}.playbill-house{font-size:27px}.playbill-house span{font-size:18px}.programme h2{font-size:25px}.film-choice strong{font-size:25px}.film-subtitle{font-size:18px}.film-detail{font-size:14px}.programme-close{right:27px;top:26px}}
@keyframes programme-unfold{from{opacity:0;transform:translateY(22px) rotate(3deg) scale(.96)}to{opacity:1;transform:translateY(0) rotate(-.8deg) scale(1)}}

.sound-slash{display:none}.is-muted .sound-slash{display:block}.is-muted{opacity:.45!important}
.join-screening{position:absolute;z-index:7;left:50%;bottom:5%;transform:translateX(-50%);padding:9px 14px;background:var(--control-bg);color:var(--control-ink);border:1px solid oklch(75% .002 260 / .4);font-size:clamp(10px,2.8cqw,16px);white-space:nowrap}
.sound-credits{position:relative;display:block;width:fit-content;margin:12px auto 0;font:11px/1.4 'IM Fell English',serif;color:inherit;text-underline-offset:3px;opacity:.65}.sound-credits:hover{opacity:1}

/* Each visitor enters through their own closed curtains. */
.entrance-programme{position:absolute;z-index:20;right:clamp(18px,3vw,48px);top:50%;transform:translateY(-50%);writing-mode:vertical-rl;padding:18px 12px;border:1px solid oklch(65% .002 260 / .3);background:var(--control-bg);color:var(--control-ink);font-size:11px;letter-spacing:.06em;transition:background .2s}
.entrance-programme:hover{background:var(--control-hover)}

@media(max-width:600px){.entrance-programme{right:16px;top:auto;bottom:max(24px,env(safe-area-inset-bottom));transform:none;writing-mode:horizontal-tb;padding:13px 18px}}

/* A typewritten notice on the same paper stock as the programme. */
.entrance-papers{position:absolute;z-index:20;right:clamp(18px,3vw,48px);top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:12px}
.entrance-papers .entrance-programme{position:static;transform:none;writing-mode:vertical-rl}
.house-notice{width:min(420px,calc(100vw - 32px));padding:48px 42px 36px;font-family:'Special Elite','Courier New',monospace;transform:rotate(.8deg)}
.house-notice .programme-border{opacity:.42}
.notice-kicker{font-size:10px;line-height:1.6;letter-spacing:.1em;text-transform:uppercase;margin:6px 24px 22px 0}
.house-notice h2{font:400 27px/1.3 'Special Elite','Courier New',monospace;letter-spacing:-.045em;margin:0 0 26px}
.notice-rules{padding-left:23px;margin:0;font-size:14px;line-height:1.65;display:flex;flex-direction:column;gap:23px}
.notice-rules li{padding-left:7px}
.notice-rules p{margin:0 0 6px;line-height:1.5;text-decoration:underline;text-underline-offset:3px;text-decoration-color:color-mix(in oklch,var(--print),transparent 70%)}
.notice-signoff{font-size:11px;line-height:1.7;margin:28px 0 0;padding-top:16px;border-top:1px solid color-mix(in oklch,var(--print),transparent 65%)}
.notice-signoff span{display:block;text-align:right;margin-top:8px}
@media(max-width:600px){.entrance-papers{top:auto;bottom:max(24px,env(safe-area-inset-bottom));right:16px;transform:none;flex-direction:row;gap:10px}.entrance-papers .entrance-programme{writing-mode:horizontal-tb}.house-notice{padding:40px 32px 30px}.notice-rules{font-size:13px;gap:20px}.house-notice h2{font-size:25px}.room-controls{gap:9px;padding-inline:11px}}

/* The seasonal bill keeps the printed programme's original ornament. */
.has-schedule{padding-top:36px;padding-bottom:30px}
.has-schedule .playbill-house{font-size:26px;margin-top:8px;margin-bottom:4px}
.has-schedule .playbill-house span{font-size:19px}
.has-schedule .printer-ornament{font-size:26px;margin:8px 0 3px}
.has-schedule .playbill-heading{padding-bottom:11px}
.has-schedule h2{font-size:25px}
.programme-dates{font:14px/1.3 'IM Fell English',serif;margin:12px 0 3px}
.programme-timezone{font:12px/1.3 'IM Fell English',serif;margin:0}
.programme-live{font:11px/1.4 'Special Elite','Courier New',monospace;text-align:center;margin:16px 0 0}
.has-schedule #film-list{padding:12px 0 15px}
.has-schedule .film-choice{row-gap:6px}
.has-schedule .film-choice strong{font-size:27px}
.has-schedule .film-subtitle{font-size:17px;line-height:1.3}
.has-schedule .film-detail{font-size:14px;line-height:1.4}
.has-schedule .film-cta{font-size:14px;padding:8px 16px;margin-top:8px}
.daily-sittings{list-style:none;padding:0;margin:0;border-top:1px solid var(--print)}
.daily-sitting{display:grid;grid-template-columns:1fr auto;gap:3px 10px;padding:10px 0;border-bottom:1px solid color-mix(in oklch,var(--print),transparent 70%);position:relative}
.sitting-name{font:400 15px/1.25 'IM Fell English',serif}
.sitting-hours{font:12px/1.5 'IM Fell English',serif}
.sitting-film{font:italic 12px/1.2 'IM Fell English',serif;grid-column:1/-1}
.daily-sitting.is-current .sitting-name::after{content:' · now';font-style:italic}
.programme-next{font:12px/1.4 'IM Fell English',serif;margin:13px 0 6px}
.programme-footnote{font:italic 11px/1.4 'IM Fell English',serif;margin:0 0 15px}
.has-schedule .playbill-footer{font-size:10px;padding-top:11px}
@media(max-width:600px){.has-schedule{padding-top:34px}.has-schedule .playbill-house{font-size:24px}.has-schedule .playbill-house span{font-size:17px}.sitting-name{font-size:14px}.sitting-hours{font-size:11px}}
/* Keep the seasonal text clear of the ornamental paper edges. */
.has-schedule{padding-top:50px}
.has-schedule .playbill-house{font-size:24px}
.has-schedule .playbill-house span{font-size:17px}
.has-schedule .printer-ornament{font-size:18px;margin:4px 0}
.has-schedule .playbill-heading{padding-bottom:8px}
.has-schedule .programme-dates{margin-top:8px}
.has-schedule .programme-live{margin-top:10px}
.has-schedule #film-list{padding:8px 0 11px}
.has-schedule .film-subtitle{display:none}
/* The ornament follows the complete sheet when a short screen needs scrolling. */
.programme.has-schedule{padding:0;scrollbar-width:thin}
.programme-paper{position:relative;padding:50px 48px 42px}
@media(max-width:600px){.programme-paper{padding:42px 38px 42px}}

.programme-navigation{display:flex;align-items:center;justify-content:space-between;gap:8px;border-top:1px solid var(--print);padding:5px 0;font:12px/1.3 'IM Fell English',serif;text-align:center}
.programme-navigation button{font:18px/1 serif;min-width:32px;min-height:32px;background:transparent;color:inherit}
.programme-navigation button:disabled{opacity:.25;cursor:default}
.programme-navigation+.daily-sittings{border-top:0}

/* A shorter handbill, with the current picture on the entrance buttons. */
.has-schedule .programme-paper{padding:49px 46px 40px}
.has-schedule .playbill-house{font-size:17px;line-height:1.2;letter-spacing:-.04em;margin:0 0 10px;transform:none;white-space:nowrap}
.has-schedule h2{font-size:22px;margin:0}
.has-schedule .playbill-heading{padding-bottom:9px;border-bottom-width:1px}
.playbill-meta{display:flex;justify-content:center;align-items:baseline;flex-wrap:wrap;gap:3px 12px;margin-top:8px}
.has-schedule .programme-dates,.has-schedule .programme-timezone{font-size:11px;line-height:1.3;margin:0}
.has-schedule #film-list{padding:12px 0}
.has-schedule .film-choice{grid-template-columns:1fr;gap:5px;text-align:center;padding:0}
.has-schedule .film-choice>*{grid-column:1}
.has-schedule .film-choice strong{font-size:25px;line-height:1.15}
.film-live{font:12px/1.25 'Special Elite','Courier New',monospace;color:#711d2a;letter-spacing:.07em;text-transform:uppercase}
.has-schedule .film-detail{font-size:12px;line-height:1.3}
.has-schedule .film-cta{font-size:13px;padding:6px 14px;margin-top:3px}
.has-schedule .daily-sitting{padding:8px 0}
.has-schedule .programme-navigation{padding:2px 0}
.has-schedule .programme-next{margin:9px 0 5px}
.has-schedule .programme-footnote{margin-bottom:10px}
.has-schedule .playbill-footer{padding-top:8px;border-top-width:1px}
.has-schedule .programme-close{top:19px;right:22px;width:26px;height:26px;font-size:20px;color:var(--print)}
.projector-button{display:grid;justify-items:center;gap:6px;max-width:100%;padding:12px 20px;text-align:center}
.projector-button span{margin:0}
.screen-content h1{margin-bottom:6%}
.entrance-bill{display:flex;align-items:baseline;justify-content:center;gap:.35em;margin:0 0 5%;max-width:100%;white-space:nowrap;font:400 clamp(12px,3.5cqw,18px)/1.2 var(--display)}
.enter-now{flex-shrink:0;font:inherit}
.enter-film{font:inherit;max-width:24ch;min-width:0;overflow:hidden;text-overflow:ellipsis}
.entrance-bill.is-upcoming{font-size:clamp(12px,3.2cqw,16px);margin-bottom:0}
.entrance-bill.is-upcoming .enter-film{max-width:none}
.enter-action{font-size:clamp(11px,3cqw,14px);line-height:1.3;opacity:.8}
.maker-credit{position:absolute;z-index:20;left:max(20px,env(safe-area-inset-left));bottom:max(20px,env(safe-area-inset-bottom));max-width:calc(100% - 40px);margin:0;color:var(--ink);font:400 12px/1.5 var(--display);text-shadow:0 1px 5px #000;opacity:.7}
.maker-credit a{color:inherit;text-decoration:none;white-space:nowrap}
.maker-credit a:hover,.maker-credit a:focus-visible{text-decoration:underline;text-underline-offset:3px}
.maker-credit a:focus-visible{outline:1px solid currentColor;outline-offset:5px}
.auditorium:not(.at-entrance) .maker-credit{left:50%;transform:translateX(-50%);bottom:max(12px,env(safe-area-inset-bottom));width:max-content;text-align:center}
.auditorium:not(.at-entrance) .room-controls{bottom:calc(max(20px,env(safe-area-inset-bottom)) + 28px)}
.auditorium:not(.at-entrance) .programme{bottom:116px;max-height:calc(100svh - 146px)}
@media(max-width:600px){.maker-credit{left:max(16px,env(safe-area-inset-left));bottom:max(10px,env(safe-area-inset-bottom));max-width:calc(100% - 32px);font-size:10px}.at-entrance .entrance-papers{bottom:56px}.auditorium:not(.at-entrance) .maker-credit{bottom:max(10px,env(safe-area-inset-bottom))}.auditorium:not(.at-entrance) .room-controls{bottom:calc(max(16px,env(safe-area-inset-bottom)) + 24px)}.auditorium:not(.at-entrance) .programme{bottom:108px;max-height:calc(100svh - 134px)}}
@media(max-width:600px){.has-schedule .programme-paper{padding:45px 40px 38px}.has-schedule .playbill-house{font-size:clamp(10px,3.4vw,14px);letter-spacing:-.045em}.has-schedule .film-choice strong{font-size:23px}.has-schedule .programme-close{right:20px;top:16px}.projector-button{padding:10px 14px;gap:5px}}
