/* =========================================================
   Concerts & Gallery
   ========================================================= */

/* ---------- Hero (list + year) ---------- */
.page-hero--concerts,.page-hero--year{padding-bottom:clamp(4rem,8vw,7rem);isolation:isolate}
.hero-art{position:absolute;inset:0 0 0 38%;z-index:-1;pointer-events:none;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 55%),linear-gradient(180deg,#000 55%,transparent 100%);mask-image:linear-gradient(90deg,transparent 0,#000 55%),linear-gradient(180deg,#000 55%,transparent 100%);-webkit-mask-composite:source-in;mask-composite:intersect}
.hero-art img{width:100%;height:100%;object-fit:cover;object-position:50% 30%;opacity:.62;animation:kenburns 26s ease-in-out infinite alternate}
.page-hero--concerts .page-hero__staff,.page-hero--year .page-hero__staff{z-index:-1}
.page-hero__title--big{font-size:clamp(3rem,8.2vw,7.4rem);line-height:1;max-width:none;letter-spacing:.005em}
.page-hero__title--big .gilt{font-size:1.08em}
.page-hero__title--year{display:flex;flex-wrap:wrap;align-items:baseline;gap:.2em 1.1rem;max-width:none}
.page-hero__title--year .gilt{font-size:clamp(5rem,15vw,12rem);line-height:.85;letter-spacing:.01em}
.yr-title{font-family:var(--text);font-weight:300;font-size:clamp(1rem,2.2vw,1.55rem);letter-spacing:.32em;text-transform:uppercase;color:var(--white);line-height:1.4}
.page-hero__year{position:absolute;right:-1%;bottom:-.14em;z-index:-1;font-family:var(--display);font-size:clamp(11rem,34vw,30rem);line-height:.8;color:transparent;-webkit-text-stroke:1px rgba(184,154,80,.35);pointer-events:none;user-select:none}
.chips{display:flex;flex-wrap:wrap;gap:.6rem;margin:1.6rem 0 0}
.chips li{padding:.5rem 1.1rem;border:1px solid rgba(184,154,80,.6);border-radius:999px;font-size:.82rem;letter-spacing:.06em;color:var(--gold-hi);background:rgba(17,17,17,.4);backdrop-filter:blur(4px)}

/* ---------- Concert cards ---------- */
.concerts__intro{max-width:62ch;margin-bottom:3.2rem;padding-left:1.4rem;border-left:2px solid var(--gold)}
.concerts__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(1.2rem,2.4vw,2rem)}
.concert-card{display:flex;flex-direction:column;height:100%;text-decoration:none;color:var(--black);background:var(--white);box-shadow:0 1px 0 rgba(17,17,17,.12),0 18px 40px -22px rgba(17,17,17,.4);transition:transform .6s var(--ease),box-shadow .6s var(--ease)}
.concert-card:hover,.concert-card:focus-visible{transform:translateY(-8px);box-shadow:0 0 0 1px var(--gold),0 30px 50px -22px rgba(17,17,17,.55)}
.concert-card__img{display:block;aspect-ratio:4/5;overflow:hidden;background:var(--black);position:relative}
.concert-card__img img{width:100%;height:100%;object-fit:cover;object-position:50% 25%;transition:transform 1.2s var(--ease)}
.concert-card:hover .concert-card__img img{transform:scale(1.07)}
.concert-card__shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(17,17,17,0) 45%,rgba(17,17,17,.88) 100%)}
.concert-card__empty{position:absolute;inset:0;margin:auto;width:40%;height:40%;color:var(--gold);opacity:.7}
.concert-card__year{position:absolute;left:1.3rem;bottom:.6rem;font-family:var(--display);font-size:clamp(4.5rem,8vw,6.5rem);line-height:1;background:linear-gradient(180deg,var(--gold-hi),var(--gold));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;text-shadow:none}
.concert-card__count{position:absolute;top:1rem;right:1rem;padding:.4rem .9rem;border-radius:999px;background:rgba(17,17,17,.72);color:var(--gold-hi);font-size:.75rem;letter-spacing:.08em;border:1px solid rgba(184,154,80,.55)}
.concert-card__body{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.3rem 1.5rem 1.5rem}
.concert-card__title{font-family:var(--text);font-weight:400;font-size:.8rem;letter-spacing:.22em;text-transform:uppercase;line-height:1.5;max-width:11ch}
.concert-card__btn{display:flex;align-items:center;gap:.5rem;font:500 .9rem var(--text);color:var(--gold-deep);white-space:nowrap}
.concert-card__btn i{font-style:normal;font-size:1.5rem;line-height:1;transition:transform .35s var(--ease)}
.concert-card:hover .concert-card__btn i{transform:translateX(6px)}
.concerts__soon{font-family:var(--display);font-size:clamp(1.6rem,3vw,2.2rem);color:var(--gold-deep);margin:1rem 0 2rem}
.concerts-end .cta-band__inner{flex-direction:column;gap:1.6rem;text-align:center;align-items:center}
.concerts-end__text{margin:0;font-family:var(--display);font-size:clamp(1.8rem,4vw,3rem);color:var(--white)}

