@font-face{font-family:Inter;src:url("assets/fonts/inter-light-latin-v1.woff2") format("woff2");font-weight:300;font-style:normal;font-display:swap;unicode-range:U+0000-024F,U+2000-2BFF}
@font-face{font-family:Inter;src:url("assets/fonts/inter-light.woff2") format("woff2");font-weight:300;font-style:normal;font-display:swap;unicode-range:U+0250-1FFF,U+2C00-10FFFF}
@font-face{font-family:Inter;src:url("assets/fonts/inter-regular-latin-v1.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap;unicode-range:U+0000-024F,U+2000-2BFF}
@font-face{font-family:Inter;src:url("assets/fonts/inter-regular.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap;unicode-range:U+0250-1FFF,U+2C00-10FFFF}
@font-face{font-family:Inter;src:url("assets/fonts/inter-bold-latin-v1.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap;unicode-range:U+0000-024F,U+2000-2BFF}
@font-face{font-family:Inter;src:url("assets/fonts/inter-bold.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap;unicode-range:U+0250-1FFF,U+2C00-10FFFF}
:root{--ice:#b8e0f2;--ink:#101414;--bar:26px;--footer:34px;--edge:clamp(22px,2.2vw,42px);color-scheme:dark;font-family:"Inter",Arial,sans-serif;font-synthesis:none;background:var(--ink);color:var(--ice)}
*{box-sizing:border-box}body{margin:0}button,input,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:default;opacity:.55}a{color:inherit;text-underline-offset:3px}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--ice);outline-offset:5px}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.site-shell{height:100svh;min-height:360px;display:grid;grid-template-rows:var(--bar) minmax(0,1fr) var(--bar) var(--footer);overflow:hidden}.stage{position:relative;isolation:isolate;overflow:hidden}.backdrop,.background-video{position:absolute;inset:0;width:100%;height:100%;z-index:-2}.backdrop img{width:100%;height:100%;object-fit:cover;object-position:center}.background-video{object-fit:cover;opacity:0}.background-video.ready{opacity:1}.brand-the{position:absolute;left:var(--edge);top:32px;width:clamp(180px,19.25vw,335px);height:auto}.brand-winter{position:absolute;right:var(--edge);top:32px;width:auto;height:min(82%,750px);max-width:18vw}.ticket-actions{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;gap:clamp(16px,2vw,32px);justify-content:center;max-width:calc(100% - 40px)}.ticket-button{display:flex;align-items:center;justify-content:center;width:clamp(180px,17vw,270px);min-height:64px;padding:12px 20px;border:2px solid var(--ice);border-radius:0;font-size:clamp(22px,2.25vw,36px);font-weight:500;white-space:nowrap;transition:background .18s,color .18s}.primary{background:var(--ice);color:var(--ink)}.secondary{background:transparent;color:var(--ice)}.primary:hover:not(:disabled){background:#daf4fc;border-color:#daf4fc}.secondary:hover:not(:disabled){background:var(--ice);color:var(--ink)}.ticket-button.dated{font-size:clamp(13px,1.3vw,20px);line-height:1.4;white-space:normal}.countdown{position:absolute;bottom:25px;left:var(--edge);display:flex;align-items:flex-start;gap:14px;font-variant-numeric:tabular-nums}.countdown div{display:flex;flex-direction:column;gap:6px;min-width:48px}.countdown span{font-size:clamp(26px,2.6vw,42px);font-weight:400;line-height:1}.countdown small{font-size:9px;font-weight:400;text-transform:uppercase;letter-spacing:.04em}.countdown i{font-size:25px;font-style:normal;line-height:1.1}
.ticker{overflow:hidden;display:flex;align-items:center;background:var(--ice);color:var(--ink);font-size:12px;white-space:nowrap;position:relative;z-index:2}.ticker-track{display:flex;width:max-content;animation:ticker 95s linear infinite;will-change:transform}.ticker-bottom .ticker-track{animation-duration:70s}.ticker-set{display:inline-flex;flex:none;align-items:center;padding-left:24px;min-width:max-content}.separator{margin:0 28px}@keyframes ticker{from{transform:translate3d(0,0,0)}to{transform:translate3d(var(--ticker-distance,-50%),0,0)}}.motion-paused .ticker-track{animation-play-state:paused}
.footer{position:relative;z-index:5;padding:0 var(--edge);display:flex;justify-content:flex-end;align-items:center;background:var(--ink);font-size:11px}.footer details{position:relative}.footer summary{list-style:none;cursor:pointer;padding:9px 0;user-select:none}.footer summary::-webkit-details-marker{display:none}.footer nav{position:absolute;bottom:calc(100% + 8px);right:0;display:flex;flex-direction:column;gap:0;min-width:180px;padding:10px 16px;background:var(--ink);border:1px solid #b8e0f233}.footer nav a,.footer nav button{display:block;text-align:left;color:var(--ice);text-decoration:none;font-size:13px;line-height:1.5;padding:10px 0;border:0;background:none;white-space:nowrap}
dialog{width:min(620px,calc(100% - 32px));max-height:calc(100svh - 40px);padding:30px;border:1px solid #b8e0f244;background:var(--ink);color:var(--ice);overflow-y:auto;overscroll-behavior:contain}dialog::backdrop{background:#050909b8;backdrop-filter:blur(5px)}.dialog-header{display:flex;justify-content:space-between;align-items:center;gap:20px}.dialog-brand{font-size:12px;letter-spacing:.1em}.close-dialog{font-size:12px;background:none;border:0;color:var(--ice);padding:10px 0 10px 12px}dialog h2{font-size:clamp(26px,5vw,40px);font-weight:500;margin:30px 0 22px}dialog h3{font-size:16px;margin:28px 0 10px;font-weight:500}dialog p,dialog address,dialog dd{font-size:15px;line-height:1.65;font-style:normal}dialog address{margin:16px 0}.eyebrow{font-size:11px!important;letter-spacing:.06em}.event-name{font-size:27px!important}.event-details{margin:25px 0}.event-details>div{display:grid;grid-template-columns:80px 1fr;gap:16px;margin:14px 0}.event-details dt{font-size:12px;line-height:1.65;opacity:.7}.event-details dd{margin:0}.text-button{font-size:inherit;color:inherit;display:inline;border:0;padding:0;background:none;text-decoration:underline;text-underline-offset:3px}form{display:flex;flex-direction:column}form label{font-size:12px;margin:15px 0 8px}input,textarea{width:100%;background:transparent;border:1px solid #b8e0f266;border-radius:0;color:var(--ice);padding:12px;min-height:46px;outline:none}input:focus,textarea:focus{border-color:var(--ice)}textarea{resize:vertical}form .optional{opacity:.5;margin-left:6px}.form-button{background:var(--ice);color:var(--ink);border:1px solid var(--ice);border-radius:0;padding:14px 20px;margin-top:20px;min-height:48px}.small-print{font-size:12px!important;line-height:1.6!important;opacity:.8}.honeypot{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.checkout-consent{margin:18px 0}.checkout-container{min-height:425px}.checkout-dialog{width:min(760px,calc(100% - 24px))}.noscript{position:fixed;bottom:65px;left:20px;right:20px;padding:12px;background:var(--ink);z-index:10;font-size:13px}
@media(max-width:700px){:root{--bar:24px;--footer:34px;--edge:18px}.site-shell{min-height:480px}.backdrop img{object-position:center}.brand-the{top:3%;width:34.4vw}.brand-winter{top:3%;height:44%;max-width:none;right:5.2%}.ticket-actions{top:78.5%;gap:14px;width:calc(100% - 52px)}.ticket-button{width:min(36.5vw,180px);min-height:48px;font-size:19px;padding:10px 8px;border-width:1.5px}.ticket-button.dated{font-size:12px}.countdown{left:50%;transform:translateX(-50%);bottom:18px;gap:11px}.countdown div{min-width:30px;gap:4px}.countdown span{font-size:23px}.countdown small{font-size:7px}.countdown i{font-size:16px;line-height:1.4}.ticker{font-size:9px}.ticker-set{padding-left:14px}.separator{margin:0 22px}.footer{font-size:9px}dialog{padding:22px;max-height:calc(100svh - 24px)}dialog h2{margin-top:22px}dialog p,dialog address,dialog dd{font-size:14px}}
@media(max-height:650px) and (min-width:701px){.brand-the{top:20px;width:16vw}.brand-winter{top:20px;height:82%}.ticket-button{min-height:48px;font-size:24px}.countdown{bottom:17px}.countdown span{font-size:28px}}
@media(max-height:680px) and (max-width:700px){.brand-winter{height:45%}.ticket-actions{top:74%}.countdown{bottom:16px}.countdown span{font-size:21px}}
@media(prefers-reduced-motion:reduce){.ticker-track{animation:none}.background-video{display:none}*{scroll-behavior:auto!important;transition:none!important}}
/* One shared scale for all original PDF lettering, including short screens. */
.stage{container-type:size;--brand-width:min(19.25cqw,33.43cqh,335px)}
.brand-the{width:var(--brand-width)}
.brand-winter{width:calc(var(--brand-width)*0.4037706);height:auto;max-width:none}
@media(max-width:700px){.stage{--brand-width:min(34.4cqw,36cqh)}.brand-the{width:var(--brand-width)}.brand-winter{width:calc(var(--brand-width)*0.4037706);height:auto}}
.sales-caption{display:none}
.sales-dialog{width:min(680px,calc(100% - 48px));padding:32px 44px 40px;background:var(--ice);color:var(--ink);border:0;color-scheme:light;box-shadow:0 24px 100px #0004}
.sales-dialog::backdrop{background:#050909b8;backdrop-filter:blur(9px)}
.sales-dialog .dialog-brand{font-size:18px;font-weight:800;letter-spacing:-.06em}
.sales-dialog .close-dialog{color:var(--ink);font-size:11px;text-decoration:underline;text-underline-offset:4px}
.sales-dialog .sales-caption{display:block;font-size:10px;letter-spacing:.09em;margin:48px 0 12px;line-height:1.3}
.sales-dialog h2{font-size:clamp(60px,8vw,104px);line-height:.95;letter-spacing:-.075em;font-weight:800;text-transform:uppercase;margin:0 0 28px}
.sales-dialog #dialog-content>p,.sales-dialog #presale-form~p{font-size:17px;line-height:1.55;max-width:35ch}
.sales-dialog form{margin-top:34px}
.sales-dialog form label{font-size:10px;text-transform:uppercase;letter-spacing:.08em;margin:0 0 6px}
.sales-dialog input{border:0;border-bottom:1px solid #10141488;color:var(--ink);font-size:30px;padding:12px 0 14px;min-height:62px;background:transparent;letter-spacing:.02em}
.sales-dialog input:focus{border-bottom:2px solid var(--ink)}
.sales-dialog .form-button{background:var(--ink);color:var(--ice);border:1px solid var(--ink);min-height:56px;margin-top:30px;font-size:16px;transition:background .18s}
.sales-dialog .form-button:hover:not(:disabled){background:#283537}
.sales-dialog :is(button,a,input):focus-visible{outline-color:var(--ink)}
.sales-dialog #presale-status:empty{display:none}
.sales-dialog #presale-status{font-size:13px;line-height:1.5;margin:18px 0 0}
.sales-dialog .checkout-consent{max-width:46ch!important;margin-bottom:22px}
.sales-dialog .text-button{color:var(--ink);font-size:12px}
.sales-dialog.checkout-dialog{width:min(780px,calc(100% - 24px))}
@media(max-width:700px){.sales-dialog{width:calc(100% - 24px);padding:24px 24px 28px;max-height:calc(100svh - 24px)}.sales-dialog .sales-caption{margin-top:38px;font-size:9px}.sales-dialog h2{font-size:clamp(52px,14.5vw,92px);margin-bottom:24px}.sales-dialog #dialog-content>p{font-size:15px;max-width:32ch}.sales-dialog form{margin-top:30px}.sales-dialog input{font-size:25px}.sales-dialog .dialog-brand{font-size:16px}.sales-dialog .form-button{min-height:52px}}
@media(prefers-reduced-motion:no-preference){.sales-dialog[open]{animation:sales-appear .25s ease-out}@keyframes sales-appear{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}}

/* Shared flyer typography and the approved THE / rotated FEST wordmark. */
button,input,textarea,summary{font-family:inherit}
.ticket-button{text-transform:uppercase;font-weight:700;letter-spacing:-.025em}
.dialog-brand{display:block;flex:none;width:122px;height:46px;background:currentColor;-webkit-mask:url("assets/the-fest.svg") left center/contain no-repeat;mask:url("assets/the-fest.svg") left center/contain no-repeat}
.dialog-header{align-items:flex-start}
dialog h2{font-weight:700;letter-spacing:-.025em;font-size:clamp(26px,4.5vw,38px);overflow-wrap:anywhere}
dialog h3{font-weight:700;font-size:14px}
.close-dialog{font-size:10px;letter-spacing:.035em;min-height:32px}
.form-button{text-transform:uppercase;font-weight:700;letter-spacing:.015em}
.footer nav{min-width:230px;padding:12px 22px;background:var(--ice);color:var(--ink);border:0}
.footer nav a,.footer nav button{color:var(--ink);font-weight:700;font-size:11px;letter-spacing:.025em;text-transform:uppercase;min-height:44px;display:flex;align-items:center;width:100%;border-bottom:1px solid #10141424;white-space:normal}
.footer nav>:last-child{border-bottom:0}
.footer nav :is(a,button):focus-visible{outline-color:var(--ink)}
.sales-dialog{width:min(640px,calc(100% - 48px));padding:32px 40px}
.sales-dialog .sales-caption{margin:28px 0 14px;font-size:9px;letter-spacing:.08em}
.sales-dialog h2{font-family:Inter,Arial,sans-serif;font-weight:700;font-size:clamp(42px,5.5vw,64px);letter-spacing:-.025em;line-height:1.05;margin:0 0 24px}
.sales-dialog #dialog-content>p{font-size:15px;line-height:1.65;max-width:42ch}
.sales-dialog form{margin-top:28px}
.sales-dialog form label{font-size:10px;font-weight:700;letter-spacing:.04em}
.sales-dialog input{font-size:25px;min-height:54px;padding:10px 0 12px;letter-spacing:0}
.sales-dialog .form-button{display:block;align-self:flex-end;width:180px;margin:24px 0 0 auto;font-size:13px;min-height:50px}
@media(max-width:700px){.dialog-brand{width:105px;height:40px}.sales-dialog{width:calc(100% - 24px);padding:24px}.sales-dialog .sales-caption{margin-top:26px}.sales-dialog h2{font-size:clamp(34px,10vw,48px);letter-spacing:-.025em;margin-bottom:20px}.sales-dialog .form-button{width:100%;margin-top:22px}.sales-dialog #dialog-content>p{font-size:14px}.sales-dialog form{margin-top:26px}.footer nav{min-width:220px}}
/* Compact sales panel: supporting brand, prominent title, explicit code input. */
.sales-dialog{width:min(560px,calc(100% - 40px));padding:26px 32px 28px}
.sales-dialog .dialog-brand{width:90px;height:34px}
.sales-dialog .close-dialog{font-size:9px;min-height:30px}
.sales-dialog .sales-caption{margin:4px 0 22px;font-size:8px;letter-spacing:.05em}
.sales-dialog h2{font-size:clamp(40px,5vw,56px);margin-bottom:18px}
.sales-dialog #dialog-content>p{font-size:14px;line-height:1.6;max-width:43ch}
.sales-dialog form{margin-top:22px}
.sales-dialog form label{font-size:9px;margin-bottom:9px}
.sales-dialog #presale-code{border:1px solid #101414aa;background:#ffffff18;padding:13px 15px;font-size:19px;min-height:52px}
.sales-dialog #presale-code::placeholder{color:#101414b8;font-size:13px;font-weight:400;letter-spacing:.045em;opacity:1}
.sales-dialog #presale-code:focus{border:1px solid var(--ink);outline:2px solid var(--ink);outline-offset:2px}
.sales-dialog .form-button{width:160px;min-height:46px;margin-top:18px;font-size:12px}
@media(max-width:700px){.sales-dialog{width:calc(100% - 24px);padding:22px}.sales-dialog .dialog-brand{width:82px;height:31px}.sales-dialog .sales-caption{margin-top:3px;margin-bottom:20px;font-size:7px}.sales-dialog h2{font-size:clamp(34px,10vw,44px);margin-bottom:16px}.sales-dialog #dialog-content>p{font-size:13px}.sales-dialog form{margin-top:20px}.sales-dialog .form-button{width:100%;min-height:48px}.sales-dialog #presale-code{min-height:50px}}

.ticket-button{font-weight:700}
/* Numbers and separators share a baseline; labels occupy a separate grid row. */
.countdown{--count-size:clamp(26px,2.6vw,42px);display:grid;grid-template-columns:repeat(3,auto auto) auto;align-items:baseline;column-gap:7px;row-gap:6px;font-size:var(--count-size)}
.countdown div{display:contents;min-width:0}
.countdown span{grid-row:1;font-size:inherit;line-height:1;min-width:2ch}
.countdown small{grid-row:2}
.countdown i{grid-row:1;font-size:inherit;line-height:1;align-self:baseline;font-style:normal}
.countdown div:nth-of-type(1)>*{grid-column:1}
.countdown div:nth-of-type(2)>*{grid-column:3}
.countdown div:nth-of-type(3)>*{grid-column:5}
.countdown div:nth-of-type(4)>*{grid-column:7}
.countdown i:nth-of-type(1){grid-column:2}
.countdown i:nth-of-type(2){grid-column:4}
.countdown i:nth-of-type(3){grid-column:6}
@media(max-width:700px){.countdown{--count-size:23px;column-gap:5px;row-gap:4px}}
@media(max-height:650px) and (min-width:701px){.countdown{--count-size:28px}}
@media(max-height:680px) and (max-width:700px){.countdown{--count-size:21px}}
/* Shared information panels: readable titles, no repeated brand decoration. */
dialog{width:min(640px,calc(100% - 32px));padding:30px 36px 34px;border:0;background:var(--ice);color:var(--ink);color-scheme:light}
dialog .dialog-header{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:18px}
dialog .dialog-brand{grid-column:1;grid-row:1;width:100px;height:38px}
dialog .close-dialog{grid-column:2;grid-row:1;margin-left:auto;color:var(--ink);font-size:10px;min-height:30px;padding:5px 0;text-decoration:underline;text-underline-offset:4px}
dialog h2{font-size:clamp(40px,5vw,60px);line-height:1.05;font-weight:700;letter-spacing:-.035em;margin:18px 0 30px}
dialog h3{font-size:17px;line-height:1.4;margin:28px 0 12px}
dialog p,dialog address{font-size:15px;line-height:1.7}
dialog :is(input,textarea){color:var(--ink);border-color:#10141480;font-size:16px}
dialog :is(input,textarea):focus{border-color:var(--ink)}
dialog :is(a,button,input,textarea):focus-visible{outline-color:var(--ink)}
dialog form label{font-size:12px;font-weight:700}
dialog .form-button{background:var(--ink);color:var(--ice);border-color:var(--ink);font-size:13px}
dialog .small-print{font-size:12px!important}
.dialog-event-meta{display:flex;flex-direction:column;gap:5px;grid-column:1;grid-row:1;line-height:1.45;padding-top:2px}
.dialog-event-meta span:first-child{font-size:12px;font-weight:700;letter-spacing:.015em}
.dialog-event-meta span:last-child{font-size:11px;font-weight:400;letter-spacing:.015em}
.sales-dialog{width:min(560px,calc(100% - 32px));padding:28px 32px 30px}
.sales-dialog h2{font-size:clamp(40px,5vw,56px);margin:30px 0 20px}
.sales-dialog #dialog-content>p{font-size:14px;line-height:1.65}
.sales-dialog.checkout-dialog{width:min(780px,calc(100% - 24px))}
.event-sheet{margin:0}
.event-next{font-size:11px!important;font-weight:700;letter-spacing:.055em;margin:0 0 12px}
dialog h3.event-name{font-size:28px!important;line-height:1.2;margin:0 0 24px;letter-spacing:-.025em}
.event-time{display:flex;flex-direction:column;gap:8px;padding:22px 0;border-top:1px solid #10141445;border-bottom:1px solid #10141445}
.event-time time{font-size:40px;line-height:1.1;font-weight:400;letter-spacing:-.025em;font-variant-numeric:tabular-nums}
.event-time>span{font-size:12px;letter-spacing:.015em}
.event-location{display:flex;flex-direction:column;gap:8px;padding:22px 0}
.event-location strong{font-size:19px;line-height:1.3;font-weight:700;letter-spacing:-.015em}
.event-location>span{font-size:14px;line-height:1.5}
.event-question{font-size:11px;letter-spacing:.015em;min-height:44px;margin-top:0}
#info-dialog[data-view="impressum"] h2{margin-top:28px}
#info-dialog[data-view="contact"] form{margin-top:22px}
#info-dialog[data-view="contact"] .form-button{align-self:flex-end;width:200px;min-height:48px;margin-top:22px}
@media(max-width:700px){dialog{padding:22px 24px 26px;width:calc(100% - 24px)}dialog h2{font-size:clamp(30px,8.6vw,42px);margin:16px 0 24px}dialog h3{font-size:16px}dialog p,dialog address{font-size:14px}dialog .dialog-header{gap:12px}dialog .close-dialog{font-size:9px}.sales-dialog{padding:22px;width:calc(100% - 24px)}.sales-dialog h2{font-size:clamp(34px,10vw,44px);margin-top:26px;margin-bottom:18px}.dialog-event-meta span:first-child{font-size:10px}.dialog-event-meta span:last-child{font-size:10px}.event-time time{font-size:34px}.event-location strong{font-size:17px}dialog h3.event-name{font-size:24px!important}.event-location>span{font-size:13px}#info-dialog[data-view="contact"] .form-button{width:100%}}
dialog:focus{outline:none}
/* Equal spacing around every ticker dot, including repeated-set boundaries. */
.ticker{--ticker-gap:24px}
.ticker-set{column-gap:var(--ticker-gap);padding:0 var(--ticker-gap) 0 0}
.ticker-text{display:block;flex:none}
.ticker-text:is(strong){font-weight:700}
.ticker .separator{flex:none;margin:0;width:.5em;text-align:center}
.event-heading{display:flex;align-items:center;flex-wrap:wrap;gap:14px;margin-bottom:24px}
dialog .event-heading .event-name{margin:0}
.event-age{display:inline-block;font-size:11px;font-weight:400;line-height:1;border:1px solid #10141466;padding:4px 6px;white-space:nowrap}
.event-location>a{font-size:14px;line-height:1.5;display:flex;align-items:center;min-height:40px;width:fit-content;text-decoration-thickness:1px;text-underline-offset:4px}
@media(max-width:700px){.ticker{--ticker-gap:18px}.event-heading{gap:12px}.event-age{font-size:10px}.event-location>a{font-size:13px;min-height:44px}}
/* Countdown to event date: stable footprint, gentle crossfade and slight drift. */
.countdown-switch{--count-size:clamp(26px,2.6vw,42px);position:absolute;left:var(--edge);bottom:25px;display:grid;grid-template-areas:"clock";align-items:center;justify-items:start;width:max-content;max-width:calc(100% - 36px);padding:0;border:0;border-radius:0;background:none;color:var(--ice);font-size:var(--count-size);font-weight:400;text-align:left;cursor:pointer}
.countdown-switch .countdown{grid-area:clock;position:relative;left:auto;bottom:auto;transform:translateY(0);margin:0;opacity:1;transition:opacity .28s ease,transform .28s cubic-bezier(.2,.7,.3,1);pointer-events:none}
.countdown .countdown-unit{display:contents}
.countdown .countdown-unit:nth-of-type(1)>*{grid-column:1}
.countdown .countdown-unit:nth-of-type(2)>*{grid-column:3}
.countdown .countdown-unit:nth-of-type(3)>*{grid-column:5}
.countdown .countdown-unit:nth-of-type(4)>*{grid-column:7}
.countdown-date{grid-area:clock;display:flex;flex-direction:column;gap:6px;opacity:0;transform:translateY(5px);transition:opacity .28s ease,transform .28s cubic-bezier(.2,.7,.3,1);pointer-events:none}
.countdown-date time{font-size:inherit;line-height:1;font-weight:400;letter-spacing:-.02em;white-space:nowrap;font-variant-numeric:tabular-nums}
.countdown-date small{font-size:9px;line-height:1.2;letter-spacing:.04em;text-transform:uppercase}
.countdown-switch.shows-date .countdown{opacity:0;transform:translateY(-4px)}
.countdown-switch.shows-date .countdown-date{opacity:1;transform:translateY(0)}
@media(max-width:700px){.countdown-switch{--count-size:23px;left:50%;bottom:18px;transform:translateX(-50%);justify-items:center;text-align:center}.countdown-date{gap:4px;align-items:center}.countdown-date small{font-size:7px}.countdown-switch .countdown{left:auto;bottom:auto;transform:translateY(0)}.countdown-switch.shows-date .countdown{transform:translateY(-4px)}}
@media(max-height:650px) and (min-width:701px){.countdown-switch{--count-size:28px;bottom:17px}}
@media(max-height:680px) and (max-width:700px){.countdown-switch{--count-size:21px;bottom:16px}}
@media(prefers-reduced-motion:reduce){.countdown-switch .countdown,.countdown-date{transition:none;transform:none}.countdown-switch.shows-date .countdown{transform:none}}
/* Original flyer beside the event facts; stack naturally on smaller screens. */
#info-dialog[data-view="event"]{width:min(940px,calc(100% - 40px))}
.event-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.85fr);gap:36px;align-items:start}
.event-poster{margin:0;width:100%}
.event-poster img{display:block;width:100%;height:auto;aspect-ratio:900/1271;object-fit:contain}
@media(max-width:700px){#info-dialog[data-view="event"]{width:calc(100% - 24px)}.event-layout{grid-template-columns:minmax(0,1fr);gap:24px}.event-poster{max-width:340px;margin:0 auto}}
#info-dialog[data-view="event"] .dialog-header{position:sticky;top:0;z-index:3;background:var(--ice)}
/* Keep the desktop flyer at the scale of the adjacent event facts. */
@media(min-width:701px){#info-dialog[data-view="event"]{width:min(800px,calc(100% - 40px))}.event-layout{grid-template-columns:minmax(0,1fr) 248px;gap:32px}}
.event-poster img{border:1px solid #10141466}

/* Inline enlargement leaves the event layout in place and never opens a window. */
@media(min-width:701px) and (hover:hover) and (pointer:fine){
 .event-poster{position:relative;z-index:1;cursor:zoom-in}
 .event-poster img{transform-origin:right bottom;transition:transform 240ms cubic-bezier(.2,.65,.3,1),box-shadow 240ms ease}
 .event-poster:hover,.event-poster:focus-visible{z-index:4}
 .event-poster:hover img,.event-poster:focus-visible img{transform:scale(1.3);box-shadow:0 8px 28px #10141430}
 .event-poster:focus-visible{outline:2px solid var(--ink);outline-offset:5px}
}

/* Seasonal native cursors: no animation, tracking script, or touch-device overlay. */
@media(min-width:701px) and (hover:hover) and (pointer:fine){
 body,body *{cursor:url("assets/cursors/snowflake.svg") 16 16,auto}
 a[href],a[href] *,button:not(:disabled),button:not(:disabled) *,summary,summary *,.footer summary,.footer summary *,.event-poster,.event-poster *{cursor:url("assets/cursors/snowflake-active.svg") 16 16,pointer}
 input,textarea,[contenteditable="true"]{cursor:text}
 button:disabled,button:disabled *{cursor:not-allowed}
}

/* Countdown typography trial: match ticket actions and center every unit label. */
.countdown .countdown-unit>span{font-family:inherit;font-weight:700;letter-spacing:-.025em;text-align:center;justify-self:stretch}
.countdown .countdown-unit>small{justify-self:center;text-align:center;font-weight:400}
.countdown i{font-weight:700}
.countdown-date time{font-weight:700;letter-spacing:-.025em}

/* Keep the purchase area white within the ice-blue event dialog. */
.checkout-container{background:#fff;color:#101414;color-scheme:light}

/* A compact consent step with one coherent reading and action column. */
.sales-dialog.checkout-awaiting-consent{width:min(640px,calc(100% - 48px))}
.sales-dialog .checkout-test-notice{max-width:none!important;font-size:10px!important;letter-spacing:.025em;margin:0 0 22px;line-height:1.5!important}
.checkout-intro{border-top:1px solid #10141430;padding-top:22px}
.sales-dialog .checkout-intro .checkout-consent{max-width:none!important;font-size:14px!important;line-height:1.65!important;margin:0 0 12px;opacity:1}
.sales-dialog .checkout-intro .text-button{display:inline-block;font-size:12px;min-height:32px;text-align:left}
.sales-dialog .checkout-intro .form-button{display:block;width:100%;margin:20px 0 0;padding:15px 20px;min-height:54px;white-space:nowrap;text-align:center;font-size:13px}
@media(max-width:700px){.sales-dialog.checkout-awaiting-consent{width:calc(100% - 24px)}.checkout-intro{padding-top:18px}.sales-dialog .checkout-test-notice{font-size:9px!important;margin-bottom:18px}}

/* Center the sales headings; the embedded shop supplies its own event details. */
.sales-dialog #dialog-title{text-align:center}
.sales-dialog .checkout-test-notice{text-align:center}

/* The approved wordmark sits in a full-width black imprint masthead. */
#info-dialog[data-view="impressum"] .dialog-header{background:var(--ink);color:var(--ice);margin:-30px -36px 0;padding:24px 36px;align-items:center}
#info-dialog[data-view="impressum"] .dialog-brand,#info-dialog[data-view="impressum"] .close-dialog{color:var(--ice)}
#info-dialog[data-view="impressum"] .close-dialog:focus-visible{outline-color:var(--ice)}
@media(max-width:700px){#info-dialog[data-view="impressum"] .dialog-header{margin:-22px -24px 0;padding:22px 24px}}

/* Consent controls share the site's type, ice blue, and black palette. */
.cookie-banner{position:fixed;z-index:100;left:24px;right:24px;bottom:24px;display:grid;grid-template-columns:minmax(0,1fr) minmax(230px,.42fr);gap:32px;max-width:1000px;margin:0 auto;padding:28px 32px;background:var(--ink);color:var(--ice);border:1px solid #b8e0f266;box-shadow:0 12px 60px #0009;font-size:13px;line-height:1.6}
.cookie-eyebrow{margin:0 0 8px;font-size:9px!important;letter-spacing:.08em;font-weight:700}
.cookie-banner h2{margin:0 0 12px;font-size:clamp(22px,2.3vw,30px);line-height:1.1;letter-spacing:-.025em}
.cookie-copy>p:not(.cookie-eyebrow){margin:0 0 14px}
.cookie-links{display:flex;flex-wrap:wrap;gap:20px;font-size:11px}
.cookie-actions{display:flex;flex-direction:column;justify-content:center;gap:10px}
.cookie-actions button{width:100%;padding:12px 15px;min-height:44px;border:1px solid currentColor;background:transparent;color:inherit;font-size:11px;font-weight:700;letter-spacing:.02em;text-align:center}
.cookie-actions button:hover{background:var(--ice);color:var(--ink);border-color:var(--ice)}
.cookie-actions button:focus-visible{outline:2px solid currentColor;outline-offset:3px}
.cookie-dialog{width:min(740px,calc(100% - 32px));padding:28px 32px;color:var(--ice);background:var(--ink);border:1px solid #b8e0f266}
.cookie-dialog::backdrop{background:#050909b8;backdrop-filter:blur(8px)}
.cookie-settings-header{display:flex;justify-content:space-between;gap:20px;align-items:center}
.cookie-settings-header>button{color:inherit;background:transparent;border:0;font-size:10px;padding:8px 0;text-decoration:underline;text-underline-offset:4px}
.cookie-dialog h2{font-size:clamp(24px,4vw,38px);letter-spacing:-.025em;margin:20px 0;overflow-wrap:normal}
.cookie-dialog>p,.cookie-category p{font-size:12px;line-height:1.7;margin:0}
.cookie-category{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;border-top:1px solid #b8e0f244;margin-top:22px;padding-top:20px}
.cookie-category h3{font-size:12px;letter-spacing:.025em;margin:0 0 8px}
.cookie-fixed{font-size:9px;white-space:nowrap;padding-top:3px}
.cookie-toggle{display:flex;gap:8px;align-items:center;min-width:155px;min-height:44px;font-size:11px}
.cookie-dialog input[type="checkbox"]{appearance:auto;accent-color:var(--ice);width:18px;height:18px;min-height:18px;padding:0;flex:none;margin:0}
.cookie-dialog .text-button{color:inherit;font-size:inherit}
.cookie-dialog .cookie-links{margin:22px 0}
.cookie-dialog .cookie-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
.cookie-dialog :is(button,a,input):focus-visible{outline-color:var(--ice)}
@media(max-width:700px){.cookie-banner{left:12px;right:12px;bottom:12px;padding:22px;grid-template-columns:1fr;gap:18px;max-height:calc(100svh - 24px);overflow-y:auto}.cookie-banner h2{font-size:24px}.cookie-banner .cookie-actions{gap:8px}.cookie-dialog{padding:22px;width:calc(100% - 24px)}.cookie-category{flex-direction:column;gap:10px}.cookie-dialog .cookie-actions{grid-template-columns:1fr}.cookie-fixed{padding:0}.cookie-settings-header{gap:8px}}

@media(min-width:701px) and (hover:hover) and (pointer:fine){.cookie-toggle,.cookie-toggle *{cursor:url("assets/cursors/snowflake-active.svg") 16 16,pointer}}

/* Pixel-based travel and a fixed reading speed keep short mobile strips moving. */
.ticker-track{flex-shrink:0;animation-duration:var(--ticker-duration,95s);backface-visibility:hidden}
.ticker-bottom .ticker-track{animation-duration:var(--ticker-duration,70s)}

/* Match the page canvas and browser theme to the black information footer. */
html,body{background:var(--ink)}

.sales-dialog #presale-code{background:#fff;color:var(--ink)}

/* Quiet close icons with an accessible touch target and screen-reader label. */
#info-dialog .close-dialog,.cookie-settings-header>button[data-cookie-action="close"]{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;min-height:44px;padding:0;font-family:inherit;font-size:30px;font-weight:400;line-height:1;text-decoration:none;letter-spacing:0;flex-shrink:0}
dialog .close-dialog span,.cookie-settings-header>button[data-cookie-action="close"] span{display:block;line-height:1}

/* Give the embedded shop its own branded masthead without repeated event facts. */
.sales-dialog.checkout-loaded .dialog-header{grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;gap:8px;background:var(--ink);color:var(--ice);margin:-28px -32px 0;padding:10px 20px}
.dialog-checkout-caption{grid-column:2;grid-row:1;font-size:10px;font-weight:700;letter-spacing:.09em;text-align:center;line-height:1.5}
.sales-dialog.checkout-loaded .close-dialog{grid-column:3;color:var(--ice)}
.sales-dialog.checkout-loaded .close-dialog:focus-visible{outline-color:var(--ice)}
.checkout-loaded #dialog-title{margin:24px 0 14px}
@media(max-width:700px){.sales-dialog.checkout-loaded .dialog-header{margin:-22px -22px 0;padding:8px 12px}.dialog-checkout-caption{font-size:9px;letter-spacing:.055em}.checkout-loaded #dialog-title{margin:22px 0 14px}}

/* Social symbols on the left; legal navigation centered beneath FEST / 2027. */
.footer{justify-content:flex-start}
.footer #info-menu{position:absolute;left:var(--brand-center,calc(100% - 80px));transform:translateX(-50%)}
.footer #info-menu summary{text-align:center;white-space:nowrap}
.footer-socials{position:relative;display:flex;align-items:center;gap:0;margin-left:-13px;color:var(--ice)}
:root{--footer:44px}
.social-symbol{display:inline-flex;flex:0 0 44px;align-items:center;justify-content:center;width:44px;height:44px;touch-action:manipulation}
.social-symbol svg{display:block;width:16px;height:16px;fill:currentColor;pointer-events:none}
@media(max-width:700px){:root{--footer:48px}.footer-socials{margin-left:-16px}.social-symbol{flex-basis:48px;width:48px;height:48px}.social-symbol svg{width:14px;height:14px}}

/* Keep native cursor images inside the viewport near the footer's bottom edge. */
@media(min-width:701px) and (hover:hover) and (pointer:fine){
 .footer,.footer *{cursor:url("assets/cursors/snowflake.svg") 16 31,auto}
 .footer a[href],.footer a[href] *,.footer summary,.footer summary *,.footer button:not(:disabled),.footer button:not(:disabled) *{cursor:url("assets/cursors/snowflake-active.svg") 16 31,pointer}
}

/* The entire padded label is a native details toggle, not only the letters. */
.footer #info-menu{--info-hit-width:168px;left:clamp(calc(var(--info-hit-width)/2),var(--brand-center,calc(100% - 84px)),calc(100% - var(--info-hit-width)/2))}
.footer #info-menu summary{display:flex;align-items:center;justify-content:center;min-width:var(--info-hit-width);min-height:44px;padding:10px 24px;line-height:1.4;touch-action:manipulation}
@media(max-width:700px){.footer #info-menu{--info-hit-width:144px}.footer #info-menu summary{min-height:48px;padding:12px 24px}}
