/* Mega Events: The National Events Guide.
   Light paper, ink type, a violet and orange season palette. The motif is the
   ticket: perforations, stubs and punch holes, plus the planner heat squares. */
:root{
  --paper:#FFFFFF; --tint:#F8F4FC; --tint2:#FFF5EE; --ink:#221430; --ink2:#47385A; --muted:#6A5C78;
  --v:#7A2FB8; --v-d:#5B1F8C; --v-l:#EDE3F7; --o:#E8620C; --o-d:#B3470A; --o-l:#FFE7D6;
  --rule:#E6DDEF; --night:#1A0F26; --night2:#2A1A3C;
  --lv0:#F4EEF9; --lv1:#E4D5F2; --lv2:#CDB2E8; --lv3:#B087D9; --lv4:#955ACB; --lv5:#7A2FB8; --lv6:#5E2093; --lv7:#40146A;
  --disp:'Bricolage Grotesque','Segoe UI',system-ui,sans-serif;
  --body:'Albert Sans','Segoe UI',system-ui,sans-serif;
  --mono:'Azeret Mono',ui-monospace,Consolas,monospace;
  --wrap:1240px; --gut:clamp(16px,3.2vw,40px); --r:18px;
  --ease:cubic-bezier(.2,.8,.2,1);
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:90px;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font:17px/1.62 var(--body);-webkit-font-smoothing:antialiased;overflow-x:hidden}
img,video,svg{max-width:100%;display:block}
a{color:var(--v-d)}
a:hover{color:var(--o-d)}
h1,h2,h3,h4{font-family:var(--disp);line-height:1.04;margin:0;letter-spacing:-.02em;text-wrap:balance;color:var(--ink)}
p{margin:0 0 1em}
ul,ol{margin:0;padding:0;list-style:none}
:focus-visible{outline:3px solid var(--o);outline-offset:3px;border-radius:6px}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 var(--gut)}
.vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:12px;top:-60px;background:var(--ink);color:#fff;padding:10px 16px;border-radius:10px;z-index:99;text-decoration:none}
.skip:focus{top:12px}
.kicker{font:600 11.5px/1.3 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--v);margin:0 0 12px}
.mono{font:600 11px/1.3 var(--mono);letter-spacing:.14em;text-transform:uppercase}
.fine{font-size:13.5px;color:var(--muted);max-width:78ch;margin-top:18px}
.center{text-align:center;margin-top:34px}
.btn{display:inline-flex;align-items:center;gap:10px;min-height:48px;padding:0 22px;border-radius:999px;background:var(--ink);color:#fff;
  font:700 15px/1 var(--body);text-decoration:none;border:2px solid var(--ink);transition:transform .25s var(--ease),background .25s}
