/* ============================================================================
   05 — ENCORE  ·  Festival Main-Stage  ·  Entertainment / Marquee
   ============================================================================ */
:root{
  --ink:#0a0612; --ink-2:#100a1d; --ink-3:#1a1230;
  --paper:#fbf8ff; --paper-mute:#b8a8d4; --paper-faint:#7a6a96;
  --pink:#ff3da9; --pink-2:#ff7ac6; --pink-deep:#c41e7a;
  --violet:#a855f7; --violet-2:#c084fc; --violet-deep:#7c2dba;
  --cyan:#22d3ee; --cyan-2:#7df0ff; --laser:#5fffaa;
  --gold:#ffc857; --line:rgba(216,196,255,.14);
  --sans:'Inter',system-ui,-apple-system,sans-serif;
  --mono:'JetBrains Mono',ui-monospace,monospace;
  --serif:'Fraunces',Georgia,serif;
  --display:'Bebas Neue','Inter',sans-serif;
  --ease:cubic-bezier(.22,.61,.36,1);
  --ease-out:cubic-bezier(.14,1,.34,1);
}

*{box-sizing:border-box;margin:0;padding:0}
html,body{width:100%;height:100%}
html{background:radial-gradient(120% 90% at 50% 75%,#1a0828 0%,#0a0612 65%,#04020a 100%);color:var(--paper);font-family:var(--sans);scroll-behavior:smooth;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
body{overflow:hidden;font-size:calc(15px*var(--res-scale-text,1));line-height:1.55;background:transparent}
body.is-locked{overflow:hidden}
::selection{background:var(--pink);color:var(--ink)}

button,a{font-family:inherit;color:inherit}
button{background:none;border:0;cursor:pointer}
a{text-decoration:none}

/* ----- WebGL backdrop — z:0 so it sits above the page bg gradient -------- */
#fxCanvas{position:fixed;inset:0;width:100%;height:100%;z-index:0;display:block;background:transparent;pointer-events:none}

/* ----- HUD overlays ------------------------------------------------------ */
.vignette{position:fixed;inset:0;z-index:1;pointer-events:none;background:radial-gradient(120% 90% at 50% 50%,transparent 50%,rgba(0,0,0,.65) 100%)}
.grain{position:fixed;inset:0;z-index:2;pointer-events:none;opacity:.07;mix-blend-mode:overlay;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 0.5 0 0 0 0 0.85 0 0 0 0.55 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>")}
.scanlines{position:fixed;inset:0;z-index:3;pointer-events:none;opacity:.4;mix-blend-mode:overlay;background:repeating-linear-gradient(0deg,transparent 0 2px,rgba(255,61,169,.06) 2px 3px),linear-gradient(180deg,rgba(168,85,247,.04),transparent 50%,rgba(34,211,238,.03));animation:scanDrift 6s linear infinite}
@keyframes scanDrift{from{transform:translateY(0)}to{transform:translateY(3px)}}

.hud-corners{position:fixed;inset:32px;z-index:4;pointer-events:none}
.bracket{position:absolute;width:20px;height:20px;border-color:rgba(255,61,169,.6);box-shadow:0 0 10px rgba(255,61,169,.3)}
.bracket--tl{top:-1px;left:-1px;border-top:1.5px solid;border-left:1.5px solid}
.bracket--tr{top:-1px;right:-1px;border-top:1.5px solid;border-right:1.5px solid}
.bracket--bl{bottom:-1px;left:-1px;border-bottom:1.5px solid;border-left:1.5px solid}
.bracket--br{bottom:-1px;right:-1px;border-bottom:1.5px solid;border-right:1.5px solid}

.hud-rail{position:fixed;left:64px;right:64px;display:flex;align-items:center;gap:18px;z-index:4;pointer-events:none;font:500 10px/1 var(--mono);letter-spacing:.24em;text-transform:uppercase;color:var(--paper-mute);opacity:.78}
.hud-rail--top{top:42px}
.hud-rail--bottom{bottom:42px}
.hud-rail__line{flex:1;height:1px;background:linear-gradient(90deg,transparent,rgba(216,196,255,.32),transparent)}
.hud-rail .dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--pink);box-shadow:0 0 8px var(--pink);margin-right:8px;animation:pulse 1.2s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:.55;transform:scale(1)}50%{opacity:1;transform:scale(1.25)}}

