/* Tickets (#tickets) and footer finale. Effects live in js/ticket.mjs; everything here renders a complete static state without it. */

/* ---------- Tickets: section ---------- */
.tickets{
  --tk-hole:#2a0b09;
  position:relative;isolation:isolate;overflow:clip;
  display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);
  grid-template-areas:". stage" "head stage" "panel stage" ". stage";grid-template-rows:1fr auto auto 1fr;
  column-gap:5%;row-gap:0;align-items:start;
  padding-block:clamp(130px,12vw,190px);
  background:var(--oxblood);color:var(--text);
}
.tickets-atmos{position:absolute;inset:0;z-index:-1;overflow:clip;pointer-events:none;
  background:
    radial-gradient(ellipse 70% 75% at 74% 52%,rgba(155,42,28,.62),rgba(101,28,24,0) 72%),
    radial-gradient(ellipse 130% 100% at 50% 50%,rgba(14,10,8,0) 40%,rgba(14,10,8,.62) 100%);}
.tickets-glow{position:absolute;right:-14vmax;bottom:-32vmax;width:66vmax;aspect-ratio:1;border-radius:50%;
  background:radial-gradient(closest-side,rgba(255,106,31,.42),rgba(155,42,28,.22) 46%,rgba(155,42,28,0));
  animation:tkDrift 17s ease-in-out infinite alternate}
.tickets-glow--b{right:auto;bottom:auto;left:-18vmax;top:-20vmax;width:46vmax;
  background:radial-gradient(closest-side,rgba(242,178,0,.13),rgba(155,42,28,.12) 50%,rgba(155,42,28,0));
  animation-duration:23s;animation-direction:alternate-reverse}
.tickets-smoke{position:absolute;top:-12%;bottom:-12%;left:0;width:calc(100% + 800px);opacity:.2;mix-blend-mode:screen;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 800 500'%3E%3Cfilter id='s' x='0' y='0' width='100%25' height='100%25'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.0035 .007' numOctaves='4' seed='9' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .95 0 0 0 0 .64 0 0 0 0 .45 1.9 0 0 0 -.8'/%3E%3C/filter%3E%3Crect width='800' height='500' filter='url(%23s)'/%3E%3C/svg%3E") 0 0/800px 500px repeat;
  animation:tkSmoke 80s linear infinite}
