/* ============================================================
   CHAI ZEBRA — Sticking Her Neck Out
   Palette pulled from the logo + album art:
   bronze/copper, ink black, cream, gold.
   ============================================================ */
:root{
  --bronze:    #c8864e;
  --bronze-lo: #9a5a2c;
  --gold:      #e6ad63;
  --ink:       #0d0b09;
  --ink-2:     #161210;
  --ink-3:     #211a15;
  --cream:     #f4ead8;
  --cream-dim: #c9bda9;
  --amber:     #ffb13c;
  --line:      rgba(200,134,78,.28);
  --shadow:    0 30px 80px rgba(0,0,0,.65);
  --font-impact: 'Anton', sans-serif;
  --font-head:   'Bebas Neue', sans-serif;
  --font-brush:  'Permanent Marker', cursive;
  --font-body:   'Oswald', sans-serif;
  --font-mono:   'Share Tech Mono', monospace;
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  font-family:var(--font-body);
  background:var(--ink);
  color:var(--cream);
  overflow-x:hidden;
  line-height:1.5;
}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}

/* selection + scrollbar */
::selection{background:var(--bronze);color:var(--ink)}
::-webkit-scrollbar{width:11px}
::-webkit-scrollbar-track{background:var(--ink)}
::-webkit-scrollbar-thumb{background:linear-gradient(var(--bronze),var(--bronze-lo));border-radius:20px}