/* ---------- Year page ---------- */
.gallery__intro{max-width:62ch;margin-bottom:3.4rem;padding-left:1.4rem;border-left:2px solid var(--gold)}
.gallery__h{margin-bottom:1.6rem}
.gallery__grid{column-count:3;column-gap:12px}
.gallery__grid li{break-inside:avoid;margin-bottom:12px}
.gallery__item{display:block;width:100%;padding:0;border:0;background:#e9e6df;cursor:zoom-in;overflow:hidden;position:relative;outline-offset:3px}
.gallery__item img{width:100%;height:auto;display:block;transition:transform 1s var(--ease),filter .5s}
.gallery__item::after{content:"";position:absolute;inset:0;border:1px solid transparent;transition:border-color .4s,inset .4s;pointer-events:none}
.gallery__item:hover img,.gallery__item:focus-visible img{transform:scale(1.05);filter:brightness(.72)}
.gallery__item:hover::after,.gallery__item:focus-visible::after{border-color:var(--gold-hi);inset:10px}
.gallery__zoom{position:absolute;inset:0;display:grid;place-items:center;color:var(--white);opacity:0;transform:scale(.8);transition:opacity .4s,transform .5s var(--ease);pointer-events:none}
.gallery__item:hover .gallery__zoom,.gallery__item:focus-visible .gallery__zoom{opacity:1;transform:none}
@supports (animation-timeline:view()){
  .gallery__grid li{animation:itemIn linear both;animation-timeline:view();animation-range:entry 0% entry 45%}
  @keyframes itemIn{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}
}

.gallery-videos .eyebrow{margin-bottom:.8rem}
.videos__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.6rem;margin-top:2.4rem}
.video{position:relative;display:block;width:100%;aspect-ratio:16/9;padding:0;border:1px solid rgba(184,154,80,.55);background:#000;cursor:pointer;overflow:hidden}
.video img{width:100%;height:100%;object-fit:cover;opacity:.85;transition:opacity .4s,transform 1s var(--ease)}
.video:hover img{opacity:1;transform:scale(1.05)}
.video__play{position:absolute;left:50%;top:50%;width:68px;height:68px;margin:-34px 0 0 -34px;border-radius:50%;display:grid;place-items:center;background:rgba(17,17,17,.78);color:var(--gold-hi);box-shadow:0 0 0 1px var(--gold);animation:waPulse 2.8s ease-out infinite}
.video iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.video__title{margin:.9rem 0 0;font-size:.95rem;color:rgba(255,255,255,.88)}

.gallery-end{text-align:center}
.year-nav{display:flex;justify-content:space-between;gap:1.5rem;margin-bottom:3rem;padding-bottom:2.6rem;border-bottom:1px solid rgba(184,154,80,.35)}
.year-nav__link{display:flex;flex-direction:column;gap:.2rem;text-decoration:none;color:var(--white)!important}
.year-nav__link small{font-size:.78rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gold-hi)}
.year-nav__link strong{font-family:var(--display);font-weight:400;font-size:clamp(3rem,7vw,5rem);line-height:1;color:transparent;-webkit-text-stroke:1px var(--gold);transition:color .4s,-webkit-text-stroke-color .4s}
.year-nav__link:hover strong,.year-nav__link:focus-visible strong{color:var(--gold);-webkit-text-stroke-color:var(--gold)}
.year-nav__link--newer{margin-left:auto;text-align:right;align-items:flex-end}
.gallery-end .cta-band__inner{padding:0;display:flex;flex-wrap:wrap;gap:1rem;justify-content:center}