.tickets-edge{position:absolute;left:0;right:0;height:46px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 48' preserveAspectRatio='none'%3E%3Cpath d='M0 0H1440V24.6L1440 24.6L1424 18.4L1411 24.6L1383 17.8L1368 24.6L1352 16.1L1336 26.1L1308 18.1L1274 28L1255 35.9L1232 22.7L1200 25.4L1169 23.3L1138 28L1111 28.8L1091 32.5L1068 37.2L1039 40.4L1009 32.3L986 23.5L959 21.6L932 20.1L907 30.9L889 26.6L866 28.4L839 22.9L811 20.5L790 26.4L772 29.2L745 17.1L734 29.5L696 28.4L661 26.7L650 40.1L618 21.9L597 22.3L559 39.4L533 26.7L503 36.2L466 27.1L437 35.6L401 35.2L375 27.1L354 25.4L327 32.3L310 20.5L276 23L243 27.5L213 24L190 31.2L164 15.1L135 21.2L101 17.4L73 27.2L49 20.7L32 18.8L20 26.9L0 23.5Z' fill='%230e0a08'/%3E%3Cpolyline points='0,23.5 20,26.9 32,18.8 49,20.7 73,27.2 101,17.4 135,21.2 164,15.1 190,31.2 213,24 243,27.5 276,23 310,20.5 327,32.3 354,25.4 375,27.1 401,35.2 437,35.6 466,27.1 503,36.2 533,26.7 559,39.4 597,22.3 618,21.9 650,40.1 661,26.7 696,28.4 734,29.5 745,17.1 772,29.2 790,26.4 811,20.5 839,22.9 866,28.4 889,26.6 907,30.9 932,20.1 959,21.6 986,23.5 1009,32.3 1039,40.4 1068,37.2 1091,32.5 1111,28.8 1138,28 1169,23.3 1200,25.4 1232,22.7 1255,35.9 1274,28 1308,18.1 1336,26.1 1352,16.1 1368,24.6 1383,17.8 1411,24.6 1424,18.4 1440,24.6' fill='none' stroke='%2321100a' stroke-width='10' vector-effect='non-scaling-stroke' transform='translate(0 4)'/%3E%3Cpolyline points='0,23.5 20,26.9 32,18.8 49,20.7 73,27.2 101,17.4 135,21.2 164,15.1 190,31.2 213,24 243,27.5 276,23 310,20.5 327,32.3 354,25.4 375,27.1 401,35.2 437,35.6 466,27.1 503,36.2 533,26.7 559,39.4 597,22.3 618,21.9 650,40.1 661,26.7 696,28.4 734,29.5 745,17.1 772,29.2 790,26.4 811,20.5 839,22.9 866,28.4 889,26.6 907,30.9 932,20.1 959,21.6 986,23.5 1009,32.3 1039,40.4 1068,37.2 1091,32.5 1111,28.8 1138,28 1169,23.3 1200,25.4 1232,22.7 1255,35.9 1274,28 1308,18.1 1336,26.1 1352,16.1 1368,24.6 1383,17.8 1411,24.6 1424,18.4 1440,24.6' fill='none' stroke='%23ffb062' stroke-width='1.2' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E") 0 0/100% 100% no-repeat}
.tickets-edge::after{content:"";position:absolute;inset:0;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 48' preserveAspectRatio='none'%3E%3Cpolyline points='0,23.5 20,26.9 32,18.8 49,20.7 73,27.2 101,17.4 135,21.2 164,15.1 190,31.2 213,24 243,27.5 276,23 310,20.5 327,32.3 354,25.4 375,27.1 401,35.2 437,35.6 466,27.1 503,36.2 533,26.7 559,39.4 597,22.3 618,21.9 650,40.1 661,26.7 696,28.4 734,29.5 745,17.1 772,29.2 790,26.4 811,20.5 839,22.9 866,28.4 889,26.6 907,30.9 932,20.1 959,21.6 986,23.5 1009,32.3 1039,40.4 1068,37.2 1091,32.5 1111,28.8 1138,28 1169,23.3 1200,25.4 1232,22.7 1255,35.9 1274,28 1308,18.1 1336,26.1 1352,16.1 1368,24.6 1383,17.8 1411,24.6 1424,18.4 1440,24.6' fill='none' stroke='%23ff6a1f' stroke-width='7' stroke-opacity='.22' vector-effect='non-scaling-stroke'/%3E%3Cpolyline points='0,23.5 20,26.9 32,18.8 49,20.7 73,27.2 101,17.4 135,21.2 164,15.1 190,31.2 213,24 243,27.5 276,23 310,20.5 327,32.3 354,25.4 375,27.1 401,35.2 437,35.6 466,27.1 503,36.2 533,26.7 559,39.4 597,22.3 618,21.9 650,40.1 661,26.7 696,28.4 734,29.5 745,17.1 772,29.2 790,26.4 811,20.5 839,22.9 866,28.4 889,26.6 907,30.9 932,20.1 959,21.6 986,23.5 1009,32.3 1039,40.4 1068,37.2 1091,32.5 1111,28.8 1138,28 1169,23.3 1200,25.4 1232,22.7 1255,35.9 1274,28 1308,18.1 1336,26.1 1352,16.1 1368,24.6 1383,17.8 1411,24.6 1424,18.4 1440,24.6' fill='none' stroke='%23ff7a2a' stroke-width='3' stroke-opacity='.55' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E") 0 0/100% 100% no-repeat;animation:tkFlicker 3.8s ease-in-out infinite}
.tickets-edge--top{top:-1px}
.tickets-edge--bottom{bottom:-1px;transform:scale(-1,-1)}
.tickets-edge--bottom::after{animation-delay:-1.7s}

/* ---------- Tickets: heading, copy, call to action ---------- */
.tickets-head{grid-area:head;align-self:end;position:relative}
.tickets .section-label{color:var(--paper);margin-bottom:22px}
#tickets-title{font-size:clamp(4.6rem,10.6vw,10.25rem);line-height:.86;text-transform:uppercase;color:var(--paper);margin-left:-.03em;
  text-shadow:.04em .035em 0 var(--black),-.014em -.006em 0 rgba(242,178,0,.42)}
.tickets.is-armed #tickets-title{clip-path:inset(-20% 102% -20% -8%);transition:clip-path 1.15s var(--ease-out) .12s}
.tickets.is-armed.is-head #tickets-title{clip-path:inset(-20% -8% -20% -8%)}
.tickets-lede{max-width:31rem;margin-top:30px;font-size:clamp(.95rem,1.05vw,1.05rem);line-height:1.8;color:rgba(243,230,207,.88)}
.ticket-panel{grid-area:panel;align-self:start;position:relative;z-index:2;margin-top:44px}
.ticket-date{margin:0 0 28px;font-size:.78rem;font-weight:400;letter-spacing:.14em;line-height:1.9;text-transform:uppercase;color:var(--paper)}
.ticket-date::before{content:"";display:block;width:46px;height:2px;margin-bottom:18px;background:var(--ember);box-shadow:0 0 12px var(--ember)}
.tickets .ticket-cta{position:relative;isolation:isolate;display:inline-flex;align-items:center;justify-content:space-between;gap:22px;
  min-height:78px;min-width:min(100%,390px);padding:14px 15px 12px 30px;border:0;
  background:var(--yellow);color:var(--black);
  font-family:var(--serif);font-weight:400;font-size:clamp(1.55rem,2.15vw,2.05rem);line-height:1;letter-spacing:.03em;text-transform:uppercase;
  box-shadow:8px 8px 0 var(--black);
  transition:translate .45s var(--ease-spring),box-shadow .45s var(--ease-spring),background-color .3s ease}
.tickets .ticket-cta::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:linear-gradient(100deg,#ff6a1f 0%,#ff8a34 55%,var(--yellow) 100%);transform:scaleX(0);transform-origin:0 50%;transition:transform .6s var(--ease-out)}
.tickets .ticket-cta::after{content:"";position:absolute;inset:-2px;border:2px solid var(--yellow);opacity:0;pointer-events:none;animation:tkPing 3.4s cubic-bezier(.2,.7,.3,1) 2.2s infinite}
.tickets .ticket-cta:hover,.tickets .ticket-cta:focus-visible{background:var(--yellow);translate:-3px -3px;box-shadow:11px 11px 0 var(--black),0 0 48px rgba(255,106,31,.55)}
.tickets .ticket-cta:hover::before,.tickets .ticket-cta:focus-visible::before{transform:scaleX(1)}
.tickets .ticket-cta:hover::after,.tickets .ticket-cta:focus-visible::after{animation:none}
.tickets .ticket-cta:active{translate:5px 5px;box-shadow:3px 3px 0 var(--black);transition-duration:.12s}
.tickets .ticket-cta:focus-visible{outline:3px solid var(--paper);outline-offset:8px}
.ticket-cta-label{padding-top:2px}
.ticket-cta-arrow{display:grid;place-items:center;flex:none;width:50px;height:50px;border-radius:50%;background:var(--black);color:var(--yellow);
  font-family:var(--sans);font-size:1.3rem;line-height:1;transition:transform .55s var(--ease-spring)}
.tickets .ticket-cta:hover .ticket-cta-arrow,.tickets .ticket-cta:focus-visible .ticket-cta-arrow{transform:rotate(-45deg) scale(1.06)}
.ticket-credit{margin-top:24px;font-size:.75rem;letter-spacing:.04em;color:rgba(234,215,177,.74)}

/* ---------- The ticket: stage, body, stub ---------- */
.ticket-stage{grid-area:stage;align-self:center;justify-self:center;position:relative;z-index:1;width:min(100%,700px);
  container:ticket/inline-size;perspective:1300px;perspective-origin:50% 45%}
.ticket-glow{position:absolute;inset:-30% -22%;z-index:-2;pointer-events:none;
  background:radial-gradient(closest-side,rgba(255,106,31,.5),rgba(155,42,28,.26) 48%,rgba(101,28,24,0));
  opacity:.42;animation:tkBreathe 6.5s ease-in-out infinite alternate}
.ticket-shadow{position:absolute;left:3%;right:3%;top:18%;bottom:-13%;z-index:-1;pointer-events:none;transform-origin:50% 0;
  background:radial-gradient(closest-side,rgba(12,5,3,.74),rgba(12,5,3,.36) 55%,rgba(12,5,3,0))}
.ticket{--gx:66;--gy:10;--fx:0;--fy:0;--holo:.3;--glare:.42;--n:2.5cqw;--main:76%;
  position:relative;display:flex;width:100%;aspect-ratio:100/46;transform-style:preserve-3d;transition:opacity .7s ease}

.ticket-main,.ticket-stub{position:relative;color:var(--black);font-family:var(--sans)}
.ticket-main{flex:0 0 var(--main);display:flex;flex-direction:column;padding:4.4cqw 4.4cqw 3.9cqw 11.6cqw;
  background:
    radial-gradient(ellipse 30% 34% at 0 100%,#140804 0 56%,rgba(70,28,10,.86) 64%,rgba(120,62,26,.34) 80%,rgba(120,62,26,0) 100%),
    radial-gradient(ellipse 75% 85% at 52% 46%,rgba(234,215,177,0) 52%,rgba(122,66,28,.34) 100%),
    radial-gradient(circle at 84% 64%,rgba(150,92,40,.13) 0 5cqw,rgba(150,92,40,0) 11cqw),
    repeating-radial-gradient(circle at 118% 50%,rgba(155,42,28,0) 0 1.15cqw,rgba(155,42,28,.075) 1.15cqw 1.3cqw),
    var(--paper);
  -webkit-mask:radial-gradient(circle at 100% 0,#0000 var(--n),#000 calc(var(--n) + .5px)) 0 0/100% 51% no-repeat,radial-gradient(circle at 100% 100%,#0000 var(--n),#000 calc(var(--n) + .5px)) 0 100%/100% 51% no-repeat;
          mask:radial-gradient(circle at 100% 0,#0000 var(--n),#000 calc(var(--n) + .5px)) 0 0/100% 51% no-repeat,radial-gradient(circle at 100% 100%,#0000 var(--n),#000 calc(var(--n) + .5px)) 0 100%/100% 51% no-repeat;
  clip-path:polygon(0 0,100% 0,100% 100%,19% 100%,17.2% 97.6%,15.4% 98.8%,13.1% 95.2%,11.2% 96.4%,9.6% 92.1%,7.4% 93%,6.2% 88.4%,4.1% 88.9%,3.2% 84.6%,1.4% 84%,0 80.5%)}
.ticket-stub{flex:1 1 0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2.2cqw;padding:3cqw 2cqw;
  background:
    radial-gradient(ellipse 80% 70% at 40% 50%,rgba(228,207,165,0) 45%,rgba(122,66,28,.36) 100%),
    repeating-linear-gradient(45deg,rgba(101,28,24,.07) 0 .22cqw,rgba(101,28,24,0) .22cqw 1.15cqw),
    #e2cca1;
  -webkit-mask:radial-gradient(circle at 0 0,#0000 var(--n),#000 calc(var(--n) + .5px)) 0 0/100% 51% no-repeat,radial-gradient(circle at 0 100%,#0000 var(--n),#000 calc(var(--n) + .5px)) 0 100%/100% 51% no-repeat;
          mask:radial-gradient(circle at 0 0,#0000 var(--n),#000 calc(var(--n) + .5px)) 0 0/100% 51% no-repeat,radial-gradient(circle at 0 100%,#0000 var(--n),#000 calc(var(--n) + .5px)) 0 100%/100% 51% no-repeat;
  transform-origin:0 100%;transition:transform .85s var(--ease-spring)}
/* Paper grain over the print, and the punched perforation (half holes on each side of the tear). */
.ticket-main::before,.ticket-stub::after{content:"";position:absolute;inset:0;z-index:3;pointer-events:none;mix-blend-mode:multiply;opacity:.6;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 220 220'%3E%3Cfilter id='n' x='0' y='0' width='100%25' height='100%25'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .24 0 0 0 0 .14 0 0 0 0 .07 0 0 0 1.15 -.32'/%3E%3C/filter%3E%3Crect width='220' height='220' filter='url(%23n)'/%3E%3C/svg%3E") 0 0/200px 200px}
.ticket-main::after,.ticket-stub::before{content:"";position:absolute;top:3.2cqw;bottom:3.2cqw;width:1.1cqw;z-index:4;pointer-events:none;
  background:radial-gradient(circle closest-side,var(--tk-hole) 0 68%,rgba(42,11,9,0) 78%) 50% 0/1.1cqw 1.75cqw repeat-y}
.ticket-main::after{right:-.55cqw}
.ticket-stub::before{left:-.55cqw}

/* Holographic foil strip with running micro-text. */
.ticket-foil{position:absolute;left:0;top:0;bottom:0;width:7.2cqw;overflow:hidden;background:#8a3b17;z-index:1}
.ticket-foil-sheet{position:absolute;inset:-80% -320%;will-change:transform;
  background:repeating-linear-gradient(122deg,#651c18 0,#ff6a1f 4.5%,#f2b200 9%,#fff0b8 11.5%,#c8904f 15%,#9b2a1c 21%,#651c18 26%);
  transform:translate3d(calc(var(--fx) * 16cqw),calc(var(--fy) * 9cqw),0)}
.ticket-foil::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(90deg,rgba(255,250,235,.22) 0 1px,rgba(255,250,235,0) 1px 3px);mix-blend-mode:overlay}
.ticket-foil-text{position:absolute;left:50%;top:50%;z-index:1;writing-mode:vertical-rl;white-space:nowrap;transform:translate(-50%,-50%) rotate(180deg);
  font-size:max(5px,1.05cqw);letter-spacing:.32em;color:rgba(26,18,13,.62)}

/* Print. */
.ticket-top{position:relative;z-index:2;display:flex;align-items:center;gap:2cqw;min-width:0}
.ticket-admit{flex:none;padding:.5em .55em .45em .85em;background:var(--black);color:var(--paper);font-size:max(8px,1.55cqw);line-height:1;letter-spacing:.32em;text-transform:uppercase}
.ticket-micro{min-width:0;max-width:25cqw;font-size:max(5px,1.02cqw);line-height:1.35;letter-spacing:.24em;text-transform:uppercase;opacity:.7}
.ticket-wordmark{position:relative;z-index:2;display:grid;margin-top:auto;font-family:var(--serif);font-size:12.5cqw;line-height:.92;letter-spacing:0;text-transform:uppercase}
.ticket-wordmark>span{grid-area:1/1}
.ticket-wordmark-ink{color:var(--black);translate:.034em .03em;opacity:.9}
.ticket-wordmark-foil{padding-block:.12em;margin-block:-.12em;color:transparent;-webkit-background-clip:text;background-clip:text;
  background:linear-gradient(100deg,#4a140e 0%,#9b2a1c 15%,#c8904f 29%,#f2b200 39%,#ffe7a3 45%,#ff6a1f 53%,#9b2a1c 65%,#c8904f 79%,#651c18 100%) calc(50% + var(--fx) * 46%) 50%/260% 100%;
  -webkit-background-clip:text;background-clip:text}
.ticket-when{position:relative;z-index:2;margin-top:1.2cqw;font-family:var(--serif);font-size:4.3cqw;line-height:1;letter-spacing:.03em;text-transform:uppercase;color:var(--oxblood)}
.ticket-where{position:relative;z-index:2;margin-top:1.1cqw;font-size:max(8.5px,1.5cqw);line-height:1.4;letter-spacing:.15em;text-transform:uppercase}
.ticket-stamp{position:absolute;top:2.6cqw;right:3.6cqw;z-index:2;display:grid;place-items:center;width:15.5cqw;aspect-ratio:1;
  color:var(--red);rotate:-13deg;opacity:.86;mix-blend-mode:multiply;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 140 140'%3E%3Cfilter id='d' x='0' y='0' width='100%25' height='100%25'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.5' numOctaves='2' seed='4' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.2 2.65'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23d)'/%3E%3C/svg%3E") 0 0/9cqw 9cqw;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 140 140'%3E%3Cfilter id='d' x='0' y='0' width='100%25' height='100%25'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.5' numOctaves='2' seed='4' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.2 2.65'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23d)'/%3E%3C/svg%3E") 0 0/9cqw 9cqw}
.ticket-stamp svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.ticket-stamp text{font-family:var(--sans);letter-spacing:.04em}
.ticket-stamp-hi{position:relative;font-family:'Rozha One',serif;font-size:5.6cqw;line-height:1;translate:0 .08em}
.ticket-reg{position:absolute;z-index:2;width:2.6cqw;aspect-ratio:1;opacity:.85;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke-width='1.1'%3E%3Cg stroke='%239b2a1c' transform='translate(.9 .7)'%3E%3Ccircle cx='12' cy='12' r='5.5'/%3E%3Cpath d='M12 1v22M1 12h22'/%3E%3C/g%3E%3Cg stroke='%231a120d'%3E%3Ccircle cx='12' cy='12' r='5.5'/%3E%3Cpath d='M12 1v22M1 12h22'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E") center/contain no-repeat}
.ticket-reg--a{right:3cqw;bottom:3.2cqw}
.ticket-reg--stub{top:2.4cqw;left:50%;translate:-50% 0}
.ticket-swatches{position:absolute;right:3.65cqw;bottom:6.6cqw;z-index:2;display:flex;flex-direction:column;gap:.38cqw}
.ticket-swatches i{display:block;width:1.3cqw;height:1.3cqw;background:var(--c)}
.ticket-swatches i:nth-child(1){--c:var(--ember)}.ticket-swatches i:nth-child(2){--c:var(--yellow)}.ticket-swatches i:nth-child(3){--c:var(--red)}.ticket-swatches i:nth-child(4){--c:var(--black)}
.ticket-stub-admit{position:absolute;right:1.5cqw;top:50%;writing-mode:vertical-rl;translate:0 -50%;white-space:nowrap;font-size:max(6px,1.2cqw);letter-spacing:.34em;text-transform:uppercase}
.ticket-stub-date{display:flex;flex-direction:column;align-items:center;font-family:var(--serif);font-size:6.4cqw;line-height:1}
.ticket-stub-date span:nth-child(2){color:var(--red)}
.ticket-stub-mark{color:var(--red);font-size:3.2cqw;line-height:1}

/* Light: a pointer-tracked specular glare and an iridescent heat-foil sheen. */
.ticket-holo,.ticket-glare{position:absolute;pointer-events:none}
.ticket-holo{inset:0;z-index:5;mix-blend-mode:color;opacity:var(--holo);
  background:repeating-linear-gradient(118deg,rgba(255,106,31,0) 0,rgba(255,106,31,.85) 3cqw,rgba(242,178,0,.9) 6cqw,rgba(255,226,140,.8) 7.6cqw,rgba(190,40,28,.8) 10.6cqw,rgba(101,28,24,0) 13.6cqw) calc(var(--fx) * 26cqw) 0/100% 100%;
  -webkit-mask:radial-gradient(circle 40cqw at calc(var(--gx) * 1cqw) calc(var(--gy) * 1cqw),#000,rgba(0,0,0,.15) 60%,transparent);
          mask:radial-gradient(circle 40cqw at calc(var(--gx) * 1cqw) calc(var(--gy) * 1cqw),#000,rgba(0,0,0,.15) 60%,transparent)}
.ticket-glare{left:-150cqw;top:-150cqw;width:300cqw;height:300cqw;z-index:6;border-radius:50%;opacity:var(--glare);will-change:transform;mix-blend-mode:multiply;
  background:radial-gradient(closest-side,#fff 0,#fff 4%,#f6ecdd 11%,#e2cbab 26%,#d2b38f 46%,#cdad88 100%);
  transform:translate3d(calc(var(--gx) * 1cqw),calc(var(--gy) * 1cqw),0)}
.ticket-stub .ticket-glare{--sdx:76;--sdy:0;transform:translate3d(calc((var(--gx) - var(--sdx)) * 1cqw),calc((var(--gy) - var(--sdy)) * 1cqw),0)}

/* Singed corner with a live ember rim, and the heat that leaks through the tear. */
.ticket-burn{position:absolute;left:0;top:0;width:var(--main);height:100%;z-index:2;overflow:visible;pointer-events:none;
  fill:none;stroke:#ff8a3a;stroke-width:1.6px;stroke-linejoin:round;
  filter:drop-shadow(0 0 .5cqw rgba(255,106,31,.95)) drop-shadow(0 0 1.4cqw rgba(155,42,28,.85));animation:tkEmber 3.4s ease-in-out infinite}
.ticket-burn polyline{vector-effect:non-scaling-stroke}
.ticket-burn-port{display:none}
.ticket-seam{position:absolute;left:var(--main);top:5%;bottom:5%;width:2cqw;margin-left:-1cqw;pointer-events:none;opacity:0;
  background:linear-gradient(90deg,rgba(255,106,31,0),#ff6a1f 38%,#ffd88a 50%,#ff6a1f 62%,rgba(255,106,31,0));
  transform:translateZ(-3px);transition:opacity .45s ease}

/* Hovering or focusing the call to action starts tearing the stub off. */
.ticket-stage.is-peel .ticket-stub,.tickets:has(.ticket-cta:hover) .ticket-stub,.tickets:has(.ticket-cta:focus-visible) .ticket-stub{transform:translate3d(1.3cqw,-.5cqw,0) rotate(4.2deg) rotateY(-9deg)}
.ticket-stage.is-torn .ticket-stub{transform:translate3d(4.6cqw,-2.6cqw,0) rotate(11deg) rotateY(-16deg);transition-duration:.55s}
.ticket-stage.is-peel .ticket-seam,.ticket-stage.is-torn .ticket-seam,.tickets:has(.ticket-cta:hover) .ticket-seam,.tickets:has(.ticket-cta:focus-visible) .ticket-seam{opacity:1}

/* Portrait ticket for narrow stages: stub along the bottom. */
@container ticket (max-width:520px){
  .ticket{--n:4cqw;--main:73%;aspect-ratio:100/134;flex-direction:column}
  .ticket-main{flex-basis:var(--main);padding:7cqw 6cqw 6cqw 15cqw;
    background:
      radial-gradient(ellipse 34% 19% at 100% 0,#140804 0 56%,rgba(70,28,10,.86) 64%,rgba(120,62,26,.34) 80%,rgba(120,62,26,0) 100%),
      radial-gradient(ellipse 80% 80% at 50% 50%,rgba(234,215,177,0) 52%,rgba(122,66,28,.34) 100%),
      radial-gradient(circle at 30% 40%,rgba(150,92,40,.12) 0 8cqw,rgba(150,92,40,0) 18cqw),
      repeating-radial-gradient(circle at 50% 135%,rgba(155,42,28,0) 0 1.6cqw,rgba(155,42,28,.07) 1.6cqw 1.85cqw),
      var(--paper);
    -webkit-mask:radial-gradient(circle at 0 100%,#0000 var(--n),#000 calc(var(--n) + .5px)) 0 0/51% 100% no-repeat,radial-gradient(circle at 100% 100%,#0000 var(--n),#000 calc(var(--n) + .5px)) 100% 0/51% 100% no-repeat;
            mask:radial-gradient(circle at 0 100%,#0000 var(--n),#000 calc(var(--n) + .5px)) 0 0/51% 100% no-repeat,radial-gradient(circle at 100% 100%,#0000 var(--n),#000 calc(var(--n) + .5px)) 100% 0/51% 100% no-repeat;
    clip-path:polygon(0 0,78% 0,80.5% 1.6%,83% .8%,85.2% 3.2%,87.8% 2.4%,89.5% 5.1%,92.4% 4.6%,93.6% 7.7%,96.6% 7.9%,97.8% 11.6%,100% 12.6%,100% 100%,0 100%)}
  .ticket-stub{flex-direction:row;justify-content:space-between;gap:4cqw;padding:4cqw 7cqw 4cqw 8cqw;transform-origin:0 0;
    -webkit-mask:radial-gradient(circle at 0 0,#0000 var(--n),#000 calc(var(--n) + .5px)) 0 0/51% 100% no-repeat,radial-gradient(circle at 100% 0,#0000 var(--n),#000 calc(var(--n) + .5px)) 100% 0/51% 100% no-repeat;
            mask:radial-gradient(circle at 0 0,#0000 var(--n),#000 calc(var(--n) + .5px)) 0 0/51% 100% no-repeat,radial-gradient(circle at 100% 0,#0000 var(--n),#000 calc(var(--n) + .5px)) 100% 0/51% 100% no-repeat}
  .ticket-main::after,.ticket-stub::before{top:auto;bottom:auto;left:4.4cqw;right:4.4cqw;width:auto;height:1.8cqw;
    background:radial-gradient(circle closest-side,var(--tk-hole) 0 68%,rgba(42,11,9,0) 78%) 0 50%/2.6cqw 1.8cqw repeat-x}
  .ticket-main::after{bottom:-.9cqw}
  .ticket-stub::before{top:-.9cqw}
  .ticket-foil{width:9.4cqw}
  .ticket-foil-text{font-size:1.75cqw}
  .ticket-top{flex-direction:column;align-items:flex-start;gap:2.6cqw}
  .ticket-admit{font-size:3cqw}
  .ticket-micro{max-width:46cqw;font-size:1.9cqw}
  .ticket-wordmark{font-size:17.4cqw}
  .ticket-when{margin-top:2cqw;font-size:7.6cqw}
  .ticket-where{max-width:54cqw;margin-top:2cqw;font-size:3.05cqw;text-wrap:balance}
  .ticket-stamp{top:15cqw;right:5.5cqw;width:27cqw;-webkit-mask-size:15cqw 15cqw;mask-size:15cqw 15cqw}
  .ticket-stamp-hi{font-size:9.6cqw}
  .ticket-reg{width:4.4cqw}
  .ticket-reg--a{right:5cqw;bottom:5cqw}
  .ticket-swatches{right:6.1cqw;bottom:11.4cqw;gap:.7cqw}
  .ticket-swatches i{width:2.2cqw;height:2.2cqw}
  .ticket-stub-admit{position:static;writing-mode:horizontal-tb;translate:none;max-width:16cqw;white-space:normal;font-size:2.5cqw;line-height:1.5}
  .ticket-stub-date{flex-direction:row;gap:2.2cqw;font-size:11cqw}
  .ticket-stub-mark{font-size:6.5cqw}
  .ticket-reg--stub{top:3cqw}
  .ticket-stub .ticket-glare{--sdx:0;--sdy:97.8}
  .ticket-burn{width:100%;height:var(--main)}
  .ticket-burn-land{display:none}
  .ticket-burn-port{display:inline}
  .ticket-seam{left:5%;right:5%;top:var(--main);bottom:auto;width:auto;height:2.6cqw;margin:-1.3cqw 0 0;
    background:linear-gradient(180deg,rgba(255,106,31,0),#ff6a1f 38%,#ffd88a 50%,#ff6a1f 62%,rgba(255,106,31,0))}
  .ticket-stage.is-peel .ticket-stub,.tickets:has(.ticket-cta:hover) .ticket-stub,.tickets:has(.ticket-cta:focus-visible) .ticket-stub{transform:translate3d(0,1.4cqw,0) rotate(3.2deg) rotateX(-10deg)}
  .ticket-stage.is-torn .ticket-stub{transform:translate3d(1.5cqw,4.5cqw,0) rotate(8deg) rotateX(-18deg)}
}

/* Entrance, armed by js/ticket.mjs only (no JS or reduced motion: the final state shows). */
.tickets.is-armed .ticket{opacity:0;will-change:transform}
.tickets.is-armed .ticket-shadow{will-change:transform}
.tickets.is-armed.is-live .ticket{opacity:1}
.tickets.is-armed .ticket-stamp{opacity:0}
.tickets.is-armed.is-live .ticket-stamp{opacity:.86;animation:tkStamp .5s cubic-bezier(.55,0,.8,.2) 1.05s both}

/* ---------- Footer: the finale ---------- */
.footer{position:relative;isolation:isolate;overflow:clip;container-type:inline-size;padding:clamp(84px,8vw,128px) 0 26px;border-top:0;
  background:linear-gradient(180deg,var(--background) 0,var(--background) 35%,#170d09 100%)}
.footer-embers{position:absolute;inset:0;z-index:-1;display:block;width:100%;height:100%;pointer-events:none}
.footer-sparks{position:absolute;inset:0;z-index:3;display:block;width:100%;height:100%;pointer-events:none}
.footer-heat{position:absolute;left:-15%;right:-15%;bottom:-40%;height:88%;z-index:-2;pointer-events:none;
  background:radial-gradient(closest-side,rgba(255,106,31,.27),rgba(155,42,28,.16) 46%,rgba(101,28,24,0));animation:fHeat 9s ease-in-out infinite alternate}
.footer-top{position:relative;z-index:2;display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:20px 40px;padding:0 7%}
.footer-meta{display:grid;justify-items:end;gap:10px;text-align:right}
.footer-kicker{display:flex;align-items:center;gap:12px;color:var(--ochre)}
.footer-kicker-dot{flex:none;width:8px;height:8px;border-radius:50%;background:var(--ember);box-shadow:0 0 10px var(--ember),0 0 22px rgba(255,106,31,.6);animation:fPulse 2.4s ease-in-out infinite}
.footer-when{grid-column:1;font-size:.75rem;line-height:1.8;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
/* The wordmark matches the hero's: paper ink with an oxblood misregistration offset. */
.footer .footer-wordmark{position:relative;z-index:1;display:block;font-family:var(--serif);font-weight:400;font-size:clamp(2.4rem,1.5rem + 3.4vw,4.6rem);line-height:1;letter-spacing:0;font-variant-ligatures:none;text-transform:uppercase;white-space:nowrap;color:var(--paper);text-shadow:.032em .028em 0 var(--oxblood)}
.footer .footer-wordmark:focus-visible{outline:3px solid var(--paper);outline-offset:6px}

.footer .credits{position:relative;z-index:1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin:clamp(42px,5cqi,76px) 7% 0;padding:0;border-top:1px solid var(--line)}
.footer .credit{position:relative;padding:24px 22px 28px;border-left:1px solid var(--line)}
.footer .credit:first-child{border-left:0;padding-left:0}
.footer .credit::before{content:"";position:absolute;left:0;right:0;top:-1px;height:2px;pointer-events:none;
  background:linear-gradient(90deg,var(--ember),var(--yellow));box-shadow:0 0 14px rgba(255,106,31,.7);transform:scaleX(0);transform-origin:0 50%;transition:transform .7s var(--ease-out)}
.footer .credit::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;opacity:0;transition:opacity .5s ease;
  background:radial-gradient(110% 90% at 20% 0,rgba(255,106,31,.13),rgba(255,106,31,0) 62%)}
.footer .credit>.eyebrow{display:block;margin-bottom:14px;font-size:.7rem;font-weight:400;letter-spacing:.14em;color:var(--muted);transition:color .4s ease,letter-spacing .6s var(--ease-out)}
.footer .credit-name{display:flex;align-items:center;gap:14px;min-height:58px;font-family:var(--serif);font-size:clamp(1.2rem,1.9cqi,1.75rem);line-height:1.1;letter-spacing:.02em;text-transform:uppercase;color:var(--text)}
.footer .credit-name span{transition:translate .55s var(--ease-spring),color .3s ease}
.footer .credit-name img{flex:none;width:58px;height:58px;outline:1px solid var(--line);outline-offset:4px;transition:outline-color .4s ease,translate .55s var(--ease-spring)}
.footer .credit:hover::before{transform:scaleX(1)}
.footer .credit:hover::after{opacity:1}
.footer .credit:hover>.eyebrow{color:var(--ochre);letter-spacing:.2em}
.footer .credit:hover .credit-name span{translate:0 -3px;color:var(--paper)}
.footer .credit:hover .credit-name img{outline-color:var(--ember);translate:0 -3px}

.footer .footer-bottom{position:relative;z-index:1;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px 20px;margin:0 7%;padding-top:18px;border-top:1px solid var(--line);
  font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.footer-toplink{display:inline-flex;align-items:center;gap:14px;padding:6px 0;color:var(--text)}
.footer-toplink-icon{position:relative;display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--line);border-radius:50%;
  transition:border-color .3s ease,box-shadow .4s ease}
.footer-toplink-icon b{font-family:var(--sans);font-weight:400;font-size:1rem;line-height:1;transition:translate .45s var(--ease-spring),color .3s ease}
.footer-toplink-icon i{position:absolute;left:50%;top:50%;width:4px;height:4px;margin:-2px 0 0 -2px;border-radius:50%;opacity:0;pointer-events:none;
  background:#ffd98a;box-shadow:0 0 6px #ff6a1f,0 0 12px rgba(255,106,31,.8)}
.footer-toplink-icon i:nth-child(2){--dx:-8px}
.footer-toplink-icon i:nth-child(3){--dx:7px}
.footer-toplink:hover .footer-toplink-icon,.footer-toplink:focus-visible .footer-toplink-icon{border-color:var(--ember);box-shadow:0 0 18px rgba(255,106,31,.45),inset 0 0 10px rgba(255,106,31,.25)}
.footer-toplink:hover b,.footer-toplink:focus-visible b{translate:0 -3px;color:var(--yellow)}
.footer-toplink:hover i,.footer-toplink:focus-visible i{animation:fSpark 1.1s cubic-bezier(.2,.6,.4,1) infinite}
.footer-toplink:hover i:nth-child(2),.footer-toplink:focus-visible i:nth-child(2){animation-delay:.37s}
.footer-toplink:hover i:nth-child(3),.footer-toplink:focus-visible i:nth-child(3){animation-delay:.74s}
.footer-toplink:focus-visible{outline:3px solid var(--paper);outline-offset:4px}

/* ---------- Responsive ---------- */
@media(max-width:1100px){
  .tickets{grid-template-columns:minmax(0,1fr);grid-template-areas:"head" "stage" "panel";grid-template-rows:auto;row-gap:clamp(48px,7vw,72px)}
  .ticket-panel{margin-top:0}
  .ticket-stage{width:min(100%,680px)}
}
@media(max-width:900px){
  .footer .credits{grid-template-columns:repeat(2,minmax(0,1fr))}
  .footer .credit:nth-child(3){border-left:0;padding-left:0}
  .footer .credit:nth-child(n+3){border-top:1px solid var(--line)}
}
@media(max-width:600px){
  .tickets{padding-block:96px 104px;row-gap:46px}
  .tickets-edge{height:30px}
  .tickets .section-label{margin-bottom:18px}
  #tickets-title{font-size:clamp(4rem,25vw,6.4rem)}
  .tickets-lede{margin-top:22px;font-size:.95rem}
  .ticket-stage{width:min(100%,430px)}
  .tickets .ticket-cta{display:flex;width:100%;min-width:0;min-height:74px;padding-left:24px;font-size:1.6rem}
  .ticket-date{margin-bottom:24px}
  .footer{padding-top:76px}
  .footer-top{padding:0 6%}
  .footer-meta{justify-items:start;text-align:left}
  .footer .credits{margin:38px 6% 0}
  .footer .credit{padding:20px 14px 22px}
  .footer .credit-name{flex-direction:column;align-items:flex-start;gap:10px;font-size:1.15rem}
  .footer .credit-name img{width:52px;height:52px}
  .footer .footer-bottom{margin:0 6%}
}
@media(max-width:360px){
  .footer .credit{padding-inline:10px}
  .footer .credit:nth-child(odd){padding-left:0}
  .footer .credit>.eyebrow{font-size:.62rem;letter-spacing:.08em}
  .footer .credit-name{font-size:1.02rem}
  .footer .footer-bottom{font-size:.66rem;letter-spacing:.08em}
}
@media(hover:none){
  .footer .credit:hover::before{transform:scaleX(0)}
}

/* ---------- Keyframes ---------- */
@keyframes tkDrift{0%{transform:translate3d(0,0,0) scale(1)}100%{transform:translate3d(-7vmax,-5vmax,0) scale(1.12)}}
@keyframes tkSmoke{to{transform:translate3d(-800px,0,0)}}
@keyframes tkFlicker{0%,100%{opacity:.75}18%{opacity:1}31%{opacity:.55}47%{opacity:.95}66%{opacity:.62}82%{opacity:1}}
@keyframes tkBreathe{from{transform:scale(.94)}to{transform:scale(1.06)}}
@keyframes tkEmber{0%,100%{opacity:1}24%{opacity:.62}41%{opacity:.95}58%{opacity:.7}77%{opacity:1}}
@keyframes tkPing{0%{opacity:.85;transform:scale(1)}70%,100%{opacity:0;transform:scale(1.08,1.42)}}
@keyframes tkStamp{0%{opacity:0;transform:scale(2.5) rotate(-12deg)}72%{opacity:.9;transform:scale(.95)}100%{opacity:.86;transform:none}}
@keyframes fHeat{from{transform:translate3d(-3%,0,0) scale(1)}to{transform:translate3d(3%,-4%,0) scale(1.1)}}
@keyframes fPulse{0%,100%{opacity:.55;transform:scale(.85)}50%{opacity:1;transform:scale(1.15)}}
@keyframes fSpark{0%{opacity:0;transform:translate(0,6px) scale(1)}18%{opacity:1}100%{opacity:0;transform:translate(var(--dx,2px),-36px) scale(.3)}}

/* ---------- Reduced motion: static final states ---------- */
:root[data-motion="reduce"] .footer-embers,:root[data-motion="reduce"] .footer-sparks{display:none}
:root[data-motion="reduce"] .ticket-stub{transform:none!important}
:root[data-motion="reduce"] .ticket-seam{opacity:0!important}
@media(prefers-reduced-motion:reduce){.footer-embers,.footer-sparks{display:none}.ticket-stub{transform:none!important}.ticket-seam{opacity:0!important}}