.btn:hover{background:var(--v);border-color:var(--v);color:#fff;transform:translateY(-2px)}
.btn svg{transition:transform .25s var(--ease)}
.btn:hover svg{transform:translateX(4px)}
.btn.ghost{background:transparent;color:var(--ink)}
.btn.ghost:hover{background:var(--ink);color:#fff;border-color:var(--ink)}
.btn.light{background:#fff;color:var(--ink);border-color:#fff}
.btn.light:hover{background:var(--o);border-color:var(--o);color:#1A0F26}

/* top strip and launcher */
.strip{background:var(--tint);border-bottom:1px solid var(--rule);font-size:13.5px;position:relative;z-index:40}
.strip-in{display:flex;align-items:center;gap:18px;min-height:44px}
.strip-now{margin:0;display:flex;align-items:center;gap:9px;color:var(--ink2);font:500 12px/1.3 var(--mono);letter-spacing:.04em}
.strip-now a{color:var(--v-d);font-weight:600}
.pulse{width:9px;height:9px;border-radius:50%;background:var(--o);box-shadow:0 0 0 0 rgba(232,98,12,.5);animation:pulse 2.4s infinite;flex:0 0 auto}
@keyframes pulse{70%{box-shadow:0 0 0 9px rgba(232,98,12,0)}100%{box-shadow:0 0 0 0 rgba(232,98,12,0)}}
.util{margin-left:auto;display:flex;gap:18px}
.util a{color:var(--ink2);text-decoration:none;font-weight:600}
.util a:hover{color:var(--v)}
.launch{position:relative}
.launch summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:9px;min-height:32px;padding:0 13px;border-radius:999px;
  border:1.5px solid var(--ink);font:700 12.5px/1 var(--body);color:var(--ink);background:#fff}
.launch summary::-webkit-details-marker{display:none}
.launch summary:hover,.launch[open] summary{background:var(--ink);color:#fff}
.launch-i{display:grid;grid-template-columns:repeat(2,5px);gap:2px}
.launch-i i{width:5px;height:5px;border-radius:1.5px;background:var(--o)}
.launch-i i:nth-child(2),.launch-i i:nth-child(3){background:var(--v)}
.launch summary:hover .launch-i i,.launch[open] .launch-i i{background:#fff}
.launchpanel{position:absolute;left:0;top:calc(100% + 10px);width:min(920px,calc(100vw - 2*var(--gut)));background:#fff;border:1px solid var(--rule);
  border-radius:var(--r);box-shadow:0 24px 60px rgba(34,20,48,.18);padding:22px;display:grid;grid-template-columns:repeat(4,1fr);gap:18px 22px;z-index:60}
.launchpanel .lg{display:flex;flex-direction:column;gap:1px}
.launchpanel h4{font:600 10.5px/1.3 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--v);margin:0 0 6px}
.launchpanel a{text-decoration:none;font-size:14px;padding:3px 0;color:var(--ink2)}
.launchpanel a:hover{color:var(--o-d)}
.launchpanel a[aria-current]{font-weight:700;color:var(--v-d)}
.launchpanel a[aria-current]::after{content:" (you are here)";font:400 11px var(--mono);color:var(--muted)}
@media (max-width:860px){.launchpanel{grid-template-columns:repeat(2,1fr)}}
@media (max-width:620px){.strip-now{display:none}.util{gap:12px;font-size:13px}
  .launchpanel{position:fixed;left:var(--gut);right:var(--gut);top:52px;width:auto;max-height:76vh;overflow:auto;padding:16px;gap:12px 14px}}

/* masthead */
.mast{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.94);backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--rule)}
.mast-in{display:flex;align-items:center;gap:24px;min-height:76px}
.brand{display:block;flex:0 0 auto;line-height:0}
.brand img{width:210px;height:auto}
.mainnav{margin-left:auto;display:flex;gap:4px;flex-wrap:wrap}
.mainnav a{position:relative;text-decoration:none;color:var(--ink);font:600 15px/1 var(--body);padding:12px 13px;border-radius:999px}
.mainnav a::after{content:"";position:absolute;left:50%;bottom:4px;width:6px;height:6px;border-radius:50%;background:var(--o);transform:translateX(-50%) scale(0);transition:transform .25s var(--ease)}
.mainnav a:hover::after,.mainnav a[aria-current]::after{transform:translateX(-50%) scale(1)}
.mainnav a:hover{color:var(--v)}
.mainnav a[aria-current]{color:var(--v-d)}
.navtoggle{display:none;margin-left:auto;align-items:center;gap:9px;min-height:44px;padding:0 16px;border-radius:999px;border:1.5px solid var(--ink);
  background:#fff;color:var(--ink);font:700 14px/1 var(--body);cursor:pointer}
.nt-i{display:grid;gap:4px}
.nt-i i{display:block;width:16px;height:2px;background:currentColor;border-radius:2px;transition:transform .25s}
.navtoggle[aria-expanded="true"] .nt-i i:first-child{transform:translateY(3px) rotate(45deg)}
.navtoggle[aria-expanded="true"] .nt-i i:last-child{transform:translateY(-3px) rotate(-45deg)}
@media (max-width:980px){
  .navtoggle{display:inline-flex}
  .brand img{width:170px}
  .mast-in{flex-wrap:wrap;min-height:66px}
  .mainnav{display:none;width:100%;flex-direction:column;gap:0;padding:0 0 14px}
  .mainnav.open{display:flex}
  .mainnav a{padding:14px 4px;border-radius:0;border-top:1px solid var(--rule);font-size:17px}
  .mainnav a::after{left:auto;right:6px;top:50%;bottom:auto;transform:translateY(-50%) scale(0)}
  .mainnav a:hover::after,.mainnav a[aria-current]::after{transform:translateY(-50%) scale(1)}
}

/* sections */
.sec{padding:clamp(64px,8vw,112px) 0}
.sh{max-width:760px;margin-bottom:30px}
.sh h2{font-size:clamp(2.1rem,1.2rem + 3.2vw,3.7rem);font-weight:800}
.sh-note{margin:16px 0 0;font-size:18px;color:var(--ink2)}
.reveal{opacity:0;transform:translateY(26px);transition:opacity .8s var(--ease),transform .8s var(--ease)}
.reveal.in{opacity:1;transform:none}

/* hero */
.hero{position:relative;overflow:hidden;padding:clamp(40px,6vw,84px) 0 clamp(56px,7vw,96px);
  background:radial-gradient(1100px 520px at 88% -10%,var(--v-l),transparent 62%),radial-gradient(700px 400px at -10% 110%,var(--o-l),transparent 60%),#fff}
.hero-in{position:relative;display:grid;grid-template-columns:1.08fr .92fr;gap:clamp(30px,5vw,72px);align-items:center}
.hero .kicker{display:flex;align-items:center;gap:10px}
.dot{width:10px;height:10px;border-radius:3px;background:var(--o);transform:rotate(45deg)}
.hero-h{font-size:clamp(3rem,1.2rem + 6.4vw,6.6rem);font-weight:800;line-height:.92;letter-spacing:-.045em;font-variation-settings:"opsz" 96}
.hero-h .ln{display:block}
.hero-h em{font-style:normal;position:relative;white-space:nowrap}
.hl{color:var(--o-d)}
.hl::after{content:"";position:absolute;left:-2%;right:-2%;bottom:.04em;height:.16em;border-radius:99px;background:var(--o);opacity:.28;z-index:-1;
  transform-origin:left;animation:swipe 1.1s .5s var(--ease) both}
.hl2{color:var(--v)}
@keyframes swipe{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.lede{font-size:clamp(18px,1rem + .5vw,21px);color:var(--ink2);max-width:46ch;margin-top:24px}
.cta{display:flex;gap:12px;flex-wrap:wrap;margin-top:28px}
.facts{display:flex;gap:28px;margin:36px 0 0;padding:20px 0 0;border-top:1px dashed var(--rule);flex-wrap:wrap}
.facts div{display:flex;flex-direction:column-reverse}
.facts dt{font:500 11px/1.3 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);max-width:16ch}
.facts dd{margin:0;font:800 40px/1 var(--disp);color:var(--ink)}
.confetti{position:absolute;inset:0;pointer-events:none}
.confetti i{position:absolute;top:-30px;left:var(--x);width:10px;height:16px;border-radius:2px;background:var(--o);opacity:.5;
  transform:rotate(var(--r));animation:fall 14s var(--d) linear infinite}
.confetti i:nth-child(3n){background:var(--v);width:8px;height:8px;border-radius:50%}
.confetti i:nth-child(4n){background:var(--ink);width:12px;height:5px}
@keyframes fall{to{transform:translateY(110vh) rotate(calc(var(--r) + 540deg))}}

/* ticket */
.ticket{position:relative;display:grid;grid-template-columns:1fr 176px;border-radius:24px;background:var(--night);color:#fff;
  box-shadow:0 40px 80px -30px rgba(58,18,102,.55);transform:rotate(-2.2deg) perspective(1200px) rotateY(var(--ry,0deg)) rotateX(var(--rx,0deg));
  transition:transform .5s var(--ease);
  -webkit-mask:radial-gradient(circle 16px at calc(100% - 176px) 0,#0000 98%,#000) top/100% 51% no-repeat,radial-gradient(circle 16px at calc(100% - 176px) 100%,#0000 98%,#000) bottom/100% 51% no-repeat;
  mask:radial-gradient(circle 16px at calc(100% - 176px) 0,#0000 98%,#000) top/100% 51% no-repeat,radial-gradient(circle 16px at calc(100% - 176px) 100%,#0000 98%,#000) bottom/100% 51% no-repeat}
.ticket-media{position:relative;overflow:hidden;border-radius:24px 0 0 24px;min-height:440px}
.ticket-media video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;animation:push 22s ease-in-out infinite alternate}
@keyframes push{from{transform:scale(1.02)}to{transform:scale(1.14) translate(-2%,-1%)}}
.fx-duo video{filter:grayscale(1) contrast(1.15) brightness(1.05)}
.duotone{position:absolute;inset:0;background:linear-gradient(160deg,#7A2FB8 0%,#3A1266 55%,#E8620C 120%);mix-blend-mode:color;opacity:.9;pointer-events:none}
.fx-duo::after{content:"";position:absolute;inset:0;background:linear-gradient(200deg,rgba(232,98,12,.55),transparent 45%);mix-blend-mode:screen;pointer-events:none}
.ticket-stub{position:relative;padding:26px 20px;display:flex;flex-direction:column;border-left:2px dashed rgba(255,255,255,.28)}
.ticket-stub .mono{color:#FFB98A}
.stub-m{font:800 34px/1 var(--disp);margin:18px 0 8px;letter-spacing:-.03em}
.stub-c{font-size:13.5px;line-height:1.45;color:#D9CCE8}
.spark12{display:flex;align-items:flex-end;gap:3px;height:96px;margin:auto 0 10px}
.spark12 li{position:relative;flex:1;height:var(--h);min-height:8px;background:rgba(255,255,255,.26);border-radius:3px 3px 0 0;transition:background .3s}
.spark12 li b{position:absolute;bottom:-17px;left:50%;transform:translateX(-50%);font:500 9px/1 var(--mono);color:#BFAED3}
.spark12 li.now{background:var(--o)}
.spark12 li.now b{color:#fff}
.stub-f{font-size:11px;line-height:1.4;color:#BFAED3;margin:20px 0 0}
.vbtn{position:absolute;left:16px;bottom:16px;z-index:3;display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:0 14px;border-radius:999px;
  border:0;background:rgba(255,255,255,.92);color:var(--ink);font:700 13px/1 var(--body);cursor:pointer}
.vbtn:hover{background:#fff}
.vbtn .i-pause{display:none}
.vbtn[aria-pressed="true"] .i-play{display:none}
.vbtn[aria-pressed="true"] .i-pause{display:inline}
.vbtn[hidden]{display:none}
@media (max-width:980px){.hero-in{grid-template-columns:1fr}.ticket{max-width:640px}}
@media (max-width:560px){
  .ticket{grid-template-columns:1fr;transform:rotate(-1.2deg);
    -webkit-mask:radial-gradient(circle 14px at 0 62%,#0000 98%,#000) left/51% 100% no-repeat,radial-gradient(circle 14px at 100% 62%,#0000 98%,#000) right/51% 100% no-repeat;
    mask:radial-gradient(circle 14px at 0 62%,#0000 98%,#000) left/51% 100% no-repeat,radial-gradient(circle 14px at 100% 62%,#0000 98%,#000) right/51% 100% no-repeat}
  .ticket-media{min-height:300px;border-radius:24px 24px 0 0}
  .ticket-stub{border-left:0;border-top:2px dashed rgba(255,255,255,.28)}
  .spark12{height:70px}
  .facts{gap:20px}.facts dd{font-size:32px}
}

/* planner */
.planner{background:linear-gradient(#fff,var(--tint))}
.nowline{font:600 15px/1.9 var(--body);color:var(--ink);margin:-6px 0 18px}
.nowline b{background:var(--o-l);color:var(--o-d);padding:3px 10px;border-radius:999px;font-weight:700}
.tchips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:22px}
.tchip{display:inline-flex;align-items:center;gap:8px;min-height:38px;padding:0 14px;border-radius:999px;border:1.5px solid var(--rule);background:#fff;
  color:var(--ink);font:600 13.5px/1 var(--body);cursor:pointer;transition:border-color .2s,background .2s}
.tchip:hover{border-color:var(--v)}
.tchip[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:#fff}
.tchip span{font:500 11px var(--mono);opacity:.7}
.sw{width:10px;height:10px;border-radius:3px;background:var(--o)}
.heat-wrap{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:28px;align-items:start}
.heat-scroll{background:#fff;border:1px solid var(--rule);border-radius:var(--r);padding:18px 16px 14px;box-shadow:0 20px 50px -30px rgba(58,18,102,.35)}
.heat{width:100%;border-collapse:separate;border-spacing:5px;table-layout:fixed}
.heat th{font:600 11px/1.2 var(--mono);letter-spacing:.06em;color:var(--muted);text-transform:uppercase;padding:0 0 4px;text-align:center}
.heat thead th:first-child{width:104px}
.heat thead th.now{color:var(--o-d)}
.heat thead th.now .m3::after,.heat thead th.now .m1::after{content:"";display:block;width:6px;height:6px;margin:4px auto 0;border-radius:50%;background:var(--o)}
.heat .m1{display:none}
.heat tbody th{text-align:left;padding-right:6px;white-space:nowrap}
.rc{display:block;font:700 13px/1 var(--mono);color:var(--ink);letter-spacing:.04em}
.rn{display:block;font:500 11.5px/1.2 var(--body);color:var(--muted);text-transform:none;letter-spacing:0;margin-top:3px}
.heat tr.hot th .rc{color:var(--v)}
.heat td{padding:0}
.cell{display:grid;place-items:center;width:100%;aspect-ratio:1;border:0;border-radius:8px;cursor:pointer;font:600 12px/1 var(--mono);color:var(--ink);
  background:var(--lv0);transition:background .35s var(--ease),transform .2s var(--ease),box-shadow .2s;padding:0}
.cell:hover{transform:scale(1.12);box-shadow:0 6px 16px -6px rgba(34,20,48,.5);z-index:2;position:relative}
.cell[data-lv="1"]{background:var(--lv1)}.cell[data-lv="2"]{background:var(--lv2)}.cell[data-lv="3"]{background:var(--lv3)}
.cell[data-lv="4"]{background:var(--lv4);color:#fff}.cell[data-lv="5"]{background:var(--lv5);color:#fff}
.cell[data-lv="6"]{background:var(--lv6);color:#fff}.cell[data-lv="7"]{background:var(--lv7);color:#fff}
.cell[data-lv="0"] span{opacity:.35}
.cell.on{background:var(--o);color:#1A0F26}
.cell.off{background:var(--lv0);color:transparent}
.cell.on span,.cell.off span{visibility:hidden}
.cell.nowc{box-shadow:inset 0 0 0 2px var(--o)}
.cell[aria-pressed="true"]{box-shadow:0 0 0 3px #fff,0 0 0 5px var(--ink);transform:scale(1.06);position:relative;z-index:3}
.heat tr.hot .cell{filter:saturate(1.25)}
.legend{display:flex;align-items:center;gap:10px;font:500 11px var(--mono);color:var(--muted);margin-bottom:14px}
.lg-sw{display:flex;gap:3px}
.lg-sw i,.ph-cal i{width:16px;height:16px;border-radius:4px;background:var(--lv0)}
.lg-sw i[data-lv="1"],.ph-cal i[data-lv="1"]{background:var(--lv1)}.lg-sw i[data-lv="2"],.ph-cal i[data-lv="2"]{background:var(--lv2)}
.lg-sw i[data-lv="3"],.ph-cal i[data-lv="3"]{background:var(--lv3)}.lg-sw i[data-lv="4"],.ph-cal i[data-lv="4"]{background:var(--lv4)}
.lg-sw i[data-lv="5"],.ph-cal i[data-lv="5"]{background:var(--lv5)}.lg-sw i[data-lv="6"],.ph-cal i[data-lv="6"]{background:var(--lv6)}
.lg-sw i[data-lv="7"],.ph-cal i[data-lv="7"]{background:var(--lv7)}
.detail{background:#fff;border:1px solid var(--rule);border-radius:var(--r);padding:22px;min-height:260px;position:relative;overflow:hidden}
.detail::before{content:"";position:absolute;left:0;top:0;bottom:0;width:6px;background:linear-gradient(var(--v),var(--o))}
.detail h3{font-size:26px;font-weight:800;margin-bottom:4px}
.detail .d-sub{font:500 12px/1.4 var(--mono);color:var(--muted);margin-bottom:14px}
.detail ul{display:grid;gap:10px}
.detail li{display:grid;grid-template-columns:12px 1fr;gap:10px;font-size:14.5px;line-height:1.45}
.detail li .sw{margin-top:5px}
.detail li b{display:block;font-weight:700}
.detail li a{font-size:13px;font-weight:600}
.detail-empty{color:var(--ink2);font-size:15px}
.sw-outdoor{background:#E8620C}.sw-markets{background:#F29A3A}.sw-indoor{background:#7A2FB8}.sw-melas{background:#C2306B}
.sw-shows{background:#2E7D4F}.sw-winter{background:#3D5BA9}.sw-first{background:#A0522D}.sw-carols{background:#B8860B}.sw-community{background:#5B1F8C}
@media (max-width:1060px){.heat-wrap{grid-template-columns:1fr}}
@media (max-width:640px){
  .heat-scroll{padding:10px 6px 8px;border-radius:14px}
  .heat{border-spacing:2px}
  .heat thead th:first-child{width:40px}
  .heat .m3,.rn{display:none}.heat .m1{display:inline}
  .heat th{font-size:10px}
  .rc{font-size:10.5px}
  .cell{border-radius:4px}
  .cell span{display:none}
  .cell:hover{transform:none}
}

/* map */
.mapsec{background:#fff}
.sbtns{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:24px}
.sbtn{display:inline-flex;align-items:center;gap:8px;min-height:42px;padding:0 15px;border-radius:12px;border:1.5px solid var(--rule);background:#fff;
  color:var(--ink2);font:500 14px/1 var(--body);cursor:pointer;transition:all .2s}
.sbtn b{font:700 13px/1 var(--mono);color:var(--ink)}
.sbtn:hover{border-color:var(--v)}
.sbtn[aria-pressed="true"]{background:var(--o);border-color:var(--o);color:#1A0F26}
.map-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:28px;align-items:stretch}
.map-card{background:radial-gradient(circle at 30% 20%,#fff,var(--tint));border:1px solid var(--rule);border-radius:var(--r);padding:clamp(12px,2.5vw,30px)}
.ausmap{width:100%;height:auto;overflow:visible}
.st{cursor:pointer}
.st{--f:var(--v-l)}
.st-shape{fill:var(--f);stroke:var(--f);stroke-width:1.2;stroke-linejoin:round;transition:fill .3s,stroke .3s}
.st:hover,.st.hover{--f:#D6C1EC}
.st.sel{--f:var(--o)}
.st[data-s="act"]{--f:var(--lv3)}
.st[data-s="act"].sel{--f:var(--o-d)}
.st[data-s="tas"] .st-shape{stroke:#fff;stroke-width:2}
.border{fill:none;stroke:#fff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
.pin{fill:var(--ink);stroke:#fff;stroke-width:2.5;transition:r .3s}
.st.sel .pin{fill:#fff;stroke:var(--ink)}
.st-code{font:800 22px var(--disp);fill:var(--ink);text-anchor:middle;pointer-events:none}
.st-cap{font:500 12px var(--mono);fill:var(--ink2);text-anchor:middle;pointer-events:none}
.lead{stroke:var(--ink2);stroke-width:1.2;fill:none;stroke-dasharray:3 3}
.guide{position:relative;overflow:hidden;border-radius:var(--r);background:var(--night);color:#fff;min-height:420px;display:flex}
.guide video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.5}
.fx-dots .dots{position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(circle,rgba(26,15,38,.95) 1.6px,transparent 2.2px) 0 0/7px 7px,linear-gradient(180deg,rgba(26,15,38,.55),rgba(26,15,38,.92));
  -webkit-mask:radial-gradient(circle 150px at var(--mx,70%) var(--my,30%),rgba(0,0,0,.15),#000 75%);mask:radial-gradient(circle 150px at var(--mx,70%) var(--my,30%),rgba(0,0,0,.15),#000 75%)}
.guide-in{position:relative;z-index:2;padding:clamp(22px,3vw,36px);display:flex;flex-direction:column;width:100%;padding-bottom:76px}
.guide .kicker{color:#FFB98A}
.guide h3{color:#fff;font-size:clamp(28px,2.2vw,38px);font-weight:800;margin-bottom:6px}
.guide .g-cap{font:500 12.5px/1.4 var(--mono);color:#D9CCE8;margin-bottom:16px}
.guide p{color:#EDE3F7;font-size:15.5px}
.g-now{display:flex;flex-wrap:wrap;gap:7px;margin:6px 0 18px}
.g-now li{display:inline-flex;align-items:center;gap:7px;padding:7px 11px;border-radius:999px;background:rgba(255,255,255,.12);font-size:13.5px}
.g-yr{display:grid;grid-template-columns:repeat(12,1fr);gap:4px;margin:4px 0 6px}
.g-yr span{display:grid;place-items:center;aspect-ratio:1;border-radius:4px;background:rgba(255,255,255,.12);font:600 10px var(--mono);color:#BFAED3}
.g-yr span.on{background:var(--o);color:#1A0F26}
.g-k{font:500 11px/1.3 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:#BFAED3;margin:8px 0 6px}
.g-go{margin-top:auto;align-self:flex-start;min-height:44px;padding:0 18px;border-radius:999px;border:2px solid #fff;background:transparent;color:#fff;font:700 14px/1 var(--body);cursor:pointer}
.g-go:hover{background:#fff;color:var(--ink)}
.guide .vbtn{left:auto;right:16px}
@media (max-width:980px){.map-grid{grid-template-columns:1fr}}
@media (max-width:560px){.st-cap{display:none}.st-code{font-size:34px}.sbtn{padding:0 11px;font-size:13px}}

/* festivals */
.fest{background:linear-gradient(var(--tint2),#fff)}
.fest-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(28px,5vw,64px);align-items:start}
.fest-photo{position:sticky;top:100px;border-radius:var(--r);overflow:hidden;background:var(--night);aspect-ratio:4/5}
.fest-photo img{width:100%;height:100%;object-fit:cover}
.spot{position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(circle 190px at var(--x,60%) var(--y,40%),rgba(255,190,120,.18),transparent 60%,rgba(20,10,30,.78) 100%)}
.fest-cap{position:absolute;left:16px;right:16px;bottom:14px;margin:0;font:500 12px/1.4 var(--mono);color:#EDE3F7}
.ribbon{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.fm{position:relative;background:#fff;border:1px solid var(--rule);border-radius:14px;padding:14px 14px 12px;min-height:118px;transition:transform .3s var(--ease),box-shadow .3s}
.fm:hover{transform:translateY(-4px);box-shadow:0 16px 30px -18px rgba(58,18,102,.5)}
.fm-n{display:block;font:800 22px/1 var(--disp);color:var(--v);margin-bottom:10px}
.fm ul{display:grid;gap:8px}
.fm li b{display:block;font-size:14.5px;line-height:1.25}
.fm li span{display:block;font-size:12.5px;color:var(--muted);line-height:1.35}
.fm-q{font-size:13px;color:var(--muted);margin:0}
.fm.now{border:2px solid var(--o);box-shadow:0 0 0 6px var(--o-l)}
.fm.now::after{content:"This month";position:absolute;top:12px;right:12px;font:700 10px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;
  background:var(--o);color:#1A0F26;padding:5px 8px;border-radius:999px}
@media (max-width:980px){.fest-grid{grid-template-columns:1fr}.fest-photo{position:relative;top:0;aspect-ratio:16/10}}
@media (max-width:640px){.ribbon{grid-template-columns:1fr 1fr}}
@media (max-width:400px){.ribbon{grid-template-columns:1fr}}

/* band */
.band{padding-top:0}
.band-frame{position:relative;border-radius:calc(var(--r) + 6px);overflow:hidden;background:var(--night);min-height:min(62vw,520px);display:flex;align-items:flex-end}
.band-frame img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.fx-tear img{clip-path:inset(0 100% 0 0)}
.fx-tear::before{content:"";position:absolute;top:0;bottom:0;left:0;width:14px;z-index:2;pointer-events:none;opacity:0;
  background:radial-gradient(circle 5px,#fff 96%,transparent) 0 0/14px 18px repeat-y}
.fx-tear.in img{animation:tear 1.5s var(--ease) forwards}
.fx-tear.in::before{animation:tearline 1.5s var(--ease) forwards}
@keyframes tear{to{clip-path:inset(0 0 0 0)}}
@keyframes tearline{0%{left:0;opacity:1}90%{opacity:1}100%{left:100%;opacity:0}}
.band-copy{position:relative;z-index:3;padding:clamp(22px,4vw,48px);max-width:620px;color:#fff;
  background:linear-gradient(90deg,rgba(26,15,38,.88),rgba(26,15,38,.5) 70%,transparent);border-radius:0 24px 0 0}
.band-copy .kicker{color:#FFB98A}
.band-copy h2{color:#fff;font-size:clamp(2rem,1.2rem + 3vw,3.6rem);font-weight:800;margin-bottom:14px}
.band-copy p{color:#EDE3F7;font-size:17px}
.plist{display:grid;gap:0}
.plist li a{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:15px 2px;border-bottom:1px solid var(--rule);text-decoration:none;color:var(--ink);font-weight:600}
.plist li a:hover .pt{color:var(--v)}
.pw{font:500 11.5px var(--mono);color:var(--muted);white-space:nowrap}
.plist.cols{grid-template-columns:repeat(2,1fr);column-gap:36px;margin-top:22px}
@media (max-width:700px){.plist.cols{grid-template-columns:1fr}}

/* duo cards */
.duo{background:var(--tint)}
.duo-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px}
.dcard{background:#fff;border:1px solid var(--rule);border-radius:calc(var(--r) + 4px);padding:clamp(18px,2.4vw,28px);display:flex;flex-direction:column}
.dcard h2{font-size:clamp(1.8rem,1.1rem + 1.8vw,2.6rem);font-weight:800;margin-bottom:12px}
.dcard>p{color:var(--ink2)}
.dmedia{position:relative;overflow:hidden;border-radius:14px;aspect-ratio:16/9;margin-bottom:22px;background:var(--night)}
.dmedia img{width:100%;height:100%;object-fit:cover}
.fx-split img{filter:grayscale(1) contrast(1.1);transition:filter .6s var(--ease),transform .8s var(--ease)}
.fx-split::after{content:"";position:absolute;inset:0;background:linear-gradient(140deg,#7A2FB8,#221430);mix-blend-mode:screen;opacity:.7;transition:opacity .6s;pointer-events:none}
.dcard:hover .fx-split img,.dcard:focus-within .fx-split img{filter:none;transform:scale(1.04)}
.dcard:hover .fx-split::after,.dcard:focus-within .fx-split::after{opacity:0}
.dcard:hover .fx-split,.dcard:focus-within .fx-split{box-shadow:inset 0 0 0 4px var(--o)}
.fx-split{transition:box-shadow .4s}
.fx-split img{position:relative;z-index:0}
.fx-par img{transform:translateY(var(--py,0px)) scale(1.18);will-change:transform}
.grain{position:absolute;inset:-50%;pointer-events:none;opacity:.22;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:grain 1.2s steps(6) infinite}
@keyframes grain{0%{transform:translate(0,0)}25%{transform:translate(-4%,3%)}50%{transform:translate(3%,-5%)}75%{transform:translate(-2%,4%)}100%{transform:translate(0,0)}}
.more{margin-top:auto;padding-top:18px;display:inline-flex;align-items:center;gap:8px;font-weight:700;text-decoration:none}
.runsheet{counter-reset:none;display:grid;gap:8px}
.runsheet a{display:grid;grid-template-columns:52px 1fr;align-items:center;gap:12px;padding:10px 12px;border-radius:12px;background:var(--tint);text-decoration:none;color:var(--ink);font-weight:600;
  border:1.5px dashed transparent;transition:border-color .2s,background .2s}
.runsheet a:hover{border-color:var(--o);background:#fff}
.rs-t{font:600 13px/1 var(--mono);color:var(--o-d);background:#fff;border-radius:8px;padding:8px 0;text-align:center}
@media (max-width:900px){.duo-grid{grid-template-columns:1fr}}

/* programme stubs */
.stubs{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.stub{display:grid;grid-template-columns:1fr 74px;background:#fff;border:1px solid var(--rule);border-radius:16px;transition:transform .35s var(--ease),box-shadow .35s;
  -webkit-mask:radial-gradient(circle 9px at calc(100% - 74px) 0,#0000 98%,#000) top/100% 51% no-repeat,radial-gradient(circle 9px at calc(100% - 74px) 100%,#0000 98%,#000) bottom/100% 51% no-repeat;
  mask:radial-gradient(circle 9px at calc(100% - 74px) 0,#0000 98%,#000) top/100% 51% no-repeat,radial-gradient(circle 9px at calc(100% - 74px) 100%,#0000 98%,#000) bottom/100% 51% no-repeat}
.stub:hover,.stub:focus-within{transform:translateY(-5px) rotate(-.6deg);box-shadow:0 22px 40px -24px rgba(58,18,102,.55)}
.stub-l{padding:18px 16px}
.stub-l .mono{color:var(--o-d)}
.stub h3{font-size:20px;font-weight:800;margin:8px 0 12px}
.stub h3 a{color:var(--ink);text-decoration:none}
.stub h3 a:hover{color:var(--v)}
.stub ul{display:grid;gap:9px}
.stub li{line-height:1.35}
.stub li a{font-size:13.5px;line-height:1.35;color:var(--ink2);text-decoration:none}
.stub li a:hover{color:var(--v);text-decoration:underline}
.stub-r{border-left:2px dashed var(--rule);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
  background:linear-gradient(var(--v-l),#fff);border-radius:0 16px 16px 0;transition:transform .4s var(--ease)}
.stub:nth-child(even) .stub-r{background:linear-gradient(var(--o-l),#fff)}
.stub-r b{font:800 30px/1 var(--disp);color:var(--v-d)}
.stub-r span{font:500 10px/1.2 var(--mono);color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.stub:hover .stub-r{transform:translateX(5px) rotate(3deg)}
@media (max-width:1080px){.stubs{grid-template-columns:repeat(2,1fr)}}
@media (max-width:600px){.stubs{grid-template-columns:1fr}}

/* inner page head */
.ph{position:relative;background:var(--tint);padding:clamp(48px,6vw,84px) 0 clamp(52px,6vw,80px)}
.ph-in{display:grid;grid-template-columns:1fr auto;gap:30px;align-items:end}
.ph h1{font-size:clamp(2.6rem,1.4rem + 4vw,4.8rem);font-weight:800;letter-spacing:-.04em}
.ph .lede{margin-top:18px}
.ph-cal{display:grid;grid-template-columns:repeat(7,16px);gap:5px;transform:rotate(-4deg)}
.perf{position:absolute;left:0;right:0;bottom:-9px;height:18px;background:radial-gradient(circle 9px at 50% 50%,#fff 96%,transparent) 0 0/30px 18px repeat-x}
@media (max-width:640px){.ph-in{grid-template-columns:1fr}.ph-cal{display:none}}
.prose-wrap{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:clamp(28px,5vw,64px);padding-top:56px;padding-bottom:96px}
.prose{max-width:68ch;font-size:18px}
.prose h3{font-size:26px;font-weight:800;margin:36px 0 10px}
.prose a{font-weight:600}
.side-card{align-self:start;position:sticky;top:100px;background:#fff;border:1px solid var(--rule);border-radius:var(--r);padding:22px;display:grid;gap:12px;
  box-shadow:0 20px 50px -34px rgba(58,18,102,.45)}
.side-card p{margin:0;color:var(--ink2);font-size:15px}
.side-card .btn{justify-content:center}
@media (max-width:860px){.prose-wrap{grid-template-columns:1fr}.side-card{position:relative;top:0}}

/* library */
.lib{padding-top:46px;padding-bottom:96px}
.lib-tools{display:grid;grid-template-columns:1fr auto;gap:14px;align-items:center;margin-bottom:28px}
.lib-tools[hidden]{display:none}
.lib-tools .tchips{grid-column:1/-1;margin:0}
.lib-search{display:flex;align-items:center;gap:10px;border:2px solid var(--ink);border-radius:999px;padding:0 18px;min-height:54px;background:#fff}
.lib-search input{flex:1;border:0;outline:0;font:500 17px var(--body);background:transparent;color:var(--ink);min-width:0}
.lib-search:focus-within{box-shadow:0 0 0 4px var(--o-l);border-color:var(--v)}
.lib-sort{display:flex;align-items:center;gap:8px;font:600 12px var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.lib-sort select{min-height:46px;border:1.5px solid var(--rule);border-radius:12px;padding:0 12px;font:600 15px var(--body);color:var(--ink);background:#fff}
.lib-count{grid-column:1/-1;margin:0;font:500 13px var(--mono);color:var(--muted)}
.lib-results{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.lib-results[hidden]{display:none}
.lib-results a{display:flex;flex-direction:column;gap:8px;height:100%;padding:18px;border:1px solid var(--rule);border-radius:14px;text-decoration:none;color:var(--ink);background:#fff;transition:border-color .2s,transform .25s var(--ease)}
.lib-results a:hover{border-color:var(--v);transform:translateY(-3px)}
.lib-results .rc-c{font:600 10.5px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--v)}
.lib-results .rc-t{font:800 19px/1.15 var(--disp)}
.lib-results .rc-x{font-size:14px;color:var(--ink2);line-height:1.45}
.lib-results .rc-w{margin-top:auto;font:500 11px var(--mono);color:var(--muted)}
.lib-results mark{background:var(--o-l);color:inherit;border-radius:3px}
.lib-g{margin-bottom:38px;scroll-margin-top:110px}
.lib-g h2{display:flex;align-items:baseline;gap:12px;font-size:30px;font-weight:800;padding-bottom:12px;border-bottom:2px solid var(--ink);margin-bottom:6px;scroll-margin-top:110px}
.lib-g h2 .mono{color:var(--o-d)}
.lib-g h2 .cnt{font:500 13px var(--mono);color:var(--muted)}
.lib-g ol{columns:2;column-gap:40px}
.lib-g li{break-inside:avoid}
.lib-g li a{display:flex;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px dashed var(--rule);text-decoration:none;color:var(--ink)}
.lib-g li a:hover .lt{color:var(--v)}
.lw{font:500 11px var(--mono);color:var(--muted);white-space:nowrap;padding-top:3px}
.credits{margin-top:30px;border-top:1px solid var(--rule);padding-top:18px;font-size:13px;color:var(--muted)}
.credits summary{cursor:pointer;font-weight:700;color:var(--ink)}
.credits ul{margin-top:12px;display:grid;gap:6px}
@media (max-width:900px){.lib-results{grid-template-columns:1fr 1fr}}
@media (max-width:640px){.lib-results{grid-template-columns:1fr}.lib-g ol{columns:1}.lib-tools{grid-template-columns:1fr}}

/* posts */
.post-wrap{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:clamp(28px,5vw,64px);padding-top:46px;padding-bottom:96px}
.post{max-width:72ch;min-width:0}
.post-kick{display:flex;align-items:center;gap:12px;flex-wrap:wrap;font:500 12px var(--mono);color:var(--muted)}
.chip{display:inline-block;background:var(--v);color:#fff;font:700 11px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;border-radius:999px;padding:8px 13px;text-decoration:none}
.chip:hover{background:var(--o);color:#1A0F26}
.post h1{font-size:clamp(2.3rem,1.3rem + 3.4vw,4rem);font-weight:800;letter-spacing:-.035em;margin:6px 0 14px}
.post-meta{font:500 12px var(--mono);color:var(--muted);letter-spacing:.04em}
.post-fig{margin:26px 0 30px}
.post-fig img{width:100%;height:auto;border-radius:var(--r);aspect-ratio:3/2;object-fit:cover;background:var(--tint)}
.post-fig figcaption{font-size:12.5px;color:var(--muted);margin-top:9px;line-height:1.45}
.post-body{font-size:19px;line-height:1.7}
.post-body p:first-child::first-letter{float:left;font:800 4.1em/.82 var(--disp);color:var(--v);padding:6px 10px 0 0}
.post-back{margin-top:30px;font-weight:700}
.post-pn{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:30px}
.pn{display:flex;flex-direction:column;gap:4px;padding:16px;border:1px solid var(--rule);border-radius:14px;text-decoration:none;color:var(--ink);font:700 16px/1.3 var(--disp)}
.pn:hover{border-color:var(--v)}
.pn .kicker{margin:0}
.pn.next{text-align:right;grid-column:2}
.post-side{display:grid;gap:16px;align-self:start;position:sticky;top:100px}
.pstub{border-radius:var(--r);overflow:hidden;border:1px solid var(--rule);background:#fff}
.pstub-top{background:var(--night);color:#fff;padding:20px;position:relative}
.pstub-top .mono{color:#FFB98A}
.pstub-sec{font:800 24px/1.1 var(--disp);margin:10px 0 14px}
.pstub dl{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:0}
.pstub dt{font:500 10px var(--mono);text-transform:uppercase;letter-spacing:.08em;color:#BFAED3}
.pstub dd{margin:2px 0 0;font:700 16px var(--body)}
.punch{display:flex;flex-wrap:wrap;gap:4px;margin:16px 0 0}
.punch i{width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.22)}
.punch i.on{background:var(--o);box-shadow:0 0 0 3px rgba(232,98,12,.35)}
.pstub-bot{padding:20px;border-top:2px dashed var(--rule);display:grid;gap:12px}
.pstub-bot ul{display:grid;gap:9px}
.pstub-bot li{line-height:1.35}
.pstub-bot li a{font-size:14.5px;line-height:1.35;color:var(--ink);text-decoration:none;font-weight:600}
.pstub-bot li a:hover{color:var(--v)}
.pstub-bot .btn{justify-content:center;min-height:44px;font-size:14px}
.side-plan{display:block;padding:18px 20px;border-radius:var(--r);background:var(--o-l);text-decoration:none;color:var(--ink);font:700 16px/1.35 var(--disp)}
.side-plan .kicker{display:block;color:var(--o-d);margin-bottom:6px}
.side-plan svg{display:inline;vertical-align:middle}
.side-plan:hover{background:#FFD9BF;color:var(--ink)}
.sb{margin-top:34px;padding:18px;border:1px solid var(--rule);border-radius:14px;display:grid;gap:10px}
.sb-t{font:600 11px var(--mono);text-transform:uppercase;letter-spacing:.14em;color:var(--v)}
.sb-l{display:flex;flex-wrap:wrap;gap:8px}
.sb-l a,.sb-l button{display:inline-flex;align-items:center;min-height:38px;padding:0 13px;border-radius:999px;border:1.5px solid var(--rule);background:#fff;
  color:var(--ink);font:600 13.5px/1 var(--body);text-decoration:none;cursor:pointer}
.sb-l a:hover,.sb-l button:hover{border-color:var(--v);color:var(--v)}
.sb-l button[hidden]{display:none}
.sb-note{margin:0;font-size:12.5px;color:var(--muted)}
.printnote{display:none}
@media (max-width:960px){.post-wrap{grid-template-columns:1fr}.post-side{position:relative;top:0}}
@media (max-width:520px){.post-pn{grid-template-columns:1fr}.pn.next{grid-column:1;text-align:left}.post-body{font-size:18px}}

/* footer */
.foot{position:relative;background:var(--tint);margin-top:0;padding:64px 0 30px;color:var(--ink2);font-size:15px}
.foot-perf{position:absolute;left:0;right:0;top:-9px;height:18px;background:radial-gradient(circle 9px at 50% 50%,#fff 96%,transparent) 0 0/30px 18px repeat-x}
.foot-top{display:grid;grid-template-columns:1fr 1.6fr;gap:40px}
.foot-logo{display:inline-block;line-height:0;margin-bottom:12px}
.foot-logo img{width:140px;height:auto}
.foot-tag{font:800 22px/1.15 var(--disp);color:var(--ink);margin-bottom:8px}
.foot-cols{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:24px}
.foot h4{font:600 11px/1.3 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--v);margin-bottom:12px}
.foot li{margin-bottom:7px}
.foot a{color:var(--ink);text-decoration:none}
.foot a:hover{color:var(--o-d);text-decoration:underline}
.foot .two{columns:2;column-gap:20px}
.foot-base{margin-top:40px;padding-top:18px;border-top:1px solid var(--rule);font:500 12.5px/1.7 var(--mono);color:var(--muted)}
.foot-base p{margin:0}
@media (max-width:860px){.foot-top,.foot-cols{grid-template-columns:1fr}.foot .two{columns:2}}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
  .confetti{display:none}
  .reveal{opacity:1;transform:none}
  .fx-tear img{clip-path:none}
  .fx-par img{transform:scale(1.05)}
  .ticket{transform:rotate(-2.2deg)}
  .ticket-media video{transform:none}
}
@media print{
  .strip,.mast,.foot,.post-side,.sb,.post-pn,.post-back{display:none!important}
  .printnote{display:block;font-size:12px;color:#555}
  .post-wrap{display:block;padding:0}
  body{font-size:12pt}
}
