/* ============================================================================
   WHISKEY JACK — BOREAL DEATH design system
   Palette sampled from the band's own gig posters + Nuance Is Dead cover.
   Motion policy: this is a metal band site — animation is the brand.
   prefers-reduced-motion tones effects down instead of killing them.
   ========================================================================== */
@font-face{
  font-family:'Anton';
  src:url('../assets/fonts/anton.woff2') format('woff2');
  font-weight:400;font-style:normal;font-display:swap;
}
:root{
  --void:#04080b;        /* blue-black night */
  --pit:#0a1218;         /* raised panels */
  --steel:#15252f;       /* borders */
  --frost:#a8dcec;       /* glacial accent */
  --frost-dim:#5d8fa3;
  --bone:#eae6db;        /* headline white */
  --ash:#98a1a7;         /* body text */
  --blood:#8c1018;       /* gore accent */
  --blood-dark:#4c060b;
  --display:'Anton','Haettenschweiler','Arial Narrow',Impact,'Franklin Gothic Medium',sans-serif;
  --blackletter:'Old English Text MT','Palatino Linotype',Georgia,serif;
  --body:'Segoe UI',system-ui,-apple-system,sans-serif;
  --mono:Consolas,'Courier New',monospace;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{background:var(--void);color:var(--ash);font-family:var(--body);line-height:1.6;overflow-x:hidden}
::selection{background:var(--blood);color:var(--bone)}
img{max-width:100%;display:block}
a{color:var(--frost);text-decoration:none}
a:hover{color:var(--bone)}
:focus-visible{outline:2px solid var(--frost);outline-offset:3px}
h1,h2,h3{font-family:var(--display);font-weight:400;text-transform:uppercase;color:var(--bone);line-height:1.02;letter-spacing:.02em}

/* film grain */
body::after{content:"";position:fixed;inset:-50%;pointer-events:none;z-index:80;opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='.9'/%3E%3C/svg%3E")}

/* blood scroll-progress bar */
.progress{position:fixed;top:0;left:0;height:3px;width:0;z-index:100;
  background:linear-gradient(90deg,var(--blood-dark),var(--blood) 60%,#d43a44);
  box-shadow:0 0 12px rgba(140,16,24,.8)}

/* cursor glow (desktop, additive — native cursor stays) */
.cur{position:fixed;z-index:99;width:38px;height:38px;border:1px solid rgba(168,220,236,.5);
  border-radius:50%;pointer-events:none;transform:translate(-50%,-50%);
  transition:width .2s,height .2s,border-color .2s;display:none;mix-blend-mode:screen}
.cur.hot{width:60px;height:60px;border-color:var(--blood)}
.curdot{position:fixed;z-index:99;width:5px;height:5px;background:var(--frost);border-radius:50%;
  pointer-events:none;transform:translate(-50%,-50%);display:none;box-shadow:0 0 10px var(--frost)}
@media (pointer:fine) and (min-width:900px){.cur,.curdot{display:block}}

.wrap{max-width:1120px;margin:0 auto;padding:0 22px}
section{padding:96px 0;border-top:1px solid #0e1a22;position:relative;overflow:hidden}
/* huge emblem watermark drifting behind sections */
section .wm-bg{position:absolute;right:-140px;top:50%;width:520px;height:520px;opacity:.05;
  pointer-events:none;background-size:contain;background-repeat:no-repeat;will-change:transform}
.eyebrow{font-family:var(--blackletter);color:var(--frost);font-size:1.35rem;letter-spacing:.06em;margin-bottom:10px}
.eyebrow::after{content:"";display:block;width:64px;height:1px;background:linear-gradient(90deg,var(--frost),transparent);margin-top:10px}
.h2{font-size:clamp(2.6rem,6.5vw,4.4rem);margin-bottom:16px}
/* stagger letters of every h2 */
.h2 .l{display:inline-block;opacity:0;transform:translateY(.55em) rotate(6deg);
  transition:opacity .5s ease,transform .55s cubic-bezier(.2,1.4,.4,1);transition-delay:calc(var(--i)*38ms)}
.rv.in .h2 .l,.h2.in .l{opacity:1;transform:none}
.lede{max-width:64ch;font-size:1.05rem;color:#aab3b9}
.lede strong{color:var(--bone)}

/* ======================= NAV ======================= */
.nav{position:fixed;top:0;left:0;right:0;z-index:90;display:flex;align-items:center;gap:18px;
  padding:10px 18px;background:rgba(4,8,11,.86);border-bottom:1px solid #0e1a22;backdrop-filter:blur(8px)}
.nav-brand{display:flex;align-items:center;gap:10px;font-family:var(--display);font-size:1.25rem;
  letter-spacing:.06em;color:var(--bone);text-transform:uppercase;white-space:nowrap}
.nav-brand img{width:34px;height:34px;object-fit:cover;filter:drop-shadow(0 0 6px rgba(168,220,236,.4));
  transition:transform .5s}
.nav-brand:hover img{transform:rotate(180deg) scale(1.1)}
@media(max-width:660px){.nav-brand span{display:none}}
.nav-links{display:flex;gap:4px;margin-left:auto;overflow-x:auto;scrollbar-width:none}
.nav-links::-webkit-scrollbar{display:none}
.nav-links a{font-family:var(--mono);font-size:.72rem;letter-spacing:.16em;color:var(--ash);
  padding:8px 12px;border:1px solid transparent;white-space:nowrap;position:relative}
.nav-links a:hover{color:var(--frost)}
.nav-links a.active{color:var(--frost);border-color:var(--steel);background:rgba(10,18,24,.8)}
.sound{background:rgba(10,18,24,.8);border:1px solid var(--steel);color:var(--frost);
  font-family:var(--mono);font-size:.7rem;letter-spacing:.14em;padding:8px 12px;cursor:pointer;white-space:nowrap;
  display:flex;align-items:center;gap:8px}
.sound[aria-pressed="true"]{border-color:var(--blood);color:var(--bone);box-shadow:0 0 16px rgba(140,16,24,.5)}

/* animated EQ bars */
.eq{display:inline-flex;align-items:flex-end;gap:2px;height:12px}
.eq i{width:3px;background:var(--frost);height:4px}
.eq.live i{animation:eqb .7s ease-in-out infinite}
.eq.live i:nth-child(2){animation-delay:.18s;background:var(--blood)}
.eq.live i:nth-child(3){animation-delay:.34s}
@keyframes eqb{0%,100%{height:3px}50%{height:12px}}

/* ======================= HERO ======================= */
.hero{min-height:100svh;display:flex;flex-direction:column;justify-content:center;align-items:center;
  position:relative;border:none;overflow:hidden;text-align:center;padding:90px 16px 70px}
.hero-bg{position:absolute;inset:-6%;background-size:cover;background-position:center 30%;
  filter:saturate(1.05) brightness(.82);will-change:transform;
  animation:kenburns 26s ease-in-out infinite alternate}
@keyframes kenburns{0%{transform:scale(1) translateY(0)}100%{transform:scale(1.08) translateY(-1.5%)}}
.hero-bg::after{content:"";position:absolute;inset:0;
  background:radial-gradient(ellipse at 50% 42%,transparent 0%,rgba(4,8,11,.5) 62%,var(--void) 100%),
             linear-gradient(180deg,rgba(4,8,11,.72) 0%,transparent 22%,transparent 62%,var(--void) 96%)}
@media (max-width:700px){.hero-bg{background-position:34% 30%}}  /* keep the raven visible on phones */

/* under-construction caution strip */
.construction{position:relative;overflow:hidden;background:repeating-linear-gradient(-45deg,#0a0a08 0 26px,#c9a227 26px 52px);
  border-top:1px solid #000;border-bottom:1px solid #000;padding:3px 0}
.construction .con-track{display:inline-block;white-space:nowrap;background:rgba(4,8,11,.92);
  padding:8px 0;animation:tick 30s linear infinite;font-family:var(--mono);font-size:.72rem;
  letter-spacing:.22em;color:#c9a227;text-transform:uppercase;width:max-content}
.construction .con-track span{padding:0 12px}
.construction .con-track i{display:inline-block;width:34px;height:1px;background:repeating-linear-gradient(90deg,#c9a227 0 6px,transparent 6px 12px);vertical-align:middle}

/* SOLD OUT stamp */
.item .ph{position:relative}
.soldout{position:absolute;z-index:2;top:50%;left:50%;transform:translate(-50%,-50%) rotate(-14deg);
  font-family:var(--display);font-size:2.1rem;letter-spacing:.1em;color:#e33b47;
  border:4px solid #e33b47;border-radius:6px;padding:4px 18px;text-transform:uppercase;
  background:rgba(4,8,11,.25);
  mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='r'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.12' numOctaves='3'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .8 .25'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23r)'/%3E%3C/svg%3E");
  mask-size:160px;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='r'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.12' numOctaves='3'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .8 .25'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23r)'/%3E%3C/svg%3E");
  -webkit-mask-size:160px;
  text-shadow:0 0 18px rgba(227,59,71,.4)}
.item.sold .ph img{filter:saturate(.5) brightness(.6)}
/* drifting fog layers */
.fog{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.fog i{position:absolute;width:70vmax;height:70vmax;border-radius:50%;filter:blur(80px);opacity:.4;will-change:transform}
.fog i:first-child{left:-25vmax;top:-15vmax;background:radial-gradient(circle,rgba(18,50,64,.9) 0%,transparent 60%);
  animation:fogA 34s ease-in-out infinite alternate}
.fog i:last-child{right:-25vmax;bottom:-25vmax;background:radial-gradient(circle,rgba(76,6,11,.55) 0%,transparent 60%);
  animation:fogB 41s ease-in-out infinite alternate}
@keyframes fogA{0%{transform:translate(0,0)}100%{transform:translate(12vmax,6vmax)}}
@keyframes fogB{0%{transform:translate(0,0)}100%{transform:translate(-10vmax,-8vmax)}}
#snow{position:absolute;inset:0;pointer-events:none}
.hero-inner{position:relative;z-index:2;perspective:760px;will-change:transform}
.hero-pre{font-family:var(--blackletter);color:var(--frost);font-size:clamp(1.1rem,2.6vw,1.7rem);
  text-shadow:0 0 18px rgba(168,220,236,.5);animation:preglow 4s ease-in-out infinite alternate}
@keyframes preglow{0%{text-shadow:0 0 10px rgba(168,220,236,.3)}100%{text-shadow:0 0 26px rgba(168,220,236,.75)}}

/* --- the gory 3D wordmark --- */
.title3d{margin:14px 0 6px;transform-style:preserve-3d;will-change:transform}
.title3d .line{display:block;font-family:var(--display);text-transform:uppercase;
  font-size:clamp(4.2rem,15vw,12.5rem);line-height:.92;letter-spacing:.03em;color:var(--bone);
  transform-style:preserve-3d;animation:sway 9s ease-in-out infinite alternate}
.title3d .line:nth-child(2){animation-delay:-4.5s}
@keyframes sway{0%{transform:rotateY(-7deg) rotateX(3deg)}100%{transform:rotateY(7deg) rotateX(-3deg)}}
.title3d .ltr{position:relative;display:inline-block;transform-style:preserve-3d;
  color:#f1ede2;opacity:0;transform:translateY(.4em) rotateX(50deg);
  animation:ltrin .7s cubic-bezier(.2,1.3,.4,1) forwards;animation-delay:calc(var(--li)*60ms);
  text-shadow:
    0 1px 0 #b9b4a6, 0 2px 0 #8f8a7c, 0 3px 0 #6e6a5e, 0 4px 0 #504d44,
    0 5px 0 #38362f, 0 6px 0 #26241f, 0 7px 0 #181712, 0 8px 0 #0d0c0a,
    0 9px 0 #070706, 0 10px 1px #030303,
    0 11px 2px rgba(0,0,0,.9), 0 16px 10px rgba(0,0,0,.65),
    0 6px 28px rgba(140,16,24,.35), 0 -2px 22px rgba(168,220,236,.28)}
@keyframes ltrin{to{opacity:1;transform:none}}
.title3d .ltr.deep{transform:translateZ(-14px)}
.title3d .ltr.mid{transform:translateZ(10px)}
.title3d .ltr.high{transform:translateZ(26px)}
/* blood drip hanging off letters */
.drip{position:absolute;top:86%;width:3px;border-radius:0 0 3px 3px;pointer-events:none;
  background:linear-gradient(180deg,var(--blood) 0%,var(--blood-dark) 78%,transparent 100%);
  filter:drop-shadow(0 0 3px rgba(140,16,24,.6));transform-origin:top;
  animation:dripfall var(--dur,7s) ease-in infinite;animation-delay:var(--del,0s)}
.drip::after{content:"";position:absolute;bottom:-5px;left:-2px;width:7px;height:7px;border-radius:50%;
  background:var(--blood);opacity:0;animation:dripdrop var(--dur,7s) ease-in infinite;animation-delay:var(--del,0s)}
@keyframes dripfall{0%{height:0;opacity:0}12%{opacity:1}55%{height:var(--len,64px)}80%{height:var(--len,64px);opacity:1}100%{height:var(--len,64px);opacity:0}}
@keyframes dripdrop{0%,45%{opacity:0;transform:translateY(0)}60%{opacity:1}95%{opacity:0;transform:translateY(46px)}100%{opacity:0}}
/* glitch — on the wrapper so it never interrupts the line sway animation */
.title3d.glitch{animation:glx .26s steps(2,end) 1}
@keyframes glx{0%{transform:translate(0);filter:none}
  35%{transform:translate(3px,-2px) skewX(-3deg);filter:drop-shadow(-4px 0 rgba(168,220,236,.7)) drop-shadow(4px 0 rgba(140,16,24,.8))}
  70%{transform:translate(-2px,1px);filter:drop-shadow(3px 0 rgba(168,220,236,.6))}
  100%{transform:translate(0);filter:none}}

.hero-sub{font-family:var(--mono);color:var(--frost);font-size:clamp(.68rem,1.9vw,.95rem);
  letter-spacing:.3em;margin-top:26px;text-shadow:0 0 12px rgba(168,220,236,.4)}
.hero-cta{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin-top:36px}
.btn{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:.78rem;letter-spacing:.2em;text-transform:uppercase;
  padding:14px 26px;border:1px solid var(--steel);color:var(--bone);background:rgba(10,18,24,.72);cursor:pointer;
  transition:border-color .2s,box-shadow .2s,transform .15s;position:relative;overflow:hidden}
.btn::before{content:"";position:absolute;top:0;left:-120%;width:100%;height:100%;
  background:linear-gradient(100deg,transparent 20%,rgba(168,220,236,.18) 50%,transparent 80%);
  transition:left .45s ease}
.btn:hover::before{left:120%}
.btn:hover{border-color:var(--frost);box-shadow:0 0 22px rgba(168,220,236,.25);transform:translateY(-2px);color:var(--bone)}
.btn.blood{border-color:#3d1114;background:linear-gradient(180deg,rgba(140,16,24,.32),rgba(76,6,11,.32))}
.btn.blood:hover{border-color:var(--blood);box-shadow:0 0 26px rgba(140,16,24,.5)}
.btn.frost{border-color:#274653}

/* ticker */
.ticker{position:absolute;bottom:0;left:0;right:0;z-index:3;border-top:1px solid #0e1a22;
  background:rgba(4,8,11,.82);overflow:hidden;white-space:nowrap;padding:10px 0}
.ticker-track{display:inline-block;animation:tick 26s linear infinite;font-family:var(--mono);
  font-size:.74rem;letter-spacing:.22em;color:var(--frost-dim);text-transform:uppercase}
.ticker:hover .ticker-track{animation-play-state:paused}
.ticker-track b{color:var(--frost);font-weight:600}
.ticker-track .x{color:var(--blood);padding:0 18px}
@keyframes tick{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}

/* ===== reveal variants ===== */
.rv{opacity:0;transform:translateY(30px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,1,.3,1)}
.rv.in{opacity:1;transform:none}
.rv[data-anim="left"]{transform:translateX(-60px)}
.rv[data-anim="right"]{transform:translateX(60px)}
.rv[data-anim="pop"]{transform:scale(.86) translateY(20px)}
.rv[data-anim].in{transform:none}

/* ======================= MUSIC ======================= */
.releases{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px;margin-top:42px}
.release{border:1px solid var(--steel);background:var(--pit);position:relative;overflow:hidden;
  transition:border-color .25s,transform .25s,box-shadow .25s}
.release:hover{border-color:var(--frost-dim);transform:translateY(-5px);box-shadow:0 18px 40px rgba(0,0,0,.5)}
.release .cover{position:relative;overflow:hidden;border-bottom:1px solid var(--steel)}
.release .cover img{width:100%;aspect-ratio:1;object-fit:cover;transition:transform .6s}
.release:hover .cover img{transform:scale(1.05)}
.release .cover .rtype{position:absolute;top:12px;left:12px}
.release .rbody{padding:24px 24px 24px}
.rtype{font-family:var(--mono);font-size:.68rem;letter-spacing:.28em;color:var(--bone);
  background:rgba(76,6,11,.8);border:1px solid var(--blood);display:inline-block;padding:4px 10px}
.release h3{font-size:clamp(1.7rem,3.2vw,2.3rem);line-height:.95}
.release .ryear{font-family:var(--mono);color:var(--frost-dim);font-size:.78rem;margin-top:8px;letter-spacing:.2em}
.release .rtracks{margin-top:16px;border-top:1px dashed #14242e;padding-top:12px}
.release .rtrack{display:flex;gap:10px;align-items:baseline;padding:5px 0;font-size:.86rem;color:var(--ash)}
.release .rtrack .n{font-family:var(--mono);color:var(--blood);font-size:.72rem;min-width:20px}
.release .rtrack .t{color:#c3ccd2}
.release .rtrack .tm{margin-left:auto;font-family:var(--mono);font-size:.7rem;color:var(--frost-dim)}
.release .rnote{margin-top:12px;font-family:var(--mono);font-size:.68rem;color:var(--frost-dim);letter-spacing:.12em}
.release .btns{display:flex;gap:10px;margin-top:18px;flex-wrap:wrap}
.release .btn{padding:11px 18px;font-size:.68rem}
.playep{margin-top:36px;width:100%;justify-content:center;padding:18px;font-size:.85rem}
.tracks{margin-top:46px;border:1px solid var(--steel);background:var(--pit)}
.tracks-head{padding:16px 22px;border-bottom:1px solid var(--steel);font-family:var(--mono);
  font-size:.7rem;letter-spacing:.26em;color:var(--frost-dim)}
.track{display:flex;align-items:baseline;gap:16px;padding:15px 22px;border-bottom:1px solid #0e1a22;
  transition:background .2s,padding-left .2s;cursor:default}
.track:last-child{border-bottom:none}
.track:hover{background:rgba(168,220,236,.05);padding-left:30px}
.track .tno{font-family:var(--mono);color:var(--blood);font-size:.8rem;min-width:26px}
.track .tname{font-family:var(--display);text-transform:uppercase;color:var(--bone);
  font-size:clamp(1.05rem,2.6vw,1.5rem);letter-spacing:.04em}
.track .eq{opacity:0;transition:opacity .2s}
.track:hover .eq{opacity:1}
.track .tplays{margin-left:auto;font-family:var(--mono);font-size:.72rem;color:var(--frost-dim);letter-spacing:.1em;white-space:nowrap}

/* ======================= SHOWS ======================= */
.view-toggle{display:flex;gap:8px;margin-top:30px}
.view-toggle button{font-family:var(--mono);font-size:.72rem;letter-spacing:.2em;padding:10px 18px;
  background:var(--pit);border:1px solid var(--steel);color:var(--ash);cursor:pointer;transition:all .2s}
.view-toggle button.active{color:var(--frost);border-color:var(--frost-dim);box-shadow:0 0 14px rgba(168,220,236,.15)}
.shows-list{margin-top:26px;display:grid;gap:14px}
.show{display:grid;grid-template-columns:110px 1fr auto;gap:20px;align-items:center;
  border:1px solid var(--steel);background:var(--pit);padding:20px 24px;transition:border-color .2s,transform .25s,box-shadow .25s}
.show:hover{border-color:var(--frost-dim);transform:translateX(8px) scale(1.01);box-shadow:-8px 0 0 -4px var(--blood)}
.show.past{opacity:.55}
.show .d{font-family:var(--display);text-transform:uppercase;color:var(--frost);text-align:center;line-height:1}
.show .d .dd{font-size:2.5rem;display:block;text-shadow:0 0 18px rgba(168,220,236,.35)}
.show .d .dm{font-size:.95rem;letter-spacing:.28em;display:block;margin-top:4px}
.show .d .dy{font-family:var(--mono);font-size:.65rem;color:var(--frost-dim);letter-spacing:.2em;display:block;margin-top:4px}
.show .info h3{font-size:clamp(1.2rem,2.6vw,1.7rem);letter-spacing:.04em}
.show .info .venue{font-size:.9rem;color:var(--ash);margin-top:4px}
.show .info .meta{font-family:var(--mono);font-size:.7rem;color:var(--frost-dim);letter-spacing:.12em;margin-top:8px}
.show .info .lineup{font-family:var(--mono);font-size:.7rem;color:#6f7a80;margin-top:4px;letter-spacing:.06em}
.show .act{display:flex;flex-direction:column;gap:8px;align-items:stretch}
.show .act .btn{padding:10px 18px;text-align:center;font-size:.68rem;justify-content:center}
.show .poster-link{font-family:var(--mono);font-size:.64rem;letter-spacing:.16em;color:var(--frost-dim);text-align:center;cursor:pointer}
.show .poster-link:hover{color:var(--frost)}
@media(max-width:680px){.show{grid-template-columns:84px 1fr}.show .act{grid-column:1/-1;flex-direction:row}.show .act .btn{flex:1}}

/* calendar */
.calendar{margin-top:26px;border:1px solid var(--steel);background:var(--pit);display:none}
.calendar.on{display:block;animation:calin .5s cubic-bezier(.2,1,.3,1)}
@keyframes calin{0%{opacity:0;transform:translateY(20px) scale(.98)}100%{opacity:1;transform:none}}
.cal-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--steel)}
.cal-head .cal-title{font-family:var(--display);text-transform:uppercase;font-size:1.7rem;color:var(--bone);letter-spacing:.06em}
.cal-nav{display:flex;gap:8px}
.cal-nav button{background:none;border:1px solid var(--steel);color:var(--frost);font-family:var(--mono);
  padding:8px 14px;cursor:pointer;font-size:.8rem;transition:all .2s}
.cal-nav button:hover{border-color:var(--frost);box-shadow:0 0 10px rgba(168,220,236,.2)}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr)}
.cal-dow{font-family:var(--mono);font-size:.62rem;letter-spacing:.2em;color:var(--frost-dim);
  text-align:center;padding:12px 0 10px;border-bottom:1px solid #0e1a22}
.cal-cell{aspect-ratio:1.15;border-right:1px solid #0c161d;border-bottom:1px solid #0c161d;
  padding:8px;font-family:var(--mono);font-size:.72rem;color:#4d5c64;position:relative;transition:background .2s}
.cal-cell:nth-child(7n){border-right:none}
.cal-cell.off{background:rgba(0,0,0,.25)}
.cal-cell.today .num{color:var(--frost)}
.cal-cell .num{position:absolute;top:8px;left:9px}
.cal-cell.gig{cursor:pointer;background:linear-gradient(160deg,rgba(140,16,24,.2),rgba(168,220,236,.06))}
.cal-cell.gig:hover,.cal-cell.gig.sel{background:linear-gradient(160deg,rgba(140,16,24,.42),rgba(168,220,236,.12));box-shadow:inset 0 0 0 1px var(--blood)}
.cal-cell.gig .mark{position:absolute;bottom:7px;left:50%;transform:translateX(-50%);
  width:8px;height:8px;border-radius:50%;background:var(--blood);
  animation:markpulse 1.6s ease-in-out infinite}
@keyframes markpulse{0%,100%{box-shadow:0 0 4px rgba(140,16,24,.6)}50%{box-shadow:0 0 16px rgba(140,16,24,1)}}
.cal-cell.gig.pastgig .mark{background:var(--frost-dim);animation:none;box-shadow:none}
.cal-detail{border-top:1px solid var(--steel);padding:18px 22px;display:none}
.cal-detail.on{display:block;animation:calin .35s ease}
.cal-detail .cd-title{font-family:var(--display);font-size:1.4rem;color:var(--bone);text-transform:uppercase}
.cal-detail p{font-family:var(--mono);font-size:.74rem;color:var(--ash);letter-spacing:.08em;margin-top:6px}
.cal-detail .btn{margin-top:14px;padding:10px 18px;font-size:.68rem}

/* poster lightbox */
.lightbox{position:fixed;inset:0;z-index:120;background:rgba(2,5,7,.92);display:none;
  align-items:center;justify-content:center;padding:30px;cursor:zoom-out}
.lightbox.on{display:flex;animation:lbin .25s ease}
@keyframes lbin{0%{opacity:0}100%{opacity:1}}
.lightbox img{max-height:88vh;max-width:92vw;border:1px solid var(--steel);box-shadow:0 0 60px rgba(0,0,0,.8)}

/* ======================= MERCH ======================= */
.merch-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:20px;margin-top:42px;perspective:1200px}
.item{border:1px solid var(--steel);background:var(--pit);overflow:hidden;position:relative;
  transition:border-color .25s,transform .3s,box-shadow .3s;transform-style:preserve-3d}
.item:hover{border-color:var(--frost-dim);transform:translateY(-8px) rotateX(3deg);box-shadow:0 24px 50px rgba(0,0,0,.6)}
.item .ph{overflow:hidden;border-bottom:1px solid var(--steel)}
.item .ph img{width:100%;aspect-ratio:1;object-fit:cover;transition:transform .5s}
.item:hover .ph img{transform:scale(1.07)}
.item .ibody{padding:18px 18px 20px}
.item h3{font-size:1.3rem;letter-spacing:.05em}
.item .isizes{font-family:var(--mono);font-size:.68rem;color:var(--frost-dim);letter-spacing:.14em;margin-top:6px}
.item .irow{display:flex;align-items:center;gap:12px;margin-top:16px;flex-wrap:wrap}
.item .iprice{font-family:var(--display);font-size:1.25rem;color:var(--frost)}
.item .btn{margin-left:auto;padding:10px 16px;font-size:.66rem}
.merch-note{margin-top:26px;font-family:var(--mono);font-size:.72rem;color:#5d6a71;letter-spacing:.1em}

/* ======================= BAND ======================= */
.band-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:22px;margin-top:42px;align-items:start}
@media(max-width:800px){.band-grid{grid-template-columns:1fr}}
.band-photo{border:1px solid var(--steel);padding:10px;background:var(--pit)}
.band-photo img{width:100%}
.band-photo figcaption{font-family:var(--mono);font-size:.68rem;color:var(--frost-dim);padding:10px 4px 2px;letter-spacing:.12em}
.bio-quote{border-left:2px solid var(--blood);background:rgba(140,16,24,.07);padding:18px 22px;font-size:1rem;color:#bcc5cb}
.band-facts{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
.fact{font-family:var(--mono);font-size:.66rem;letter-spacing:.14em;color:var(--frost);border:1px solid var(--steel);
  background:var(--pit);padding:6px 12px}
.members{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin-top:18px}
.member{border:1px solid var(--steel);background:var(--pit);text-align:center;overflow:hidden;
  transition:transform .25s,border-color .25s,box-shadow .25s}
.member:hover{transform:translateY(-5px);border-color:var(--frost-dim);box-shadow:0 14px 30px rgba(0,0,0,.55)}
.mcard-ph{cursor:zoom-in;overflow:hidden;border-bottom:1px solid var(--steel);position:relative}
.mcard-ph::after{content:"TAP FOR FULL BIO";position:absolute;bottom:0;left:0;right:0;
  font-family:var(--mono);font-size:.56rem;letter-spacing:.2em;color:var(--frost);
  background:linear-gradient(0deg,rgba(4,8,11,.9),transparent);padding:26px 0 8px;
  opacity:0;transition:opacity .25s}
.member:hover .mcard-ph::after{opacity:1}
.mcard-ph img{width:100%;aspect-ratio:4/5;object-fit:cover;object-position:top;transition:transform .5s}
.member:hover .mcard-ph img{transform:scale(1.05)}
.member .mmeta{padding:14px 12px 16px}
.member .mrole{font-family:var(--mono);font-size:.58rem;letter-spacing:.2em;color:var(--blood)}
.member .mname{font-family:var(--display);text-transform:uppercase;color:var(--bone);font-size:1.15rem;margin-top:6px;line-height:1.1}
.member .malso{font-family:var(--mono);font-size:.58rem;color:var(--frost-dim);margin-top:6px;letter-spacing:.08em}

/* ======================= GALLERY ======================= */
.gal{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px;margin-top:42px}
.gal figure{border:1px solid var(--steel);background:var(--pit);padding:8px;transition:transform .3s,border-color .3s,box-shadow .3s;cursor:zoom-in}
.gal figure:hover{transform:scale(1.03) rotate(-.5deg);border-color:var(--frost-dim);box-shadow:0 16px 34px rgba(0,0,0,.55)}
.gal img{width:100%;aspect-ratio:4/3.4;object-fit:cover;filter:saturate(.92)}
.gal figcaption{font-family:var(--mono);font-size:.64rem;color:var(--frost-dim);padding:8px 4px 2px;letter-spacing:.14em}

/* ======================= CONTACT ======================= */
.contact-box{margin-top:40px;display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px}
.cbox{border:1px solid var(--steel);background:var(--pit);padding:26px;transition:border-color .25s,transform .25s}
.cbox:hover{border-color:var(--frost-dim);transform:translateY(-3px)}
.cbox h3{font-size:1.4rem;color:var(--frost)}
.cbox p{font-size:.92rem;margin-top:10px}
.cbox .btn{margin-top:18px;padding:11px 20px;font-size:.7rem}
.socials{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}
.socials .btn{margin-top:0}

/* ======================= FOOTER ======================= */
footer{border-top:1px solid #0e1a22;padding:60px 0 40px;text-align:center;position:relative;overflow:hidden}
footer .femblem{width:74px;height:74px;object-fit:cover;margin:0 auto 16px;opacity:.85;
  filter:drop-shadow(0 0 14px rgba(168,220,236,.3));animation:embpulse 5s ease-in-out infinite;transition:transform .6s}
footer .femblem:hover{transform:rotateY(360deg)}
@keyframes embpulse{0%,100%{filter:drop-shadow(0 0 8px rgba(168,220,236,.25))}50%{filter:drop-shadow(0 0 26px rgba(168,220,236,.6))}}
footer .fname{font-family:var(--display);text-transform:uppercase;color:var(--bone);font-size:1.9rem;letter-spacing:.08em}
footer .fsmall{font-family:var(--mono);font-size:.64rem;color:#42525b;letter-spacing:.14em;margin-top:14px;line-height:2}

/* reduced motion: tone down, don't kill — the client wants a living page */
@media (prefers-reduced-motion:reduce){
  .hero-bg{animation-duration:60s}
  .fog i{animation-duration:80s}
  .ticker-track{animation-duration:60s}
  html{scroll-behavior:auto}
}