.cypher-rail{position:fixed;bottom:14px;left:0;right:0;z-index:4;height:18px;overflow:hidden;pointer-events:none;opacity:.26;mix-blend-mode:difference}
.cypher-rail__row{display:inline-flex;white-space:nowrap;font:300 10px/1 var(--mono);letter-spacing:.18em;color:var(--paper);animation:cypherSlide 70s linear infinite}
@keyframes cypherSlide{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* ----- Brand fixed (TL) -------------------------------------------------- */
.brand-fixed{position:fixed;top:34px;left:64px;z-index:50;display:flex;align-items:center;gap:12px;font:600 11px/1 var(--mono);letter-spacing:.32em;text-transform:uppercase;color:var(--paper)}
.brand-fixed__mark{width:24px;height:24px;filter:drop-shadow(0 0 8px rgba(255,61,169,.5))}
.brand-fixed__name{color:var(--paper)}

/* ----- Sound toggle (TR) ------------------------------------------------- */
.sound-toggle{position:fixed;top:34px;right:64px;z-index:50;display:flex;align-items:center;gap:14px;font:500 10px/1 var(--mono);letter-spacing:.28em;text-transform:uppercase;color:var(--paper-mute);transition:color .3s var(--ease)}
.sound-toggle:hover{color:var(--pink)}
.sound-toggle__bars{width:60px;height:14px;color:var(--pink);opacity:.55;transition:opacity .3s var(--ease)}
.sound-toggle.is-on .sound-toggle__bars{opacity:1;animation:wave .8s ease-in-out infinite}
.sound-toggle.is-on{color:var(--pink)}
@keyframes wave{0%,100%{transform:scaleY(1)}50%{transform:scaleY(.85)}}

/* ----- Scene indicator (BL) --------------------------------------------- */
.scene-indicator{position:fixed;bottom:38px;left:64px;z-index:50;display:flex;align-items:center;gap:14px;font:500 11px/1 var(--mono);letter-spacing:.28em;text-transform:uppercase;color:var(--paper-mute)}
.scene-indicator__num{color:var(--pink);font-weight:600}
.scene-indicator__label{color:var(--paper)}
.scene-indicator__bar{position:relative;width:120px;height:1.5px;background:rgba(216,196,255,.18);overflow:hidden}
.scene-indicator__fill{position:absolute;inset:0;width:16.66%;background:linear-gradient(90deg,var(--violet),var(--pink));transition:width .6s var(--ease);transform-origin:left;box-shadow:0 0 12px rgba(255,61,169,.5)}

/* ----- Scroll cue (BR) -------------------------------------------------- */
.scroll-cue{position:fixed;bottom:38px;right:64px;z-index:50;display:flex;flex-direction:column;align-items:center;gap:8px;font:500 10px/1 var(--mono);letter-spacing:.32em;text-transform:uppercase;color:var(--paper-mute);transition:opacity .6s var(--ease)}
.scroll-cue.is-hidden{opacity:0;pointer-events:none}
.scroll-cue .arrow{font-size:14px;color:var(--pink);animation:nudge 2s ease-in-out infinite}
@keyframes nudge{0%,100%{transform:translateY(0)}50%{transform:translateY(6px)}}

/* ============================================================================
   DECK + SCENES
   ============================================================================ */
.deck{position:relative;z-index:5;height:100svh;overflow-y:scroll;scroll-snap-type:y mandatory;scrollbar-width:none}
.deck::-webkit-scrollbar{display:none}
.scene{scroll-snap-align:start;min-height:100svh;display:flex;align-items:center;padding:clamp(96px,10vh,140px) clamp(28px,5vw,120px);position:relative}
.scene__inner{width:100%;max-width:1280px;margin:0 auto;position:relative;z-index:1}
/* Hero gets a subtle left gradient for text legibility against bright stage backdrop */
.scene--hero::before{content:"";position:absolute;inset:0;z-index:0;background:linear-gradient(90deg,rgba(4,2,8,.78) 0%,rgba(10,6,18,.55) 32%,rgba(10,6,18,.18) 55%,transparent 85%);pointer-events:none}
.scene--tour::before,.scene--album::before,.scene--merch::before,.scene--tix::before,.scene--footer::before{content:"";position:absolute;inset:0;z-index:0;background:linear-gradient(180deg,rgba(4,2,8,.55) 0%,rgba(4,2,8,.78) 50%,rgba(4,2,8,.92) 100%);pointer-events:none}
.two-col{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(32px,5vw,96px);align-items:center}
.two-col--rev{grid-template-columns:.9fr 1.1fr}
.center-col{display:flex;flex-direction:column;align-items:center;text-align:center;gap:24px}

/* Section labels */
.scene__label{display:inline-flex;align-items:center;gap:10px;font:500 11px/1 var(--mono);letter-spacing:.34em;text-transform:uppercase;color:var(--paper-mute);margin-bottom:clamp(20px,2vw,38px)}
.scene__label::before{content:'[';color:var(--paper-faint)}
.scene__label::after{content:']';color:var(--paper-faint)}
.scene__label .ord{color:var(--pink)}

/* Display type — Bebas Neue, festival poster */
.display{font-family:var(--display);font-weight:400;font-size:clamp(72px,12vw,200px);line-height:.86;letter-spacing:.005em;color:var(--paper);background:linear-gradient(180deg,#fbf8ff 0%,#ff7ac6 55%,#a855f7 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;text-shadow:0 0 100px rgba(255,61,169,.15);text-transform:uppercase}
.display--md{font-size:clamp(56px,8.5vw,128px);font-weight:400}
.display.center{text-align:center}
.lede{margin-top:clamp(20px,2vw,32px);max-width:640px;font-size:clamp(15px,1.2vw,21px);line-height:1.5;color:var(--paper-mute);font-weight:300}
.copy{margin-top:18px;max-width:520px;font-size:clamp(14px,1.05vw,18px);line-height:1.6;color:var(--paper-mute);font-weight:300}
.copy.center{margin-left:auto;margin-right:auto}

/* Letter-reveal */
[data-reveal]{opacity:0;transform:translateY(28px);filter:blur(10px);transition:opacity 1.1s var(--ease),transform 1.1s var(--ease),filter 1.1s var(--ease);transition-delay:var(--rd,0ms)}
[data-reveal].is-visible{opacity:1;transform:translateY(0);filter:blur(0)}

/* Hero meta chips */
.hero-meta{display:flex;flex-wrap:wrap;gap:10px;margin-top:36px}
.meta-chip{display:inline-flex;align-items:center;gap:8px;padding:7px 12px;font:500 10px/1 var(--mono);letter-spacing:.2em;text-transform:uppercase;color:var(--paper-mute);background:rgba(26,18,48,.55);backdrop-filter:blur(14px);border:1px solid var(--line);border-radius:2px}
.meta-chip i{display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--pink);box-shadow:0 0 6px var(--pink)}

/* ============================================================================
   TICKER (hero scrolling tour times)
   ============================================================================ */
.ticker{position:absolute;left:0;right:0;bottom:108px;z-index:10;height:36px;overflow:hidden;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:linear-gradient(90deg,rgba(10,6,18,.7),rgba(26,18,48,.7),rgba(10,6,18,.7));backdrop-filter:blur(10px)}
.ticker__bar{display:inline-flex;gap:36px;padding:11px 0;white-space:nowrap;font:600 12px/1 var(--mono);letter-spacing:.28em;text-transform:uppercase;color:var(--paper);animation:tickerSlide 22s linear infinite}
.ticker__bar span{flex-shrink:0}
.ticker__bar span:nth-child(odd){color:var(--pink-2)}
.ticker__bar span:nth-child(even){color:var(--paper-faint)}
@keyframes tickerSlide{from{transform:translateX(0)}to{transform:translateX(-100%)}}

/* ============================================================================
   TOUR LIST
   ============================================================================ */
.tour-list{margin-top:clamp(28px,3vw,48px);list-style:none;display:flex;flex-direction:column;gap:0;border-top:1px solid var(--line);max-width:880px}
.tour-list li{display:grid;grid-template-columns:60px 1fr 120px 130px;align-items:center;gap:18px;padding:18px 12px;border-bottom:1px solid var(--line);transition:background .35s var(--ease),padding-left .35s var(--ease)}
.tour-list li:hover{background:linear-gradient(90deg,rgba(255,61,169,.06),transparent);padding-left:20px}
.tour-list__no{font:500 11px/1 var(--mono);letter-spacing:.2em;color:var(--paper-faint)}
.tour-list__city{font-family:var(--sans);font-weight:300;font-size:clamp(20px,2vw,28px);color:var(--paper);letter-spacing:-.01em}
.tour-list__date{font:500 12px/1 var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--paper-mute)}
.tour-list__status{justify-self:end;font:600 10px/1 var(--mono);letter-spacing:.24em;text-transform:uppercase;color:var(--laser);padding:7px 12px;border:1px solid rgba(95,255,170,.32);border-radius:2px;background:rgba(95,255,170,.06)}
.tour-list__status--sold{color:var(--paper-faint);border-color:rgba(122,106,150,.32);background:rgba(122,106,150,.06)}
.tour-list__status--low{color:var(--gold);border-color:rgba(255,200,87,.34);background:rgba(255,200,87,.06)}

/* ============================================================================
   ALBUM CARD (vinyl spinning)
   ============================================================================ */
.album-card{position:relative;aspect-ratio:1/1;max-width:440px;margin:0 auto;display:flex;flex-direction:column;justify-content:space-between;padding:32px;border-radius:8px;background:linear-gradient(160deg,rgba(255,61,169,.16) 0%,rgba(168,85,247,.08) 50%,rgba(10,6,18,.4) 100%);border:1px solid rgba(255,61,169,.22);backdrop-filter:blur(20px) saturate(160%);box-shadow:0 50px 120px -30px rgba(168,85,247,.4),inset 0 1px 0 rgba(255,122,198,.2),inset 0 -1px 0 rgba(0,0,0,.4);overflow:hidden}
.album-card__sleeve{position:relative;flex:1;display:flex;align-items:center;justify-content:center}
.album-card__vinyl{position:relative;width:78%;aspect-ratio:1/1;border-radius:50%;background:radial-gradient(circle at 50% 50%,#0a0612 0%,#0a0612 22%,#1a1230 24%,#0a0612 26%,#1a1230 28%,#0a0612 30%,#1a1230 32%,#0a0612 34%,#1a1230 36%,#0a0612 38%,#1a1230 40%,#0a0612 42%,#1a1230 44%,#0a0612 46%,#1a1230 48%,#ff3da9 50%,#a855f7 52%,#1a1230 54%,#0a0612 56%,#1a1230 58%,#0a0612 60%,#1a1230 62%,#0a0612 64%,#1a1230 66%,#0a0612 68%,#1a1230 70%,#0a0612 72%,#1a1230 74%,#0a0612 76%,#1a1230 78%,#0a0612 80%,#1a1230 82%,#0a0612 84%);box-shadow:0 24px 60px -10px rgba(0,0,0,.7),inset 0 0 30px rgba(168,85,247,.4);animation:vinylSpin 14s linear infinite}
.album-card__vinyl::after{content:'';position:absolute;top:50%;left:50%;width:8px;height:8px;border-radius:50%;background:var(--paper);transform:translate(-50%,-50%);box-shadow:0 0 0 1px rgba(0,0,0,.3)}
@keyframes vinylSpin{from{transform:rotate(0)}to{transform:rotate(360deg)}}
.album-card__label{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);font:600 10px/1 var(--mono);letter-spacing:.34em;text-transform:uppercase;color:var(--paper-mute);text-align:center}
.album-card__meta{display:flex;align-items:center;gap:16px;font:500 11px/1 var(--mono);letter-spacing:.28em;text-transform:uppercase;color:var(--paper-mute)}
.album-card__line{flex:1;height:1px;background:linear-gradient(90deg,transparent,rgba(255,61,169,.4),transparent)}

/* ============================================================================
   TRACK LIST
   ============================================================================ */
.track-list{margin-top:28px;list-style:none;display:flex;flex-direction:column;gap:0;border-top:1px solid var(--line);max-width:480px}
.track-list li{display:grid;grid-template-columns:36px 1fr auto;gap:16px;align-items:baseline;padding:14px 8px;border-bottom:1px solid var(--line);transition:background .3s var(--ease),padding-left .3s var(--ease);cursor:pointer}
.track-list li:hover{background:rgba(255,61,169,.06);padding-left:14px}
.track-list__no{font-family:var(--serif);font-style:italic;font-size:14px;color:var(--pink)}
.track-list__name{font-size:15.5px;color:var(--paper);font-weight:300;letter-spacing:-.005em}
.track-list__time{font:500 11px/1 var(--mono);letter-spacing:.18em;color:var(--paper-faint)}

/* ============================================================================
   MERCH GRID
   ============================================================================ */
.merch-grid{margin-top:clamp(32px,4vw,56px);display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(16px,2vw,28px)}
.merch-card{position:relative;display:flex;flex-direction:column;gap:14px;padding:22px;background:linear-gradient(160deg,rgba(255,61,169,.06) 0%,rgba(26,18,48,.55) 100%);border:1px solid var(--line);border-radius:10px;backdrop-filter:blur(16px) saturate(150%);transition:transform .5s var(--ease),border-color .5s var(--ease)}
.merch-card:hover{transform:translateY(-4px);border-color:rgba(255,61,169,.4)}
.merch-card__art{aspect-ratio:1/1;border-radius:6px;overflow:hidden;position:relative;background:#0a0612}
.merch-card__art-inner{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}
.merch-card__art--vinyl .merch-card__art-inner{background:radial-gradient(circle at 50% 50%,#0a0612 0%,#0a0612 24%,#1a1230 26%,#0a0612 28%,#1a1230 30%,#0a0612 32%,#1a1230 34%,#0a0612 36%,#1a1230 38%,#0a0612 40%,#1a1230 42%,#0a0612 44%,#ff3da9 46%,#a855f7 48%,#1a1230 50%,#0a0612 52%,#1a1230 54%,#0a0612 56%,#1a1230 58%,#0a0612 60%,#1a1230 62%,#0a0612 64%,#1a1230 66%,#0a0612 68%,#1a1230 70%,#0a0612 72%);animation:vinylSpin 18s linear infinite}
.merch-card__art--poster .merch-card__art-inner{background:linear-gradient(135deg,#ff3da9 0%,#a855f7 50%,#22d3ee 100%);position:relative}
.merch-card__art--poster .merch-card__art-inner::before{content:'ENCORE';position:absolute;font-family:var(--display);font-size:42px;letter-spacing:.04em;color:#0a0612;mix-blend-mode:overlay}
.merch-card__art--poster .merch-card__art-inner::after{content:'XII CITIES · MMXXVI';position:absolute;bottom:18%;font:500 9px/1 var(--mono);letter-spacing:.32em;color:rgba(10,6,18,.85)}
.merch-card__art--hoodie .merch-card__art-inner{background:linear-gradient(180deg,#1a1230 0%,#0a0612 100%);position:relative}
.merch-card__art--hoodie .merch-card__art-inner::before{content:'';position:absolute;left:30%;right:30%;top:18%;bottom:8%;background:radial-gradient(80% 70% at 50% 30%,#2a1a48 0%,#1a1230 60%,transparent 80%);border-radius:55% 55% 8% 8% / 35% 35% 8% 8%}
.merch-card__art--hoodie .merch-card__art-inner::after{content:'ENCORE';position:absolute;top:46%;font-family:var(--display);font-size:18px;letter-spacing:.18em;color:var(--pink-2);text-shadow:0 0 8px rgba(255,61,169,.4)}
.merch-card__name{font-family:var(--display);font-weight:400;font-size:24px;letter-spacing:.04em;color:var(--paper);text-transform:uppercase}
.merch-card__sub{font-size:13px;color:var(--paper-mute);font-weight:300;line-height:1.5}
.merch-card__price{margin-top:auto;font-family:var(--sans);font-weight:300;font-size:28px;letter-spacing:-.02em;background:linear-gradient(180deg,#fbf8ff,#ff7ac6);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}

/* ============================================================================
   PRICING TIERS — festival ticket cards
   ============================================================================ */
.tiers{margin-top:clamp(32px,4vw,56px);display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(16px,2vw,28px)}
.tier{position:relative;display:flex;flex-direction:column;gap:18px;padding:32px 28px;background:linear-gradient(160deg,rgba(255,61,169,.06) 0%,rgba(26,18,48,.55) 100%);border:1px solid var(--line);border-radius:14px;backdrop-filter:blur(18px) saturate(150%);box-shadow:0 30px 70px -25px rgba(0,0,0,.6),inset 0 1px 0 rgba(255,122,198,.12);transition:transform .5s var(--ease),border-color .5s var(--ease),box-shadow .5s var(--ease)}
.tier:hover{transform:translateY(-4px);border-color:rgba(255,61,169,.4);box-shadow:0 40px 80px -25px rgba(168,85,247,.4),inset 0 1px 0 rgba(255,122,198,.18)}
.tier--feat{background:linear-gradient(160deg,rgba(255,61,169,.18) 0%,rgba(26,18,48,.65) 100%);border-color:rgba(255,61,169,.36)}
.tier--feat:hover{border-color:rgba(255,61,169,.6)}
.tier header{display:flex;align-items:center;gap:10px}
.tier__id{font-family:var(--serif);font-style:italic;font-size:18px;color:var(--pink)}
.tier h3{font-family:var(--display);font-weight:400;font-size:30px;letter-spacing:.05em;color:var(--paper);text-transform:uppercase}
.tier__pill{margin-left:auto;font:500 9px/1 var(--mono);letter-spacing:.2em;text-transform:uppercase;color:var(--pink);padding:5px 8px;border:1px solid rgba(255,61,169,.4);border-radius:2px;background:rgba(255,61,169,.08)}
.tier__price{display:flex;align-items:baseline;gap:6px;color:var(--paper)}
.tier__price span{font-family:var(--display);font-weight:400;font-size:64px;letter-spacing:.02em;background:linear-gradient(180deg,#fbf8ff,#ff7ac6);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.tier__price small{font:500 11px/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--paper-faint)}
.tier__sub{font-size:13px;color:var(--paper-mute);font-weight:300;line-height:1.5}
.tier ul{list-style:none;display:flex;flex-direction:column;gap:10px;font-size:13.5px;color:var(--paper);font-weight:300;border-top:1px solid var(--line);padding-top:18px;flex:1}
.tier ul li{line-height:1.45}
.tier__cta{margin-top:8px;padding:14px 20px;font:600 11px/1 var(--mono);letter-spacing:.28em;text-transform:uppercase;color:var(--paper);background:rgba(255,61,169,.05);border:1px solid var(--line);border-radius:4px;transition:all .35s var(--ease)}
.tier__cta:hover{background:rgba(255,61,169,.14);border-color:rgba(255,61,169,.42);transform:translateY(-1px)}
.tier__cta--feat{background:linear-gradient(135deg,#ff3da9,#a855f7);color:var(--paper);border-color:transparent;box-shadow:0 8px 24px -8px rgba(255,61,169,.6)}
.tier__cta--feat:hover{background:linear-gradient(135deg,#ff7ac6,#c084fc);box-shadow:0 14px 30px -10px rgba(255,61,169,.8)}

/* ============================================================================
   FOOTER REACH
   ============================================================================ */
.reach-btns{display:flex;gap:14px;margin-top:36px;flex-wrap:wrap;justify-content:center}
.reach-btn{padding:16px 28px;font:600 12px/1 var(--mono);letter-spacing:.28em;text-transform:uppercase;color:var(--paper);border:1px solid var(--line);border-radius:4px;background:rgba(26,18,48,.55);backdrop-filter:blur(14px);transition:all .35s var(--ease)}
.reach-btn:hover{border-color:rgba(255,61,169,.42);background:rgba(255,61,169,.08);transform:translateY(-1px)}
.reach-btn--primary{background:linear-gradient(135deg,#ff3da9,#a855f7);color:var(--paper);border-color:transparent;box-shadow:0 10px 28px -10px rgba(255,61,169,.6)}
.reach-btn--primary:hover{background:linear-gradient(135deg,#ff7ac6,#c084fc);box-shadow:0 16px 36px -10px rgba(255,61,169,.8)}
.foot{margin-top:64px;display:flex;align-items:center;gap:18px;font:600 10px/1 var(--mono);letter-spacing:.26em;text-transform:uppercase;color:var(--paper-faint)}
.foot__line{flex:1;min-width:60px;height:1px;background:linear-gradient(90deg,transparent,rgba(216,196,255,.32),transparent)}

/* ============================================================================
   GATE
   ============================================================================ */
.gate{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;background:rgba(4,2,10,.94);backdrop-filter:blur(28px);transition:opacity 1s var(--ease),visibility 1s}
.gate.is-open{opacity:0;visibility:hidden;pointer-events:none}
.gate__bg{position:absolute;inset:0;background:radial-gradient(80% 60% at 50% 50%,rgba(255,61,169,.16) 0%,transparent 60%);animation:gateBgPulse 3s ease-in-out infinite}
@keyframes gateBgPulse{0%,100%{opacity:.7}50%{opacity:1}}
.gate__inner{position:relative;display:flex;flex-direction:column;align-items:center;gap:20px;max-width:420px;text-align:center;padding:0 32px}
.gate__loading{font:500 10px/1 var(--mono);letter-spacing:.32em;text-transform:uppercase;color:var(--paper-mute);display:flex;align-items:center;gap:8px}
.gate__loading .dots{display:inline-flex;gap:3px}
.gate__loading .dots i{display:inline-block;width:3px;height:3px;border-radius:50%;background:var(--pink);animation:dots 1.4s ease-in-out infinite}
.gate__loading .dots i:nth-child(2){animation-delay:.2s}
.gate__loading .dots i:nth-child(3){animation-delay:.4s}
@keyframes dots{0%,80%,100%{opacity:.25}40%{opacity:1}}
.gate__mark{width:96px;height:96px;filter:drop-shadow(0 0 28px rgba(255,61,169,.5))}
.gate__title{font-family:var(--display);font-weight:400;font-size:42px;letter-spacing:.18em;text-transform:uppercase;color:var(--paper);margin-top:8px}
.gate__sub{font-family:var(--serif);font-style:italic;font-size:15px;color:var(--paper-mute);font-weight:300}
.gate__btns{display:flex;gap:12px;margin-top:14px;flex-wrap:wrap;justify-content:center}
.gate__btn{padding:14px 22px;min-height:48px;min-width:160px;font:600 11px/1 var(--mono);letter-spacing:.26em;text-transform:uppercase;color:var(--paper);border:1px solid var(--line);border-radius:4px;background:rgba(26,18,48,.6);transition:all .35s var(--ease);touch-action:manipulation}
.gate__btn:hover{border-color:rgba(255,61,169,.42);background:rgba(255,61,169,.08)}
.gate__btn--primary{background:linear-gradient(135deg,#ff3da9,#a855f7);color:var(--paper);border-color:transparent;box-shadow:0 10px 28px -10px rgba(255,61,169,.6)}
.gate__btn--primary:hover{background:linear-gradient(135deg,#ff7ac6,#c084fc);box-shadow:0 16px 36px -10px rgba(255,61,169,.8)}
.gate__small{margin-top:10px;font-size:11px;color:var(--paper-faint);font-weight:300;letter-spacing:.04em}

/* ============================================================================
   RESPONSIVE
   ============================================================================ */
@media (max-width:1024px){
  .two-col,.two-col--rev{grid-template-columns:1fr}
  .album-card{margin-top:36px;width:100%;max-width:420px}
  .tiers,.merch-grid{grid-template-columns:1fr;max-width:420px;margin-left:auto;margin-right:auto}
  .tour-list li{grid-template-columns:48px 1fr 96px;gap:12px}
  .tour-list__date{display:none}
}
@media (max-width:720px){
  .hud-rail{left:24px;right:24px;font-size:9px;letter-spacing:.18em}
  .brand-fixed,.sound-toggle{left:24px;right:auto}
  .sound-toggle{left:auto;right:24px}
  .scene-indicator{left:24px;bottom:30px}
  .scroll-cue{display:none}
  .scene{padding:clamp(80px,10vh,120px) 24px}
  .display{font-size:clamp(64px,16vw,108px)}
  .display--md{font-size:clamp(46px,11vw,72px)}
  .hud-corners{inset:18px}
  .cypher-rail{font-size:8px;opacity:.18}
  .meta-chip{font-size:9px}
  .ticker__bar{font-size:10px;letter-spacing:.18em;gap:24px}
  .foot{flex-direction:column;align-items:center;gap:8px}
  .foot__line{display:none}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  [data-reveal]{opacity:1;transform:none;filter:none}
}
