/* Crossed Wires Canvas */
@font-face{font-family:"DM Mono";font-style:normal;font-weight:400;font-display:swap;src:url(fonts/dm-mono-400.woff2) format("woff2")}
@font-face{font-family:"DM Mono";font-style:italic;font-weight:400;font-display:swap;src:url(fonts/dm-mono-400-italic.woff2) format("woff2")}
@font-face{font-family:"DM Mono";font-style:normal;font-weight:500;font-display:swap;src:url(fonts/dm-mono-500.woff2) format("woff2")}
@font-face{font-family:"DM Sans";font-style:normal;font-weight:400;font-display:swap;src:url(fonts/dm-sans-400.woff2) format("woff2")}
@font-face{font-family:"DM Sans";font-style:normal;font-weight:500;font-display:swap;src:url(fonts/dm-sans-500.woff2) format("woff2")}

.cwc{
  --paper:var(--cw-paper,#F4F1EA); --ink:var(--cw-ink,#15161C); --red:var(--cw-red,#F64217); /* the red from the 2027 launch-night invite */ --muted:var(--cw-muted,rgba(21,22,28,.58)); --line:var(--cw-line,rgba(21,22,28,.16));
  --mono:var(--cw-mono,"DM Mono"),ui-monospace,SFMono-Regular,Menlo,monospace; --sans:var(--cw-sans,"DM Sans"),system-ui,-apple-system,"Segoe UI",sans-serif;
  --gl:var(--cw-edge,28px); --top:76px;
  position:fixed; inset:0; z-index:1000; overflow:hidden;
  background:var(--paper); color:var(--ink); font-family:var(--mono); font-size:var(--cw-text-base,14px); line-height:1.5;
  -webkit-font-smoothing:antialiased; -webkit-tap-highlight-color:transparent;
}
.cwc *,.cwc *::before,.cwc *::after{box-sizing:border-box}
.cwc a{color:inherit}
.cwc button{font:inherit;color:inherit;border-radius:0;text-shadow:none;box-shadow:none;text-decoration:none;line-height:1;margin:0;white-space:nowrap}
.cwc button:focus{outline:none}.cwc button:focus-visible{outline:2px solid currentColor;outline-offset:3px}
.cwc .sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
html:has(body.cwc-page),body.cwc-page{overflow:hidden;height:100%;margin:0;overscroll-behavior-x:none;background:var(--cw-paper,#F4F1EA)}

/* ---------- the canvas ---------- */
/* the instrument's shapes, drawn behind the cards and the headline when an empty spot is clicked */
.cwc-shapes{position:absolute;inset:0;z-index:0;width:100%;height:100%;display:block;pointer-events:none}
.cwc-hero{position:absolute;inset:0;z-index:2;touch-action:none;cursor:grab;user-select:none;-webkit-user-select:none}
.cwc-hero.dragging{cursor:grabbing}
.cwc-hero.dragging .cwc-it{pointer-events:none}
.cwc .cwc-it.held{box-shadow:0 22px 50px -20px rgba(0,0,0,.55);transition:opacity .6s ease,filter .35s ease,box-shadow .2s ease}
.cwc-hero .cwc-it{-webkit-touch-callout:none}
.cwc-hero.dragging,.cwc-hero.dragging .cwc-it{cursor:grabbing}
.cwc .cwc-it{
  position:absolute; left:0; top:0; display:block; overflow:hidden; text-decoration:none;
  background:var(--ink); color:var(--cw-white,#fff); opacity:0; will-change:transform;
  transition:opacity .6s ease, filter .35s ease, box-shadow .35s ease;
  box-shadow:0 1px 0 rgba(0,0,0,.04);
}
.cwc.ready .cwc-it{opacity:1}
.cwc.intro .cwc-hero{pointer-events:none} /* the loading intro: the cards can't be pressed until they've spread out */
/* and nothing else shows until they have: the logo, menu, search, headline and buttons fade in after (Matthew, 8 Nov 2026) */
.cwc.intro-out .cwc-head,.cwc.intro-out .cwc-pdates,.cwc.intro-out .cwc-top>*,.cwc.intro-out .cwc-mbtn,.cwc.intro-out .cwc-nav,.cwc.intro-out .cwc-ctl,.cwc.intro-out .cwc-sdays,.cwc.intro-out .cwc-snd{transition:opacity .7s ease!important}
.cwc.intro-pre .cwc-head,.cwc.intro-pre .cwc-pdates,.cwc.intro-pre .cwc-top>*,.cwc.intro-pre .cwc-mbtn,.cwc.intro-pre .cwc-nav,.cwc.intro-pre .cwc-ctl,.cwc.intro-pre .cwc-sdays,.cwc.intro-pre .cwc-snd{opacity:0!important;pointer-events:none}
.cwc .cwc-it.iwait{opacity:0!important} /* the cards that aren't in the drop wait, unseen, and fade in as the stack spreads */
.cwc.intro-pre .cwc-it:not(.idrop){visibility:hidden!important} /* from the first moment of a fresh load until the intro ends, only the cards in the stack can be seen */
.cwc .cwc-it.idrop{transition:none} /* their fade-in is drawn frame by frame as they grow */
@media (prefers-reduced-motion:reduce){.cwc.intro-pre .cwc-head,.cwc.intro-pre .cwc-pdates,.cwc.intro-pre .cwc-top>*,.cwc.intro-pre .cwc-mbtn,.cwc.intro-pre .cwc-nav,.cwc.intro-pre .cwc-ctl,.cwc.intro-pre .cwc-sdays,.cwc.intro-pre .cwc-snd{opacity:1!important;pointer-events:auto}}
.cwc-it .pic{position:absolute;inset:0;background:center/cover no-repeat;transition:transform .7s cubic-bezier(.2,.7,.2,1)}
@media (hover:hover){ .cwc-it:hover .pic{transform:scale(1.04)} } /* only with a mouse: a tap on a phone counts as hover, so the photo grew for a moment before the event opened (Matthew, 7 Nov 2026) */
.cwc-it:focus-visible .pic{transform:scale(1.04)}
.cwc-it:focus-visible{outline:2px solid var(--ink);outline-offset:4px}
.cwc .pic.none{background:var(--ink);color:var(--paper)}
.cwc .pic.none .ph{position:absolute;inset:0;width:100%;height:100%;opacity:.55}
.cwc .cwc-it .cap{
  position:absolute; left:0; right:0; bottom:0; padding:42px 14px 13px; display:flex; flex-direction:column; gap:var(--cw-space-1,4px);
  background:linear-gradient(to top,rgba(10,10,14,.82),rgba(10,10,14,.5) 55%,rgba(10,10,14,0));
}
.cwc .tag{
  align-self:flex-start; display:inline-block; padding:4px 8px 3px; background:var(--red); color:var(--cw-white,#fff);
  font-size:var(--cw-text-sm,12px); letter-spacing:var(--cw-track,.12em); text-transform:uppercase; line-height:1.4;
}
.cwc-it .ttl{font-weight:500;font-size:var(--cw-text-xl,17px);line-height:1.2;text-transform:uppercase;letter-spacing:.02em;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;overflow:hidden}
.cwc-it.sm .ttl{font-size:var(--cw-text-base,14px);-webkit-line-clamp:3}
.cwc-it.sm .ln{display:none}
.cwc .tag b,.cwc .tag i{font-weight:inherit;font-style:normal}
.cwc-it .tag{white-space:nowrap} /* the date never wraps; the card is sized to fit it */
.cwc-it.sm .tag i{display:none}
.cwc-it.wrap .tag{white-space:normal} .cwc-it.wrap .tag i{display:block} .cwc-it.wrap .tag .dt{display:none} /* phones: the time under the date, so the card needn't be as wide */
.cwc-it .sub{margin-top:2px;font-size:var(--cw-text-xs,11px);line-height:1.25;letter-spacing:.04em;text-transform:uppercase;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden} /* the artists under a card's title (brochure style) */
.cwc-it .ln{font-size:var(--cw-text-xs,11px);letter-spacing:.06em;opacity:.78;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cwc-it.dim{opacity:.1!important;filter:grayscale(1);pointer-events:none}
.cwc-it.hit{box-shadow:0 18px 40px -18px rgba(0,0,0,.45)}
.cwc-empty{position:absolute;inset:0;display:grid;place-items:center;margin:0;letter-spacing:var(--cw-track-wide,.14em);text-transform:uppercase}

/* ---------- words ---------- */
.cwc-head{position:absolute;left:var(--gl);bottom:calc(var(--gl) - 6px);right:var(--gl);z-index:4;pointer-events:none} /* above the cards (Matthew); clicks go through to them */
.cwc-head .hl{margin:0;color:var(--red);font-weight:500;font-size:var(--cw-text-headline,clamp(34px,4.4vw,68px));line-height:.95;letter-spacing:-.035em;max-width:11ch}
.cwc-head .intro{margin:14px 0 0;font-size:var(--cw-text-md,13px);letter-spacing:var(--cw-track,.12em);text-transform:uppercase;color:var(--red)}
.cwc-top{position:absolute;left:0;right:0;top:0;display:flex;align-items:center;gap:var(--cw-space-4,20px);padding:20px var(--gl);pointer-events:none;color:var(--red)}
.cwc-top>*{pointer-events:auto;position:relative;z-index:5} /* no stacking box on the bar itself, so the logo can blend with the cards under it */
.cwc-logo{display:block;line-height:0}
#cwc .cwc-logo{color:var(--cw-white,#fff);mix-blend-mode:difference} /* white, inverted: black on the paper, white over a photo passing under it; the rest of the top bar is red */
.cwc .logo-mask{display:block;width:150px;aspect-ratio:2.4377;background:currentColor;-webkit-mask:var(--logo) left center/contain no-repeat;mask:var(--logo) left center/contain no-repeat}
.cwc .logo-text{font-weight:500;font-size:var(--cw-text-lg,16px);letter-spacing:var(--cw-track-wide,.14em);text-transform:uppercase}
.cwc-dates{margin:0 0 0 auto;font-size:var(--cw-text-lg,16px);letter-spacing:var(--cw-track,.12em);text-transform:uppercase}
#cwc .cwc-sbtn{display:inline-flex;align-items:center;gap:var(--cw-space-2,8px);height:var(--cw-control,40px);padding:0 14px;border:1px solid currentColor;background:var(--paper);color:var(--red);cursor:pointer;font-size:var(--cw-text-sm,12px);letter-spacing:var(--cw-track-wide,.14em);text-transform:uppercase}
#cwc .cwc-sbtn:hover,#cwc .cwc-sbtn:focus-visible{background:var(--red);color:var(--paper)}

/* ---------- search ---------- */
.cwc-search{
  /* centred, but never over the logo, which stays put while searching */
  --sl:max(calc(50% - 320px),calc(var(--gl) + 172px));
  position:absolute; z-index:6; left:var(--sl); top:18px; width:min(640px,calc(100% - var(--sl) - var(--gl))); height:var(--cw-control-lg,52px);
  display:flex; align-items:center; gap:var(--cw-space-3,12px); padding:0 8px 0 16px; background:var(--paper); border:1px solid var(--ink);
  transform:translateY(-90px); opacity:0; pointer-events:none; transition:transform .45s cubic-bezier(.2,.8,.2,1),opacity .3s;
}
.cwc.searching .cwc-search{transform:none;opacity:1;pointer-events:auto}
.cwc.searching .cwc-top>*:not(.cwc-logo){opacity:0;pointer-events:none}
.cwc-top>*{transition:opacity .3s}
.cwc-top{transition:opacity .3s}
#cwc .cwc-search input{flex:1;min-width:0;height:100%;border:0;border-radius:0;box-shadow:none;padding:0;background:none;font:inherit;font-size:var(--cw-text-body,15px);color:inherit;outline:none;-webkit-appearance:none;appearance:none}
.cwc-search input::-webkit-search-cancel-button{display:none}
.cwc-search .count{font-size:var(--cw-text-xs,11px);letter-spacing:var(--cw-track,.12em);text-transform:uppercase;color:var(--muted);white-space:nowrap}
#cwc .cwc-search .x,#cwc .cwc-search .x:hover,#cwc .cwc-search .x:focus{color:var(--ink);background:none}
#cwc .cwc-search .x{display:grid;place-items:center;width:38px;height:38px;border:0;background:none;cursor:pointer}
.cwc.searching .cwc-head{opacity:0}
.cwc-head{transition:opacity .3s}

/* ---------- a click on an empty spot ---------- */
#cwc .cwc-play{
  position:absolute; z-index:7; display:inline-flex; align-items:center; gap:10px; height:var(--cw-control,40px); padding:0 18px;
  border:0; background:var(--ink); color:var(--paper); cursor:pointer; white-space:nowrap;
  font-size:var(--cw-text-sm,12px); letter-spacing:.16em; text-transform:uppercase; transform:translate(-50%,-50%);
  animation:cwcPop .45s cubic-bezier(.3,1.6,.5,1) both;
}
#cwc .cwc-play[hidden]{display:none}
#cwc .cwc-play.out{animation:cwcOut .3s ease forwards}
#cwc .cwc-play:focus{background:var(--ink);color:var(--paper)}
#cwc .cwc-play:hover{background:#000}
#cwc .cwc-play:focus-visible{outline:2px solid var(--ink);outline-offset:3px}
@keyframes cwcPop{from{transform:translate(-50%,-50%) scale(.6);opacity:0}to{transform:translate(-50%,-50%) scale(1);opacity:1}}
@keyframes cwcOut{to{transform:translate(-50%,-50%) scale(.85);opacity:0}}

/* ---------- the instrument ---------- */
.cwc-inst{position:absolute;inset:0;z-index:50;background:var(--paper);opacity:0;visibility:hidden;transition:opacity .5s ease .25s,visibility 0s linear .75s}
.cwc-inst iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block}
.cwc.inst-on .cwc-inst{opacity:1;visibility:visible;transition:opacity .5s ease .35s,visibility 0s}
.cwc-ihint{position:absolute;left:50%;top:calc(50% + 64px);z-index:2;transform:translateX(-50%);margin:0;max-width:calc(100% - 2 * var(--gl));padding:8px 14px 7px;color:var(--ink);font-size:var(--cw-text-md,13px);letter-spacing:var(--cw-track,.12em);text-transform:uppercase;line-height:1.4;text-align:center;pointer-events:none;opacity:0;animation:cwc-ihint 1s ease 1.1s forwards;transition:opacity .4s ease} /* just under the logo in the middle; clicks go straight through to the instrument */
@keyframes cwc-ihint{from{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%,0)}}
.cwc-ihint.out{animation:none;opacity:0}
@media (max-width:760px){ .cwc-ihint{font-size:var(--cw-text-sm,12px)} }
#cwc .cwc-exit{
  position:absolute; z-index:2; right:var(--gl); top:20px; display:inline-flex; align-items:center; gap:var(--cw-space-2,8px); height:var(--cw-control,40px); padding:0 14px;
  border:1px solid var(--ink); background:var(--paper); color:var(--ink); cursor:pointer; font-size:var(--cw-text-sm,12px); letter-spacing:var(--cw-track-wide,.14em); text-transform:uppercase;
}
#cwc .cwc-exit:focus{background:var(--paper);color:var(--ink)}
#cwc .cwc-exit:hover{background:var(--ink);color:var(--paper)}
.cwc.inst-on .cwc-top,.cwc.inst-on .cwc-head{opacity:0;pointer-events:none}
.cwc-it.scatter{transition:transform .7s cubic-bezier(.5,0,.7,.4),opacity .5s ease .1s!important;opacity:0!important}

/* ---------- an event, open ---------- */
.cwc-ev{position:absolute;inset:0;z-index:40;overflow-y:auto;overscroll-behavior:contain;background:var(--paper);-webkit-overflow-scrolling:touch}
.cwc-ev[hidden]{display:none}
.cwc-ev.flying{background:transparent;overflow:hidden}
.cwc-ev.flying .a-hero{background:transparent}
.cwc-ev.swapping{overflow:hidden}
.cwc-ev.swapping .a-body,.cwc-ev.swapping .a-more,.cwc-ev.swapping .a-hcap,.cwc-ev.swapping .a-hero .pic{opacity:0;transition:none}
.cwc-ev.swapping .a-hero{background:transparent}
.cwc-ev.swapping .a-hero::after{opacity:0;transition:none}
.cwc-ev.flying .a-hero::after{opacity:0;transition:none}
.cwc-a .a-hero::after{transition:opacity .45s ease}
.cwc-ev.flying .a-body,.cwc-ev.flying .a-more,.cwc-ev.flying .a-hcap,.cwc-ev.flying .a-hero .pic{opacity:0}
.cwc-ev.flying.holding .a-hero .pic{opacity:1} /* closing: the header photo stays under the shrinking copy for its first moment (see closeEvent) */
.cwc-ev.flying .a-hero .pic{transition:opacity .15s ease}
.cwc-ev .a-body,.cwc-ev .a-more,.cwc-ev .a-hcap{transition:opacity .3s ease}
/* after the photo lands: a beat, the header words fade in, then the rest of the page (no slide) */
.cwc-ev:not(.flying):not(.swapping) .a-hcap{transition:opacity .55s ease .15s}
.cwc-ev:not(.flying):not(.swapping) .a-body,.cwc-ev:not(.flying):not(.swapping) .a-more{transition:opacity .55s ease .4s}
/* (Matthew, 7 Nov 2026) and before that, the page's panel slides down from behind the landed photo (canvas.js land) */
#cwc .cwc-ev.dropping{background:transparent;overflow:hidden}
.cwc-ev.dropping .a-hero{z-index:2}
.cwc-ev.dropping .a-body,.cwc-ev.dropping .a-more{opacity:0;transition:none}
.cwc-ev.dropped:not(.flying):not(.swapping) .a-body,.cwc-ev.dropped:not(.flying):not(.swapping) .a-more{transition:opacity .45s ease .05s}
.cwc-sheet{position:absolute;left:0;right:0;z-index:1;background:var(--paper);transform:translateY(-100%);pointer-events:none}
.cwc-sheet.on{transform:none;transition:transform .55s cubic-bezier(.65,0,.25,1)} /* the same easing as the photo growing */
.cwc-sheet.up{transition:transform .5s cubic-bezier(.65,0,.25,1)} /* closing: back up behind the photo */
.cwc-ev.folding:not(.flying):not(.swapping) .a-body,.cwc-ev.folding:not(.flying):not(.swapping) .a-more,.cwc-ev.folding:not(.flying):not(.swapping) .a-hcap{opacity:0;transition:opacity .2s ease}
/* the card being opened: its date and words fade before its photo grows (and come back once it has flown home) */
.cwc .cwc-it .cap,.cwc .cwc-sl .sp,.cwc .cwc-sl .cap{transition:opacity .3s ease}
.cwc .cwc-it.opening .cap,.cwc .cwc-sl.opening .sp,.cwc .cwc-sl.opening .cap{opacity:0}
.cwc .cwc-it.returning .cap,.cwc .cwc-sl.returning .sp,.cwc .cwc-sl.returning.on .cap{transition:opacity .5s ease} /* back on the canvas: a slower fade in */
#cwc .cwc-close{
  position:fixed; z-index:45; right:var(--gl); top:20px; display:inline-flex; align-items:center; gap:var(--cw-space-2,8px); height:var(--cw-control,40px); padding:0 14px;
  border:0; background:var(--paper); color:var(--ink); cursor:pointer; font-size:var(--cw-text-sm,12px); letter-spacing:var(--cw-track-wide,.14em); text-transform:uppercase;
}
#cwc .cwc-close:focus{background:var(--paper);color:var(--ink)}
#cwc .cwc-close:hover{background:var(--ink);color:var(--paper)}
.cwc-fly{position:absolute;z-index:44;overflow:hidden;background:transparent;pointer-events:none;transition:left .6s cubic-bezier(.65,0,.25,1),top .6s cubic-bezier(.65,0,.25,1),width .6s cubic-bezier(.65,0,.25,1),height .6s cubic-bezier(.65,0,.25,1)}
.cwc-fly .pic{position:absolute;inset:0;background:center/cover no-repeat}
.cwc-fly.todot{transition:left .6s cubic-bezier(.65,0,.25,1),top .6s cubic-bezier(.65,0,.25,1),width .6s cubic-bezier(.65,0,.25,1),height .6s cubic-bezier(.65,0,.25,1),border-radius .5s cubic-bezier(.65,0,.25,1),opacity .2s ease .3s} /* closing an event opened from the About map: it shrinks into the venue's red dot, rounding, and fades there */
.cwc-fly.todot.gone{border-radius:50%;opacity:0}
.cwc-fly .pic.fade{transition:opacity .6s cubic-bezier(.65,0,.25,1),background-size .6s cubic-bezier(.65,0,.25,1)} /* an event with its own header photo: the card's photo fades over it (see fly) */
/* Changing view: copies of the photos fly to their new places while the real ones and all the words wait hidden;
   then the words fade in (canvas.js vmStart / vmEnd). */
.cwc-vfly{position:absolute;z-index:44;overflow:hidden;background:var(--ink);pointer-events:none;transition:left .7s cubic-bezier(.65,0,.25,1),top .7s cubic-bezier(.65,0,.25,1),width .7s cubic-bezier(.65,0,.25,1),height .7s cubic-bezier(.65,0,.25,1)}
.cwc-vfly .pic{position:absolute;inset:0;background:center/cover no-repeat}
.cwc.vmorph .cwc-it,.cwc.vmorph .cwc-sl,.cwc.vmorph .cwc-tt-ev .pic{visibility:hidden} /* the whole card and record, frame and all: nothing waits in the new places */
.cwc.vmorph .cwc-it .cap,.cwc.vmorph .cwc-sl .sp,.cwc.vmorph .cwc-sl .cap,.cwc.vmorph .cwc-cinfo,.cwc.vmorph .cwc-tt-ev>:not(.pic){opacity:0;transition:none}
.cwc.vmorph .cwc-tt-ev{border-color:transparent;background:transparent;transition:none}
.cwc.vm-in .cwc-it .cap,.cwc.vm-in .cwc-sl .sp,.cwc.vm-in .cwc-sl .cap,.cwc.vm-in .cwc-cinfo,.cwc.vm-in .cwc-tt-ev>:not(.pic){transition:opacity .45s ease}
.cwc.vm-in .cwc-tt-ev{transition:border-color .45s,background .45s}

.cwc-a{min-height:100%}
/* the header is at least this tall, and grows if a long title needs more room, so the words are never cut off */
.cwc-a .a-hero{position:relative;min-height:max(360px,min(78vh,780px));display:flex;flex-direction:column;justify-content:flex-end;background:var(--ink);color:var(--cw-white,#fff);overflow:hidden}
.cwc-a .a-hero .pic{position:absolute;inset:0;background:center/cover no-repeat}
.cwc-a .a-hero::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(10,10,14,.78),rgba(10,10,14,.2) 45%,rgba(10,10,14,0) 70%);pointer-events:none}
.cwc-a .a-hcap{position:relative;z-index:1;padding:96px var(--gl) 30px;display:flex;flex-direction:column;gap:var(--cw-space-3,12px)}
.cwc-a h1{margin:0;font-family:var(--mono);font-weight:500;font-size:var(--cw-text-event-title,clamp(28px,min(5.6vw,8.5vh),84px));line-height:.95;letter-spacing:-.03em;text-transform:uppercase;max-width:18ch;color:var(--cw-white,#fff)}
.cwc-a .a-hcap .tag+h1{margin-top:-.28em} /* close to the date: about 14px between the date and the tops of the letters (Matthew) */
.cwc-a .a-hcap .sub{margin:-6px 0 0;font-family:var(--mono);font-weight:400;font-size:clamp(14px,min(1.87vw,2.83vh),28px);line-height:1.2;letter-spacing:.04em;text-transform:uppercase;color:var(--cw-white,#fff);max-width:40ch} /* the artists under the title, a third of its size, as in the brochure (Matthew, 13 Nov 2026) */
.cwc-a .a-hcap .ln{margin:0;font-size:var(--cw-text-md,13px);letter-spacing:var(--cw-track,.12em);text-transform:uppercase;opacity:.85}
.cwc-a .a-hcap .tag{font-size:var(--cw-text-lg,16px);padding:6px 11px 5px}
.cwc-a .a-body{display:grid;grid-template-columns:minmax(220px,300px) 1fr;gap:var(--cw-space-6,64px);max-width:1180px;margin:0 auto;padding:56px var(--gl) 40px}
.cwc-a dl{margin:0;display:flex;flex-direction:column;gap:var(--cw-space-4,20px)}
.cwc-a dt{font-size:var(--cw-text-xs,11px);letter-spacing:var(--cw-track-wide,.14em);text-transform:uppercase;color:var(--red);margin-bottom:4px}
.cwc-a dd{margin:0;font-size:var(--cw-text-body,15px);line-height:1.45}
.cwc-a .chips{display:flex;flex-wrap:wrap;gap:6px}
.cwc-a .chips span{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border:1px solid var(--ink);font-size:var(--cw-text-xs,11px);letter-spacing:.08em;text-transform:uppercase}
/* the event type icons (category-icons.php): red (Matthew 6 Nov), before each type's name; on the cards, a row before the short line */
.cwc .ti{flex:none;width:24px;height:24px;display:block;color:var(--red)} /* 24px (Matthew 6 Nov) */
.cwc .chips span{gap:7px;padding-left:6px}
.cwc .tis{display:inline-flex;gap:5px;margin-right:8px;vertical-align:-7px}
/* Get tickets: under the price, and beside the date in the photo header; both open the ticket page in a new tab */
.cwc-a .btn{display:flex;align-items:center;justify-content:center;gap:var(--cw-space-2,8px);margin-top:12px;height:var(--cw-control-lg,52px);padding:0 24px;background:var(--red);color:var(--cw-white,#fff);text-decoration:none;font-size:var(--cw-text-md,13px);letter-spacing:var(--cw-track-wide,.14em);text-transform:uppercase;transition:background .2s}
.cwc-a .btn:hover,.cwc-a .btn:focus-visible{background:var(--ink);color:var(--cw-white,#fff)}
.cwc-a .btn.btn-combo{margin-top:8px;height:auto;min-height:var(--cw-control-lg,52px);padding:8px 16px;text-align:center;background:transparent;color:var(--red);box-shadow:inset 0 0 0 1.5px var(--red)} /* the combo ticket: the second button, outlined (Matthew, 15 Nov 2026) */
.cwc-a .combo-price{display:block;margin-top:20px}
.cwc-a .combo-price+.btn-combo{margin-top:12px}
.cwc-a .btn.btn-combo:hover,.cwc-a .btn.btn-combo:focus-visible{background:var(--red);color:var(--cw-white,#fff)}
.cwc-a .a-tix{position:absolute;z-index:2;right:var(--gl);bottom:30px;display:inline-flex;align-items:center;gap:6px;height:var(--cw-control,40px);padding:0 11px;border:1.5px solid var(--cw-white,#fff);color:var(--cw-white,#fff);text-decoration:none;font-size:var(--cw-text-lg,16px);letter-spacing:var(--cw-track,.12em);text-transform:uppercase;line-height:1.4;transition:background .2s,color .2s}
.cwc-a .a-tix:hover,.cwc-a .a-tix:focus-visible{background:var(--cw-white,#fff);color:var(--ink)}
.cwc-a .a-tix.a-free,.cwc-a .a-tix.a-free:hover{border-color:transparent;background:none;color:var(--cw-white,#fff)} /* free events: the word only, same size and place as the button text */
.cwc-a .a-hero:has(.a-tix) .a-hcap{padding-right:calc(var(--gl) + 230px)} /* the title never runs under the button */
.cwc-ev.flying .a-tix,.cwc-ev.swapping .a-tix{opacity:0;transition:none}
.cwc-ev .a-tix{transition:opacity .55s ease .15s,background .2s,color .2s}
@media (max-width:760px){
  /* phones: the photo's button sits bottom right under the words */
  .cwc-a .a-hero:has(.a-tix) .a-hcap{padding-right:var(--gl)}
  .cwc-a .a-hcap .tag+h1{margin-top:-21px} /* well tighter to the date on phones (Matthew) */
  #cwc .cwc-a .a-tix{display:none} /* no button on the photo on phones (Matthew); the red one under the price does the job */
  /* the red button under the price stays near the top, the same size, once it scrolls off; Close steps aside while it is there */
  .cwc-a .btn-slot{display:block;height:calc(var(--cw-control-lg,52px) + 12px)}
  .cwc-ev.stick-on .cwc-a .btn-slot .btn{position:fixed;z-index:46;top:var(--gl);left:var(--gl);right:var(--gl);margin:0;box-shadow:0 8px 20px -12px rgba(0,0,0,.45)} /* the same button, same size, held near the top */
  #cwc .cwc-ev.stick-on .cwc-close{opacity:0;pointer-events:none}
  #cwc .cwc-close{transition:opacity .25s}
}
.cwc-a .a-text{font-size:var(--cw-text-lg,16px);line-height:1.75;max-width:66ch}
.cwc-a .a-text>:first-child{margin-top:0}
.cwc-a .a-text p{margin:0 0 1.15em}
.cwc-a .a-text h2,.cwc-a .a-text h3{font-weight:500;text-transform:uppercase;letter-spacing:.02em;line-height:1.2;margin:1.8em 0 .6em}
.cwc-a .a-text h2{font-size:var(--cw-text-h3,22px)}.cwc-a .a-text h3{font-size:var(--cw-text-xl,17px)}
.cwc-a .a-text a{text-underline-offset:3px}
.cwc-a .a-text img{max-width:100%;height:auto}
.cwc-a .a-more{padding:24px 0 59px;border-top:1px solid var(--line)}
.cwc-a .a-listen{margin-top:40px;font-size:var(--cw-text-base,14px);line-height:1.4}
.cwc-a .a-text .a-listen h2{margin:0 0 14px;font-weight:400;color:var(--red);font-size:var(--cw-text-sm,12px);letter-spacing:var(--cw-track-wide,.14em);text-transform:uppercase}
.cwc-a .lp{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--cw-space-2,8px) 14px;padding:12px 0;border-top:1px solid var(--line)}
.cwc-a .lp:last-of-type{border-bottom:1px solid var(--line)}
#cwc .cwc-a .lp-go{display:flex;align-items:center;gap:var(--cw-space-3,12px);min-width:0;padding:0;border:0;background:none;color:var(--ink);font:inherit;font-size:var(--cw-text-body,15px);text-align:left;cursor:pointer}
.cwc-a .lp-go .ic{flex:none;display:inline-flex;align-items:center;justify-content:center;width:40px;height:var(--cw-control,40px);border-radius:50%;background:var(--red);color:var(--cw-white,#fff);transition:transform .2s}
#cwc .cwc-a button.lp-go:hover .ic,#cwc .cwc-a button.lp-go:focus-visible .ic{transform:scale(1.08)}
.cwc-a .lp-go .nm{font-weight:500;text-transform:uppercase;letter-spacing:.04em}
.cwc-a .lp-go .sv{color:rgba(21,22,28,.55);font-size:var(--cw-text-md,13px)}
.cwc-a .lp.out .lp-go{cursor:default}
#cwc .cwc-a .lp-link{display:inline-flex;align-items:center;gap:var(--cw-space-1,4px);color:rgba(21,22,28,.6);font-size:var(--cw-text-sm,12px);letter-spacing:.1em;text-transform:uppercase;text-decoration:none}
#cwc .cwc-a .lp-link:hover{color:var(--red)}
.cwc-a .lp-link .arr{width:16px;height:16px}
.cwc-a .lp iframe{grid-column:1 / -1;grid-row:1;width:100%;border:0;display:block;background:var(--cw-white,#fff)}
.cwc-a .lp.on .lp-link{grid-row:2;grid-column:2}
.cwc-a .lp.video iframe{aspect-ratio:16/9;height:auto}
/* under each player: the artist's music sites as small logos */
.cwc-a .lp-fol{grid-column:1 / -1;grid-row:2;display:flex;align-items:center;flex-wrap:wrap;gap:0;margin-left:-5px}
.cwc-a .lp-fol .t{margin:0 6px 0 5px;font-size:var(--cw-text-sm,12px);letter-spacing:.1em;text-transform:uppercase;color:rgba(21,22,28,.6)}
#cwc .cwc-a .lp-ic{display:inline-flex;align-items:center;justify-content:center;width:32px;height:var(--cw-control,40px);color:var(--ink);transition:color .2s,transform .2s}
#cwc .cwc-a .lp-ic:hover,#cwc .cwc-a .lp-ic:focus-visible{color:var(--red);transform:scale(1.1)}
.cwc-a .lp-ic svg{width:23px;height:23px;display:block}
.cwc-a .lp-fol .lp-link{margin-left:6px}
.cwc-a.dark .lp-fol .t{color:rgba(244,241,234,.6)}
#cwc .cwc-a.dark .lp-ic{color:var(--paper)}
#cwc .cwc-a.dark .lp-ic:hover{color:var(--red)}
.cwc-a .lp-note{margin:10px 0 0!important;font-size:var(--cw-text-sm,12px);color:rgba(21,22,28,.5)}
.cwc-a .a-more h2{margin:24px var(--gl) 5px;font-weight:400;color:var(--red);font-size:var(--cw-text-sm,12px);letter-spacing:var(--cw-track-wide,.14em);text-transform:uppercase}
/* More events: one long row that drifts left on its own and loops; it stops under the mouse or a finger and can be dragged */
.cwc-a .a-more .row{overflow:hidden;touch-action:pan-y;cursor:grab;user-select:none;-webkit-user-select:none}
.cwc-a .a-more .row.drag{cursor:grabbing}
.cwc-a .a-more .track{display:flex;align-items:center;gap:18px;width:max-content;padding:13px var(--gl);will-change:transform} /* room above and below for the card that grows under the mouse */
.cwc-a .a-more .mc{flex:none;width:min(320px,70vw);-webkit-user-drag:none}
.cwc-a .a-more .row.drag .mc{pointer-events:none}
.cwc-a .mc{position:relative;display:block;aspect-ratio:4/5;overflow:hidden;background:var(--ink);text-decoration:none}
#cwc .cwc-a .mc,#cwc .cwc-a .mc:hover,#cwc .cwc-a .mc:focus{color:var(--cw-white,#fff);text-decoration:none}
.cwc-a .mc .pic{position:absolute;inset:0;display:block;background:var(--ink) center/cover no-repeat;transition:transform .5s cubic-bezier(.2,.8,.2,1)}
.cwc-a .mc:focus-visible .pic{transform:scale(1.04)}
/* the card under the mouse grows a little on its own, like the canvas cards; the others stay put (the row stops drifting under the mouse, so nothing pulses) */
.cwc-a .a-more .mc{transition:transform .35s cubic-bezier(.2,.8,.2,1)}
@media (hover:hover){ .cwc-a .a-more .row:not(.drag) .mc:hover{transform:scale(1.05);z-index:1} }
.cwc-a .mc:focus-visible{outline:2px solid var(--ink);outline-offset:4px}
.cwc-a .mc .pic .ph{position:absolute;inset:0;width:100%;height:100%;opacity:.55;color:var(--paper)}
/* like the homepage cards: date, name and type sit on the photo over a dark fade */
.cwc-a .mc .cap{position:absolute;left:0;right:0;bottom:0;display:flex;flex-direction:column;gap:6px;padding:48px 14px 14px;background:linear-gradient(to top,rgba(10,10,14,.85),rgba(10,10,14,.5) 55%,rgba(10,10,14,0))}
.cwc-a .mc .ttl{font-weight:500;font-size:var(--cw-text-body,15px);line-height:1.2;text-transform:uppercase;letter-spacing:.02em;color:var(--cw-white,#fff);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;overflow:hidden}
.cwc-a .mc .tag{white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.cwc-a .mc .sub{font-size:var(--cw-text-xs,11px);line-height:1.25;letter-spacing:.04em;text-transform:uppercase;color:var(--cw-white,#fff);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.cwc-a .mc .ln{font-size:var(--cw-text-xs,11px);letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.8)}

/* ---------- the crate view: the events as a stack of records ---------- */
.cwc-hero,.cwc-head{transition:opacity .4s ease}
.cwc.crate-on .cwc-hero,.cwc.crate-on .cwc-head{opacity:0;pointer-events:none}
.cwc-crate{position:absolute;inset:0;z-index:3;opacity:0;visibility:hidden;transition:opacity .4s ease,visibility 0s .4s;user-select:none;-webkit-user-select:none;touch-action:none}
.cwc.crate-on .cwc-crate{opacity:1;visibility:visible;transition:opacity .4s ease}
.cwc .cwc-sl{
  position:absolute; left:0; top:0; display:block; overflow:hidden; background:var(--ink); color:var(--cw-white,#fff); text-decoration:none;
  will-change:transform; cursor:pointer; box-shadow:0 -1px 0 rgba(255,255,255,.12) inset,0 14px 34px -16px rgba(0,0,0,.55);
}
.cwc .cwc-sl .pic{position:absolute;inset:0;background:center/cover no-repeat}
.cwc .cwc-sl:focus-visible{outline:2px solid var(--ink);outline-offset:3px}
.cwc .cwc-sl .sp{
  position:absolute; left:0; right:0; top:0; height:var(--spine,20px); display:flex; align-items:center; gap:var(--cw-space-3,12px); padding:0 12px;
  background:linear-gradient(to bottom,rgba(21,22,28,.86),rgba(21,22,28,.5)); color:var(--cw-white,#fff); font-size:var(--cw-text-md,13px); font-weight:500; line-height:1;
  letter-spacing:.06em; text-transform:uppercase; white-space:nowrap; overflow:hidden; text-shadow:0 1px 2px rgba(0,0,0,.5); transition:opacity .25s ease;
}
.cwc .cwc-sl .sp span{min-width:0;overflow:hidden;text-overflow:ellipsis}
.cwc .cwc-sl .sp b{font-weight:500;color:var(--red);flex:none;font-size:var(--cw-text-xs,11px);letter-spacing:.1em}
.cwc .cwc-sl.first .sp{background:var(--red);text-shadow:none} /* the first record of each day: a divider */
.cwc .cwc-sl.first .sp b{color:var(--paper)}
.cwc .cwc-sl .cap .tag{display:none}
.cwc .cwc-sl .sp b i{font-style:normal;display:none}
.cwc .cwc-sl.on .sp b i{display:inline} /* the date stays in the strip at the top, even on the open record */
.cwc .cwc-sl .cap{
  position:absolute; left:0; right:0; bottom:0; padding:42px 14px 13px; display:flex; flex-direction:column; gap:var(--cw-space-1,4px);
  background:linear-gradient(to top,rgba(10,10,14,.82),rgba(10,10,14,.5) 55%,rgba(10,10,14,0)); opacity:0; transition:opacity .3s ease;
}
.cwc .cwc-sl.on .cap{opacity:1}
.cwc-crate:not(.phone) .cwc-sl .cap{display:none}
.cwc-sl .ttl{font-weight:500;font-size:var(--cw-text-body,15px);line-height:1.2;text-transform:uppercase;letter-spacing:.02em;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}
.cwc-sl .ln{font-size:var(--cw-text-xs,11px);letter-spacing:.06em;opacity:.78;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cwc-sl .tag b,.cwc-sl .tag i{font-weight:inherit;font-style:normal}
.cwc-cinfo{position:absolute;left:var(--gl);top:50%;transform:translateY(-50%);z-index:0;pointer-events:none}
.cwc-cinfo p{margin:0}
.cwc-cinfo .ci-when{display:inline-block;font-size:var(--cw-text-base,14px);letter-spacing:var(--cw-track,.12em);text-transform:uppercase;line-height:1.4;padding:5px 10px 4px;background:var(--red);color:var(--cw-white,#fff);margin-bottom:16px} /* matches the date tags on the cards */
.cwc-cinfo .ci-ttl{font-weight:500;font-size:var(--cw-text-crate-title,clamp(26px,3.1vw,48px));line-height:1;letter-spacing:-.02em;text-transform:uppercase}
.cwc-cinfo .ci-ln{margin-top:16px;font-size:var(--cw-text-lg,16px);letter-spacing:.08em;text-transform:uppercase}
.cwc-cinfo .ci-venue{margin-top:6px;font-size:var(--cw-text-lg,16px);color:var(--muted)}
.cwc-cinfo .ci-hint{margin-top:26px;font-size:var(--cw-text-xs,11px);letter-spacing:var(--cw-track-wide,.14em);text-transform:uppercase;color:var(--muted)}
.cwc-cinfo.in{animation:cwcInfo .35s ease both}
@keyframes cwcInfo{from{opacity:0;transform:translateY(calc(-50% + 8px))}to{opacity:1;transform:translateY(-50%)}}
.cwc-crate.phone .cwc-cinfo{display:none}
.cwc-crate.phone .cwc-sl .ttl{font-size:18px} /* a little bigger (Matthew) */
.cwc-crate.phone .cwc-sl .sp{font-size:12.5px;gap:10px;padding:0 10px}
.cwc-crate.phone .cwc-sl .sp b{font-size:10.5px}
/* the bottom right controls: the day filter, then the view switch */
.cwc-ctl{position:absolute;right:var(--gl);bottom:var(--gl);z-index:5;display:flex;flex-direction:column;align-items:stretch;gap:var(--cw-space-2,8px);transition:opacity .3s} /* the days on top, the view switch under them, the same width (Matthew) */
.cwc-ctl>*{display:flex}
.cwc-ctl .cwc-day,.cwc-ctl .cwc-view{flex:1 1 auto}
.cwc.searching .cwc-ctl{opacity:0;pointer-events:none}
.cwc-days{display:flex;height:var(--cw-control,40px);border:1px solid var(--red);background:var(--paper)}
#cwc .cwc-day{display:inline-flex;align-items:center;justify-content:center;height:100%;padding:0 12px;border:0;border-left:1px solid var(--red);background:transparent;color:var(--red);cursor:pointer;font-size:var(--cw-text-sm,12px);letter-spacing:var(--cw-track-wide,.14em);text-transform:uppercase}
#cwc .cwc-day:first-child{border-left:0}
#cwc .cwc-day:hover{background:var(--cw-red-tint,rgba(246,66,23,.1))}
#cwc .cwc-day[aria-pressed="true"]{background:var(--red);color:var(--paper)}
.cwc-day .s{display:none}
/* the same buttons under the search field */
.cwc-sdays{position:absolute;z-index:6;left:50%;top:78px;transform:translate(-50%,-30px);opacity:0;pointer-events:none;transition:transform .45s cubic-bezier(.2,.8,.2,1),opacity .3s}
.cwc.searching .cwc-sdays{transform:translate(-50%,0);opacity:1;pointer-events:auto}
/* changing day: everything fades out and back in */
.cwc .cwc-it.off{opacity:0!important;pointer-events:none;transition:opacity .45s ease}
.cwc .cwc-sl{transition:opacity .4s ease}
.cwc .cwc-sl.off{opacity:0;pointer-events:none}
.cwc-crate .cwc-sl.fly.fly{transition:transform .6s cubic-bezier(.45,0,.2,1),opacity 0s;opacity:1} /* a day change: records slide out and in (see crateSort) */
.cwc-crate.reflow .cwc-sl.stay{transition:transform .6s cubic-bezier(.2,.8,.2,1),width .6s cubic-bezier(.2,.8,.2,1),height .6s cubic-bezier(.2,.8,.2,1),opacity .4s ease}

/* the view switch: Canvas / Crate / Timetable */
.cwc-views{display:flex;height:var(--cw-control,40px);border:1px solid var(--red);background:var(--paper)}
#cwc .cwc-view{display:inline-flex;align-items:center;justify-content:center;gap:var(--cw-space-2,8px);height:100%;padding:0 12px;border:0;border-left:1px solid var(--red);background:transparent;color:var(--red);cursor:pointer;font-size:var(--cw-text-sm,12px);letter-spacing:var(--cw-track-wide,.14em);text-transform:uppercase}
#cwc .cwc-view:first-child{border-left:0}
#cwc .cwc-view:hover{background:var(--cw-red-tint,rgba(246,66,23,.1))}
#cwc .cwc-view[aria-pressed="true"]{background:var(--red);color:var(--paper)}
#cwc .cwc-view svg{flex:none}
@media (max-width:1280px){ #cwc .cwc-view span{display:none} #cwc .cwc-view{width:42px;padding:0} }

/* ---------- the timetable view: one column per day, the events in time order ---------- */
.cwc.tt-on .cwc-hero,.cwc.tt-on .cwc-head{opacity:0;pointer-events:none}
.cwc-tt{position:absolute;inset:0;z-index:3;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;opacity:0;visibility:hidden;transition:opacity .4s ease,visibility 0s .4s}
.cwc.tt-on .cwc-tt{opacity:1;visibility:visible;transition:opacity .4s ease}
.cwc-tt::before{content:"";position:sticky;top:0;z-index:2;display:block;height:var(--tth,98px);margin-bottom:calc(-1 * var(--tth,98px));pointer-events:none;background:var(--paper)} /* solid down to the day heading, so nothing shows above it while scrolling (Matthew) */
.cwc-tt::after{content:"";position:sticky;bottom:0;z-index:2;display:block;height:130px;margin-top:-130px;pointer-events:none;background:linear-gradient(rgba(244,241,234,0),var(--paper) 62%)} /* the buttons at the bottom never sit on a box */
.cwc-tt-in{box-sizing:border-box;display:grid;grid-template-columns:repeat(var(--n,3),minmax(0,1fr));gap:var(--cw-space-5,28px);max-width:calc(var(--n,3) * 440px + 2 * var(--gl) + 190px);padding:122px calc(var(--gl) + 190px) 150px var(--gl)} /* room for the side menu on the right and the buttons at the bottom */
.cwc.searching .cwc-tt-in{padding-top:152px}
.cwc-tt-in.one{max-width:calc(940px + 2 * var(--gl) + 190px)} /* one day: its boxes side by side, two across */
.cwc-tt-in.one .cwc-tt-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:10px}
.cwc-tt-day[hidden]{display:none}
.cwc-tt-day{animation:cwc-tt-in .45s ease both}
@keyframes cwc-tt-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.cwc-tt-h{position:sticky;top:var(--tth,98px);z-index:3;margin:0 0 12px;padding:10px 0 9px;background:var(--paper);border-bottom:1.5px solid var(--red);color:var(--red);font-size:var(--cw-text-base,14px);font-weight:500;letter-spacing:var(--cw-track-wide,.14em);text-transform:uppercase;transition:opacity .3s}
.cwc.searching .cwc-tt{--tth:128px}
.cwc-tt-day.quiet .cwc-tt-h{opacity:.35}
.cwc-tt-list{display:flex;flex-direction:column;gap:10px}
.cwc-tt-ev{position:relative;display:grid;grid-template-columns:72px minmax(0,1fr);column-gap:14px;padding:12px;border:1px solid var(--cw-box-edge,rgba(21,22,28,.14));background:rgba(255,255,255,.45);transition:border-color .2s,background .2s,opacity .35s}
.cwc-tt-ev:hover{border-color:var(--ink);background:var(--cw-white,#fff)}
.cwc-tt-ev:focus-within{outline:2px solid var(--ink);outline-offset:2px}
.cwc-tt-ev.gone{display:none}
.cwc-tt-ev .pic{grid-row:1 / span 2;width:72px;height:72px;display:block;background:var(--ink) center/cover no-repeat}
.cwc-tt-ev .go{display:flex;flex-direction:column;gap:var(--cw-space-1,4px);min-width:0;color:var(--ink);text-decoration:none;outline:0}
.cwc-tt-ev .go::after{content:"";position:absolute;inset:0} /* the whole box opens the event */
.cwc-tt-ev .tm{align-self:flex-start;padding:4px 8px 3px;margin-bottom:2px;background:var(--red);color:var(--cw-white,#fff);font-size:var(--cw-text-md,13px);line-height:1.4;letter-spacing:.1em;text-transform:uppercase} /* white on red, like the dates on the canvas cards */
.cwc-tt-ev .ttl{font-size:var(--cw-text-body,15px);font-weight:500;line-height:1.25;letter-spacing:.02em;text-transform:uppercase}
.cwc-tt-ev .mt{display:flex;flex-direction:column;gap:2px;margin-top:2px;font-size:var(--cw-text-sm,12px);line-height:1.35;color:rgba(21,22,28,.6)}
.cwc-tt-ev .ln{font-size:var(--cw-text-xs,11px);letter-spacing:.1em;text-transform:uppercase}
.cwc-tt-ev .sd{grid-column:2;display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px;min-height:28px}
.cwc-tt-ev .pr{font-size:var(--cw-text-md,13px);color:var(--ink)}
.cwc-tt-ev .pr.free{color:var(--red);text-transform:uppercase;letter-spacing:var(--cw-track,.12em);font-size:var(--cw-text-sm,12px)}
#cwc .cwc-tt-ev .tix{position:relative;z-index:1;flex:none;margin-left:auto;display:inline-flex;align-items:center;gap:var(--cw-space-1,4px);padding:4px 7px 3px 9px;border:1px solid var(--red);color:var(--red);text-decoration:none;font-size:var(--cw-text-xs,11px);letter-spacing:var(--cw-track,.12em);text-transform:uppercase;line-height:1.4;transition:background .2s,color .2s}
#cwc .cwc-tt-ev .tix:hover,#cwc .cwc-tt-ev .tix:focus-visible{background:var(--red);color:var(--paper)}
#cwc .cwc-tt-ev .tix.free,#cwc .cwc-tt-ev .tix.free:hover{border-color:transparent;background:none;color:var(--red);padding-right:9px} /* free events: the word only, same size as the button text */
.cwc-tt-ev .tix .arr{width:16px;height:16px}
@media (max-width:1100px) and (min-width:761px){
  .cwc-tt-in,.cwc-tt-in.one{grid-template-columns:minmax(0,1fr)!important;max-width:calc(600px + 2 * var(--gl) + 190px)}
  .cwc-tt-in.one .cwc-tt-list{display:flex}
}

/* ---------- phones ---------- */
@media (max-width:760px){
  .cwc{--gl:var(--cw-edge-phone,16px)}
  .cwc-top{padding:14px var(--gl);gap:10px}
  .cwc .logo-mask{width:112px}
  .cwc-dates{font-size:var(--cw-text-sm,12px);letter-spacing:.08em;text-align:right;line-height:1.35}
  .cwc-dates .sep{display:block;height:0;overflow:hidden}
  .cwc-sbtn{width:40px;padding:0;justify-content:center}
  .cwc-sbtn span{display:none}
  .cwc-head .hl{font-size:clamp(30px,11vw,52px)}
  .cwc-head .intro{font-size:var(--cw-text-xs,11px);margin-top:10px}
  .cwc .cwc-it .cap{padding:30px 10px 10px}
  .cwc-it .ttl{font-size:var(--cw-text-base,14px)}
  .cwc-it .ln{display:none}
  .cwc-it .sub{display:none} /* phone cards are small: the artists are on the event page */
  .cwc .tag{font-size:var(--cw-text-xs,11px)}
  .cwc-a .a-hcap .tag{font-size:14.5px;padding:6px 10px 5px} /* a little bigger on phones (Matthew) */
  .cwc-a .a-hcap h1{font-size:32px}
  .cwc-a .a-tix{font-size:var(--cw-text-md,13px);padding:0 11px}
  .cwc-search{top:13px;height:var(--cw-control-lg,52px);padding:0 8px 0 12px;gap:var(--cw-space-2,8px)} /* the X sits as far from the right edge as the magnifier from the left */
  .cwc-search .count{font-size:10px;letter-spacing:.08em}
  #cwc .cwc-search input{font-size:var(--cw-text-lg,16px)}
  .cwc-sdays{top:68px}
  /* phones: while searching the logo fades away and the search box takes the full width, centred over the day buttons */
  .cwc-search{--sl:var(--gl)}
  .cwc.searching .cwc-logo{opacity:0;pointer-events:none}
  .cwc-head{bottom:calc(var(--gl) + var(--lift,98px) + var(--dh,50px) - 6px)} /* above the dates line; both lift over the day and view buttons only when they'd touch (canvas.js fitHead) */
  #cwc .cwc-day{padding:0 8px;font-size:var(--cw-text-xs,11px);letter-spacing:.06em}
  .cwc-ctl .cwc-day .l{display:none}
  .cwc-ctl .cwc-day .s{display:inline}
  .cwc-ctl{left:var(--gl);flex-direction:row;justify-content:space-between;gap:10px} /* phones: days on the left, views on the right, one row with a gap between (Matthew) */
  .cwc-ctl>*{flex:none}
  #cwc .cwc-view{width:auto;min-width:34px}
  .cwc-tt-in,.cwc-tt-in.one{grid-template-columns:minmax(0,1fr)!important;max-width:none;gap:24px;padding:94px var(--gl) 130px}
  .cwc-tt-in.one .cwc-tt-list{display:flex}
  .cwc-tt{--tth:74px}
  .cwc-tt-h{font-size:var(--cw-text-body,15px)} /* the day headings, a little bigger on phones (Matthew) */
  .cwc.searching .cwc-tt-in{padding-top:124px}
  .cwc.searching .cwc-tt{--tth:112px}
  .cwc-tt-ev{grid-template-columns:56px minmax(0,1fr);column-gap:12px;padding:10px}
  .cwc-tt-ev .pic{width:56px;height:56px}
  .cwc-tt-ev .ttl{font-size:var(--cw-text-lg,16px)} /* bigger on phones (Matthew) */
  .cwc-tt-ev .tm{font-size:var(--cw-text-sm,12px)}
  .cwc-close,#cwc .cwc-exit{top:14px}
  .cwc-a .a-hero{min-height:max(300px,64vh)}
  .cwc-a .a-hcap{padding:80px var(--gl) 20px}
  .cwc-a .a-body{grid-template-columns:1fr;gap:36px;padding-top:32px}
  .cwc-a .a-more .track{gap:var(--cw-space-3,12px)}
  .cwc-a .mc .cap{padding:36px 10px 10px;gap:5px}
  .cwc-a .mc .ttl{font-size:12.5px;-webkit-line-clamp:3}
}
@media (prefers-reduced-motion:reduce){
  .cwc-it .pic,.cwc-fly,.cwc-vfly,.cwc-ev .a-body{transition:none!important}
}
/* an open event: the logo stays where it is, above the photo */
.cwc.is-open .cwc-top>*{z-index:45}
.cwc.is-open .cwc-top>*:not(.cwc-logo){opacity:0;pointer-events:none} /* closing too: search and the rest come back with the menu button, once the photo is home (Matthew, 7 Nov 2026: search showed over the shrinking photo) */
#cwc .cwc-logo{transition:color .3s,opacity .3s}
/* (Matthew, 5 Nov) the logo keeps the canvas style on an open event too: inverted, so white over the photo and black over the page; it stays as the page scrolls */
.cwc .cwc-sl.opening.on .cap{opacity:0}
.cwc-ev.prep .a-body,.cwc-ev.prep .a-more,.cwc-ev.prep .a-hcap,.cwc-ev.prep .a-hero::after{transition:none!important}
.cwc.closing .cwc-ev.stick-on .cwc-a .btn{opacity:0}
/* More events: dates stay on one line as the window narrows */
.cwc-a .btn .arr,.cwc-a .a-tix .arr{width:1.25em;height:1.25em;flex:none;margin-top:-1px}

/* ---------- the side menu and the pages that roll up from below the events (desktop: menu on the right, halfway down) ---------- */
.cwc-nav{position:absolute;z-index:7;right:var(--gl);top:50%;transform:translateY(-50%);display:flex;flex-direction:column;align-items:flex-end;gap:var(--cw-space-3,12px);color:var(--cw-white,#fff);mix-blend-mode:difference;transition:opacity .3s}
#cwc .cwc-nav a{position:relative;display:inline-flex;align-items:center;gap:10px;font-size:var(--cw-text-lg,16px);letter-spacing:var(--cw-track,.12em); /* the same size as the dates line at the top (Matthew, 6 Nov) */text-transform:uppercase;text-decoration:none;color:inherit;line-height:1.2;padding:2px 0}
#cwc .cwc-nav a::before{content:"";width:0;height:1.5px;background:currentColor;transition:width .35s cubic-bezier(.2,.8,.2,1)}
#cwc .cwc-nav a[aria-current]::before{width:22px}
/* the chosen item in the real red (Matthew): it's hidden in the blending menu and shown in a copy on top that doesn't blend */
@media (min-width:761px){
  #cwc .cwc-nav:not(.hot) a[aria-current]{visibility:hidden}
  #cwc .cwc-nav.hot{mix-blend-mode:normal;pointer-events:none}
  #cwc .cwc-nav.hot a{visibility:hidden}
  #cwc .cwc-nav.hot a[aria-current]{visibility:visible;color:var(--red)}
}
@media (max-width:760px){ #cwc .cwc-nav.hot{display:none} }
#cwc .cwc-nav a:hover::before{width:12px}
#cwc .cwc-nav a[aria-current]:hover::before{width:22px}
#cwc.pages-on .cwc-nav{mix-blend-mode:normal;color:var(--ink)}
#cwc.pages-on .cwc-nav a[aria-current]{color:var(--red)}
.cwc.is-open .cwc-nav,.cwc.searching .cwc-nav,.cwc.inst-on .cwc-nav{opacity:0;pointer-events:none}
#cwc .cwc-mbtn{display:none}
.cwc-pdates{display:none}

/* the pages: they roll up from below and the events roll away above */
.cwc-pages{position:absolute;inset:0;z-index:6;overflow:hidden;background:var(--paper);transform:translateY(100%);visibility:hidden;
  transition:transform .85s cubic-bezier(.7,0,.2,1),visibility 0s .85s}
.cwc.pages-on .cwc-pages{transform:none;visibility:visible;transition:transform .85s cubic-bezier(.7,0,.2,1),visibility 0s}
/* each page is a panel of its own that scrolls on its own; choosing another slides it up from the bottom over the one
   being read, which then goes (Matthew: not one long panel) */
.cwc-sec{position:absolute;inset:0;z-index:1;display:flex;flex-direction:column;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;background:var(--paper);transform:translateY(100%);visibility:hidden;transition:transform .85s cubic-bezier(.7,0,.2,1),visibility 0s .85s}
.cwc-sec.on{z-index:2;transform:none;visibility:visible;transition:transform .85s cubic-bezier(.7,0,.2,1),visibility 0s}
.cwc-sec.was{z-index:1;transform:none;visibility:visible;transition:none}
.cwc-pages.snap .cwc-sec{transition:none!important}
.cwc-sec-in{flex:1 0 auto}
.cwc-sec::before{content:"";position:sticky;top:0;z-index:2;flex:none;display:block;height:92px;margin-bottom:-92px;pointer-events:none;background:linear-gradient(var(--paper) 62%,rgba(244,241,234,0))} /* the logo never sits on top of the words */
.cwc .cwc-top>*{z-index:7} /* the logo stays above the pages (the day buttons stay under them) */
.cwc-shapes,.cwc-hero,.cwc-head,.cwc-ctl,.cwc-crate,.cwc-tt{transition-property:opacity,transform,visibility;transition-duration:.4s,.85s,0s;transition-timing-function:ease,cubic-bezier(.7,0,.2,1)}
#cwc .cwc-crate,#cwc .cwc-tt{transition:opacity .4s ease,transform .85s cubic-bezier(.7,0,.2,1),visibility 0s .4s}
#cwc.crate-on .cwc-crate,#cwc.tt-on .cwc-tt{transition:opacity .4s ease,transform .85s cubic-bezier(.7,0,.2,1),visibility 0s} /* the crate and timetable drift up with the reveal too, instead of jumping (Matthew) */
#cwc.pages-on .cwc-shapes,#cwc.pages-on .cwc-hero,#cwc.pages-on .cwc-head,#cwc.pages-on .cwc-ctl,#cwc.pages-on .cwc-crate,#cwc.pages-on .cwc-tt{transform:translateY(-28vh);pointer-events:none} /* a reveal: the page slides up over the events, which drift up a little behind it; no fade (Matthew) */
.cwc.pages-on .cwc-top>*:not(.cwc-logo){opacity:0;pointer-events:none}
.cwc-top>*{transition:opacity .3s}
.cwc.no-anim .cwc-pages,.cwc.no-anim .cwc-hero,.cwc.no-anim .cwc-head,.cwc.no-anim .cwc-ctl,.cwc.no-anim .cwc-crate,.cwc.no-anim .cwc-tt,.cwc.no-anim .cwc-shapes{transition:none!important}

/* each page: its name on the left (it stays in view while its words scroll), the words in a column, room on the right for the menu */
.cwc-sec-in{display:grid;grid-template-columns:minmax(200px,300px) minmax(0,680px);align-content:start;gap:var(--cw-space-6,64px);padding:120px calc(var(--gl) + 190px) 96px var(--gl)}
.cwc-sec-h{position:sticky;top:110px;align-self:start;margin:0;font-weight:500;font-size:var(--cw-text-page-title,clamp(28px,3.2vw,52px));line-height:1;letter-spacing:-.02em;text-transform:uppercase;overflow-wrap:anywhere;color:var(--red)} /* the page title in red (Matthew) */
.cwc-sec-b{font-size:var(--cw-text-body,15px);line-height:1.7;max-width:680px}
.cwc-sec-b>*:first-child{margin-top:0}
.cwc-sec-b p{margin:0 0 1.1em}
.cwc-sec-b .cw-lead{font-size:var(--cw-text-lead,clamp(20px,1.9vw,28px));line-height:1.3;letter-spacing:-.01em;margin-bottom:1.2em}
#cwc-s-about .cwc-sec-b .cw-lead:not(:first-child){color:var(--red)} /* About's closing line, "Music in and beyond the club.", in red (Matthew, 8 Nov 2026) */
#cwc-s-get-involved .cwc-sec-b .cw-lead:first-child{color:var(--red)} /* For Artists' opening line, "Make music. Play live. Connect.", in red (Matthew, 8 Nov 2026) */
.cwc-sec-b h3{margin:2.6em 0 .5em;font-weight:500;font-size:var(--cw-text-h3,22px);line-height:1.2;text-transform:uppercase;letter-spacing:.01em}
.cwc-sec-b h4{margin:1.6em 0 .4em;font-weight:500;font-size:var(--cw-text-md,13px);letter-spacing:var(--cw-track-wide,.14em);text-transform:uppercase}
.cwc-sec-b .cw-sub{margin-top:-.2em;color:var(--red);font-size:var(--cw-text-md,13px);letter-spacing:var(--cw-track,.12em);text-transform:uppercase}
#cwc .cwc-sec-b .cw-go a{display:inline-flex;align-items:center;gap:var(--cw-space-2,8px);height:var(--cw-control,40px);padding:0 14px;background:var(--red);color:var(--cw-white,#fff);text-decoration:none;font-size:var(--cw-text-md,13px);letter-spacing:var(--cw-track,.12em);text-transform:uppercase;transition:background .2s}
#cwc .cwc-sec-b .cw-go a::after{content:"\2197"}
#cwc .cwc-sec-b .cw-go a:hover{background:var(--ink)}
.cwc-sec-b .cw-names{list-style:none;margin:0 0 .4em;padding:0;font-size:clamp(18px,1.6vw,24px);line-height:1.45}
/* partner logos (Matthew, 4 Nov): one ink colour, each in the same-sized box so they balance; a partner without a logo yet shows its name */
.cwc-sec-b .cw-logos{list-style:none;margin:6px 0 1.6em;padding:0;display:flex;flex-wrap:wrap;gap:14px}
.cwc-sec-b .cw-logos li{box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:184px;height:112px;padding:18px 22px;border:1px solid var(--cw-box-edge,rgba(21,22,28,.14));margin:0}
.cwc-sec-b .cw-logos li.wide{padding:24px 18px}
.cwc-sec-b .cw-logos.lg li{width:250px;height:150px;padding:26px 30px}
.cwc-sec-b .cw-logos img{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain}
/* a partner's box opens their website; the logo inside grows a little under the mouse (Matthew) */
.cwc-sec-b .cw-logos li{position:relative}
#cwc .cwc-sec-b .cw-logos a{display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:inherit;text-decoration:none;outline:0}
#cwc .cwc-sec-b .cw-logos a::after{content:"";position:absolute;inset:0} /* the whole box is the link */
.cwc-sec-b .cw-logos a>*{transition:transform .3s cubic-bezier(.2,.8,.2,1)}
.cwc-sec-b .cw-logos a:hover>*,.cwc-sec-b .cw-logos a:focus-visible>*{transform:scale(1.07)}
.cwc-sec-b .cw-logos li:has(a:focus-visible){outline:2px solid var(--ink);outline-offset:2px}
.cwc-sec-b .cw-logos li.nm{font-size:var(--cw-text-body,15px);letter-spacing:.08em;text-transform:uppercase;text-align:center;line-height:1.35}
@media (max-width:760px){
  .cwc-sec-b .cw-logos{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .cwc-sec-b .cw-logos li,.cwc-sec-b .cw-logos.lg li{width:auto;height:96px;padding:14px 16px}
  .cwc-sec-b .cw-logos li.nm{font-size:var(--cw-text-sm,12px)}
}
.cwc-sec-b a{color:inherit;text-underline-offset:3px}
/* ---------- About page extras (Matthew, 8 Nov 2026): includes/about.php, canvas.js (sidePhotos, aboutBits) ---------- */
/* the title and, on a wide screen, the page's photos under it: whichever part is being read */
.cwc-sec-side{position:sticky;top:110px;align-self:start}
.cwc-sec-side .cwc-sec-h{position:static}
.cwc-side{display:none}
.cwc-sec-b figure{margin:2em 0}
.cwc-sec-b figure img,.cwc-sec-b p>img:only-child{display:block;width:100%;height:auto}
.cwc-sec-b figcaption{margin-top:8px;font-size:var(--cw-text-sm,12px);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
@media (min-width:1101px){
  .cwc-side.has{display:block;position:relative;margin-top:40px;width:100%;aspect-ratio:4/5;max-height:calc(100vh - 300px);min-height:220px;overflow:hidden;background:var(--line)}
  .cwc-side img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transform:scale(1.06);transition:opacity .8s ease,transform 1.6s cubic-bezier(.2,.8,.2,1)}
  .cwc-side img.on{opacity:1;transform:none}
  .cwc-side .cap{position:absolute;left:0;bottom:0;max-width:100%;box-sizing:border-box;padding:5px 9px 4px;background:var(--red);color:var(--cw-white,#fff);font-size:var(--cw-text-xs,11px);letter-spacing:var(--cw-track,.12em);text-transform:uppercase;line-height:1.4;opacity:0;transition:opacity .5s}
  .cwc-side .cap.on{opacity:1}
  .cwc-sec-b .cw-sidesrc{display:none}
}
/* the numbers: they count up the first time they come into view */
.cw-nums{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin:2.4em 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.cw-num{padding:20px 0 18px 20px;border-left:1px solid var(--line)}
.cw-num:first-child{padding-left:0;border-left:0}
.cw-num b{display:block;font-weight:500;font-size:clamp(40px,4.4vw,64px);line-height:1;letter-spacing:-.03em;color:var(--red);font-variant-numeric:tabular-nums}
.cw-num span{display:block;margin-top:10px;font-size:var(--cw-text-sm,12px);letter-spacing:var(--cw-track-wide,.14em);text-transform:uppercase;color:var(--muted)}
/* the venues: a card each, grey until the mouse is on it; a red tag above it names it (like the partner logos) */
.cw-venues{list-style:none;margin:1.8em 0 2.4em;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.cw-venues li{margin:0;min-width:0}
#cwc .cw-venue{position:relative;display:block;width:100%;padding:0;border:0;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer}
.cw-venue .vpic{display:block;aspect-ratio:4/5;overflow:hidden;background:var(--line)}
.cw-venue .vpic img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .7s cubic-bezier(.2,.7,.2,1)} /* in colour, and growing a little under the mouse, like the flyers on the canvas (Matthew, 8 Nov 2026) */
@media (hover:hover){ .cw-venue:hover .vpic img{transform:scale(1.04)} }
.cw-venue:focus-visible .vpic img{transform:scale(1.04)}
.cw-venue .vtag{position:absolute;z-index:2;left:8px;bottom:8px;max-width:calc(100% - 16px);padding:4px 8px 3px;background:var(--red);color:var(--cw-white,#fff);font-size:var(--cw-text-xs,11px);letter-spacing:var(--cw-track,.12em);text-transform:uppercase;line-height:1.4;text-align:left;white-space:normal;pointer-events:none} /* the venue name sits on its photo, always shown (Matthew, 8 Nov 2026) */
.cw-venue .vname{display:none}
/* the kinds of event: red tags; each shows its events on the programme */
.cw-strands{list-style:none;margin:1.2em 0 2.2em;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.cw-strands li{margin:0}
#cwc .cw-strand{display:inline-flex;align-items:center;gap:10px;min-height:36px;padding:0 12px;border:1px solid var(--red);background:transparent;color:var(--red);font:inherit;font-size:var(--cw-text-sm,12px);letter-spacing:var(--cw-track,.12em);text-transform:uppercase;cursor:pointer;transition:background .2s,color .2s}
.cw-strand i{font-style:normal;opacity:.65}
#cwc .cw-strand:hover,#cwc .cw-strand:focus-visible{background:var(--red);color:var(--cw-white,#fff)}
/* the map: the streets and the river drawn in the site's ink, the venues as red dots; a click gives directions */
.cw-map{margin:1.8em 0 2.4em}
.cw-map-in{position:relative;overflow:visible;border:1px solid var(--line);background:var(--paper)}
.cw-map-art{position:absolute;inset:0;width:100%;height:100%}
.cw-map .m-water{fill:var(--ink);opacity:.07}
.cw-map .m-road{fill:none;stroke:var(--ink);stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.cw-map .m-minor{stroke-width:.7;opacity:.2}
.cw-map .m-major{stroke-width:1.6;opacity:.42}
.cw-map .m-label{font-size:13px;letter-spacing:.3em;fill:var(--ink);opacity:.4;text-transform:uppercase}
#cwc .cw-pin{position:absolute;z-index:1;display:block;width:30px;height:30px;margin:-15px 0 0 -15px;color:inherit;text-decoration:none}
#cwc .cw-pin:hover,#cwc .cw-pin:focus-visible,#cwc .cw-pin.show{z-index:5}
.cw-pin .pdot{position:absolute;left:50%;top:50%;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;background:var(--red);transition:transform .2s ease}
.cw-pin .pdot::after{content:"";position:absolute;inset:-6px;border-radius:50%;border:1px solid var(--red);opacity:0;animation:cw-ping 2.8s ease-out infinite}
.cw-pin:nth-child(3n) .pdot::after{animation-delay:.9s}
.cw-pin:nth-child(3n+1) .pdot::after{animation-delay:1.8s}
@keyframes cw-ping{0%{transform:scale(.6);opacity:.7}70%,100%{transform:scale(1.8);opacity:0}}
.cw-pin:hover .pdot,.cw-pin:focus-visible .pdot,.cw-pin.show .pdot{transform:scale(1.35)}
.cw-pin .ptag{position:absolute;left:50%;bottom:100%;transform:translate(-50%,2px);padding:4px 8px 3px;background:var(--red);color:var(--cw-white,#fff);font-size:var(--cw-text-xs,11px);letter-spacing:var(--cw-track,.12em);text-transform:uppercase;line-height:1.4;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .2s ease,transform .25s ease}
.cw-pin:hover .ptag,.cw-pin:focus-visible .ptag,.cw-pin.show .ptag{opacity:1;transform:translate(-50%,-4px)}
/* the label's venue photo, above the name; near the top of the map the label opens below the pin, near a side it leans in */
.cw-pin .ptag:has(.ppic){display:flex;flex-direction:column;gap:0;width:180px;padding:0;white-space:normal}
.cw-pin .ppic{display:block;width:100%;aspect-ratio:4/3;object-fit:cover}
.cw-pin .pname{display:block;padding:5px 8px 4px}
.cw-pin.below .ptag{bottom:auto;top:100%;transform:translate(-50%,-2px)}
.cw-pin.below:hover .ptag,.cw-pin.below:focus-visible .ptag,.cw-pin.below.show .ptag{transform:translate(-50%,4px)}
.cw-pin.lean-r .ptag{left:0;transform:translate(0,2px)}
.cw-pin.lean-r:hover .ptag,.cw-pin.lean-r:focus-visible .ptag,.cw-pin.lean-r.show .ptag{transform:translate(0,-4px)}
.cw-pin.lean-l .ptag{left:auto;right:0;transform:translate(0,2px)}
.cw-pin.lean-l:hover .ptag,.cw-pin.lean-l:focus-visible .ptag,.cw-pin.lean-l.show .ptag{transform:translate(0,-4px)}
.cw-pin.below.lean-r .ptag,.cw-pin.below.lean-l .ptag{transform:translate(0,-2px)}
.cw-pin.below.lean-r:hover .ptag,.cw-pin.below.lean-r:focus-visible .ptag,.cw-pin.below.lean-r.show .ptag,.cw-pin.below.lean-l:hover .ptag,.cw-pin.below.lean-l:focus-visible .ptag,.cw-pin.below.lean-l.show .ptag{transform:translate(0,4px)}
@media (max-width:760px){.cw-pin .ptag:has(.ppic){width:140px}}
/* The map's Venues / Events / Artists switch: small text tabs like the For Artists series, the chosen one a red box (Matthew, 8 Nov 2026) */
#cwc .cw-map-modes{display:flex;flex-wrap:wrap;gap:4px 6px;margin:0 0 10px}
#cwc .cw-map-modes button{display:inline-block;margin:0;padding:9px 12px 8px;border:0;border-radius:0;background:none;color:var(--muted);font-family:var(--mono);font-weight:500;font-size:var(--cw-text-md,13px);letter-spacing:var(--cw-track-wide,.14em);line-height:1.2;text-transform:uppercase;cursor:pointer;transition:background .25s ease,color .25s ease}
#cwc .cw-map-modes button:hover,#cwc .cw-map-modes button:focus{background:none;color:var(--ink)}
#cwc .cw-map-modes button[aria-pressed="true"],#cwc .cw-map-modes button[aria-pressed="true"]:hover,#cwc .cw-map-modes button[aria-pressed="true"]:focus{background:var(--red);color:#fff}
#cwc .cw-map-modes button:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
@media (max-width:760px){ #cwc .cw-map-modes button{padding:8px 8px 7px;letter-spacing:.06em} }
/* A venue's card, opened by a click on its pin: photo, name, then its events, artists or address, and directions */
.cw-map .cw-pin .ptag{display:none} /* the venue card (on hover, or a tap) takes the place of the little photo label */
#cwc .cw-pin.on{z-index:6}
.cw-mcard{position:absolute;z-index:8;width:min(280px,100%);background:var(--paper);color:var(--ink);border:1px solid var(--ink);box-shadow:0 10px 30px rgba(10,10,14,.18);text-align:left}
.cw-mcard[hidden]{display:none}
.cw-mcard.in{animation:cwMcIn .22s ease both}
@keyframes cwMcIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.cw-mcard.below.in{animation-name:cwMcInB}
@keyframes cwMcInB{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
.cw-mcard .mc-pic{display:block;width:100%;aspect-ratio:16/9;object-fit:cover}
.cw-mcard .mc-b{padding:12px 14px 14px;display:flex;flex-direction:column;gap:6px}
#cwc .cw-mcard p{margin:0}
.cw-mcard .mc-name{padding-right:30px;font-family:var(--mono);font-weight:500;font-size:var(--cw-text-md,13px);letter-spacing:var(--cw-track,.12em);line-height:1.3;text-transform:uppercase}
.cw-mcard .mc-n,.cw-mcard .mc-addr{font-family:var(--mono);font-size:var(--cw-text-xs,11px);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.cw-mcard .mc-addr{text-transform:none;letter-spacing:.02em;font-size:var(--cw-text-sm,12px)}
.cw-mcard .mc-none{font-size:var(--cw-text-sm,12px);line-height:1.45;color:var(--muted)}
#cwc .cw-mcard .mc-list{list-style:none;margin:2px 0 4px;padding:0;max-height:236px;overflow:auto;overscroll-behavior:contain;border-top:1px solid var(--line)}
#cwc .cw-mcard .mc-list li{margin:0;border-bottom:1px solid var(--line)}
#cwc .cw-mcard .mc-list a{display:flex;flex-direction:column;gap:2px;padding:8px 2px;color:var(--ink);text-decoration:none;transition:color .2s ease}
#cwc .cw-mcard .mc-list a:hover,#cwc .cw-mcard .mc-list a:focus-visible{color:var(--red)}
.cw-mcard .mc-when{align-self:flex-start;padding:2px 6px;background:var(--red);color:#fff;font-family:var(--mono);font-size:var(--cw-text-xs,11px);line-height:1.4;letter-spacing:.06em;text-transform:uppercase} /* the date tag, as on the event pages */
.cw-mcard .mc-t{font-size:var(--cw-text-sm,12px);line-height:1.35}
.cw-mcard .mc-evs .mc-t{font-size:15px;line-height:1.3} /* the event's name, bigger than its time (Matthew, 8 Nov 2026) */
#cwc .cw-mcard .mc-ars a,#cwc .cw-mcard .mc-evs a{flex-direction:row;align-items:center;gap:10px}
.cw-mcard .mc-w{display:flex;flex-direction:column;gap:2px;min-width:0}
.cw-mcard .mc-ars img,.cw-mcard .mc-evs img,.cw-mcard .mc-noimg{flex:none;width:34px;height:34px;object-fit:cover;background:var(--line);filter:grayscale(1);transition:filter .3s ease}
.cw-mcard .mc-ars a:hover img,.cw-mcard .mc-evs a:hover img,.cw-mcard .mc-list a:focus-visible img{filter:none}
.cw-mcard .mc-ars .mc-t{font-family:var(--mono);font-size:var(--cw-text-xs,11px);letter-spacing:.08em;text-transform:uppercase}
#cwc .cw-mcard .mc-dir{display:flex;align-items:center;justify-content:center;height:var(--cw-control,40px);margin-top:4px;background:var(--red);color:#fff;font-family:var(--mono);font-size:var(--cw-text-sm,12px);letter-spacing:var(--cw-track,.12em);text-transform:uppercase;text-decoration:none;border:1px solid var(--red);transition:background .2s ease,color .2s ease}
#cwc .cw-mcard .mc-dir:hover,#cwc .cw-mcard .mc-dir:focus-visible{background:var(--paper);color:var(--red)}
#cwc .cw-mcard .mc-x{position:absolute;right:8px;top:8px;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:1px solid var(--ink);border-radius:0;background:var(--paper);color:var(--ink);cursor:pointer}
#cwc .cw-mcard .mc-pic~.mc-b{position:static}
#cwc .cw-mcard .mc-x:hover,#cwc .cw-mcard .mc-x:focus-visible{background:var(--ink);color:var(--paper)}
#cwc .cw-mcard .mc-x:focus:not(:focus-visible):not(:hover){background:var(--paper);color:var(--ink)}
#cwc .cw-map-credit{position:absolute;right:6px;bottom:6px;z-index:4;display:flex;flex-direction:row-reverse;align-items:center;gap:6px;font-size:var(--cw-text-xs,11px);color:var(--muted)} /* the OpenStreetMap credit: a small © in the corner; hover, tap or Tab shows it */
#cwc .cw-map-credit button{display:grid;place-items:center;width:20px;height:20px;padding:0;border:1px solid var(--line);border-radius:0;background:var(--paper);color:var(--muted);font:inherit;line-height:1;cursor:pointer;transition:color .2s ease,border-color .2s ease}
#cwc .cw-map-credit:hover button,#cwc .cw-map-credit:focus-within button{background:var(--paper);color:var(--ink);border-color:var(--ink)}
#cwc .cw-map-credit .cr{display:none;white-space:nowrap;padding:3px 8px;background:var(--paper);border:1px solid var(--line)}
#cwc .cw-map-credit:hover .cr,#cwc .cw-map-credit:focus-within .cr{display:block}
#cwc .cw-map-credit .cr a{color:inherit;text-decoration:underline}
@media (prefers-reduced-motion:reduce){.cw-pin .pdot::after{animation:none}}
/* the closing line takes the reader back to the programme */
#cwc .cwc-sec-b .cw-back a{color:inherit;text-decoration:none;display:inline-flex;align-items:baseline;gap:.4em}
#cwc .cwc-sec-b .cw-back a::after{content:"\2192";display:inline-block;transition:transform .3s cubic-bezier(.2,.8,.2,1)}
#cwc .cwc-sec-b .cw-back a:hover::after,#cwc .cwc-sec-b .cw-back a:focus-visible::after{transform:translateX(8px)}
/* ---------- For Artists extras (Matthew, 8 Nov 2026; includes/artists-page.php) ---------- */
/* the series at a glance: a card each, a click goes to that part of the page */
.cw-series{list-style:none;margin:2em 0 1em;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.cw-series li{margin:0;min-width:0}
#cwc .cwc-sec-b .cw-ser{display:flex;flex-direction:column;height:100%;padding:18px 18px 16px;border:1px solid var(--line);color:var(--ink);text-decoration:none;transition:background .3s ease,color .3s ease,border-color .3s ease}
.cw-ser .st{margin-top:0;font-family:var(--mono);font-weight:500;font-size:var(--cw-text-h3,22px);line-height:1.1;text-transform:uppercase;letter-spacing:.01em}
.cw-ser .sw{margin-top:10px;font-size:var(--cw-text-base,14px);line-height:1.35}
.cw-ser .sf span{display:block}
.cw-ser .sf span::before{content:"\2014\00a0";color:var(--red)}
.cw-ser .sf{margin-top:12px;margin-bottom:22px;font-family:var(--mono);font-size:var(--cw-text-xs,11px);line-height:1.6;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);transition:color .3s ease}
.cw-ser .sg{margin-top:auto;display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:var(--cw-text-xs,11px);letter-spacing:var(--cw-track,.12em);text-transform:uppercase;color:var(--red)}
.cw-ser .sg::after{content:"\2193";display:inline-block;transition:transform .3s cubic-bezier(.2,.8,.2,1)}
@media (hover:hover){
  #cwc .cwc-sec-b .cw-ser:hover{background:var(--ink);border-color:var(--ink);color:var(--paper)}
  .cw-ser:hover .sf{color:rgba(244,241,234,.6)}
  .cw-ser:hover .sg::after{transform:translateY(4px)}
}
#cwc .cwc-sec-b .cw-ser:focus-visible{outline:2px solid var(--red);outline-offset:2px}
/* the series as tabs (artists-page.php): small text tabs, the chosen one a red box; who it's for and the facts open its panel */
.cw-tabs{margin:2em 0 1em}
#cwc .cwc-sec-b .cw-tabs > .cw-series{display:flex;flex-wrap:wrap;gap:4px 6px;margin:0}
.cw-tabs > .cw-series li{min-width:0}
#cwc .cwc-sec-b .cw-tabs .cw-ser{display:inline-block;height:auto;padding:9px 12px 8px;border:0;background:none;color:var(--muted);transition:background .25s ease,color .25s ease}
#cwc .cwc-sec-b .cw-tabs .cw-ser .st{font-size:var(--cw-text-md,13px);letter-spacing:var(--cw-track-wide,.14em);line-height:1.2}
@media (hover:hover){ #cwc .cwc-sec-b .cw-tabs .cw-ser:hover{background:none;color:var(--ink)} }
#cwc .cwc-sec-b .cw-tabs .cw-ser[aria-selected="true"]{background:var(--red);color:#fff}
.cw-tab{min-width:0;padding-top:1.4em;animation:cwTabIn .4s cubic-bezier(.2,.8,.2,1)}
#cwc .cwc-sec-b .cw-tab > h3:first-child{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.cw-tab-meta{margin:0 0 1.4em;padding-bottom:1.1em;border-bottom:1px solid var(--line)}
#cwc .cwc-sec-b .cw-tab-who{margin:0 0 .5em;font-weight:500}
#cwc .cwc-sec-b .cw-tab-facts{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:10px 26px;font-family:var(--mono);font-size:13px;line-height:1.6;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
#cwc .cwc-sec-b .cw-tab-facts li{margin:0}
#cwc .cwc-sec-b .cw-tab-facts li{display:inline-flex;align-items:center;gap:8px}
.cw-tab-facts .ic{flex:none;width:20px;height:20px;margin-top:-1px;color:var(--red)}
.cw-tab-facts .ic.dash{width:auto;height:auto}
@media (max-width:760px){ #cwc .cwc-sec-b .cw-tabs .cw-ser{padding:8px 8px 7px} #cwc .cwc-sec-b .cw-tabs .cw-ser .st{letter-spacing:.06em} #cwc .cwc-sec-b .cw-tabs > .cw-series{gap:4px 2px} }
@keyframes cwTabIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.cw-tab{animation:none}}
/* a part of the text folded away under its heading: open and close with a click */
.cw-fold{margin:1.4em 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);interpolate-size:allow-keywords}
.cw-fold:has(+ .cw-fold){margin-bottom:0}
.cw-fold + .cw-fold{margin-top:0;border-top:0}
.cw-fold summary{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 0;cursor:pointer;list-style:none;font-family:var(--mono);font-weight:500;font-size:var(--cw-text-md,13px);letter-spacing:var(--cw-track-wide,.14em);text-transform:uppercase;transition:color .2s ease}
.cw-fold summary::-webkit-details-marker{display:none}
.cw-fold summary::after{content:"+";flex:none;font-size:20px;font-weight:300;line-height:1;color:var(--red);transition:transform .35s cubic-bezier(.2,.8,.2,1)}
.cw-fold[open] summary::after{transform:rotate(45deg)}
.cw-fold summary:hover{color:var(--red)}
.cw-fold summary:focus-visible{outline:2px solid var(--red);outline-offset:2px}
.cw-fold > p:last-child{margin-bottom:0;padding-bottom:1.1em}
.cw-fold::details-content{block-size:0;overflow:hidden;transition:block-size .4s cubic-bezier(.2,.8,.2,1),content-visibility .4s allow-discrete}
.cw-fold[open]::details-content{block-size:auto}
@media (prefers-reduced-motion:reduce){.cw-fold::details-content{transition:none}}
/* the artists on the festival programme: a click opens their profile */
.cw-lineup{list-style:none;margin:1em 0 1.8em;padding:0;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:14px 12px}
.cw-lineup li{margin:0;min-width:0}
#cwc .cwc-sec-b .cw-lu{display:flex;flex-direction:column;gap:8px;color:var(--ink);text-decoration:none}
.cw-lu .pic{display:block;aspect-ratio:1;overflow:hidden;background:var(--line)}
.cw-lu .pic img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .7s cubic-bezier(.2,.7,.2,1)} /* in colour, growing a little under the mouse like the flyers on the canvas (Matthew, 8 Nov 2026) */
.cw-lu .pic.none svg{display:block;width:100%;height:100%}
.cw-lu .nm{font-family:var(--mono);font-size:var(--cw-text-xs,11px);line-height:1.3;letter-spacing:.06em;text-transform:uppercase;transition:color .2s ease}
@media (hover:hover){
  .cw-lu:hover .pic img,.cw-lu:focus-visible .pic img{transform:scale(1.04)}
  .cw-lu:hover .nm,.cw-lu:focus-visible .nm{color:var(--red)}
}
#cwc .cwc-sec-b .cw-lu:focus-visible{outline:2px solid var(--red);outline-offset:3px}
@media (max-width:760px){.cw-series{grid-template-columns:minmax(0,1fr)} .cw-ser .sf{margin-bottom:14px} .cw-lineup{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:760px){
  .cw-nums{grid-template-columns:repeat(2,minmax(0,1fr))}
  .cw-num:nth-child(3){padding-left:0;border-left:0}
  .cw-num:nth-child(n+3){border-top:1px solid var(--line)}
  .cw-venues{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
}
.cwc-foot{display:flex;flex-wrap:wrap;gap:var(--cw-space-3,12px) 28px;padding:28px var(--gl) 40px;border-top:1px solid var(--line);font-size:var(--cw-text-sm,12px);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
#cwc .cwc-foot a{color:inherit;text-decoration:none}
#cwc .cwc-foot a:hover{color:var(--ink)}

@media (max-width:1100px) and (min-width:761px){
  .cwc-sec-in{grid-template-columns:1fr;gap:var(--cw-space-5,28px)}
  .cwc-sec-h,.cwc-sec-side{position:static}
}
/* phones: no room for a side menu, so a Menu button bottom left opens the same list full screen */
@media (max-width:760px){
  #cwc .cwc-mbtn{display:inline-flex;position:absolute;z-index:8;right:calc(var(--gl) + 60px);top:17px;align-items:center;height:var(--cw-control,40px);padding:0 10px;border:1px solid currentColor;background:transparent;color:var(--red);cursor:pointer;font-size:var(--cw-text-xs,11px);letter-spacing:var(--cw-track,.12em);text-transform:uppercase;transition:opacity .3s,background .2s,color .2s}
  #cwc .cwc-mbtn .c{display:none}
  #cwc.menu-on .cwc-mbtn{background:var(--ink);color:var(--paper);border-color:var(--ink)}
  #cwc.menu-on .cwc-mbtn .o{display:none}
  #cwc.menu-on .cwc-mbtn .c{display:inline}
  #cwc.pages-on .cwc-mbtn{background:var(--paper)}
  #cwc.pages-on.menu-on .cwc-mbtn{background:var(--ink)}
  .cwc.is-open .cwc-mbtn,.cwc.searching .cwc-mbtn,.cwc.inst-on .cwc-mbtn{opacity:0;pointer-events:none}
  #cwc .cwc-nav{position:absolute;inset:0;z-index:7;transform:translateX(100%);justify-content:center;align-items:flex-start;gap:6px;padding:90px var(--gl) 90px;background:var(--paper);color:var(--ink);mix-blend-mode:normal;opacity:1;visibility:hidden;transition:transform .5s cubic-bezier(.7,0,.2,1),visibility 0s .5s}
  #cwc.menu-snap .cwc-nav{transition:none;visibility:hidden}
  #cwc.menu-under .cwc-nav{z-index:5;transform:none;visibility:visible;transition:none} /* held still under the page as it slides up over it */
  #cwc.menu-on .cwc-nav{transform:none;visibility:visible;transition:transform .5s cubic-bezier(.7,0,.2,1),visibility 0s} /* slides in from the right, and back out the same way (Matthew) */
  #cwc .cwc-nav a{font-size:clamp(28px,9vw,40px);font-weight:500;letter-spacing:-.01em;padding:4px 0}
  #cwc .cwc-nav a::before{display:none}
  #cwc .cwc-nav a[aria-current]{color:var(--red)}
  .cwc.menu-on .cwc-top>*:not(.cwc-logo){opacity:0;pointer-events:none}
  .cwc-top .cwc-dates{display:none} /* on phones the dates line sits under the headline instead (Matthew) */
  .cwc-top .cwc-sbtn{margin-left:auto} /* Search stays in the corner, with Menu just left of it */
  #cwc.pages-on .cwc-mbtn,#cwc.menu-on .cwc-mbtn{right:var(--gl)} /* no Search on the pages or in the open menu: Menu / Close takes the corner */
  .cwc-pdates{display:block;position:absolute;z-index:4;left:var(--gl);bottom:calc(var(--gl) + var(--lift,98px));margin:0;color:var(--red);font-size:var(--cw-text-base,14px);letter-spacing:.1em;text-transform:uppercase;line-height:1.4;pointer-events:none;transition:opacity .3s,transform .85s cubic-bezier(.7,0,.2,1)} /* under the headline, just above the day and view buttons (Matthew) */
  .cwc.searching .cwc-pdates,.cwc.inst-on .cwc-pdates,.cwc.menu-on .cwc-pdates,.cwc.tt-on .cwc-pdates{opacity:0} /* hidden in the timetable like the headline, so it never sits on the list (Matthew) */
  #cwc.pages-on .cwc-pdates{transform:translateY(-28vh)}
  .cwc-sec-in{grid-template-columns:1fr;gap:var(--cw-space-4,20px);padding:96px var(--gl) 64px}
  .cwc-sec-h{position:static;font-size:clamp(30px,10vw,44px)}
  .cwc-sec-side{position:static}
  .cwc-sec-b{font-size:var(--cw-text-body,15px)}
  .cwc-sec::before{height:76px;margin-bottom:-76px}
  .cwc-foot{padding-bottom:84px} /* clear of the Menu button */
}
@media (prefers-reduced-motion:reduce){
  .cwc-pages,.cwc.pages-on .cwc-pages,.cwc-sec{transition:none!important}
}

/* ---------- forms (Elementor Pro forms on the Contact page), in the site's own look ---------- */
#cwc .cwc-sec-b :is(.elementor-heading-title,.elementor-field-label,.elementor-button,.elementor-field-option,.elementor-field-option label){font-family:var(--mono)!important;letter-spacing:normal}
#cwc .cwc-sec-b :is(.elementor-widget-text-editor,input,select,textarea,.elementor-message,.elementor-field-type-acceptance .elementor-field-option,.elementor-field-type-acceptance .elementor-field-option label,.elementor-field-type-acceptance label){font-family:var(--sans)!important;letter-spacing:normal}
#cwc .cwc-sec-b .elementor-widget-text-editor{color:var(--ink);font-size:var(--cw-text-body,15px);line-height:1.7}
#cwc .cwc-sec-b .e-con{--padding-top:0;--padding-bottom:0;--padding-left:0;--padding-right:0;--gap:0;gap:0}
#cwc .cwc-sec-b .elementor-widget{margin:0}
#cwc .cwc-sec-b .elementor-widget-heading{margin:2.6em 0 1em}
#cwc .cwc-sec-b .elementor-widget-heading .elementor-heading-title{margin-top:0} /* (the block already has the space above: not twice) */
#cwc .cwc-sec-b .elementor-heading-title{color:var(--ink);font-weight:500;font-size:var(--cw-text-h3,22px);line-height:1.2;text-transform:uppercase;letter-spacing:.01em}
#cwc .cwc-sec-b .elementor-widget-heading+.elementor-widget-text-editor{margin-bottom:1.4em}
#cwc .cwc-sec-b .elementor-form-fields-wrapper{margin:0 -8px;row-gap:0}
#cwc .cwc-sec-b .elementor-field-group{padding:0 8px;margin-bottom:22px}
#cwc .cwc-sec-b .elementor-field-label{color:var(--ink);font-size:var(--cw-text-sm,12px);font-weight:400;letter-spacing:var(--cw-track,.12em);text-transform:uppercase;padding-bottom:8px}
#cwc .cwc-sec-b .elementor-mark-required .elementor-field-label::after{color:var(--red)}
#cwc .cwc-sec-b .elementor-field-textual,#cwc .cwc-sec-b .elementor-select-wrapper select{background:rgba(255,255,255,.55);color:var(--ink);border:1px solid var(--cw-field-edge,rgba(21,22,28,.32));border-radius:0;padding:12px 14px;font-size:var(--cw-text-body,15px);line-height:1.5;min-height:var(--cw-control-lg,52px);box-shadow:none;transition:border-color .2s,background .2s}
#cwc .cwc-sec-b .elementor-field-textual:focus,#cwc .cwc-sec-b .elementor-select-wrapper select:focus{outline:none;border-color:var(--ink);background:var(--cw-white,#fff)}
#cwc .cwc-sec-b .elementor-select-wrapper::before{color:var(--ink);font-size:var(--cw-text-sm,12px);right:14px}
#cwc .cwc-sec-b textarea.elementor-field-textual{resize:vertical}
#cwc .cwc-sec-b .elementor-field-subgroup{display:flex;flex-wrap:wrap;gap:var(--cw-space-2,8px) 10px}
#cwc .cwc-sec-b .elementor-field-option{flex:0 0 auto!important;width:auto!important;display:inline-flex;align-items:center;gap:var(--cw-space-2,8px);margin:0;padding:8px 12px 7px;border:1px solid var(--cw-field-edge,rgba(21,22,28,.32));font-size:var(--cw-text-md,13px);cursor:pointer;transition:background .2s,color .2s,border-color .2s}
#cwc .cwc-sec-b .elementor-field-option label{display:inline;padding:0;font-size:var(--cw-text-md,13px);color:inherit;cursor:pointer}
#cwc .cwc-sec-b .elementor-field-option:has(input:checked){background:var(--ink);border-color:var(--ink);color:var(--paper)}
#cwc .cwc-sec-b .elementor-field-option input{accent-color:var(--red);margin:0}
#cwc .cwc-sec-b .elementor-field-type-acceptance .elementor-field-option{flex:1 1 100%!important;border:0;padding:0;align-items:flex-start;font-size:var(--cw-text-md,13px);line-height:1.5}
#cwc .cwc-sec-b .elementor-field-type-acceptance .elementor-field-option:has(input:checked){background:none;color:var(--ink)}
#cwc .cwc-sec-b .elementor-field-type-acceptance input{margin:2px 0 0;width:16px;height:16px;flex:none} /* centred on the first line of the label (Matthew) */
#cwc .cwc-sec-b .elementor-field-type-acceptance .elementor-field-option label{line-height:20px!important;margin:0;padding:0}
#cwc .cwc-sec-b .elementor-field-type-submit{margin-top:6px}
#cwc .cwc-sec-b .elementor-button{background:var(--red)!important;color:var(--cw-white,#fff)!important;border:0;border-radius:0;min-height:var(--cw-control-lg,52px);padding:0 20px;font-size:var(--cw-text-md,13px);font-weight:400;letter-spacing:var(--cw-track-wide,.14em);text-transform:uppercase;box-shadow:none;transition:background .2s}
#cwc .cwc-sec-b .elementor-button:hover,#cwc .cwc-sec-b .elementor-button:focus-visible{background:var(--ink)!important}
#cwc .cwc-sec-b .elementor-button .elementor-button-text::after{content:" \2197"}
#cwc .cwc-sec-b .elementor-message{font-size:var(--cw-text-base,14px);line-height:1.5;margin-top:14px}
#cwc .cwc-sec-b .elementor-message::before{display:none}
#cwc .cwc-sec-b .elementor-message-success{color:var(--ink);padding:14px 16px;background:rgba(21,22,28,.06);border-left:3px solid var(--red)}
#cwc .cwc-sec-b .elementor-message-danger,#cwc .cwc-sec-b .elementor-error .elementor-message{color:var(--red);font-size:var(--cw-text-sm,12px);margin-top:6px;padding:0;background:none;border:0}
#cwc .cwc-sec-b .elementor-error .elementor-field-textual{border-color:var(--red)}
#cwc .cwc-sec-b .elementor-help-inline{color:var(--red)}
#artist-submission{scroll-margin-top:110px}

/* in the instrument, Exit sits just below its timeline strip across the top (Matthew); on phones the strip runs down the left, so Exit stays at the top */
@media (min-width:761px){ #cwc .cwc-exit{top:84px} }

/* Two typefaces (Matthew, 5 Nov): headings, titles, labels, dates, buttons and navigation stay DM Mono; reading text
   (event descriptions, venues, prices, page copy, form typing) is DM Sans. */
.cwc-a .a-text,.cwc-a .a-facts dd,.cwc-tt-ev .vn,.cwc-tt-ev .pr,.cwc-sec-b{font-family:var(--sans)}
#cwc .cwc-a .a-text :is(h1,h2,h3,h4,h5,h6),#cwc .cwc-a .a-listen :is(.lp-go,.lp-link),#cwc .cwc-a .a-facts dd.chips,#cwc .cwc-a .a-facts :is(.btn-slot,.btn),
#cwc .cwc-sec-b :is(h1,h2,h3,h4,h5,h6,.cw-sub,.cw-go,.cw-go a,.cw-names,.cw-logos){font-family:var(--mono)}

/* A dark event page (the event's "Dark page" box, e.g. Blackout Beats, Matthew 5 Nov): black background, the cream
   becomes the text colour, black lines and borders turn light; the red stays. */
.cwc-a.dark{--paper:var(--cw-night,#0B0B0D);--ink:var(--cw-paper,#F4F1EA);--line:rgba(244,241,234,.18);--muted:rgba(244,241,234,.6);color:var(--ink);color-scheme:dark} /* its black comes from the page layer behind, so it can fade */
#cwc.cwc{transition:background-color .8s ease}
#cwc.ev-dark{background-color:var(--cw-night,#0B0B0D)} /* while the photo grows into the page the canvas behind fades to black, and back on close */
.cwc-ev.tint{transition:background-color .8s ease}
#cwc.ev-dark .cwc-ev.flying.fadein{background-color:var(--cw-night,#0B0B0D);transition:background-color .6s ease}
#cwc.ev-dark .cwc-ev.flying.fadeout{transition:background-color .6s ease} /* and backwards on close */ /* the page itself only fades between a dark and a normal event; when a photo flies in or out its background comes and goes at once, so nothing dark ever sits over the photo or the canvas (only the canvas behind fades) */
#cwc.ev-dark .cwc-ev:not(.flying){background-color:var(--cw-night,#0B0B0D);color-scheme:dark}
.cwc-a.dark .mc,.cwc-a.dark .mc .pic{background-color:var(--cw-night,#0B0B0D)}
.cwc-ev:not(.flying):not(.swapping) .cwc-a.dark .a-hero{background-color:var(--cw-night,#0B0B0D)} /* only once landed: while the photo flies the header is see-through, as on every event */
.cwc-a.dark .a-tix:hover,.cwc-a.dark .a-tix:focus-visible{color:var(--cw-night,#0B0B0D)}
.cwc-a.dark .btn:hover,.cwc-a.dark .btn:focus-visible{background:var(--ink);color:var(--cw-night,#0B0B0D)}
.cwc-a.dark .lp-go .sv{color:rgba(244,241,234,.6)}
#cwc .cwc-a.dark .lp-link{color:rgba(244,241,234,.65)}
#cwc .cwc-a.dark .lp-link:hover{color:var(--red)}
.cwc-a.dark .lp-note{color:rgba(244,241,234,.5)}
.cwc-a.dark .a-text a{color:var(--ink)}

/* Close only shows once the photo has landed (fading in), and goes the instant it is pressed, so it never sits over the
   canvas while a photo grows or shrinks (Matthew 5 Nov) */
#cwc .cwc-close{transition:opacity .3s ease}
#cwc:not(.ev-in) .cwc-close{opacity:0;pointer-events:none;transition:none}

/* one day showing (a day chosen, or every search match on one day): the boxes line up in the middle, at the search bar's width, one below another (Matthew).
   Searching, with every match on one day: the results line up under the search bar, at its width, one below another.
   On two days the two columns sit centred under the search bar (on narrower screens, where the days stack, they take its width too) */
@media (min-width:1101px){
  .cwc-tt-in.two{max-width:none;--hw:min(454px,calc(50% - var(--gl)));padding-left:calc(50% - var(--hw));padding-right:calc(50% - var(--hw))}
}
@media (min-width:761px) and (max-width:1100px){
  .cwc-tt-in.two{--sl:max(calc(50% - 320px),calc(var(--gl) + 172px));max-width:none;padding-left:var(--sl);padding-right:max(var(--gl),calc(100% - var(--sl) - 640px))}
}
@media (min-width:761px){
  .cwc-tt-in.one{--sl:max(calc(50% - 320px),calc(var(--gl) + 172px));max-width:none;padding-left:var(--sl);padding-right:max(var(--gl),calc(100% - var(--sl) - 640px))}
  .cwc-tt-in.one .cwc-tt-list{display:flex}
}

/* phones: Menu and Search filled with the paper colour, like the view buttons at the bottom, so cards passing under don't show through (Matthew) */
@media (max-width:760px){ #cwc .cwc-mbtn{background:var(--paper)} } /* Search is solid everywhere (above) */

/* the crate's sound button (Matthew): only in the Crate; bottom left on a computer, between the day and view buttons on a phone */
#cwc .cwc-snd{position:absolute;z-index:5;left:var(--gl);bottom:var(--gl);width:40px;height:var(--cw-control,40px);display:inline-flex;align-items:center;justify-content:center;padding:0;border:1px solid var(--red);background:var(--paper);color:var(--red);cursor:pointer;opacity:0;visibility:hidden;transition:opacity .3s,visibility 0s .3s,background .2s,color .2s}
#cwc.crate-on .cwc-snd{opacity:1;visibility:visible;transition:opacity .3s,background .2s,color .2s}
#cwc .cwc-snd:hover,#cwc .cwc-snd:focus-visible{background:var(--red);color:var(--paper)}
#cwc.crate-on.is-open .cwc-snd,#cwc.crate-on.pages-on .cwc-snd,#cwc.crate-on.menu-on .cwc-snd,#cwc.crate-on.searching .cwc-snd,#cwc.crate-on.inst-on .cwc-snd{opacity:0;visibility:hidden}
@media (max-width:760px){ #cwc .cwc-snd{left:50%;margin-left:6px} } /* centred in the gap between the day and view buttons */

/* phones: reading text at 18px (Matthew, 5 Nov); labels, tags, buttons and the poster text stay as they are */
@media (max-width:760px){
  .cwc-a .a-text{font-size:18px;line-height:1.6}
  .cwc-a dd:not(.chips){font-size:var(--cw-text-xl,17px)}
  .cwc-sec-b,#cwc .cwc-sec-b .elementor-widget-text-editor{font-size:18px;line-height:1.6}
}

/* ---------- a venue's map and directions (assets/venue-map.js, Matthew 6 Nov) ---------- */
.cwc-a .cwc-venue{display:inline-flex;align-items:flex-start;gap:6px;color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;text-decoration-color:color-mix(in srgb,currentColor 35%,transparent)}
.cwc-a .cwc-venue:hover,.cwc-a .cwc-venue:focus-visible{text-decoration-color:currentColor}
.cwc-a .cwc-venue .pin{flex:none;margin-top:.15em;color:var(--red)}
.cwc-vm{--p:var(--cw-paper,#F4F1EA);--i:var(--cw-ink,#15161C);--r:var(--cw-red,#F64217);--m:var(--cw-mono,"DM Mono"),ui-monospace,Menlo,monospace;
  width:min(720px,calc(100vw - 32px));max-height:calc(100dvh - 32px);margin:auto;padding:0;border:1px solid var(--i);border-radius:0;background:var(--p);color:var(--i);font-family:var(--m);overflow:auto;overscroll-behavior:contain}
.cwc-vm::backdrop{background:rgba(10,10,14,.6)}
.cwc-vm .sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.cwc-vm .vm-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:18px 20px 14px}
.cwc-vm .vm-k{margin:0 0 6px;font-size:var(--cw-text-xs,11px);letter-spacing:var(--cw-track,.12em);text-transform:uppercase;color:var(--r)}
.cwc-vm .vm-t{margin:0;font-weight:500;font-size:var(--cw-text-xl,17px);line-height:1.25;letter-spacing:.02em;text-transform:uppercase}
.cwc-vm .vm-x{flex:none;width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:1px solid var(--i);background:transparent;color:var(--i);cursor:pointer}
.cwc-vm .vm-x:hover,.cwc-vm .vm-x:focus-visible{background:var(--i);color:var(--p)}
.cwc-vm .vm-x:focus:not(:focus-visible):not(:hover){background:transparent;color:var(--i)} /* the theme turns a focused button pink; the map opens with focus on this button */
.cwc-vm button{border-radius:0}
.cwc-vm .vm-map{position:relative;aspect-ratio:16/9;max-height:46dvh;width:100%;background:#E6E1D6;border-top:1px solid var(--i);border-bottom:1px solid var(--i)}
.cwc-vm .vm-map iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.cwc-vm .vm-gate{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:20px;text-align:center;font-size:var(--cw-text-sm,12px);letter-spacing:.04em}
.cwc-vm .vm-gate[hidden]{display:none}
.cwc-vm .vm-gate p{margin:0;max-width:30ch}
.cwc-vm button.vm-show,.cwc-vm .vm-go{height:var(--cw-control,40px);padding:0 18px;border:1px solid var(--r);background:var(--r);color:var(--cw-white,#fff);font:inherit;font-size:var(--cw-text-sm,12px);letter-spacing:var(--cw-track,.12em);text-transform:uppercase;cursor:pointer}
.cwc-vm button.vm-show:hover,.cwc-vm .vm-go:hover,.cwc-vm button.vm-show:focus-visible,.cwc-vm .vm-go:focus-visible{background:var(--p);color:var(--r)}
.cwc-vm .vm-dir{display:flex;flex-direction:column;gap:10px;padding:16px 20px 4px}
.cwc-vm .vm-dir .vm-k{margin:0}
.cwc-vm .vm-modes{display:grid;grid-template-columns:repeat(4,1fr)}
.cwc-vm .vm-mode{height:var(--cw-control,40px);border:1px solid var(--r);margin-left:-1px;background:var(--p);color:var(--r);font:inherit;font-size:var(--cw-text-sm,12px);letter-spacing:var(--cw-track,.12em);text-transform:uppercase;cursor:pointer}
.cwc-vm .vm-mode:first-child{margin-left:0}
.cwc-vm .vm-mode[aria-pressed="true"]{background:var(--r);color:var(--cw-white,#fff)}
.cwc-vm .vm-from{display:flex}
.cwc-vm .vm-from input{flex:1;min-width:0;height:var(--cw-control,40px);padding:0 12px;border:1px solid var(--i);border-right:0;border-radius:0;background:#fff;color:var(--i);font:inherit;font-family:var(--cw-sans,"DM Sans"),system-ui,sans-serif;font-size:16px} /* 16px: phones don't zoom in on it */
.cwc-vm .vm-from input:focus{outline:2px solid var(--r);outline-offset:-2px}
.cwc-vm .vm-loc{align-self:flex-start;display:inline-flex;align-items:center;gap:8px;padding:4px 0;border:0;background:none;color:var(--i);font:inherit;font-size:var(--cw-text-sm,12px);letter-spacing:.08em;text-transform:uppercase;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.cwc-vm .vm-loc svg{color:var(--r)}
.cwc-vm .vm-msg{margin:0;min-height:1.4em;font-size:var(--cw-text-sm,12px);color:rgba(21,22,28,.65)}
.cwc-vm .vm-open{display:flex;align-items:center;justify-content:center;gap:10px;margin:8px 20px 20px;height:var(--cw-control-lg,52px);background:var(--r);color:var(--cw-white,#fff);text-decoration:none;font-size:var(--cw-text-md,13px);letter-spacing:var(--cw-track-wide,.14em);text-transform:uppercase}
.cwc-vm .vm-open:hover,.cwc-vm .vm-open:focus-visible{background:var(--i)}
@media (max-width:600px){
  .cwc-vm{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border:0}
  .cwc-vm .vm-map{aspect-ratio:4/3}
}

/* ---------- an event's Share row (includes/share.php, assets/share.js; Matthew 6 Nov) ---------- */
.cwc-a .a-facts dd.share{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.cwc-a .share .sh{display:inline-flex;align-items:center;justify-content:center;width:var(--cw-control,40px);height:var(--cw-control,40px);padding:0;border:1px solid var(--ink);background:transparent;color:var(--ink);text-decoration:none;cursor:pointer;transition:background .2s,color .2s}
.cwc-a .share .sh:hover,.cwc-a .share .sh:focus-visible{background:var(--red);border-color:var(--red);color:var(--cw-white,#fff)}
.cwc-a .share .sh[hidden]{display:none}
.cwc-ios .cwc-a .share .sh-messenger[hidden],.cwc-native-share .cwc-a .share .sh-more[hidden]{display:inline-flex}
.cwc-a .share .sh-copy svg+svg,.cwc-a .share .sh-copy.done svg:first-child{display:none}
.cwc-a .share .sh-copy.done svg+svg{display:block}
.cwc-a .share .sh-copy.done{background:var(--red);border-color:var(--red);color:var(--cw-white,#fff)}
.cwc-a .share .sh-msg{flex-basis:100%;min-height:1.2em;font-size:var(--cw-text-xs,11px);letter-spacing:.08em;text-transform:uppercase;color:var(--red)}
.cwc-a .share .sh-msg:empty{min-height:0;flex-basis:0}

/* ---------- a form that opens below its button: [cw_form_reveal] (includes/form-reveal.php; Matthew 6 Nov) ---------- */
#cwc .cwc-fr{margin:1.4em 0}
#cwc .cwc-fr .cw-go{margin:0}
#cwc .cwc-fr-btn{display:inline-flex;align-items:center;gap:var(--cw-space-2,8px);height:var(--cw-control,40px);padding:0 10px 0 14px;border:0;background:var(--red);color:var(--cw-white,#fff);font-family:var(--mono);font-size:var(--cw-text-md,13px);letter-spacing:var(--cw-track,.12em);text-transform:uppercase;cursor:pointer;transition:background .2s;scroll-margin-top:24px}
#cwc .cwc-fr-btn:hover,#cwc .cwc-fr-btn:focus-visible{background:var(--ink);color:var(--paper)}
#cwc .cwc-fr-btn svg{transition:transform .3s ease}
#cwc .cwc-fr-btn[aria-expanded="true"] svg{transform:rotate(180deg)}
#cwc .cwc-fr-panel{margin-top:22px;padding-top:22px;border-top:1px solid var(--ink)}
#cwc .cwc-fr-l{margin:1em 0}
#cwc .cwc-fr-l p{margin:0}
#cwc .cwc-fr-btn.cwc-fr-link{display:inline;height:auto;padding:0;background:none;color:var(--red);font:inherit;letter-spacing:inherit;text-transform:none;text-decoration:underline;text-decoration-color:transparent;text-underline-offset:3px;transition:text-decoration-color .2s ease} /* the same opener, as red words in a sentence */
#cwc .cwc-fr-btn.cwc-fr-link:hover,#cwc .cwc-fr-btn.cwc-fr-link:focus-visible,#cwc .cwc-fr-btn.cwc-fr-link[aria-expanded="true"]{background:none;color:var(--red);text-decoration-color:currentColor}

/* Get tickets while Eventbrite's checkout is loading (assets/eventbrite.js) */
.cwc a.eb-wait,#cwc a.eb-wait{cursor:progress;opacity:.7}

/* ---------- artists (includes/artists.php): the profile panel, the cards on an event, the Artists view ---------- */
/* the Artists view: no days and no timetable (artists have no times) */
.cwc.cm-ar .cwc-days,.cwc.ar-on .cwc-sdays{display:none} /* (cm-ar / cm-pt: the corner buttons' own copy of the view, changed while they are faded out) */
/* Partners on the canvas (Matthew, 8 Nov 2026): just the logos, no box and no words; only the canvas, so the days, the
   views and search step aside */
#cwc.cm-pt .cwc-ctl{opacity:0;visibility:hidden;pointer-events:none}
#cwc.pt-on .cwc-sdays{display:none}
/* Changing between Programme, Artists and Partners (Matthew, 8 Nov 2026): the days and views in the corner fade out, change, and fade back in (canvas.js setMode) */
#cwc.ctl-out .cwc-ctl{opacity:0;pointer-events:none}
#cwc.pt-on .cwc-sbtn{opacity:0;pointer-events:none}
.cwc .cwc-it.is-pt,.cwc .cwc-it.is-pt.hit,.cwc .cwc-it.is-pt.held{background:none;box-shadow:none;overflow:visible}
.cwc .cwc-it.is-pt .pt-pic{box-sizing:border-box;display:flex;align-items:center;justify-content:center;padding:8%;background:none}
.cwc .cwc-it.is-pt .pt-pic img{display:block;width:100%;height:100%;object-fit:contain;mix-blend-mode:multiply;-webkit-user-drag:none;user-select:none} /* multiply: a logo saved on white shows no white box */
.cwc .cwc-it.is-pt .cap{display:none}
/* hovering a logo shows the partner's name just above it, in the red tag (Matthew, 8 Nov 2026); canvas.js sets its top
   to the logo's own top edge, as a wide logo sits in the middle of its card */
.cwc .cwc-it.is-pt .pt-name{position:absolute;left:50%;top:0;transform:translate(-50%,calc(-100% - 8px));padding:4px 8px 3px;background:var(--red);color:var(--cw-white,#fff);font-size:var(--cw-text-sm,12px);letter-spacing:var(--cw-track,.12em);text-transform:uppercase;line-height:1.4;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .2s ease,transform .25s ease}
@media (hover:hover){.cwc .cwc-it.is-pt:hover .pt-name{opacity:1;transform:translate(-50%,calc(-100% - 18px))}}
#cwc.cm-ar .cwc-view[data-v="timetable"]{display:none}
.cwc .cwc-it.is-ar .cap{padding-top:44px}
/* the panel: from the right, about half the screen on a computer, all of it on a phone */
.cwc-arshade{position:absolute;inset:0;z-index:59;background:rgba(21,22,28,.38);opacity:0;visibility:hidden;transition:opacity .45s ease,visibility 0s .45s;cursor:pointer}
.cwc.arp-on .cwc-arshade{opacity:1;visibility:visible;transition:opacity .45s ease}
.cwc-arp{position:absolute;top:0;right:0;bottom:0;z-index:60;width:min(640px,52vw);overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;background:var(--paper);color:var(--ink);transform:translateX(102%);transition:transform .5s cubic-bezier(.65,0,.25,1);box-shadow:-24px 0 60px -30px rgba(0,0,0,.5)}
.cwc-arp[hidden]{display:none}
.cwc.arp-on .cwc-arp{transform:none;transition:transform .55s cubic-bezier(.2,.8,.2,1)}
.cwc-arpin{transition:opacity .22s ease}
.cwc-arp.swap .cwc-arpin{opacity:0}
#cwc .cwc-arx{position:sticky;z-index:2;top:20px;float:right;margin:20px var(--gl) -60px 0;display:inline-flex;align-items:center;gap:var(--cw-space-2,8px);height:var(--cw-control,40px);padding:0 14px;border:0;background:var(--paper);color:var(--ink);cursor:pointer;font-size:var(--cw-text-sm,12px);letter-spacing:var(--cw-track-wide,.14em);text-transform:uppercase}
#cwc .cwc-arx:focus{background:var(--paper);color:var(--ink)}
#cwc .cwc-arx:hover{background:var(--ink);color:var(--paper)} /* the same look as an event's Close (Matthew, 7 Nov 2026) */
.cwc-arp .ar-pic{position:relative;height:min(62vh,600px);background:var(--ink)}
.cwc-arp .ar-pic .pic{position:absolute;inset:0;background:center 25%/cover no-repeat}
.cwc-arp .ar-pic .pic img{display:block;width:100%;height:100%;object-fit:cover;object-position:center 25%} /* a real image, not a background, so canvas.js can check it's ready to draw before the drawer slides out */
.cwc-arp .ar-pic .pic.none{color:var(--paper)}
.cwc-arp .ar-pic .pic.none svg{width:100%;height:100%}
.cwc-arp .ar-body{padding:30px var(--gl) 60px}
.cwc-arp .ar-k{margin:0 0 10px;color:var(--red);font-size:var(--cw-text-sm,12px);letter-spacing:var(--cw-track-wide,.14em);text-transform:uppercase}
.cwc-arp .ar-h{margin:0;font-weight:500;font-size:var(--cw-text-page-title,clamp(28px,3.2vw,52px));line-height:1;letter-spacing:-.02em;text-transform:uppercase;overflow-wrap:anywhere}
.cwc-arp h1.ar-h{color:var(--ink);max-width:none} /* at /artists/name/ the name is the page's h1: not the white event-title look */
.cwc-arp .ar-ln{margin:12px 0 0;font-size:var(--cw-text-sm,12px);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
#cwc .cwc-arp .ar-text{margin-top:28px;font-family:var(--sans)}
.cwc-arp .ar-sub{margin:44px 0 14px;font-weight:400;color:var(--red);font-size:var(--cw-text-sm,12px);letter-spacing:var(--cw-track-wide,.14em);text-transform:uppercase}
.cwc-arp .ar-evs{list-style:none;margin:0;padding:0}
.cwc-arp .ar-evs li{border-top:1px solid var(--line)}
.cwc-arp .ar-evs li:last-child{border-bottom:1px solid var(--line)}
.cwc-arp .ar-evs a{display:flex;align-items:center;gap:var(--cw-space-4,16px);padding:12px 0;text-decoration:none;color:var(--ink)}
.cwc-arp .ar-evs .pic{flex:none;width:72px;height:72px;background:center/cover no-repeat var(--line);transition:transform .3s}
.cwc-arp .ar-evs .pic.none svg{width:100%;height:100%}
.cwc-arp .ar-evs .tx{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}
.cwc-arp .ar-evs .w{align-self:flex-start;display:inline-block;padding:4px 8px 3px;background:var(--red);color:var(--cw-white,#fff);font-size:var(--cw-text-xs,11px);letter-spacing:var(--cw-track,.12em);text-transform:uppercase;line-height:1.4;margin-bottom:3px} /* the date as a red tag, like the cards */
.cwc-arp .ar-evs .t{font-weight:500;text-transform:uppercase;letter-spacing:.02em;line-height:1.25}
.cwc-arp .ar-evs .v{font-family:var(--sans);font-size:var(--cw-text-md,13px);color:var(--muted)}
.cwc-arp .ar-evs .arw{flex:none;color:var(--red);transition:transform .25s}
.cwc-arp .ar-evs a:hover .t{color:var(--red)}
.cwc-arp .ar-evs a:hover .arw{transform:translateX(4px)}
.cwc-arp .ar-evs a:hover .pic{transform:scale(1.04)}
.cwc-ghost{z-index:61;pointer-events:none}
/* the artist cards at the end of an event's text */
.cwc-a .a-artists{margin-top:48px}
.cwc-a .a-text .a-artists h2{margin:0 0 14px;font-weight:400;color:var(--red);font-size:var(--cw-text-sm,12px);letter-spacing:var(--cw-track-wide,.14em);text-transform:uppercase}
.cwc-a .ac-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:var(--cw-space-4,16px)}
#cwc .cwc-a .ac{display:flex;flex-direction:column;gap:var(--cw-space-2,8px);text-decoration:none;color:var(--ink)}
.cwc-a .ac .pic{display:block;aspect-ratio:1;background:center 25%/cover no-repeat var(--line);transition:transform .35s cubic-bezier(.2,.7,.2,1)}
.cwc-a .ac .pic.none svg{width:100%;height:100%}
.cwc-a .ac .nm{font-family:var(--mono);font-weight:500;font-size:var(--cw-text-base,14px);line-height:1.25;text-transform:uppercase;letter-spacing:.02em}
.cwc-a .ac .go{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);color:var(--red);font-size:var(--cw-text-xs,11px);letter-spacing:var(--cw-track,.12em);text-transform:uppercase}
.cwc-a .ac .go svg{transition:transform .25s}
.cwc-a .ac:hover .pic{transform:scale(1.03)}
.cwc-a .ac:hover .go svg{transform:translateX(4px)}
.cwc-a.dark .ac{color:inherit}
@media (max-width:759px){
  .cwc-arp{width:100%;box-shadow:none}
  .cwc-arp .ar-pic{height:58vh}
  #cwc .cwc-arx{top:14px;margin-top:14px}
  .cwc-a .ac-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
}
@media (prefers-reduced-motion:reduce){ .cwc-arp,.cwc.arp-on .cwc-arp,.cwc-arshade{transition:none} }

/* an event opened from a profile comes up over it (the profile goes from behind once it's covered) */
.cwc.ar-under .cwc-ev{z-index:62}
.cwc.ar-under .cwc-fly{z-index:63}
#cwc.ar-under .cwc-close,.cwc.ar-under.is-open .cwc-top>*{z-index:64}
.cwc.ar-snap .cwc-arp,.cwc.ar-snap .cwc-arshade{transition:none!important}
/* Contact: what the message is about, as buttons (includes/contact.php) */
#cwc .cwc-sec-b .elementor-widget-shortcode:has(.cw-topics)+.elementor-widget-heading{margin-top:2.2em} /* Contact: the form close under the buttons (Matthew, 8 Nov) */
#cwc .cwc-sec-b .cw-topics-h{margin:0 0 .8em;font-family:var(--mono);font-size:var(--cw-text-xs,11px);letter-spacing:var(--cw-track-wide,.14em);text-transform:uppercase;color:var(--muted)}
.cw-topics{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:10px}
.cw-topics li{margin:0}
#cwc .cwc-sec-b .cw-topic{display:inline-flex;align-items:center;gap:8px;height:var(--cw-control,40px);padding:0 16px;border:1px solid var(--ink);border-radius:0;background:none;color:var(--ink);font-family:var(--mono);font-size:var(--cw-text-sm,12px);letter-spacing:var(--cw-track,.12em);text-transform:uppercase;text-decoration:none;cursor:pointer;transition:background .2s ease,color .2s ease,border-color .2s ease}
#cwc .cwc-sec-b .cw-topic.go::after{content:"\2197";color:var(--red);transition:color .2s ease}
@media (hover:hover){#cwc .cwc-sec-b .cw-topic:hover{background:var(--ink);color:var(--paper)}}
#cwc .cwc-sec-b .cw-topic[aria-pressed="true"]{background:var(--red);border-color:var(--red);color:var(--cw-white,#fff)}
#cwc .cwc-sec-b .cw-topic:focus-visible{outline:2px solid var(--red);outline-offset:2px}
/* For Artists: the series a "Book a place" button ticked in the form, picked out for a moment */
.cw-flash{animation:cwFlash 2s ease}
@keyframes cwFlash{0%,35%{background:rgba(246,66,23,.14);box-shadow:0 0 0 8px rgba(246,66,23,.14)}100%{background:transparent;box-shadow:0 0 0 8px transparent}}
@media (prefers-reduced-motion:reduce){.cw-flash{animation:none}}

/* ---------- finished events (Matthew, 9 Nov 2026; canvas.js markDone) ---------- */
/* the card stays, round the outside: its photo grey and faded, a red "Played" tag in the corner; a mouse brings it back up a little */
.cwc .cwc-it.done{background:var(--paper)}
.cwc-it.done .pic{filter:grayscale(1);opacity:.4;transition:transform .7s cubic-bezier(.2,.7,.2,1),opacity .35s ease}
.cwc-it.done .cap{opacity:.55;transition:opacity .35s ease}
@media (hover:hover){ .cwc-it.done:hover .pic{opacity:.7} .cwc-it.done:hover .cap{opacity:.85} }
.cwc-it .done-tag{position:absolute;top:12px;left:12px;z-index:2;padding:4px 8px 3px;background:var(--red);color:var(--cw-white,#fff);font-size:var(--cw-text-sm,12px);letter-spacing:var(--cw-track,.12em);text-transform:uppercase;line-height:1.4}
.cwc-it.done .cap .tag{background:var(--ink)}
/* its timetable box fades, and the ticket button goes */
#cwc .cwc-tt-ev.done{opacity:.5}
#cwc .cwc-tt-ev.done .pic{filter:grayscale(1)}
#cwc .cwc-tt-ev.done .tix{display:none}
#cwc .cwc-tt-ev.done .sd::after{content:"Played";flex:none;margin-left:auto;padding:4px 9px 3px;color:var(--red);font-size:var(--cw-text-xs,11px);letter-spacing:var(--cw-track,.12em);text-transform:uppercase;line-height:1.4}
/* its page: the header photo grey, "Played" where the ticket button was, and a way back to what's still on */
.cwc-a.done .a-hero .pic{filter:grayscale(1)}
.cwc-a .a-gone{display:block;margin-top:var(--cw-space-2,8px)}
#cwc .cwc-a .a-next{display:inline;white-space:normal;line-height:inherit;text-align:left;overflow-wrap:break-word;padding:0;border:0;background:none;color:var(--red);font:inherit;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
/* in a venue's card on the map: a finished event fades, with "Played" after it */
.mc-evs li.done{opacity:.55}
.mc-evs li.done img{filter:grayscale(1)}
.mc-evs li.done a::after{content:"Played";margin-left:auto;padding-left:8px;flex:none;color:var(--red);font-size:var(--cw-text-xs,11px);letter-spacing:var(--cw-track,.12em);text-transform:uppercase}

/* Links inside an event's own text (e.g. the Phantom Instruments draw line, 10 Nov 2026): red like the rest of the site; dark pages keep their ink rule. */
#cwc .cwc-a:not(.dark) .a-text > p a{color:var(--red)}
#cwc .cwc-a:not(.dark) .a-text > p a:hover{color:var(--ink)}