/* ===== animated zebra stripe backdrop ===== */
.stripes-bg{
  position:fixed;inset:-20% -10%;z-index:0;opacity:.05;pointer-events:none;
  background:repeating-linear-gradient(115deg,
    #000 0 22px, transparent 22px 30px, #000 30px 40px, transparent 40px 70px);
  filter:blur(.4px);
  animation:drift 40s linear infinite;
}
@keyframes drift{to{transform:translateX(-70px) translateY(-30px)}}

/* ===== buttons ===== */
.btn{
  font-family:var(--font-head);letter-spacing:1.5px;font-size:1.05rem;
  padding:.85rem 1.7rem;border:none;border-radius:2px;cursor:pointer;
  display:inline-block;transition:transform .15s ease, box-shadow .2s ease, background .2s;
  text-transform:uppercase;
}
.btn-solid{background:linear-gradient(120deg,var(--gold),var(--bronze-lo));color:var(--ink);box-shadow:0 8px 24px rgba(200,134,78,.4)}
.btn-solid:hover{transform:translateY(-3px) skewX(-4deg);box-shadow:0 14px 34px rgba(230,173,99,.55)}
.btn-ghost{background:transparent;color:var(--cream);border:2px solid var(--bronze)}
.btn-ghost:hover{background:var(--bronze);color:var(--ink);transform:translateY(-3px)}

/* ===== NAV ===== */
.nav{
  position:fixed;top:0;left:0;right:0;z-index:60;
  display:flex;align-items:center;justify-content:space-between;
  padding:.6rem 4vw;overflow:hidden;
  background:linear-gradient(180deg,rgba(13,11,9,.85),rgba(13,11,9,0));
  transition:background .3s ease;
}
.nav.scrolled{background:rgba(13,11,9,.88);backdrop-filter:blur(12px)}
/* zebra-stripe bottom edge of the header */
.nav::after{content:"";position:absolute;left:0;right:0;bottom:0;height:5px;z-index:3;
  background:repeating-linear-gradient(90deg,#0d0b09 0 16px,transparent 16px 22px,var(--cream) 22px 23px,transparent 23px 30px)}
/* her neck zebra-stripes tiled across the header = edgy texture */
.nav-face{
  position:absolute;inset:0;z-index:0;pointer-events:none;
  background:url(../images/neck-stripes.png) repeat-x;
  background-size:auto 200%;background-position:center;
  opacity:.32;filter:contrast(1.12) saturate(1.05);
}
/* cream slash on the left so the transparent logo reads on a light base */
.nav-plate{
  position:absolute;left:0;top:0;bottom:0;width:min(34%,340px);z-index:1;pointer-events:none;
  background:linear-gradient(95deg,var(--cream) 0,var(--cream) 46%,rgba(244,234,216,0) 100%);
  clip-path:polygon(0 0,100% 0,80% 100%,0 100%);
}
.nav-brand{position:relative;z-index:2}
.nav-brand img{height:52px}
.nav-links{position:relative;z-index:2;display:flex;align-items:center;gap:1.8rem}
.nav-links a{text-shadow:0 1px 6px rgba(0,0,0,.85)}
.nav-links a{font-family:var(--font-head);letter-spacing:2px;font-size:1.15rem;color:var(--cream-dim);transition:color .2s}
.nav-links a:hover{color:var(--gold)}
.nav-cta{position:relative;overflow:hidden;padding:.4rem 1.85rem .4rem 1.1rem;background:var(--bronze);color:var(--ink)!important;border-radius:2px}
.nav-links a.nav-cta{text-shadow:none}                 /* no shadow on the Subscribe button */
.nav-cta:hover{background:var(--gold)}
/* irregular, jagged zebra stripes at the end of the button (two offset gradients) */
.nav-cta::after{content:"";position:absolute;top:0;right:0;bottom:0;width:23px;pointer-events:none;
  background:
    repeating-linear-gradient(110deg,#0d0b09 0 2px,transparent 2px 5px),
    repeating-linear-gradient(125deg,#0d0b09 0 3px,transparent 3px 10px);}
/* hamburger (mobile) + its dropdown menu — hidden on desktop */
/* hamburger as a diagonal "piece" beside Subscribe: a leaning parallelogram
   (skewed so the thin beige stroke follows the slant) — dark brown with
   light-beige slanted lines that do a little jiggle */
.nav-burger{display:none;position:relative;z-index:2;flex-direction:column;justify-content:center;align-items:center;gap:5px;
  width:32px;align-self:stretch;padding:0;cursor:pointer;
  background:#3a2613;border:1px solid rgba(244,234,216,.6);border-radius:2px;
  transform:skewX(-29.04deg)}   /* exact angle of Subscribe's left edge; height matches via align-self:stretch */
.nav-burger span{display:block;height:2px;width:20px;background:var(--cream);border-radius:2px;transform-origin:center;
  transform:skewX(29.04deg) rotate(-24deg);transition:transform .25s,opacity .2s}   /* un-skew, then slant */
.nav-burger:not(.open) span{animation:burgerJiggle 1.6s ease-in-out infinite}
.nav-burger:not(.open) span:nth-child(2){animation-delay:.16s}
.nav-burger:not(.open) span:nth-child(3){animation-delay:.32s}
@keyframes burgerJiggle{
  0%,100%{transform:skewX(29.04deg) rotate(-24deg) translate(0,0)}
  28%{transform:skewX(29.04deg) rotate(-15deg) translate(1.5px,-1px)}
  55%{transform:skewX(29.04deg) rotate(-33deg) translate(-1.5px,1px)}
  80%{transform:skewX(29.04deg) rotate(-20deg) translate(.5px,0)}
}
.nav-burger.open span{animation:none}
.nav-burger.open span:nth-child(1){transform:skewX(29.04deg) translateY(7px) rotate(45deg)}
.nav-burger.open span:nth-child(2){opacity:0}
.nav-burger.open span:nth-child(3){transform:skewX(29.04deg) translateY(-7px) rotate(-45deg)}
.nav-menu{display:none}

/* ===== HERO ===== */
.hero{position:relative;z-index:2;min-height:100vh;min-height:100svh;display:flex;align-items:center;padding:7rem 4vw 2rem;overflow:hidden}
/* oversized + left-anchored => she sits right-of-centre, clear of the copy */
.hero-bg{position:absolute;inset:0;z-index:0;
  background:url(../images/chai-zebra-mic.png) no-repeat left top;
  background-size:132% auto;}
.hero-scrim{position:absolute;inset:0;z-index:1;background:
  linear-gradient(90deg,rgba(8,7,6,.96) 0%,rgba(8,7,6,.8) 38%,rgba(8,7,6,.3) 66%,rgba(8,7,6,.62) 100%),
  linear-gradient(0deg,rgba(8,7,6,.92),transparent 34%)}
.hero-inner{position:relative;z-index:4;max-width:1280px;margin:0 auto;width:100%}
.hero-copy{max-width:640px}
/* cursor-follow "negative" torch: an inverted-colour version of the photo shows under the cursor */
.hero-invert{position:absolute;inset:0;z-index:2;pointer-events:none;
  background:url(../images/chai-zebra-mic.png) left top/132vw auto no-repeat;   /* same framing as .hero-bg */
  filter:grayscale(1) sepia(.65) saturate(1.4) brightness(1.55);opacity:0;transition:opacity .25s ease;  /* beige luminosity */
  /* HOVER REVEAL: small area at the cursor, revealed through zebra stripes */
  -webkit-mask-image:radial-gradient(circle 130px at var(--mx,-400px) var(--my,-400px),#000 0 50%,transparent 86%),repeating-linear-gradient(118deg,#000 0 11px,transparent 11px 24px);
  -webkit-mask-composite:source-in;
  mask-image:radial-gradient(circle 130px at var(--mx,-400px) var(--my,-400px),#000 0 50%,transparent 86%),repeating-linear-gradient(118deg,#000 0 11px,transparent 11px 24px);
  mask-composite:intersect}
/* BACKUP (small-circle invert torch): swap the 4 mask lines above for the next two —
   -webkit-mask:radial-gradient(circle 150px at var(--mx,-300px) var(--my,-300px),#000 0 40%,transparent 72%);
   mask:radial-gradient(circle 150px at var(--mx,-300px) var(--my,-300px),#000 0 40%,transparent 72%); */
.hero.torch-on .hero-invert{opacity:1}
/* the Chai Zebra logo "stamps" onto her cheek — only when the cursor is over the logo */
.hero-mark{position:absolute;left:71.5%;top:calc(42% + 80px);z-index:3;pointer-events:none;
  width:clamp(72px,6.7vw,118px);aspect-ratio:800/586;
  background:url(../images/chai-zebra-27.png) center/contain no-repeat;
  transform:translate(-50%,-50%) rotate(-16deg) scale(.9);
  opacity:0;mix-blend-mode:multiply;transition:opacity .45s ease,transform .45s cubic-bezier(.22,1.3,.36,1)}
.hero-mark.lit{opacity:.95;transform:translate(-50%,-50%) rotate(-16deg) scale(1)}
.kicker{font-family:var(--font-mono);color:var(--bronze);letter-spacing:3px;font-size:.8rem;margin-bottom:1rem}
.hero-title{font-family:var(--font-impact);line-height:.82;font-size:clamp(4rem,13vw,11rem);text-transform:uppercase}
.hero-title .glitch{display:block}
.hero-title .glitch.alt{color:transparent;-webkit-text-stroke:2px var(--bronze)}
.hero-tag{font-family:var(--font-brush);color:var(--gold);font-size:clamp(1.6rem,4vw,2.8rem);margin:.8rem 0 .4rem;transform:rotate(-2deg)}
.hero-tag em{color:var(--cream)}
.hero-sub{max-width:34ch;color:var(--cream-dim);font-weight:300;font-size:1.05rem;margin-bottom:1.6rem}
.hero-btns{display:flex;gap:1rem;flex-wrap:wrap;align-items:center}

/* glitch text */
.glitch{position:relative}
.glitch::before,.glitch::after{content:attr(data-text);position:absolute;inset:0;overflow:hidden}
.glitch::before{color:var(--bronze);transform:translate(-2px,0);clip-path:inset(0 0 55% 0);animation:gl1 3s infinite linear alternate}
.glitch::after{color:#5fd0ff;mix-blend-mode:screen;transform:translate(2px,0);clip-path:inset(55% 0 0 0);animation:gl2 2.4s infinite linear alternate}
@keyframes gl1{0%,92%{opacity:0}93%,96%{opacity:.55;transform:translate(-3px,1px)}100%{opacity:0}}
@keyframes gl2{0%,90%{opacity:0}91%,95%{opacity:.5;transform:translate(3px,-1px)}100%{opacity:0}}

.hero-art{position:relative;display:flex;justify-content:center}
.hero-photo{position:relative;z-index:2;max-height:78vh;filter:drop-shadow(0 30px 60px rgba(0,0,0,.7));border-radius:6px;animation:floaty 6s ease-in-out infinite}
.hero-glow{position:absolute;inset:-8%;background:radial-gradient(closest-side,rgba(230,173,99,.55),transparent 70%);filter:blur(40px);z-index:1;animation:pulse 5s ease-in-out infinite}
@keyframes floaty{50%{transform:translateY(-14px)}}
@keyframes pulse{50%{opacity:.6;transform:scale(1.06)}}

/* audio visualizer */
.visualizer{display:flex;align-items:flex-end;gap:4px;height:42px;margin-top:1.8rem}
.visualizer span{width:5px;background:linear-gradient(var(--gold),var(--bronze-lo));border-radius:2px;animation:eq 1s ease-in-out infinite}
.visualizer span:nth-child(odd){animation-duration:.7s}
.visualizer span:nth-child(3n){animation-duration:1.3s}
.visualizer span:nth-child(4n){animation-duration:.9s}
@keyframes eq{0%,100%{height:8px}50%{height:42px}}

/* ===== MARQUEE ===== */
.marquee{position:relative;z-index:2;overflow:hidden;background:var(--bronze);color:var(--ink);padding:.55rem 0;border-top:3px solid var(--ink);border-bottom:3px solid var(--ink)}
.marquee-track{display:flex;white-space:nowrap;animation:scrollx 26s linear infinite;will-change:transform}
.marquee-track span{font-family:var(--font-impact);font-size:1.5rem;letter-spacing:2px;padding-right:1rem}
@keyframes scrollx{to{transform:translateX(-50%)}}

/* ===== SECTION HEAD shared ===== */
.section-head{position:relative;z-index:2;text-align:center;max-width:760px;margin:0 auto 3rem;padding:0 1rem}
.section-kicker{font-family:var(--font-mono);color:var(--bronze);letter-spacing:4px;font-size:.85rem;margin-bottom:.6rem}
.section-title{font-family:var(--font-impact);font-size:clamp(2.6rem,8vw,5.5rem);line-height:.9;text-transform:uppercase}
.section-title .outline{color:transparent;-webkit-text-stroke:2px var(--gold)}
.section-blurb{color:var(--cream-dim);font-weight:300;margin-top:1rem;font-size:1.05rem}

/* ===== ALBUM ===== */
.album{position:relative;z-index:2;padding:6rem 4vw 8rem;overflow:hidden;
  background:
    linear-gradient(180deg,rgba(11,9,7,.84),rgba(11,9,7,.56) 42%,rgba(11,9,7,.9)),
    url(../images/album-bg.jpg) center/cover no-repeat,
    #0d0b09;}
.album::after{content:"";position:absolute;inset:auto 0 0 0;height:60%;
  background:radial-gradient(120% 80% at 50% 100%,rgba(200,134,78,.18),transparent 70%);z-index:-1}
.album-stage{
  position:relative;display:flex;justify-content:center;align-items:center;
  min-height:clamp(360px,50vw,600px);
  perspective:2400px;
  margin-top:1rem;
}
.album-hint{
  position:absolute;top:8%;left:50%;transform:translateX(-50%);
  font-family:var(--font-mono);letter-spacing:3px;color:var(--gold);
  font-size:.9rem;z-index:30;animation:blink 1.4s steps(2) infinite;pointer-events:none;
}
.album-stage.open .album-hint{display:none}
@keyframes blink{50%{opacity:.25}}

/* gatefold: right panel = tracklist, swinging cover overlays it */
.gatefold{
  position:relative;
  width:clamp(300px,44vw,560px);
  height:clamp(300px,44vw,560px);
  transform-style:preserve-3d;
  transition:transform .9s cubic-bezier(.22,1,.36,1);
  /* dynamic overlay tilt while closed */
  transform:rotate(-7deg) translateX(0);
}
.album-stage.open .gatefold{transform:rotate(0deg) translateX(50%)}

/* right inner panel: the real album inside / back cover, with relinked songs */
.gf-tracklist{
  position:absolute;inset:0;border-radius:3px;overflow:hidden;
  border:1px solid var(--line);
  box-shadow:var(--shadow), inset 0 0 60px rgba(0,0,0,.45);
}
.gf-back-img{width:100%;height:100%;object-fit:cover;display:block}
.hotspots{position:absolute;inset:0}
.hotspot{
  position:absolute;left:2.2%;width:40%;height:4.7%;
  background:transparent;border:none;padding:0;cursor:pointer;border-radius:5px;
  transition:background .15s,box-shadow .15s;
}
.hotspot:hover,.hotspot:focus-visible{
  outline:none;
  background:rgba(200,134,78,.32);
  box-shadow:inset 0 0 0 1.5px var(--gold),0 0 16px rgba(230,173,99,.55);
}
.hs-badge{
  position:absolute;right:-2.5%;top:50%;transform:translate(100%,-50%);
  font-family:var(--font-mono);font-size:.72rem;letter-spacing:1px;color:var(--gold);
  background:rgba(13,11,9,.85);border:1px solid var(--gold);border-radius:20px;
  padding:.02rem .45rem;opacity:0;white-space:nowrap;transition:opacity .2s;
}
.hs-badge.on{opacity:1}
.tl-hint{
  position:absolute;top:3.5%;right:4.5%;z-index:2;pointer-events:none;
  font-family:var(--font-mono);letter-spacing:2px;font-size:.68rem;color:var(--ink);
  background:rgba(244,234,216,.85);padding:.2rem .55rem;border-radius:20px;
  box-shadow:0 2px 10px rgba(0,0,0,.25);
}

/* swinging cover */
.gf-cover{
  position:absolute;inset:0;
  transform-origin:left center;
  transform-style:preserve-3d;
  transition:transform 1s cubic-bezier(.6,.02,.2,1);
  cursor:pointer;z-index:10;
}
.album-stage.open .gf-cover{transform:rotateY(-178deg)}
.gf-face{position:absolute;inset:0;backface-visibility:hidden;border-radius:3px;overflow:hidden;box-shadow:var(--shadow)}
.gf-front img{width:100%;height:100%;object-fit:cover}
/* glitch flicker around the album cover edges */
@property --gfa{syntax:"<angle>";initial-value:0deg;inherits:false}
@property --gfb{syntax:"<angle>";initial-value:0deg;inherits:false}
.gf-glitch{position:absolute;inset:0;pointer-events:none;z-index:2}
/* both layers are conic-gradients masked to just the cover's border ring */
.gf-glitch::before,.gf-glitch::after{content:"";position:absolute;inset:0;padding:2px;border-radius:3px;
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;
  mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude}
/* fast: a focused chromatic segment spinning around the edges */
.gf-glitch::before{
  background:conic-gradient(from var(--gfa),transparent 0 80%,#56d8ff 85%,#fff 89%,#ff3358 93%,transparent 97%);
  animation:gfSpinA 2.6s linear infinite}
@keyframes gfSpinA{to{--gfa:360deg}}
/* slow: faded, broken into pieces, sporadic */
.gf-glitch::after{opacity:.5;padding:3px;
  background:conic-gradient(from var(--gfb),
    transparent 0 6%,#e6ad63 8% 10%,transparent 12% 33%,
    #56d8ff 35% 37%,transparent 39% 61%,
    #ff3358 63% 65%,transparent 67% 87%,
    #f4ead8 89% 91%,transparent 93% 100%);
  animation:gfSpinB 8s linear infinite,gfFlick 4.6s steps(1,end) infinite}
@keyframes gfSpinB{to{--gfb:360deg}}
@keyframes gfFlick{0%,44%{opacity:.5}47%{opacity:0}55%{opacity:.42}71%{opacity:0}77%{opacity:.5}89%{opacity:0}93%{opacity:.4}100%{opacity:.5}}
.gf-front::after{content:"";position:absolute;inset:0;box-shadow:inset 8px 0 24px rgba(0,0,0,.45);pointer-events:none}
.gf-back{transform:rotateY(180deg);background:radial-gradient(120% 120% at 30% 20%,var(--ink-3),var(--ink));display:flex;align-items:center;justify-content:center;border:1px solid var(--line)}
.gf-back-inner{text-align:center;padding:1.4rem}
.gf-back-inner img{width:78%;margin:0 auto .8rem;filter:drop-shadow(0 6px 18px rgba(0,0,0,.55))}
.gf-back-inner p{font-family:var(--font-mono);letter-spacing:3px;font-size:.7rem;color:var(--bronze)}

/* ===== TOUR ===== */
.tour{position:relative;z-index:2;padding:6rem 4vw;
  background:
    linear-gradient(180deg,rgba(11,9,7,.92),rgba(11,9,7,.72) 45%,rgba(11,9,7,.95)),
    url(../images/chai-field.jpg) center/cover no-repeat,
    #0d0b09;}
.tour-list{max-width:940px;margin:0 auto;display:flex;flex-direction:column;gap:.7rem}
.tour-row{
  display:flex;align-items:center;gap:1.3rem;flex-wrap:wrap;
  background:linear-gradient(160deg,var(--ink-2),var(--ink-3));
  border:1px solid var(--line);border-left:3px solid var(--bronze);
  border-radius:12px;padding:1rem 1.4rem;
  transition:transform .2s,border-color .2s,box-shadow .2s;
}
.tour-row:hover{transform:translateX(8px);border-left-color:var(--gold);
  box-shadow:0 12px 30px rgba(0,0,0,.4),-8px 0 26px rgba(230,173,99,.12)}
.tour-date{text-align:center;min-width:62px}
.tour-date .mon{font-family:var(--font-head);letter-spacing:2px;color:var(--bronze);font-size:1.05rem;display:block;line-height:1}
.tour-date .day{font-family:var(--font-impact);font-size:1.9rem;line-height:.9}
.tour-info{flex:1;min-width:150px}
.tour-info .city{font-family:var(--font-head);letter-spacing:1px;font-size:1.4rem}
.tour-info .venue{color:var(--cream-dim);font-size:.85rem;font-weight:300}
.tour-status{font-family:var(--font-mono);font-size:.7rem;letter-spacing:1.5px;padding:.28rem .7rem;border-radius:20px;border:1px solid var(--line);white-space:nowrap}
.tour-status.on{color:#3cff8a;border-color:rgba(60,255,138,.4)}
.tour-status.few{color:var(--amber);border-color:rgba(255,177,60,.5);animation:blink 1.5s infinite}
.tour-status.out{color:#ff5a6a;border-color:rgba(255,90,106,.4)}
.tour-btn{font-family:var(--font-head);letter-spacing:1.5px;font-size:.95rem;padding:.58rem 1.3rem;
  border-radius:2px;border:none;cursor:pointer;text-transform:uppercase;
  background:linear-gradient(120deg,var(--gold),var(--bronze-lo));color:var(--ink);
  transition:transform .15s,box-shadow .2s}
.tour-btn:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(230,173,99,.4)}
.tour-btn:disabled{background:#2a2420;color:#6b5f52;cursor:not-allowed;transform:none;box-shadow:none}
.tour-foot{text-align:center;color:var(--cream-dim);font-family:var(--font-mono);font-size:.8rem;letter-spacing:1px;margin-top:1.7rem}
.tour-foot span{color:var(--gold)}

/* ticket toast */
.toast{position:fixed;left:50%;bottom:30px;transform:translate(-50%,160%);z-index:95;
  background:linear-gradient(120deg,var(--gold),var(--bronze-lo));color:var(--ink);
  font-family:var(--font-head);letter-spacing:1px;font-size:1.05rem;padding:.85rem 1.7rem;border-radius:4px;
  box-shadow:0 16px 44px rgba(0,0,0,.55);max-width:90vw;text-align:center;
  transition:transform .45s cubic-bezier(.22,1.5,.36,1)}
.toast.show{transform:translate(-50%,0)}

/* ===== SOCIAL FEED ===== */
.feed{position:relative;z-index:2;padding:6rem 4vw;background:linear-gradient(180deg,transparent,rgba(33,26,21,.5),transparent)}
.feed-wrap{max-width:620px;margin:0 auto}
.feed-stories{display:flex;gap:.9rem;overflow-x:auto;padding:.4rem 0 1.2rem;scrollbar-width:none}
.feed-stories::-webkit-scrollbar{display:none}
.story{flex:0 0 auto;text-align:center;cursor:pointer}
.story-ring{width:62px;height:62px;border-radius:50%;padding:3px;background:conic-gradient(from 0deg,var(--gold),var(--bronze-lo),var(--amber),var(--gold));display:flex;align-items:center;justify-content:center;transition:transform .2s}
.story:hover .story-ring{transform:scale(1.08) rotate(8deg)}
.story-av{width:100%;height:100%;border-radius:50%;background:var(--ink-3);display:flex;align-items:center;justify-content:center;font-size:1.6rem;border:2px solid var(--ink)}
.story span{display:block;font-size:.65rem;color:var(--cream-dim);margin-top:.3rem;max-width:62px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.feed-viewport{position:relative;height:560px;overflow:hidden;border:1px solid var(--line);border-radius:14px;background:rgba(13,11,9,.5)}
.feed-column{display:flex;flex-direction:column;gap:1rem;padding:1rem;animation:feedscroll 48s linear infinite}
.feed-viewport:hover .feed-column{animation-play-state:paused}
@keyframes feedscroll{from{transform:translateY(0)}to{transform:translateY(-50%)}}
.feed-fade{position:absolute;left:0;right:0;height:70px;pointer-events:none;z-index:3}
.feed-fade.top{top:0;background:linear-gradient(var(--ink),transparent)}
.feed-fade.bottom{bottom:0;background:linear-gradient(transparent,var(--ink))}

.post{background:linear-gradient(160deg,var(--ink-2),var(--ink-3));border:1px solid var(--line);border-radius:12px;padding:1rem 1.1rem;box-shadow:0 10px 30px rgba(0,0,0,.35)}
.post-top{display:flex;align-items:center;gap:.7rem;margin-bottom:.6rem}
.post-av{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:1.2rem;color:var(--ink);flex:0 0 auto}
.post-id{display:flex;flex-direction:column;line-height:1.15}
.post-name{font-weight:600;display:flex;align-items:center;gap:.3rem}
.verified{color:var(--gold);font-size:.85rem}
.post-handle{font-size:.78rem;color:var(--cream-dim)}
.post-time{margin-left:auto;font-size:.72rem;color:var(--cream-dim);font-family:var(--font-mono)}
.post-text{font-weight:300;font-size:1rem;margin-bottom:.7rem}
.post-text .tag{color:var(--gold);font-weight:500}
.post-actions{display:flex;gap:1.4rem;font-size:.85rem;color:var(--cream-dim);font-family:var(--font-mono)}
.post-actions button{background:none;border:none;color:inherit;cursor:pointer;display:flex;align-items:center;gap:.35rem;font-family:inherit;font-size:inherit;transition:color .15s,transform .15s}
.post-actions button:hover{color:var(--gold)}
.post-actions button.liked{color:#ff4d6d}
.post-actions button.liked .heart{animation:pop .4s ease}
@keyframes pop{0%{transform:scale(1)}40%{transform:scale(1.5)}100%{transform:scale(1)}}

/* ===== CONSOLE ===== */
.console{position:relative;z-index:2;padding:6rem 4vw}
.console.locked{display:none}                 /* hidden until the user logs in */
.logout-btn{margin-top:1.2rem;padding:.45rem 1.3rem;font-size:.9rem}
.login-form{display:flex;flex-direction:column;gap:.7rem;margin:0 0 1rem}
.login-form input{background:var(--ink);border:1px solid var(--line);color:var(--cream);
  padding:.8rem 1rem;border-radius:2px;font-family:var(--font-body);font-size:1rem}
.login-form input:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(230,173,99,.2)}
.console-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.6rem;max-width:1100px;margin:0 auto}
.panel{background:linear-gradient(170deg,#0a0908,#15100c);border:1px solid var(--line);border-radius:14px;padding:1.4rem;box-shadow:var(--shadow),inset 0 0 50px rgba(0,0,0,.5);position:relative;overflow:hidden}
.panel::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(255,255,255,.025) 0 1px,transparent 1px 3px);pointer-events:none}
.panel-head{display:flex;align-items:center;gap:.6rem;margin-bottom:.3rem}
.panel-head h3{font-family:var(--font-mono);letter-spacing:2px;font-size:1.05rem;color:var(--cream)}
.led{width:11px;height:11px;border-radius:50%;background:#3cff8a;box-shadow:0 0 10px #3cff8a;animation:blink 1.6s infinite}
.led-amber{background:var(--amber);box-shadow:0 0 10px var(--amber)}
.panel-tag{margin-left:auto;font-family:var(--font-mono);font-size:.72rem;color:var(--amber);border:1px solid var(--line);padding:.15rem .5rem;border-radius:20px}
.panel-note{font-size:.82rem;color:var(--cream-dim);margin-bottom:1rem;font-weight:300}

.bars{display:flex;flex-direction:column;gap:.55rem}
.bar-row{display:grid;grid-template-columns:1fr;gap:.2rem}
.bar-label{display:flex;justify-content:space-between;font-family:var(--font-mono);font-size:.78rem;color:var(--cream)}
.bar-label .val{color:var(--amber)}
.bar-track{height:13px;background:rgba(255,255,255,.06);border-radius:20px;overflow:hidden}
.bar-fill{height:100%;width:0;border-radius:20px;background:linear-gradient(90deg,var(--bronze-lo),var(--gold));transition:width .9s cubic-bezier(.22,1,.36,1);box-shadow:0 0 12px rgba(230,173,99,.5)}
.bars.words .bar-fill{background:linear-gradient(90deg,#a85a2a,var(--amber))}
.bar-row.lead .bar-fill{background:linear-gradient(90deg,var(--gold),#fff2)}

.panel-foot{margin-top:1.2rem;padding-top:.9rem;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;font-family:var(--font-mono);font-size:.8rem;color:var(--cream-dim)}
.panel-foot strong{color:var(--gold);font-family:var(--font-head);letter-spacing:1px;font-size:1.05rem}
.panel-foot.tags{flex-direction:column;align-items:flex-start;gap:.6rem}
.tag-cloud{display:flex;flex-wrap:wrap;gap:.45rem}
.tag-cloud span{background:rgba(200,134,78,.14);border:1px solid var(--line);color:var(--gold);padding:.25rem .7rem;border-radius:20px;font-size:.8rem;cursor:default;transition:transform .15s,background .15s}
.tag-cloud span:hover{transform:translateY(-3px) scale(1.05);background:var(--bronze);color:var(--ink)}

/* Console as its own page — clear the fixed nav + fill the viewport */
.console-page .console{padding-top:7.5rem;min-height:100vh}

/* ----- shared filter / sort controls ----- */
.panel-controls,.fan-controls{display:flex;gap:.55rem;flex-wrap:wrap;margin:0 0 1rem}
.panel-controls input[type=search],.fan-controls input[type=search]{flex:1;min-width:140px;
  background:var(--ink);border:1px solid var(--line);color:var(--cream);padding:.5rem .8rem;border-radius:6px;
  font-family:var(--font-mono);font-size:.82rem}
.panel-controls input[type=search]:focus,.fan-controls input[type=search]:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(230,173,99,.18)}
.panel-controls select,.fan-controls select{appearance:none;-webkit-appearance:none;
  background:var(--ink) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='7' viewBox='0 0 10 7'><path d='M1 1l4 4 4-4' fill='none' stroke='%23e6ad63' stroke-width='1.6'/></svg>") no-repeat right .7rem center;
  border:1px solid var(--line);color:var(--cream);padding:.5rem 2rem .5rem .8rem;border-radius:6px;
  font-family:var(--font-mono);font-size:.82rem;cursor:pointer}
.panel-controls select:focus,.fan-controls select:focus{outline:none;border-color:var(--gold)}
.panel-controls select option,.fan-controls select option{background:var(--ink-2);color:var(--cream)}
.bars-empty,.fans-empty{font-family:var(--font-mono);font-size:.82rem;color:var(--cream-dim);padding:.8rem .2rem;text-align:center}

/* ----- Fan Tracker (full-width roster) ----- */
.console-wide{max-width:1100px;margin:1.6rem auto 0}
.panel-wide{width:100%}
.fans-scroll{overflow:auto;max-height:60vh;border:1px solid var(--line);border-radius:10px}
.fans-table{width:100%;border-collapse:collapse;font-family:var(--font-mono);font-size:.8rem;min-width:720px}
.fans-table th{text-align:left;text-transform:uppercase;letter-spacing:1px;font-size:.68rem;font-weight:400;
  color:var(--cream-dim);padding:.7rem .8rem;background:#0a0807;border-bottom:1px solid var(--line);
  position:sticky;top:0;z-index:1}
.fans-table td{padding:.55rem .8rem;border-bottom:1px solid rgba(200,134,78,.14);vertical-align:middle;color:var(--cream)}
.fans-table tbody tr:last-child td{border-bottom:0}
.fans-table tbody tr.fan-row{transition:background .2s}
.fans-table tbody tr.fan-row:hover{background:rgba(255,255,255,.03)}
.fan-name{color:var(--cream);font-weight:500}
.fan-email,.fan-x{color:var(--gold)}
.fan-since{color:var(--cream-dim);white-space:nowrap}
.fans-table .muted{color:rgba(201,189,169,.4)}
.fans-empty{padding:1.4rem}
/* concerning → light-red row */
.fan-row.concerning{background:rgba(255,91,91,.13)}
.fan-row.concerning:hover{background:rgba(255,91,91,.18)}
.fan-row.concerning td:first-child{box-shadow:inset 3px 0 0 #ff5b5b}

.fan-labels{display:flex;gap:.35rem;flex-wrap:wrap}
.lbl{font-family:var(--font-mono);font-size:.64rem;text-transform:uppercase;letter-spacing:.5px;
  padding:.22rem .5rem;border-radius:20px;border:1px solid var(--line);background:transparent;
  color:var(--cream-dim);cursor:pointer;transition:all .15s;white-space:nowrap}
.lbl:hover{border-color:var(--cream-dim);color:var(--cream)}
.lbl.on.lbl-great{background:rgba(60,255,138,.15);border-color:#3cff8a;color:#8affb9}
.lbl.on.lbl-super{background:rgba(230,173,99,.18);border-color:var(--gold);color:var(--gold)}
.lbl.on.lbl-concerning{background:rgba(255,91,91,.2);border-color:#ff5b5b;color:#ff9a9a}

/* ----- console footer ----- */
.console-footer{max-width:1100px;margin:2.4rem auto 0;padding:1.4rem .2rem 0;border-top:1px solid var(--line);
  display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.8rem}
.cf-brand{font-family:var(--font-mono);font-size:.72rem;letter-spacing:2px;color:var(--cream-dim)}
.cf-links{display:flex;gap:1.4rem}
.cf-links a{font-family:var(--font-mono);font-size:.8rem;color:var(--cream-dim);transition:color .2s}
.cf-links a:hover{color:var(--gold)}
.cf-links a#signOutLink:hover{color:#ff9a9a}

/* ----- privacy info modal (body-only) ----- */
.info-modal{grid-template-columns:1fr;max-width:460px}
.info-modal .info-p{color:var(--cream-dim);font-weight:300;font-size:.95rem;line-height:1.6;margin:0 0 1.4rem}
.info-modal .info-p strong{color:var(--cream)}

/* =====================================================================
   CONSOLE — BEIGE SECTION THEME (panels go beige; text recolored for
   strong contrast). Scoped to .console-page so the main site is untouched.
   ===================================================================== */
.console-page .panel{background:linear-gradient(168deg,#efe4cd,#e2d0ad);border-color:rgba(120,78,38,.4);
  box-shadow:0 22px 55px rgba(0,0,0,.5);color:#2b1d10}
.console-page .panel::before{opacity:.5;background:repeating-linear-gradient(0deg,rgba(90,55,20,.05) 0 1px,transparent 1px 3px)}
.console-page .panel-head h3{color:#241608}
.console-page .panel-note{color:#6e5638}
.console-page .panel-tag{color:#8a4516;border-color:rgba(120,78,38,.45)}

/* bars on beige */
.console-page .bar-label{color:#2b1d10}
.console-page .bar-label .val{color:#8a4516}
.console-page .bar-track{background:rgba(70,42,15,.16)}
.console-page .bar-fill{background:linear-gradient(90deg,var(--bronze-lo),var(--bronze));box-shadow:0 0 8px rgba(154,90,44,.35)}
.console-page .bars.words .bar-fill{background:linear-gradient(90deg,#8a4516,#c8864e)}
.console-page .bar-row.lead .bar-fill{background:linear-gradient(90deg,#6e360f,var(--bronze-lo))}
.console-page .bars-empty,.console-page .fans-empty{color:#6e5638}
.console-page .panel-foot{color:#6e5638;border-top-color:rgba(120,78,38,.3)}
.console-page .panel-foot strong{color:#8a4516}
.console-page .tag-cloud span{background:rgba(120,78,38,.13);border-color:rgba(120,78,38,.35);color:#7a3c10}
.console-page .tag-cloud span:hover{background:var(--bronze-lo);color:#fff5e6}

/* filter/sort controls on beige */
.console-page .panel-controls input[type=search],.console-page .fan-controls input[type=search]{background:#f7efdd;border-color:rgba(120,78,38,.4);color:#2b1d10}
.console-page .panel-controls input::placeholder,.console-page .fan-controls input::placeholder{color:rgba(80,55,30,.5)}
/* dropdowns: solid BROWN control + brown option list, light-beige text, gold arrow */
.console-page .panel-controls select,.console-page .fan-controls select{
  background-color:#43301a;color:#f4ead8;border-color:rgba(120,78,38,.55);
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='7' viewBox='0 0 10 7'><path d='M1 1l4 4 4-4' fill='none' stroke='%23e6ad63' stroke-width='1.6'/></svg>")}
.console-page .panel-controls select option,.console-page .fan-controls select option{background-color:#43301a;color:#f4ead8}
.console-page .panel-controls input:focus,.console-page .fan-controls input:focus,
.console-page .panel-controls select:focus,.console-page .fan-controls select:focus{border-color:#e6ad63;box-shadow:0 0 0 3px rgba(154,90,44,.22)}

/* tables on beige (fans + audio) */
.console-page .fans-scroll{border-color:rgba(120,78,38,.35)}
.console-page .fans-table th{background:#d9c39c;color:#5a4124;border-bottom-color:rgba(120,78,38,.4)}
.console-page .fans-table td{color:#2b1d10;border-bottom-color:rgba(120,78,38,.18)}
.console-page .fans-table tbody tr.fan-row:hover{background:rgba(120,78,38,.09)}
.console-page .fan-name{color:#241608}
.console-page .fan-email,.console-page .fan-x{color:#8a4516}
.console-page .fan-since{color:#6e5638}
.console-page .fans-table .muted{color:rgba(80,55,30,.4)}
.console-page .fan-row.concerning{background:rgba(200,40,40,.13)}
.console-page .fan-row.concerning:hover{background:rgba(200,40,40,.18)}
.console-page .fan-row.concerning td:first-child{box-shadow:inset 3px 0 0 #cc2b2b}

/* label toggles on beige */
.console-page .lbl{border-color:rgba(120,78,38,.4);color:#6e5638}
.console-page .lbl:hover{border-color:#8a4516;color:#3a2712}
.console-page .lbl.on.lbl-great{background:rgba(34,140,68,.18);border-color:#22934a;color:#1a6b36}
.console-page .lbl.on.lbl-super{background:rgba(200,134,78,.28);border-color:var(--bronze-lo);color:#7a3c10}
.console-page .lbl.on.lbl-concerning{background:rgba(200,40,40,.2);border-color:#cc2b2b;color:#9e1c1c}

/* ----- AUDIO ANALYTICS ----- */
.live-tag{color:#cc2b2b!important;border-color:rgba(204,43,43,.45)!important;animation:pulseLive 1.6s ease-in-out infinite}
@keyframes pulseLive{50%{opacity:.4}}
.audio-summary{display:flex;flex-wrap:wrap;gap:.7rem;margin:0 0 1.1rem}
.astat{flex:1;min-width:128px;background:#f4ead5;border:1px solid rgba(120,78,38,.3);border-radius:9px;padding:.6rem .85rem;display:flex;flex-direction:column;gap:.3rem}
.astat-l{font-family:var(--font-mono);font-size:.61rem;letter-spacing:1px;color:#7a5a36;text-transform:uppercase}
.astat-v{font-family:var(--font-head);letter-spacing:.5px;font-size:1.3rem;color:#8a4516;line-height:1}
.audio-table td.au-num{font-variant-numeric:tabular-nums;color:#3a2712;white-space:nowrap}
.au-fav{font-variant-numeric:tabular-nums;color:#8a4516;font-weight:600}
.au-comp{display:flex;align-items:center;gap:.5rem;min-width:150px}
.au-bar{flex:1;height:7px;border-radius:20px;background:rgba(70,42,15,.18);overflow:hidden}
.au-bar span{display:block;height:100%;border-radius:20px;background:linear-gradient(90deg,var(--bronze-lo),var(--bronze))}
.au-comp em{font-style:normal;font-size:.72rem;color:#6e5638;min-width:30px;text-align:right}
.au-trend{font-variant-numeric:tabular-nums;font-weight:700;white-space:nowrap}
.au-trend.up{color:#1a8a42}
.au-trend.down{color:#c0392b}
.au-trend.flat{color:#8a7a5a}
.au-live{font-family:var(--font-mono);font-size:.58rem;letter-spacing:1px;color:#cc2b2b;border:1px solid rgba(204,43,43,.4);
  border-radius:20px;padding:.15rem .5rem;white-space:nowrap;animation:pulseLive 1.6s ease-in-out infinite}
.audio-row.top td:first-child{box-shadow:inset 3px 0 0 var(--gold)}
.audio-row.top .fan-name{color:#6e360f;font-weight:700}
.audio-row.hot{animation:rowFlash 1.1s ease-out}
@keyframes rowFlash{0%{background:rgba(230,173,99,.5)}100%{background:transparent}}

/* ----- section sub-nav fixed at the bottom of the header ----- */
.console-head{flex-wrap:wrap;row-gap:.5rem;padding-bottom:.55rem}
.console-subnav{flex-basis:100%;position:relative;z-index:4;display:flex;gap:.45rem;flex-wrap:wrap;
  padding-top:.55rem;border-top:1px solid var(--line)}
.console-subnav a{font-family:var(--font-mono);font-size:.72rem;letter-spacing:1px;text-transform:uppercase;
  color:var(--cream-dim);padding:.32rem .85rem;border:1px solid var(--line);border-radius:6px;
  background:rgba(10,8,6,.55);transition:all .18s;text-shadow:none}
.console-subnav a:hover{color:var(--ink);background:var(--gold);border-color:var(--gold)}
.console-subnav a.active{color:var(--ink);background:var(--bronze);border-color:var(--bronze)}
.console-page .console{padding-top:8.5rem}
.console-page [id^="sec-"]{scroll-margin-top:8.5rem}

/* ----- collapse toggle on every section ----- */
.panel-toggle{flex:0 0 auto;margin-left:.5rem;width:26px;height:26px;border-radius:6px;
  border:1px solid var(--line);background:transparent;color:var(--cream-dim);cursor:pointer;
  font-size:.85rem;line-height:1;display:grid;place-items:center;transition:transform .2s,border-color .15s,color .15s}
.panel-toggle:hover{border-color:var(--gold);color:var(--gold)}
.console-page .panel-toggle{color:#7a5a36;border-color:rgba(120,78,38,.4)}
.console-page .panel-toggle:hover{border-color:#8a4516;color:#8a4516}
.panel.collapsed .panel-toggle{transform:rotate(-90deg)}
.panel.collapsed > :not(.panel-head){display:none}
.panel.collapsed .panel-head{margin-bottom:0}

/* ----- clickable column sort headers ----- */
.fans-table th[data-key]{cursor:pointer;user-select:none;white-space:nowrap}
.fans-table th[data-key]::after{content:"↕";opacity:.32;margin-left:.35em;font-size:.85em}
.fans-table th[data-key].sort-active::after{opacity:.95}
.fans-table th[data-key].asc::after{content:"▲"}
.fans-table th[data-key].desc::after{content:"▼"}
.console-page .fans-table th[data-key]:hover{color:#8a4516}
.console-page .fans-table th[data-key].sort-active{color:#8a4516}
.bars-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem;gap:.5rem}
.bars-head button{background:none;border:0;cursor:pointer;font-family:var(--font-mono);font-size:.66rem;
  text-transform:uppercase;letter-spacing:1px;padding:.2rem .1rem;user-select:none}
.console-page .bars-head button{color:#7a5a36}
.console-page .bars-head button:hover{color:#8a4516}
.console-page .bars-head button.sort-active{color:#8a4516;font-weight:700}
.bars-head button::after{content:"↕";opacity:.4;margin-left:.3em}
.bars-head button.sort-active::after{opacity:1}
.bars-head button.asc::after{content:"▲"}
.bars-head button.desc::after{content:"▼"}

/* ----- fan comment column ----- */
.fan-cmt-cell{white-space:nowrap}
.fan-cmt{font-family:var(--font-mono);font-size:.66rem;letter-spacing:.5px;padding:.25rem .6rem;border-radius:6px;
  border:1px solid rgba(120,78,38,.4);background:transparent;color:#7a5a36;cursor:pointer;transition:all .15s;white-space:nowrap}
.fan-cmt:hover{border-color:#8a4516;color:#8a4516}
.fan-cmt.has{background:rgba(138,69,22,.14);border-color:#8a4516;color:#8a4516;font-weight:600}

/* ----- Notes section ----- */
.notes-forms{display:flex;gap:.7rem;flex-wrap:wrap;margin-bottom:1rem}
.note-form{display:flex;gap:.5rem;flex:1;min-width:260px}
.note-form input{background:#f7efdd;border:1px solid rgba(120,78,38,.4);color:#2b1d10;padding:.5rem .8rem;border-radius:6px;font-family:var(--font-mono);font-size:.82rem}
.note-form input[type=text]{flex:1;min-width:110px}
.note-form input[type=date]{color-scheme:light}
.note-form input:focus{outline:none;border-color:#8a4516;box-shadow:0 0 0 3px rgba(154,90,44,.18)}
.note-form .btn{padding:.45rem 1rem;font-size:.8rem;color:#8a4516}
.note-form .btn:hover{color:var(--ink)}
.note-badge{font-family:var(--font-mono);font-size:.6rem;letter-spacing:1px;padding:.18rem .5rem;border-radius:20px;white-space:nowrap}
.nb-note{background:rgba(120,78,38,.16);color:#7a3c10;border:1px solid rgba(120,78,38,.4)}
.nb-comment{background:rgba(34,140,68,.16);color:#1a6b36;border:1px solid #22934a}
.nb-reminder{background:rgba(230,173,99,.22);color:#7a3c10;border:1px solid var(--bronze-lo)}
.note-text{color:#2b1d10}
.note-fan{font-family:var(--font-mono);font-size:.7rem;color:#8a4516;background:rgba(138,69,22,.1);padding:.05rem .42rem;border-radius:10px;white-space:nowrap}
.note-row.done .note-text{text-decoration:line-through;color:#8a7a5a}
.note-act{white-space:nowrap;text-align:right}
.note-done,.note-del{background:none;border:1px solid rgba(120,78,38,.4);border-radius:6px;cursor:pointer;
  width:24px;height:24px;line-height:1;color:#7a5a36;margin-left:.25rem;transition:all .15s}
.note-done:hover{border-color:#22934a;color:#1a6b36;background:rgba(34,140,68,.12)}
.note-row.done .note-done{background:#22934a;border-color:#22934a;color:#fff}
.note-del:hover{border-color:#cc2b2b;color:#cc2b2b;background:rgba(204,43,43,.1)}

/* ----- floating reminders widget ----- */
.rem-float{position:fixed;right:1.2rem;bottom:1.2rem;z-index:80;display:none;flex-direction:column;align-items:flex-end;gap:.6rem}
body.authed .rem-float{display:flex}
.rem-fab{position:relative;display:inline-flex;align-items:center;justify-content:center;
  padding:.55rem 1.4rem;border-radius:6px;border:1px solid var(--gold);
  background:linear-gradient(150deg,var(--bronze),var(--bronze-lo));color:var(--ink);
  font-family:var(--font-brush);font-size:1.5rem;letter-spacing:.5px;line-height:1;cursor:pointer;
  box-shadow:0 12px 30px rgba(0,0,0,.5);transition:transform .15s}
.rem-fab:hover{transform:translateY(-3px) scale(1.04)}
.rem-badge{position:absolute;top:-9px;right:-9px;min-width:20px;height:20px;border-radius:20px;background:#cc2b2b;color:#fff;
  font-family:var(--font-mono);font-size:.7rem;display:grid;place-items:center;padding:0 5px;border:2px solid var(--ink)}
.rem-badge.hide{display:none}
.rem-pop{width:300px;max-width:calc(100vw - 2.4rem);background:linear-gradient(160deg,var(--ink-2),var(--ink-3));
  border:1px solid var(--bronze);border-radius:14px;overflow:hidden;box-shadow:0 24px 60px rgba(0,0,0,.6)}
.rem-pop[hidden]{display:none}
.rem-pop-head{display:flex;justify-content:space-between;align-items:center;padding:.7rem 1rem;border-bottom:1px solid var(--line);
  font-family:var(--font-mono);font-size:.8rem;letter-spacing:1px;color:var(--gold)}
.rem-pop-head button{background:none;border:0;color:var(--cream-dim);cursor:pointer;font-size:1rem}
.rem-pop-list{list-style:none;max-height:42vh;overflow-y:auto}
.rem-li{display:flex;align-items:center;gap:.5rem;padding:.55rem .9rem;border-bottom:1px solid rgba(200,134,78,.12);font-family:var(--font-mono);font-size:.78rem}
.rem-li:last-child{border-bottom:0}
.rem-check{width:20px;height:20px;flex-shrink:0;border-radius:5px;border:1px solid var(--line);background:transparent;color:var(--ink);cursor:pointer;display:grid;place-items:center;font-size:.75rem}
.rem-check:hover{border-color:#3cff8a}
.rem-li.done .rem-check{background:#3cff8a;border-color:#3cff8a}
.rem-tx{flex:1;color:var(--cream)}
.rem-li.done .rem-tx{text-decoration:line-through;color:var(--cream-dim)}
.rem-dt{color:var(--cream-dim);white-space:nowrap;font-size:.72rem}
.rem-dt.overdue{color:#ff8a8a;font-weight:bold}
.rem-x{background:none;border:0;color:var(--cream-dim);cursor:pointer;font-size:.85rem;padding:.1rem .3rem}
.rem-x:hover{color:#ff5b5b}
.rem-empty{padding:1rem;text-align:center;color:var(--cream-dim);font-family:var(--font-mono);font-size:.78rem}
.rem-pop-add{display:flex;gap:.4rem;padding:.6rem .9rem;border-top:1px solid var(--line)}
.rem-pop-add input{background:var(--ink);border:1px solid var(--line);color:var(--cream);border-radius:6px;padding:.4rem .55rem;font-family:var(--font-mono);font-size:.76rem}
.rem-pop-add input[type=text]{flex:1;min-width:0}
.rem-pop-add input[type=date]{color-scheme:dark;width:7.4rem}
.rem-pop-add button{background:var(--bronze);border:0;color:var(--ink);border-radius:6px;width:32px;cursor:pointer;font-size:1.1rem}
.rem-pop-add button:hover{background:var(--gold)}

/* ----- fan comment modal ----- */
.cmt-list{display:flex;flex-direction:column;gap:.5rem;max-height:34vh;overflow-y:auto;margin:.4rem 0 1.1rem}
.cmt-empty{color:var(--cream-dim);font-style:italic;font-size:.9rem}
.cmt-item{background:rgba(255,255,255,.04);border:1px solid var(--line);border-radius:9px;padding:.6rem .8rem}
.cmt-item p{color:var(--cream);font-size:.92rem;line-height:1.45;margin:0 0 .3rem}
.cmt-meta{display:flex;justify-content:space-between;align-items:center;font-family:var(--font-mono);font-size:.7rem;color:var(--cream-dim)}
.cmt-meta button{background:none;border:0;color:var(--cream-dim);cursor:pointer}
.cmt-meta button:hover{color:#ff5b5b}
.cmt-form{display:flex;flex-direction:column;gap:.6rem}
.cmt-form textarea{background:var(--ink);border:1px solid var(--line);color:var(--cream);border-radius:8px;padding:.7rem .85rem;
  font-family:var(--font-body);font-size:.95rem;min-height:80px;resize:vertical}
.cmt-form textarea:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(230,173,99,.18)}

/* ===== SUBSCRIBE ===== */
.subscribe{position:relative;z-index:2;padding:7rem 4vw;display:flex;justify-content:center;
  background:
    linear-gradient(180deg,rgba(11,9,7,.8),rgba(11,9,7,.62) 50%,rgba(11,9,7,.86)),
    url(../images/chai-concert.jpg) center 22%/cover no-repeat,
    #0d0b09;}
.sub-card{
  position:relative;z-index:1;text-align:center;max-width:640px;width:100%;
  background:linear-gradient(160deg,var(--ink-2),var(--ink-3));
  border:1px solid var(--line);border-radius:20px;padding:3rem 2rem;
  box-shadow:var(--shadow);overflow:hidden;
}
.sub-card::before{content:"";position:absolute;inset:0;opacity:.07;
  background:repeating-linear-gradient(125deg,#000 0 18px,transparent 18px 34px)}
.sub-title{font-family:var(--font-impact);font-size:clamp(2.4rem,7vw,4rem);text-transform:uppercase;position:relative}
.sub-title .brush{font-family:var(--font-brush);color:var(--gold);text-transform:none;font-size:1.45em;display:inline-block;transform:rotate(-3deg);line-height:.9;text-shadow:0 0 22px rgba(230,173,99,.45)}
/* paparazzi camera flashes over the concert bg */
.sub-flashes{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden}
/* lens-flare style camera flashes: warm core + glow + anamorphic streaks */
.sub-flashes span{position:absolute;width:var(--s,60px);height:var(--s,60px);border-radius:50%;
  background:radial-gradient(circle,#fff 0%,rgba(255,245,224,.92) 13%,rgba(255,205,140,.32) 38%,transparent 62%);
  box-shadow:0 0 22px 6px rgba(255,235,200,.45);
  opacity:0;transform:translate(-50%,-50%) scale(.3);will-change:opacity,transform;
  animation:camflash var(--t,4s) ease-out var(--d,0s) infinite}
.sub-flashes span::before{content:'';position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:520%;height:9%;border-radius:50%;filter:blur(1.2px);
  background:linear-gradient(90deg,transparent,rgba(170,215,255,.0) 8%,rgba(170,215,255,.85) 42%,#fff 50%,rgba(170,215,255,.85) 58%,transparent 92%)}
.sub-flashes span::after{content:'';position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:14%;height:300%;border-radius:50%;filter:blur(.8px);
  background:linear-gradient(180deg,transparent,rgba(255,255,255,.7) 45%,#fff 50%,rgba(255,255,255,.7) 55%,transparent)}
@keyframes camflash{
  0%,100%{opacity:0;transform:translate(-50%,-50%) scale(.3)}
  3%{opacity:1;transform:translate(-50%,-50%) scale(1)}
  13%{opacity:0;transform:translate(-50%,-50%) scale(1.3)}
}
/* some flares spin as they flare */
.sub-flashes span.spin{animation-name:camflashSpin}
@keyframes camflashSpin{
  0%,100%{opacity:0;transform:translate(-50%,-50%) scale(.3) rotate(0deg)}
  3%{opacity:1;transform:translate(-50%,-50%) scale(1) rotate(70deg)}
  13%{opacity:0;transform:translate(-50%,-50%) scale(1.3) rotate(300deg)}
}
.sub-blurb{color:var(--cream-dim);font-weight:300;margin:.8rem 0 1.8rem;position:relative}
.sub-form{display:flex;gap:.6rem;justify-content:center;flex-wrap:wrap;position:relative}
.sub-form input{
  flex:1;min-width:230px;background:var(--ink);border:1px solid var(--line);color:var(--cream);
  padding:.85rem 1.1rem;border-radius:2px;font-family:var(--font-body);font-size:1rem;
}
.sub-form input:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(230,173,99,.2)}
.sub-fine{margin-top:1rem;font-size:.78rem;color:var(--cream-dim);font-family:var(--font-mono);position:relative}

/* ===== FOOTER ===== */
.footer{position:relative;z-index:2;padding:4rem 4vw 2.5rem;border-top:1px solid var(--line);
  background:linear-gradient(180deg,transparent,rgba(13,11,9,.6))}
.footer-top{max-width:1100px;margin:0 auto;display:grid;grid-template-columns:1.7fr 1fr 1fr 1fr;gap:2rem}
.footer-brand .footer-logo{height:60px;margin:0 0 .8rem;opacity:.95}
.footer-tag{color:var(--cream-dim);font-family:var(--font-mono);font-size:.78rem;letter-spacing:1px}
.footer-col h4{font-family:var(--font-head);letter-spacing:2px;color:var(--gold);font-size:1.05rem;margin-bottom:.7rem}
.footer-col a{display:block;color:var(--cream-dim);font-size:.9rem;font-weight:300;padding:.25rem 0;transition:color .2s,padding-left .2s}
.footer-col a:hover{color:var(--gold);padding-left:6px}
.footer-bottom{max-width:1100px;margin:2.4rem auto 0;padding-top:1.4rem;border-top:1px solid var(--line);text-align:center}
.footer-bottom p{color:var(--cream-dim);font-size:.82rem}
.footer-fine{font-size:.72rem;opacity:.6;margin-top:.3rem}
@media(max-width:720px){
  .footer-top{grid-template-columns:1fr 1fr}
  .footer-brand{grid-column:1 / -1}
}

/* ===== SONG MODAL ===== */
.modal-overlay{
  position:fixed;inset:0;z-index:90;display:flex;align-items:center;justify-content:center;
  background:rgba(5,4,3,.8);backdrop-filter:blur(8px);
  opacity:0;visibility:hidden;transition:opacity .3s,visibility .3s;padding:1.2rem;
}
.modal-overlay.show{opacity:1;visibility:visible}
.modal{
  display:grid;grid-template-columns:.85fr 1.15fr;max-width:680px;width:100%;
  background:linear-gradient(160deg,var(--ink-2),var(--ink-3));
  border:1px solid var(--bronze);border-radius:16px;overflow:hidden;
  box-shadow:0 40px 100px rgba(0,0,0,.7);
  transform:scale(.8) translateY(20px);transition:transform .35s cubic-bezier(.22,1.4,.36,1);
}
.modal-overlay.show .modal{transform:scale(1) translateY(0)}
.modal-photo{position:relative;overflow:hidden}
.modal-photo img{width:100%;height:100%;object-fit:cover;object-position:top center}
.modal-photo::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 50%,var(--ink-3))}
.modal-body{padding:1.8rem 1.6rem;position:relative}
.modal-eyebrow{font-family:var(--font-mono);letter-spacing:3px;color:var(--bronze);font-size:.75rem}
.modal-song{font-family:var(--font-impact);font-size:clamp(1.8rem,5vw,2.6rem);line-height:.95;text-transform:uppercase;margin:.3rem 0 1rem}
.modal-q{font-family:var(--font-brush);color:var(--gold);font-size:1.5rem;line-height:1.2;margin-bottom:1.6rem}
.modal-q .dots{color:var(--cream)}
.modal-btns{display:flex;flex-direction:column;gap:.7rem}
.modal-close{position:absolute;top:.7rem;right:.9rem;background:none;border:none;color:var(--cream);font-size:1.4rem;cursor:pointer;z-index:5;line-height:1;transition:transform .2s,color .2s}
.modal-close:hover{color:var(--gold);transform:rotate(90deg)}

/* ===== SUBSCRIBE SPLASH ===== */
.splash{
  position:fixed;inset:0;z-index:100;display:flex;flex-direction:column;align-items:center;justify-content:center;
  background:radial-gradient(circle at 50% 60%,rgba(33,26,21,.96),rgba(5,4,3,.99));
  opacity:0;visibility:hidden;transition:opacity .25s;overflow:hidden;
}
.splash.show{opacity:1;visibility:visible}
.splash-burst{
  position:absolute;width:70vmax;height:70vmax;border-radius:50%;
  background:radial-gradient(circle,rgba(230,173,99,.55),rgba(200,134,78,.15) 40%,transparent 65%);
  transform:scale(0);
}
.splash.show .splash-burst{animation:burst 1.1s cubic-bezier(.22,1,.36,1) forwards}
@keyframes burst{0%{transform:scale(0);opacity:0}40%{opacity:1}100%{transform:scale(1.4);opacity:.5}}

/* large zebra stripes (cropped from her neck) flashing in behind a transparent Chai */
.splash-stripes{position:absolute;inset:0;z-index:1;overflow:hidden;pointer-events:none}
.ss{position:absolute;inset:-18%;background:url(../images/neck-stripes.png) center/cover no-repeat;opacity:0;will-change:opacity}
.ss-a{transform:scale(1.25) rotate(-5deg);filter:contrast(1.25) brightness(1.05) saturate(1.1)}
.ss-b{transform:scaleX(-1) scale(1.55) rotate(7deg);filter:contrast(1.3) brightness(.95)}
.splash.show .ss-a{animation:stripeFlashA 2.4s steps(1,end) .1s forwards}
.splash.show .ss-b{animation:stripeFlashB 2.6s steps(1,end) .25s forwards}
@keyframes stripeFlashA{0%{opacity:0}7%{opacity:.6}14%{opacity:0}24%{opacity:.55}32%{opacity:.05}46%{opacity:.5}60%{opacity:.12}100%{opacity:.34}}
@keyframes stripeFlashB{0%{opacity:0}9%{opacity:.45}18%{opacity:.02}30%{opacity:.5}40%{opacity:.08}55%{opacity:.42}70%{opacity:.15}100%{opacity:.26}}

/* her logo BLASTS in behind everything */
.splash-logo{
  position:absolute;z-index:1;width:min(112vw,1040px);pointer-events:none;
  opacity:0;transform:scale(.2) rotate(-8deg);
  filter:drop-shadow(0 0 34px rgba(230,173,99,.45));
}
.splash.show .splash-logo{animation:logoBlast 1.1s cubic-bezier(.2,1.3,.3,1) .05s forwards, logoFloat 7s ease-in-out 1.3s infinite}
@keyframes logoBlast{
  0%{opacity:0;transform:scale(.2) rotate(-8deg)}
  28%{opacity:.6}
  60%{opacity:.34;transform:scale(1.18) rotate(3deg)}
  100%{opacity:.2;transform:scale(1) rotate(0)}
}
@keyframes logoFloat{50%{transform:scale(1.03) rotate(-1.5deg)}}

/* her image: explodes in, settles TILTED, and GLITCHES */
.splash-chai-wrap{position:relative;z-index:2;opacity:0;transform:scale(.1) rotate(-12deg)}
.splash.show .splash-chai-wrap{animation:explodeIn .9s cubic-bezier(.18,1.5,.4,1) .1s forwards}
@keyframes explodeIn{0%{transform:scale(.1) rotate(-12deg);opacity:0}60%{opacity:1}100%{transform:scale(1) rotate(-6deg);opacity:1}}

.splash-chai{max-height:82vh;opacity:.74;filter:drop-shadow(0 30px 70px rgba(0,0,0,.7))}
.splash.show .splash-chai{animation:chaiGlitch 2.8s steps(1,end) 1.1s infinite}
@keyframes chaiGlitch{
  0%,5%,11%,47%,51%,100%{transform:translate(0,0);filter:drop-shadow(0 30px 70px rgba(0,0,0,.7));clip-path:inset(0 0 0 0)}
  6% {transform:translate(-6px,0);filter:drop-shadow(3px 0 0 rgba(255,30,90,.8))  drop-shadow(-3px 0 0 rgba(0,210,255,.8));clip-path:inset(6% 0 72% 0)}
  8% {transform:translate(7px,0); filter:drop-shadow(-3px 0 0 rgba(255,30,90,.7)) drop-shadow(3px 0 0 rgba(0,210,255,.7));clip-path:inset(42% 0 30% 0)}
  10%{transform:translate(-3px,0);filter:drop-shadow(2px 0 0 rgba(255,30,90,.6))  drop-shadow(-2px 0 0 rgba(0,210,255,.6));clip-path:inset(70% 0 6% 0)}
  48%{transform:translate(6px,0); filter:drop-shadow(-4px 0 0 rgba(255,30,90,.7)) drop-shadow(4px 0 0 rgba(0,210,255,.7));clip-path:inset(55% 0 12% 0)}
  50%{transform:translate(-5px,0);filter:drop-shadow(3px 0 0 rgba(255,30,90,.6))  drop-shadow(-3px 0 0 rgba(0,210,255,.6));clip-path:inset(20% 0 60% 0)}
}

.splash-words{
  position:absolute;z-index:3;display:flex;flex-wrap:wrap;gap:.4rem 1.4rem;justify-content:center;
  width:min(92vw,1000px);pointer-events:none;
}
.splash-words .sw{
  font-family:var(--font-impact);text-transform:uppercase;
  font-size:clamp(2.4rem,11vw,8rem);line-height:.9;
  color:transparent;-webkit-text-stroke:2px var(--gold);
  opacity:0;cursor:pointer;pointer-events:auto;user-select:none;
  text-shadow:0 6px 30px rgba(0,0,0,.6);
}
.splash-words .sw.fill{color:var(--gold);-webkit-text-stroke:0}
/* "Subscribed" wedged into the title, smaller, in Chai's brush font */
.splash-words .splash-sub{align-self:center;font-family:var(--font-brush);color:var(--gold);text-transform:none;
  font-size:clamp(1.5rem,5.5vw,3rem);line-height:.85;transform:rotate(-7deg);opacity:0;user-select:none;
  text-shadow:0 4px 20px rgba(0,0,0,.55)}
.splash.show .splash-words .splash-sub{animation:subIn .5s steps(2) .85s forwards,subGlow 2.6s ease-in-out 1.5s infinite}
@keyframes subIn{0%{opacity:0;transform:rotate(-7deg) scale(1.35)}50%{opacity:1}100%{opacity:1;transform:rotate(-7deg) scale(1)}}
@keyframes subGlow{50%{filter:drop-shadow(0 0 13px rgba(230,173,99,.7))}}
.splash.show .splash-words .sw{animation:flashIn .5s steps(2) var(--d) forwards, glowPulse 2.4s ease-in-out calc(var(--d) + .6s) infinite}
@keyframes flashIn{0%{opacity:0;transform:scale(1.4) translateY(-10px)}50%{opacity:1}100%{opacity:1;transform:scale(1) translateY(0)}}
@keyframes glowPulse{50%{filter:drop-shadow(0 0 18px rgba(230,173,99,.7))}}
.splash-words .sw.dance{animation:dance .6s ease}
@keyframes dance{0%{transform:rotate(0)}20%{transform:rotate(-12deg) scale(1.15)}40%{transform:rotate(10deg) scale(1.1)}60%{transform:rotate(-8deg) scale(1.12)}80%{transform:rotate(6deg)}100%{transform:rotate(0) scale(1)}}

.btn-home{position:absolute;bottom:6vh;z-index:5;background:var(--cream);color:var(--ink);letter-spacing:2px}
.btn-home:hover{background:var(--gold);transform:translateY(-3px)}

/* ===== reveal on scroll ===== */
.reveal{opacity:0;transform:translateY(40px);transition:opacity .7s ease,transform .7s ease}
.reveal.in{opacity:1;transform:none}

/* ===== AUDIO: teaser button / track play / boombox ===== */
.teaser-btn{position:relative;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;
  min-width:212px;height:58px;background:linear-gradient(120deg,#1a120c,#0d0b09);color:var(--cream);
  border:2px solid var(--bronze)}
.teaser-btn:hover{border-color:var(--gold)}
.teaser-label{position:relative;z-index:3;transition:opacity .25s;font-family:var(--font-head);letter-spacing:1.5px;font-size:1.05rem}
.teaser-art{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:11px;z-index:2;pointer-events:none}
.teaser-logo{height:76%;opacity:0;transform:scale(.7) translateY(8px);transition:opacity .35s,transform .4s;
  filter:drop-shadow(0 2px 6px rgba(0,0,0,.55))}
.teaser-cans{width:52px;height:auto;opacity:0;transition:opacity .3s .15s;
  filter:drop-shadow(0 2px 4px rgba(0,0,0,.5))}
.teaser-btn:hover .teaser-logo,.teaser-btn.playing .teaser-logo{opacity:.97;transform:scale(1) translateY(0)}
.teaser-btn:hover .teaser-cans,.teaser-btn.playing .teaser-cans{opacity:1;animation:cansShake .42s ease-in-out .25s infinite}
.teaser-btn:hover .teaser-label{opacity:.1}
.teaser-btn.playing{border-color:var(--gold);color:var(--gold)}
.teaser-btn.playing .teaser-label{opacity:.1}
@keyframes cansShake{0%,100%{transform:translate(0,0) rotate(0)}25%{transform:translate(-2px,1px) rotate(-5deg)}75%{transform:translate(2px,-1px) rotate(5deg)}}

/* play buttons on the album inside cover */
.track-plays{position:absolute;inset:0;z-index:4;pointer-events:none}
.track-play{position:absolute;transform:translateY(-50%);pointer-events:auto;
  width:7.4%;min-width:40px;height:2.3%;min-height:12px;
  border:1px solid var(--gold);border-radius:20px;cursor:pointer;padding:0;
  background:rgba(13,11,9,.62);color:var(--gold);
  font-family:var(--font-mono);font-size:.42rem;letter-spacing:.5px;line-height:1;white-space:nowrap;font-weight:700;
  display:flex;align-items:center;justify-content:center;gap:3px;
  transition:background .15s,color .15s,transform .15s}
.track-play:hover{background:var(--gold);color:var(--ink);transform:translateY(-50%) scale(1.04)}
.track-play.playing{background:var(--gold);color:var(--ink);animation:blink 1s steps(2) infinite}

/* boombox now-playing player */
.bb-player{position:fixed;left:50%;bottom:18px;transform:translate(-50%,180%);z-index:96;
  width:min(94vw,540px);display:flex;align-items:center;gap:1rem;
  background:linear-gradient(160deg,var(--ink-2),var(--ink-3));border:1px solid var(--bronze);
  border-radius:18px;padding:.7rem 1rem .7rem .7rem;box-shadow:0 22px 55px rgba(0,0,0,.6);
  transition:transform .55s cubic-bezier(.22,1.4,.36,1)}
.bb-player.show{transform:translate(-50%,0)}
.bb-stage{position:relative;width:160px;flex:0 0 auto;animation:bbHop .62s ease-in-out infinite}
/* two out-of-phase loops (hop + sway) on different durations => motion never quite repeats */
.bb-inner{position:relative;animation:bbSway 1.07s ease-in-out infinite}
.bb-img{width:100%;display:block;filter:drop-shadow(0 10px 16px rgba(0,0,0,.5))}
@keyframes bbHop{
  0%{transform:translateY(0)}
  28%{transform:translateY(-13px)}
  44%{transform:translateY(-4px)}
  60%{transform:translateY(-10px)}
  100%{transform:translateY(0)}
}
@keyframes bbSway{
  0%{transform:translate(0,0) rotate(-2.6deg)}
  22%{transform:translate(3px,1px) rotate(1.8deg)}
  48%{transform:translate(-1px,0) rotate(2.9deg)}
  73%{transform:translate(-3px,1px) rotate(-1.3deg)}
  100%{transform:translate(0,0) rotate(-2.6deg)}
}
.bb-eq{position:absolute;left:20.5%;top:28.5%;width:59%;height:9%;display:flex;align-items:flex-end;gap:5%;pointer-events:none}
.bb-eq i{flex:1;background:linear-gradient(var(--gold),var(--bronze-lo));border-radius:1px;height:30%;animation:eqb .6s ease-in-out infinite}
@keyframes eqb{0%,100%{height:20%}50%{height:100%}}
.bb-cone{position:absolute;top:63%;width:27%;aspect-ratio:1;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none;
  background:conic-gradient(from 0deg,transparent 0deg,rgba(244,234,216,.5) 38deg,transparent 86deg,transparent 218deg,rgba(244,234,216,.32) 250deg,transparent 304deg);
  mix-blend-mode:screen;animation:spin 1.05s linear infinite}
.bb-cone.left{left:16.5%}.bb-cone.right{left:83.5%}
@keyframes spin{to{transform:translate(-50%,-50%) rotate(360deg)}}
.bb-info{flex:1;min-width:0}
.bb-now{font-family:var(--font-mono);font-size:.65rem;letter-spacing:2px;color:var(--gold)}
.bb-title{font-family:var(--font-head);font-size:1.3rem;letter-spacing:1px;color:var(--cream);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:.15rem 0 .5rem}
.bb-bar{height:5px;background:rgba(255,255,255,.1);border-radius:3px;overflow:hidden}
.bb-bar span{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--bronze),var(--gold));transition:width .25s linear}
.bb-close{flex:0 0 auto;align-self:flex-start;background:none;border:none;color:var(--cream-dim);font-size:1.2rem;cursor:pointer;transition:color .2s,transform .2s}
.bb-close:hover{color:var(--gold);transform:rotate(90deg)}

/* ===== RESPONSIVE ===== */
@media(max-width:900px){
  .hero{align-items:flex-end;padding-bottom:9vh;text-align:center}
  .hero-bg{background-size:cover;background-position:58% top}
  .hero-mark,.hero-invert{display:none}
  .hero-scrim{background:linear-gradient(0deg,rgba(8,7,6,.97) 0%,rgba(8,7,6,.72) 48%,rgba(8,7,6,.35) 100%)}
  .hero-copy{max-width:none;margin:0 auto}
  .hero-btns,.hero-sub{margin-left:auto;margin-right:auto}
  .hero-btns{justify-content:center}   /* center wrapped buttons (e.g. Play Teaser under the row above) */
  .hero-sub{max-width:none}
  .visualizer{justify-content:center}
  .nav-face{opacity:.24}
  .console-grid{grid-template-columns:1fr}
  .nav-links{gap:1rem}
  .nav-links a:not(.nav-cta){display:none}
  /* main page: header stays compact — hamburger is the diagonal piece left of Subscribe */
  .nav-burger{display:flex}
  .nav-menu{display:flex;flex-direction:column;gap:.15rem;position:fixed;top:56px;right:3.5vw;z-index:59;min-width:172px;
    background:rgba(13,11,9,.97);border:1px solid var(--line);border-radius:8px;padding:.5rem;
    box-shadow:0 22px 50px rgba(0,0,0,.6);backdrop-filter:blur(12px);
    opacity:0;visibility:hidden;transform:translateY(-8px);transition:opacity .2s,transform .2s,visibility .2s}
  .nav-menu.open{opacity:1;visibility:visible;transform:translateY(0)}
  .nav-menu a{padding:.6rem .85rem;color:var(--cream);font-family:var(--font-head);letter-spacing:1px;font-size:1.15rem;border-radius:5px;transition:background .15s,color .15s}
  .nav-menu a:hover,.nav-menu a:active{background:var(--bronze);color:var(--ink)}
  /* ---- console mobile: section nav rides on the logo's line, compact + scrollable ---- */
  .console-head{flex-wrap:nowrap;justify-content:flex-start;align-items:center;gap:.6rem;padding:.45rem 3.5vw}
  .console-head .nav-brand img{height:36px}
  .console-subnav{flex-basis:auto;border-top:0;padding-top:0;flex-wrap:nowrap;overflow-x:auto;min-width:0;gap:.4rem;-webkit-overflow-scrolling:touch}
  .console-subnav::-webkit-scrollbar{height:0}
  .console-subnav a{flex:0 0 auto;padding:.32rem .7rem;font-size:.66rem;white-space:nowrap}
  .console-page .console{padding-top:5.6rem}
  .console-page [id^="sec-"]{scroll-margin-top:5.6rem}
  /* a touch more breathing room above the CHAI · CONTROL ROOM kicker */
  .console-page .section-head{margin-top:.4rem}
}
@media(max-width:560px){
  .modal{grid-template-columns:1fr}
  .modal-photo{height:200px}
  .modal-photo::after{background:linear-gradient(transparent 55%,var(--ink-3))}
  /* header: keep the Subscribe button inside the bar + calm the stripes */
  .nav{padding:.5rem 3.5vw;gap:.5rem}
  .nav-brand{flex:0 0 auto}
  .nav-brand img{height:38px}
  .nav-links{flex:0 0 auto;gap:.2rem}
  .nav-burger{margin-right:-2px}   /* tuck the diagonal piece right up against Subscribe */
  /* slant the Subscribe button's LEFT edge to match the header's light/dark diagonal (~29deg, compact header) */
  .nav-cta{padding:.32rem .95rem .32rem 1.55rem;font-size:.95rem;letter-spacing:1px;white-space:nowrap;
    border-radius:0;clip-path:polygon(21px 0,100% 0,100% 100%,0 100%)}
  .nav-cta::after{width:13px}
  .nav-face{opacity:.15;background-size:auto 150%}
  .nav-plate{width:min(46%,150px)}
  /* album: scale the cover to the phone so it isn't clipped */
  .album{padding:5rem 4vw 5rem}
  .album-stage{min-height:84vw;perspective:1100px;margin-top:.2rem}
  .gatefold{width:74vw;height:74vw;transform:rotate(-5deg)}
  /* open: slide the inside (right panel) out to the right edge; the cover swings
     open as a bent left panel so a sliver of the left spread still shows */
  .album-stage.open .gatefold{transform:translateX(13vw)}
  .album-stage.open .gf-cover{transform:rotateY(-150deg)}

  /* tour: zoom slightly taller than the section so the image can crop
     vertically, then anchor near the top so the field shifts up */
  .tour{background:
    linear-gradient(180deg,rgba(11,9,7,.92),rgba(11,9,7,.72) 45%,rgba(11,9,7,.95)),
    url(../images/chai-field.jpg) center 18%/auto 126% no-repeat,#0d0b09}
  /* subscribe: zoom for vertical crop room, nudge up + left, and fade the
     image more (darker overlay) */
  .subscribe{background:
    linear-gradient(180deg,rgba(11,9,7,.9),rgba(11,9,7,.78) 50%,rgba(11,9,7,.94)),
    url(../images/chai-concert.jpg) 40% 14%/auto 122% no-repeat,#0d0b09}
}
@media(prefers-reduced-motion:reduce){
  *{animation-duration:.001s!important;animation-iteration-count:1!important}
}