/* ---------- Photo viewer ---------- */
.lb{position:fixed;inset:0;z-index:30000;display:flex;align-items:center;justify-content:center;background:rgba(8,8,8,.96);-webkit-user-select:none;user-select:none}
.lb[hidden]{display:none}
.lb__fig{margin:0;max-width:min(92vw,1500px);max-height:90vh;display:flex;flex-direction:column;align-items:center}
.lb__img{max-width:100%;max-height:78vh;object-fit:contain;box-shadow:0 20px 60px rgba(0,0,0,.6);touch-action:pan-y pinch-zoom;-webkit-user-drag:none;transition:transform .35s var(--ease)}
.lb__img.in-r{animation:lbR .45s var(--ease)}.lb__img.in-l{animation:lbL .45s var(--ease)}
@keyframes lbR{from{opacity:0;transform:translateX(60px)}}
@keyframes lbL{from{opacity:0;transform:translateX(-60px)}}
.lb__cap{margin-top:.9rem;max-width:70ch;text-align:center;color:rgba(255,255,255,.85);font-size:.92rem}
.lb__count{position:absolute;left:50%;bottom:1rem;transform:translateX(-50%);color:var(--gold-hi);font-size:.85rem;letter-spacing:.14em}
.lb__hint{position:absolute;left:50%;top:1.3rem;transform:translateX(-50%);padding:.55rem 1.2rem;border-radius:999px;border:1px solid rgba(184,154,80,.5);color:var(--gold-hi);font-size:.78rem;letter-spacing:.1em;white-space:nowrap;opacity:0;pointer-events:none}
.lb__hint.is-on{animation:hintFade 4.2s ease both}
@keyframes hintFade{0%{opacity:0}10%,75%{opacity:1}100%{opacity:0}}
.lb button{position:absolute;display:grid;place-items:center;width:54px;height:54px;border:1px solid var(--gold);border-radius:50%;background:rgba(17,17,17,.6);color:var(--gold-hi);cursor:pointer;transition:background .3s,color .3s,transform .3s var(--ease)}
.lb button:hover,.lb button:focus-visible{background:var(--gold);color:var(--black)}
.lb__close{top:1rem;right:1rem}.lb__prev{left:1.2rem;top:50%;margin-top:-27px}.lb__next{right:1.2rem;top:50%;margin-top:-27px}
.lb__prev:hover{transform:translateX(-4px)}.lb__next:hover{transform:translateX(4px)}
.lb svg{width:22px;height:22px}

/* The photo viewer always shows the normal mouse cursor (the round site cursor is hidden while it is open) */
html.has-cursor body.lb-open,html.has-cursor body.lb-open *{cursor:auto!important}
html.has-cursor body.lb-open .lb button{cursor:pointer!important}
html.has-cursor body.lb-open .lb__img[data-dir=prev]{cursor:w-resize!important}
html.has-cursor body.lb-open .lb__img[data-dir=next]{cursor:e-resize!important}
html.has-cursor body.lb-open .lb__img.is-drag{cursor:grabbing!important}
body.lb-open .cur-dot,body.lb-open .cur-ring{opacity:0!important}

@media (max-width:1000px){.concerts__grid{grid-template-columns:repeat(2,1fr)}.gallery__grid{column-count:2}.videos__grid{grid-template-columns:repeat(2,1fr)}.hero-art{inset:0 0 0 20%}}
@media (max-width:640px){
  .concerts__grid{grid-template-columns:1fr}.videos__grid{grid-template-columns:1fr}
  .hero-art{inset:0}.hero-art img{opacity:.38}
  .concert-card__body{flex-direction:column;align-items:flex-start}.concert-card__title{max-width:none}
  .year-nav{flex-direction:column}.year-nav__link--newer{margin-left:0;text-align:left;align-items:flex-start}
  .lb__prev,.lb__next{top:auto;bottom:.8rem;margin:0}.lb__prev{left:1rem}.lb__next{right:1rem}.lb__img{max-height:68vh}.lb__hint{white-space:normal;text-align:center;width:max-content;max-width:86vw}
}
@media (prefers-reduced-motion:reduce){.hero-art img,.video__play{animation:none!important}.gallery__grid li{animation:none!important}.lb__img.in-r,.lb__img.in-l{animation:none}}
/* Intro paragraphs: gold drop cap in the display font */
.concerts__intro,.gallery__intro{max-width:64ch;font-size:clamp(1.1rem,1.7vw,1.4rem);line-height:1.75;text-wrap:pretty}
.concerts__intro::first-letter,.gallery__intro::first-letter{float:left;font-family:var(--display);font-weight:400;font-size:5.1em;line-height:.74;padding:.08em .13em 0 0;color:var(--gold);background:linear-gradient(180deg,var(--gold-hi) 0%,var(--gold) 55%,var(--gold-deep) 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
@media (max-width:640px){.concerts__intro::first-letter,.gallery__intro::first-letter{font-size:4em}}