:root{color-scheme:dark;--bg:#09090d;--text:#faf8fb;--muted:#d5ced6;--accent:#8f1838;--ease-out:cubic-bezier(.23,1,.32,1);--ease-in-out:cubic-bezier(.77,0,.175,1);--unit:min(1vw,1.7777778vh);font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","Helvetica Neue",Arial,sans-serif}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:var(--bg);color:var(--text)}body{cursor:none}body.controls-visible{cursor:auto}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible{outline:3px solid white;outline-offset:5px}::selection{background:var(--accent);color:white}
.tv-frame{position:absolute;inset:0;margin:auto;width:min(100vw,177.7777778vh);height:min(100vh,56.25vw);overflow:hidden;isolation:isolate;background:#09090d}
.ambience{position:absolute;inset:0;overflow:hidden;z-index:-1;background:radial-gradient(ellipse at 35% 18%,#1b1520,transparent 68%)}
.light{position:absolute;width:85%;height:125%;background:radial-gradient(ellipse,var(--accent),transparent 65%);opacity:.29;transform:translate3d(0,0,0);animation:ambient-orbit 18s linear infinite;pointer-events:none;will-change:transform}
.light-one{left:-35%;top:-50%}.light-two{right:-45%;bottom:-65%;opacity:.24;animation-duration:23s;animation-delay:-8s;animation-direction:reverse}
@keyframes ambient-orbit{0%,100%{transform:translate3d(-8%,-4%,0) scale(.94)}25%{transform:translate3d(14%,-7%,0) scale(1.04)}50%{transform:translate3d(27%,15%,0) scale(1.1)}75%{transform:translate3d(3%,25%,0) scale(1)}}
.motion-paused .light{animation-play-state:paused}
.stage{position:absolute;inset:5.5% 5% 18.5%;overflow:visible}
.slide{position:absolute;inset:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);grid-template-rows:minmax(0,1fr);gap:calc(var(--unit)*4.5);align-items:center;opacity:0;transition:opacity 500ms var(--ease-out);pointer-events:none;text-transform:uppercase}
.slide.is-current{opacity:1}.slide.is-leaving{opacity:0;transition-duration:240ms}
.slide.event .poster{clip-path:inset(0 100% 0 0);transition:clip-path 780ms var(--ease-out)}
.slide.event.is-current .poster{clip-path:inset(0)}
.slide.event .poster img{transform:scale(1.045);transition:transform 780ms var(--ease-out)}
.slide.event.is-current .poster img{transform:scale(1)}
.slide.event .event-copy>*{opacity:0;transform:translate3d(calc(var(--unit)*1.4),0,0);transition:transform 700ms var(--ease-out),opacity 500ms var(--ease-out)}
.slide.event .event-copy>:nth-child(2){transition-delay:60ms}.slide.event .event-copy>:nth-child(n+3){transition-delay:120ms}
.slide.event.is-current .event-copy>*{opacity:1;transform:translate3d(0,0,0)}
.slide.event.is-leaving .event-copy>*{transform:translate3d(calc(var(--unit)*-.6),0,0);transition-duration:240ms;transition-delay:0ms}
.poster{position:relative;width:100%;height:auto;aspect-ratio:1;max-height:100%;min-height:0;display:flex;align-items:center;justify-content:center;overflow:hidden;border-radius:calc(var(--unit)*.8);background:rgba(255,255,255,.025)}
.poster img,.cover-image{display:block;width:100%;height:100%;object-fit:contain;object-position:center;position:absolute;inset:0}
.poster img{object-fit:cover;object-position:var(--photo-position,50% 35%)}
.poster img[hidden],.cover-image[hidden]{display:none}.poster-fallback{padding:8%;text-align:center;color:var(--muted);font-size:calc(var(--unit)*2);line-height:1.4;max-width:85%}.poster-fallback strong{display:block;margin-bottom:1em;color:var(--text);font-size:1.45em;font-weight:750}
.event-copy{--copy-scale:1;height:100%;min-height:0;min-width:0;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;overflow:visible;gap:calc(var(--unit)*1.5*var(--copy-scale))}
.event-copy>*{flex-shrink:0}
.event-title{margin:0;font-size:calc(var(--unit)*2.2*var(--copy-scale));font-weight:500;letter-spacing:-.02em;line-height:1.14;overflow-wrap:anywhere;text-wrap:balance;width:100%}
.event-artist{margin:0;color:var(--accent);font-weight:800;font-size:calc(var(--unit)*5.3*var(--copy-scale));line-height:1.02;letter-spacing:-.035em;text-wrap:balance;overflow-wrap:anywhere;width:100%}
.has-long-artist .event-artist{font-size:calc(var(--unit)*4.5*var(--copy-scale))}
.event-date{margin:calc(var(--unit)*.4) 0 0;padding-top:calc(var(--unit)*1.6);border-top:1px solid #ffffff2b;width:100%;font-variant-numeric:tabular-nums;line-height:1.2}
.date-group{margin:0}.date-group+.date-group{margin-top:calc(var(--unit)*1.1*var(--copy-scale))}
.date-day,.date-month{display:block;font-size:calc(var(--unit)*3.05*var(--copy-scale));font-weight:650;letter-spacing:-.025em;line-height:1.12}
.date-month{margin-top:.1em}.date-time{display:block;font-size:calc(var(--unit)*2.3*var(--copy-scale));font-weight:350;margin-top:.42em;color:var(--muted)}
.has-replicas .date-day,.has-replicas .date-month{font-size:calc(var(--unit)*2.15*var(--copy-scale))}.has-replicas .date-time{font-size:calc(var(--unit)*1.8*var(--copy-scale))}
.event-location{margin:0;color:var(--muted);font-size:calc(var(--unit)*1.5*var(--copy-scale));font-weight:400;line-height:1.25}
.theatre-band{position:absolute;inset:auto 0 0;height:13%;display:flex;align-items:center;justify-content:space-between;gap:3%;padding:0 5%;background:rgba(9,9,13,.9);border-top:1px solid #ffffff1c}
.theatre-band{text-transform:uppercase;transition:opacity 240ms var(--ease-out)}.is-video .theatre-band{opacity:0;pointer-events:none}
.slide.video-cover{display:block;z-index:2;background:var(--bg)}
.video-cover video,.video-cover .video-poster{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:contain}
.video-cover .video-fallback{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:calc(var(--unit)*4);font-weight:800;text-align:center;padding:8%;margin:0}
.video-cover video[hidden],.video-cover .video-poster[hidden]{display:none}
.slide.instant-motion,.slide.instant-motion *{transition:none!important;animation:none!important}
.theatre-brand{display:flex;align-items:center;gap:calc(var(--unit)*1.2);min-width:0;max-width:58%}.theatre-brand img{display:block;max-width:calc(var(--unit)*13);width:auto;height:calc(var(--unit)*3.3);object-fit:contain}.theatre-brand img[hidden]{display:none}.theatre-brand span{font-size:calc(var(--unit)*2.15);font-weight:750;letter-spacing:-.025em;line-height:1.05;overflow-wrap:anywhere}.theatre-band a{font-size:calc(var(--unit)*2);color:var(--text);text-decoration:none;line-height:1.2;text-align:right;overflow-wrap:anywhere;max-width:40%}
.promo{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:calc(var(--unit)*5)}.promo-copy h1{font-size:calc(var(--unit)*4.7);line-height:1.04;letter-spacing:-.035em;margin:0 0 .55em;font-weight:800;text-wrap:balance}.promo-copy p{font-size:calc(var(--unit)*2.35);line-height:1.35;color:var(--muted);max-width:28ch;margin:.6em 0}.promo-copy .scan-instruction{margin-top:1.4em;font-size:calc(var(--unit)*1.85);color:var(--text);max-width:37ch}.qr-block{display:flex;flex-direction:column;align-items:center;gap:calc(var(--unit)*1.5);min-width:0}.qr{width:calc(var(--unit)*28);height:calc(var(--unit)*28);background:white;padding:calc(var(--unit)*1.1);border-radius:calc(var(--unit)*.7);flex-shrink:0}.qr svg{width:100%;height:100%;display:block;shape-rendering:crispEdges}.qr-address{font-size:calc(var(--unit)*1.35);line-height:1.3;color:var(--muted);overflow-wrap:anywhere;max-width:100%;text-align:center;margin:0}.promo.no-qr{display:flex;max-width:77%;}.promo.no-qr h1{font-size:calc(var(--unit)*5.6)}
.cover{display:block}.cover-image{border-radius:calc(var(--unit)*.8)}.cover .poster-fallback{position:absolute;inset:0;margin:auto;height:max-content;width:75%}.message{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:calc(var(--unit)*1.2)}.message h1{font-size:calc(var(--unit)*4.6);line-height:1.05;letter-spacing:-.035em;margin:0}.message p{font-size:calc(var(--unit)*2.2);max-width:38ch;color:var(--muted);line-height:1.4;margin:0}
.controls{position:fixed;z-index:10;top:max(20px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:8px;max-width:calc(100vw - 28px);padding:8px 10px;background:rgba(20,17,22,.94);border:1px solid #ffffff30;border-radius:999px;box-shadow:0 12px 40px #0007;opacity:0;visibility:hidden;transition:opacity 180ms var(--ease-out),visibility 180ms;pointer-events:none;white-space:nowrap}
.controls-visible .controls{opacity:1;visibility:visible;pointer-events:auto}.controls button{font:600 14px/1.2 -apple-system,BlinkMacSystemFont,Arial,sans-serif;min-height:44px;padding:11px 17px;border:0;border-radius:999px;background:#ffffff13;color:white;cursor:pointer}.controls #fullscreen{background:white;color:#18131a}.controls span{font-size:12px;color:#d5ced6;max-width:255px;white-space:normal;padding:0 8px}.control-message{display:none;position:fixed;z-index:11;top:90px;left:50%;transform:translateX(-50%);background:#18131a;color:white;border:1px solid #ffffff3a;padding:14px 22px;border-radius:12px;font-size:15px;max-width:70vw}.controls-visible .control-message:not(:empty){display:block}
.slide.box-office{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto;align-items:stretch;gap:calc(var(--unit)*2.1)}
.box-office-title{font-size:calc(var(--unit)*5);font-weight:800;letter-spacing:-.035em;line-height:1.05;color:var(--accent);margin:0}
.box-office-body{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:calc(var(--unit)*5);align-items:start;min-height:0}
.office-hours,.office-contacts{min-width:0}
.office-label{font-size:calc(var(--unit)*1.45);font-weight:500;line-height:1.2;color:var(--muted);margin:0 0 calc(var(--unit)*1)}
.office-schedule{display:grid;gap:calc(var(--unit)*1.25);margin:0}
.office-hours-row dt{font-size:calc(var(--unit)*1.65);line-height:1.2;font-weight:550}
.office-hours-row dd{font-size:calc(var(--unit)*2.6);line-height:1.1;letter-spacing:-.02em;font-weight:750;font-variant-numeric:tabular-nums;margin:calc(var(--unit)*.3) 0 0}
.office-note{font-size:calc(var(--unit)*1.5);font-weight:450;line-height:1.35;max-width:40ch;margin:calc(var(--unit)*1.4) 0 0;color:var(--muted)}
.office-unavailable{font-size:calc(var(--unit)*2.1);max-width:30ch}
.office-contacts{display:flex;flex-direction:column;gap:calc(var(--unit)*4.1);padding-left:calc(var(--unit)*3);border-left:1px solid #ffffff24;min-height:85%}
.office-phone{font-size:calc(var(--unit)*3.35);font-weight:750;line-height:1.12;letter-spacing:-.025em;font-variant-numeric:tabular-nums;margin:0;overflow-wrap:anywhere}
.office-phone-note{font-size:calc(var(--unit)*1.35);font-weight:400;color:var(--muted);line-height:1.3;margin:calc(var(--unit)*.65) 0 0}
.office-email{font-size:calc(var(--unit)*1.85);font-weight:650;line-height:1.25;letter-spacing:-.025em;margin:0;overflow-wrap:anywhere}
.office-validity{font-size:calc(var(--unit)*1.15);line-height:1.3;color:var(--muted);margin:0}
.slide.city-info{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr) auto;gap:calc(var(--unit)*2.5)}
.city-title{font-size:calc(var(--unit)*5);line-height:1.05;font-weight:800;letter-spacing:-.035em;margin:0;color:var(--accent)}
.city-body{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);gap:calc(var(--unit)*5);align-items:center}
.city-clock,.city-weather{min-width:0}
.city-time{display:block;font-size:calc(var(--unit)*16);font-weight:750;line-height:1;letter-spacing:-.035em;font-variant-numeric:tabular-nums}
.clock-separator{display:inline-block;animation:clock-pulse 1s ease-in-out infinite}
@keyframes clock-pulse{0%,100%{opacity:1}50%{opacity:.12}}
.city-day{font-size:calc(var(--unit)*3.4);font-weight:450;line-height:1.15;margin:calc(var(--unit)*2) 0 calc(var(--unit)*.45);color:var(--muted)}
.city-date{font-size:calc(var(--unit)*3.4);font-weight:700;line-height:1.15;margin:0;letter-spacing:-.025em}
.city-weather{position:relative;isolation:isolate;border-left:1px solid #ffffff24;padding-left:calc(var(--unit)*4);display:flex;flex-direction:column;justify-content:center;min-height:calc(var(--unit)*22)}
.weather-atmosphere{position:absolute;inset:-12% -5% -12% 0;overflow:hidden;pointer-events:none;z-index:-1;mask-image:radial-gradient(ellipse at center,#000 30%,transparent 72%)}
.weather-wave{position:absolute;inset:-25%;background:radial-gradient(ellipse at 35% 50%,color-mix(in srgb,var(--accent) 26%,transparent),transparent 55%);animation:weather-drift 9s ease-in-out infinite alternate}
.weather-wave-two{background:radial-gradient(ellipse at 65% 55%,color-mix(in srgb,var(--accent) 16%,transparent),transparent 50%);animation-duration:12s;animation-delay:-6s;animation-direction:alternate-reverse}
@keyframes weather-drift{from{transform:translate3d(-12%,8%,0) rotate(-16deg) scale(.9);opacity:.65}to{transform:translate3d(12%,-8%,0) rotate(16deg) scale(1.12);opacity:1}}
.motion-paused .clock-separator,.motion-paused .weather-wave{animation-play-state:paused}
@media(prefers-reduced-motion:reduce){.clock-separator,.weather-wave{animation:none}.clock-separator{opacity:1}}
.city-temperature{display:flex;align-items:baseline;gap:calc(var(--unit)*.5);margin:0;line-height:1;letter-spacing:-.03em;color:var(--accent);font-variant-numeric:tabular-nums}
.temperature-value{font-size:calc(var(--unit)*10);font-weight:750}.temperature-unit{font-size:calc(var(--unit)*4);font-weight:400}
.city-condition{font-size:calc(var(--unit)*2.5);font-weight:600;line-height:1.15;margin:calc(var(--unit)*1.7) 0 calc(var(--unit)*1)}
.city-weather-time{font-size:calc(var(--unit)*1.4);font-weight:400;color:var(--muted);line-height:1.4;margin:0}
.city-credit{font-size:calc(var(--unit)*1.15);line-height:1.3;color:var(--muted);margin:0}.city-credit a{color:inherit;text-decoration:none}
.weather-unavailable .city-temperature{display:none}.weather-unavailable .city-condition{color:var(--muted)}
@media(hover:hover) and (pointer:fine){.controls button:hover{background:#ffffff2c}.controls #fullscreen:hover{background:#e6dfe9}}
@media(max-width:700px){.controls{flex-wrap:wrap;border-radius:20px;justify-content:center;min-width:min(90vw,430px)}.controls span{flex-basis:100%;text-align:center;max-width:none}.controls button{font-size:12px;padding:10px 12px}}
@media(prefers-reduced-motion:reduce){.light{animation:none}.slide{transition:opacity 180ms var(--ease-out)}.slide.event .poster{clip-path:none;transition:none}.slide.event .poster img,.slide.event .event-copy>*{transform:none!important;transition:opacity 180ms var(--ease-out);transition-delay:0ms!important}}
