/* =====================================================================
   EverWonder Festival — styles.css
   Palette drawn from the brand deck: deep night-sky violets + gold stars
   ===================================================================== */

:root{
  /* Night sky */
  --ink:      #0C0722;
  --night:    #150C38;
  --night-2:  #1B1140;
  --violet:   #2E2066;
  --brand:    #3F1681;   /* logo purple */
  --purple:   #6B4FA0;
  --lav:      #A98FD2;
  --lav-2:    #C9BEEA;
  /* Gold accents */
  --gold:     #F4B740;
  --gold-2:   #D89A2A;
  /* Lights */
  --cream:    #F2EEFF;
  --white:    #FBF8FF;

  --maxw: 1200px;
  --ease: cubic-bezier(.22,.61,.36,1);

  --font-display: "Cinzel", Georgia, serif;
  --font-deco: "Cinzel Decorative", "Cinzel", serif;
  --font-fun: "Fredoka", "Poppins", sans-serif;
  --font-body: "Poppins", system-ui, sans-serif;
}

*,*::before,*::after{ box-sizing:border-box; }

html{ scroll-behavior:smooth; }
@media (prefers-reduced-motion: reduce){ html{ scroll-behavior:auto; } }

body{
  margin:0;
  font-family:var(--font-body);
  color:var(--cream);
  background:var(--ink);
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
  line-height:1.6;
}

img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }

.container{ width:100%; max-width:var(--maxw); margin-inline:auto; padding-inline:clamp(20px,5vw,48px); }

/* ---------- shared type ---------- */
.section-kicker{
  font-family:var(--font-fun);
  font-weight:600;
  letter-spacing:.28em;
  text-transform:uppercase;
  font-size:.78rem;
  color:var(--gold);
  margin:0 0 18px;
}
.section-title{
  font-family:var(--font-display);
  font-weight:700;
  font-size:clamp(2rem,5.5vw,3.6rem);
  line-height:1.1;
  margin:0 0 22px;
  color:var(--white);
  letter-spacing:.01em;
}
.section-lead{
  max-width:620px;
  font-size:clamp(1rem,2.2vw,1.15rem);
  color:var(--lav-2);
}
.grad{
  background:linear-gradient(100deg,var(--gold) 0%,#ffe6a1 45%,var(--gold-2) 100%);
  -webkit-background-clip:text; background-clip:text;
  -webkit-text-fill-color:transparent; color:transparent;
}

/* ---------- buttons ---------- */
.btn{
  --bg:var(--brand);
  display:inline-flex; align-items:center; justify-content:center; gap:.5em;
  font-family:var(--font-fun); font-weight:600; font-size:.98rem;
  padding:.85em 1.7em; border-radius:999px;
  cursor:pointer; border:1.5px solid transparent;
  transition:transform .3s var(--ease), box-shadow .3s var(--ease), background .3s;
  white-space:nowrap;
}
.btn--lg{ padding:1.05em 2.2em; font-size:1.05rem; }
.btn--gold{
  background:linear-gradient(135deg,var(--gold),var(--gold-2));
  color:#2a1a05;
  box-shadow:0 10px 30px -8px rgba(244,183,64,.55);
}
.btn--gold:hover{ transform:translateY(-3px); box-shadow:0 18px 40px -10px rgba(244,183,64,.7); }
.btn--ghost{
  background:rgba(255,255,255,.04);
  color:var(--white);
  border-color:rgba(201,190,234,.4);
  backdrop-filter:blur(6px);
}
.btn--ghost:hover{ transform:translateY(-3px); border-color:var(--gold); color:var(--gold); }

/* =====================================================================
   Scroll progress + comet canvas
   ===================================================================== */
.scroll-progress{
  position:fixed; top:0; left:0; height:3px; width:0%;
  background:linear-gradient(90deg,var(--brand),var(--gold));
  z-index:1000; box-shadow:0 0 12px var(--gold);
}
.star-canvas{
  position:fixed; inset:0; width:100%; height:100%;
  pointer-events:none; z-index:900;
}

/* =====================================================================
   NAV
   ===================================================================== */
.nav{
  position:fixed; top:0; left:0; right:0; z-index:800;
  display:flex; align-items:center; gap:24px;
  padding:18px clamp(20px,5vw,48px);
  transition:background .4s var(--ease), padding .4s var(--ease), backdrop-filter .4s;
}
.nav.scrolled{
  background:rgba(12,7,34,.82);
  backdrop-filter:blur(14px);
  padding-top:12px; padding-bottom:12px;
  box-shadow:0 8px 30px -18px #000;
}
.nav__brand{ display:flex; align-items:center; }
.nav__logo{ height:34px; width:auto; }
.nav__links{ display:flex; gap:28px; margin-left:auto; }
.nav__links a{
  font-family:var(--font-fun); font-weight:500; font-size:.95rem;
  color:var(--lav-2); position:relative; padding:4px 0;
  transition:color .25s;
}
.nav__links a::after{
  content:""; position:absolute; left:0; bottom:-2px; height:2px; width:0;
  background:var(--gold); transition:width .3s var(--ease);
}
.nav__links a:hover{ color:var(--white); }
.nav__links a:hover::after{ width:100%; }
.nav__cta{ padding:.6em 1.3em; font-size:.9rem; }
.nav__burger{
  display:none; flex-direction:column; gap:5px; background:none; border:0;
  cursor:pointer; padding:6px; margin-left:auto;
}
.nav__burger span{ width:26px; height:2px; background:var(--white); transition:.3s; }
.nav__burger[aria-expanded="true"] span:nth-child(1){ transform:translateY(7px) rotate(45deg); }
.nav__burger[aria-expanded="true"] span:nth-child(2){ opacity:0; }
.nav__burger[aria-expanded="true"] span:nth-child(3){ transform:translateY(-7px) rotate(-45deg); }

/* language switcher */
.lang{
  display:flex; gap:2px; align-items:center;
  background:rgba(255,255,255,.05); border:1px solid rgba(201,190,234,.2);
  border-radius:999px; padding:3px;
}
.lang__btn{
  font-family:var(--font-fun); font-weight:600; font-size:.74rem; letter-spacing:.02em;
  color:var(--lav-2); background:none; border:0; cursor:pointer;
  padding:.35em .58em; border-radius:999px; transition:color .25s, background .25s;
}
.lang__btn:hover{ color:#fff; }
.lang__btn.is-active{ background:linear-gradient(135deg,var(--gold),var(--gold-2)); color:#2a1a05; }

/* RTL (Arabic) */
[dir="rtl"] .nav__links a::after{ left:auto; right:0; }
[dir="rtl"] .day__date{ border-right:0; border-left:1px solid rgba(201,190,234,.2); }
[dir="rtl"] .ticket__list li{ padding-left:0; padding-right:28px; }
[dir="rtl"] .ticket__list li::before{ left:auto; right:0; }
[dir="rtl"] .marquee{ direction:ltr; }

/* =====================================================================
   HERO
   ===================================================================== */
.hero{
  position:relative; min-height:100svh;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  text-align:center; overflow:hidden;
  padding:120px 20px 80px;
}
.hero__sky{
  position:absolute; inset:-10% 0;
  background:
    radial-gradient(120% 90% at 70% 8%, #3a2270 0%, transparent 55%),
    radial-gradient(100% 80% at 20% 20%, #2a1a5e 0%, transparent 50%),
    linear-gradient(180deg, #1b1140 0%, #150c38 45%, #0c0722 100%);
  z-index:-6;
}
.hero__stars{
  position:absolute; inset:-20% 0; z-index:-5; background-repeat:repeat;
}
.hero__stars--far{
  background-image:
    radial-gradient(1.4px 1.4px at 20% 30%, #fff 50%, transparent),
    radial-gradient(1.2px 1.2px at 60% 70%, #d9c9ff 50%, transparent),
    radial-gradient(1px 1px at 80% 20%, #fff 50%, transparent),
    radial-gradient(1.3px 1.3px at 40% 80%, #fff 50%, transparent),
    radial-gradient(1px 1px at 90% 60%, #cbb8ff 50%, transparent);
  background-size:340px 340px;
  opacity:.6;
}
.hero__stars--near{
  background-image:
    radial-gradient(2px 2px at 15% 50%, #fff 50%, transparent),
    radial-gradient(2.4px 2.4px at 75% 35%, #ffe9b0 50%, transparent),
    radial-gradient(1.8px 1.8px at 50% 15%, #fff 50%, transparent),
    radial-gradient(2px 2px at 85% 80%, #fff 50%, transparent);
  background-size:520px 520px;
  opacity:.85;
  animation:twinkle 5s ease-in-out infinite alternate;
}
@keyframes twinkle{ from{opacity:.5} to{opacity:1} }

.hero__moon{
  position:absolute; top:12%; right:12%; width:170px; height:170px; z-index:-5;
  border-radius:50%;
  background:radial-gradient(circle at 35% 35%, #fff8e6 0%, #f4e3b0 40%, #e8c874 70%, #caa64f 100%);
  box-shadow:0 0 80px 20px rgba(244,227,176,.35), inset -18px -14px 40px rgba(160,120,40,.4);
}
.hero__glow{
  position:absolute; bottom:-30%; left:50%; transform:translateX(-50%);
  width:900px; height:600px; z-index:-4;
  background:radial-gradient(ellipse at center, rgba(123,91,224,.35) 0%, transparent 65%);
  filter:blur(20px);
}
.hero__ridge{
  position:absolute; left:0; right:0; bottom:0; height:38vh; z-index:-3;
  -webkit-mask-repeat:no-repeat; mask-repeat:no-repeat;
  -webkit-mask-size:cover; mask-size:cover;
}
.hero__ridge--back{
  background:linear-gradient(180deg,#241b4f,#180f3c);
  clip-path:polygon(0 60%,12% 40%,26% 62%,40% 34%,55% 58%,70% 30%,84% 55%,100% 38%,100% 100%,0 100%);
  opacity:.85;
}
.hero__ridge--front{
  height:26vh;
  background:linear-gradient(180deg,#0f0930,#0c0722);
  clip-path:polygon(0 70%,15% 48%,30% 68%,48% 42%,64% 66%,80% 46%,100% 64%,100% 100%,0 100%);
}

.hero__content{ position:relative; z-index:2; max-width:860px; }
.hero__eyebrow{
  font-family:var(--font-fun); font-weight:500;
  letter-spacing:.22em; font-size:clamp(.68rem,1.6vw,.85rem);
  color:var(--gold); margin:0 0 26px;
}
.hero__logo{
  width:min(760px,88vw); height:auto; margin:0 auto 10px;
  filter:drop-shadow(0 8px 40px rgba(169,143,210,.45));
}
.hero__tagline{
  font-size:clamp(1.05rem,2.6vw,1.4rem);
  color:var(--lav-2); margin:14px auto 38px; max-width:620px; font-weight:300;
}
.hero__cta{ display:flex; gap:16px; justify-content:center; flex-wrap:wrap; }

.hero__scroll{
  position:absolute; bottom:26px; left:50%; transform:translateX(-50%);
  display:flex; flex-direction:column; align-items:center; gap:8px; z-index:3;
}
.hero__scroll-dot{
  width:24px; height:40px; border:2px solid rgba(201,190,234,.5); border-radius:14px;
  position:relative;
}
.hero__scroll-dot::before{
  content:""; position:absolute; top:7px; left:50%; transform:translateX(-50%);
  width:4px; height:8px; border-radius:2px; background:var(--gold);
  animation:scrolldot 1.6s var(--ease) infinite;
}
@keyframes scrolldot{ 0%{opacity:0;transform:translate(-50%,0)} 40%{opacity:1} 80%{opacity:0;transform:translate(-50%,14px)} }
.hero__scroll-label{ font-family:var(--font-fun); font-size:.68rem; letter-spacing:.3em; color:var(--lav); }

/* =====================================================================
   MARQUEE
   ===================================================================== */
.marquee{
  overflow:hidden; white-space:nowrap; padding:16px 0;
  background:linear-gradient(90deg,var(--brand),var(--violet));
  border-block:1px solid rgba(244,183,64,.25);
}
.marquee__track{ display:inline-flex; animation:marquee 26s linear infinite; }
.marquee__track span{
  font-family:var(--font-display); font-weight:600; font-size:1.1rem;
  letter-spacing:.12em; color:#efe6ff; padding-right:1rem;
}
@keyframes marquee{ from{transform:translateX(0)} to{transform:translateX(-50%)} }

/* =====================================================================
   MANIFESTO
   ===================================================================== */
.manifesto{ padding:clamp(90px,14vw,160px) 0; background:linear-gradient(180deg,#0c0722,#130b32); }
.manifesto__title{
  font-family:var(--font-display); font-weight:700;
  font-size:clamp(2.1rem,6vw,4.2rem); line-height:1.08; color:var(--white);
  max-width:15ch; margin:0 0 30px;
}
.manifesto__lead{ max-width:640px; font-size:clamp(1.05rem,2.4vw,1.25rem); color:var(--lav-2); }

/* =====================================================================
   STATS
   ===================================================================== */
.stats{ padding:clamp(60px,9vw,110px) 0; background:#130b32; }
.stats__grid{
  display:grid; grid-template-columns:repeat(4,1fr); gap:30px;
}
.stat{ text-align:center; position:relative; }
.stat::after{
  content:""; position:absolute; right:-15px; top:15%; height:70%; width:1px;
  background:linear-gradient(180deg,transparent,rgba(169,143,210,.35),transparent);
}
.stat:last-child::after{ display:none; }
.stat__num{
  font-family:var(--font-display); font-weight:800;
  font-size:clamp(2.6rem,7vw,4.6rem); line-height:1;
  background:linear-gradient(160deg,#fff,var(--lav-2) 60%,var(--purple));
  -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent;
}
.stat__label{ font-family:var(--font-fun); font-weight:600; font-size:1.15rem; color:var(--gold); margin-top:6px; }
.stat__sub{ font-size:.85rem; color:var(--lav); margin-top:4px; }

/* =====================================================================
   WORLDS (horizontal scroll)
   ===================================================================== */
.worlds{ background:linear-gradient(180deg,#130b32,#0c0722); }
.worlds__intro{ padding:clamp(80px,12vw,140px) 0 50px; }

/* default (mobile / reduced-motion): native horizontal swipe scroller */
.worlds__pin{
  overflow-x:auto; overflow-y:hidden;
  scroll-snap-type:x mandatory;
  -webkit-overflow-scrolling:touch;
  padding-bottom:24px;
}
.worlds__pin::-webkit-scrollbar{ height:6px; }
.worlds__pin::-webkit-scrollbar-thumb{ background:rgba(169,143,210,.4); border-radius:3px; }
/* desktop: pinned — JS translates the track as you scroll */
.worlds.is-pinned .worlds__pin{
  position:sticky; top:0; height:100vh;
  overflow:hidden; scroll-snap-type:none; padding-bottom:0;
}
.worlds__track{
  display:flex; gap:34px; align-items:center; min-height:min(78vh,560px);
  padding:20px clamp(20px,8vw,120px);
  will-change:transform;
}
.worlds.is-pinned .worlds__track{ height:100%; min-height:0; }
.world{ scroll-snap-align:center; }
.world{
  position:relative; flex:0 0 auto;
  width:min(340px,74vw); height:min(440px,66vh);
  padding:38px 32px; border-radius:26px;
  background:linear-gradient(165deg, rgba(255,255,255,.09), rgba(255,255,255,.02));
  border:1px solid rgba(201,190,234,.16);
  backdrop-filter:blur(8px);
  overflow:hidden; display:flex; flex-direction:column;
  transition:transform .4s var(--ease), border-color .4s;
}
.world::before{
  content:""; position:absolute; inset:0; z-index:-1;
  background:radial-gradient(120% 70% at 50% -10%, var(--w), transparent 60%);
  opacity:.5; transition:opacity .4s;
}
.world::after{
  content:""; position:absolute; right:-40px; bottom:-40px;
  width:180px; height:180px; border-radius:50%;
  background:radial-gradient(circle, var(--w), transparent 70%);
  opacity:.25; filter:blur(6px);
}
.world:hover{ transform:translateY(-8px); border-color:var(--w); }
.world:hover::before{ opacity:.8; }
.world__no{
  font-family:var(--font-display); font-weight:700; font-size:.95rem;
  color:var(--gold); letter-spacing:.2em;
}
.world__icon{
  font-size:3.4rem; line-height:1; margin:auto 0 18px;
  color:var(--w); text-shadow:0 0 24px var(--w);
}
.world__name{
  font-family:var(--font-display); font-weight:700;
  font-size:1.9rem; margin:0 0 4px; color:var(--white);
}
.world__tr{ font-family:var(--font-fun); color:var(--gold); font-size:1rem; margin:0 0 14px; }
.world__desc{ font-size:.96rem; color:var(--lav-2); margin:0; }
.world--finale{ box-shadow:0 0 60px -10px rgba(244,183,64,.5); }

.worlds__hint{
  text-align:center; font-family:var(--font-fun); color:var(--lav);
  font-size:.85rem; letter-spacing:.15em; padding:20px 0 60px;
}

/* =====================================================================
   LINEUP
   ===================================================================== */
.lineup{ padding:clamp(90px,13vw,150px) 0; background:#0c0722; text-align:center; }
.lineup .section-lead{ margin-inline:auto; }
.lineup__grid{
  display:grid; grid-template-columns:repeat(3,1fr); gap:30px; margin-top:50px;
}
.artist{ text-align:center; }
.artist__poster{
  position:relative; aspect-ratio:3/4; border-radius:20px; overflow:hidden;
  background:
    radial-gradient(80% 60% at 50% 20%, color-mix(in srgb, var(--a) 70%, transparent), transparent 70%),
    linear-gradient(180deg,#241b4f,#0c0722);
  border:1px solid rgba(201,190,234,.18);
  display:flex; align-items:flex-end; justify-content:center;
  transition:transform .4s var(--ease), box-shadow .4s;
}
.artist__poster::before{
  content:""; position:absolute; inset:0;
  background:repeating-linear-gradient(115deg, transparent 0 22px, rgba(255,255,255,.03) 22px 24px);
}
.artist__spark{
  font-size:4rem; color:var(--a); opacity:.9; margin-bottom:34%;
  text-shadow:0 0 40px var(--a); animation:floaty 4s ease-in-out infinite;
}
@keyframes floaty{ 50%{ transform:translateY(-14px); } }
.artist:hover .artist__poster{ transform:translateY(-8px); box-shadow:0 30px 60px -24px var(--a); }
.artist__name{ font-family:var(--font-display); font-weight:700; font-size:1.7rem; margin:20px 0 2px; color:var(--white); }
.artist__meta{ font-family:var(--font-fun); color:var(--gold); font-size:.9rem; margin:0; }
.lineup__note{ margin-top:44px; color:var(--lav); font-style:italic; text-align:center; }

/* =====================================================================
   PROGRAM
   ===================================================================== */
.program{ padding:clamp(90px,13vw,150px) 0; background:linear-gradient(180deg,#0c0722,#130b32); }
.program__timeline{ margin-top:50px; display:grid; gap:22px; }
.day{
  display:grid; grid-template-columns:130px 1fr; gap:28px; align-items:center;
  padding:26px 30px; border-radius:20px;
  background:linear-gradient(120deg, rgba(255,255,255,.06), rgba(255,255,255,.01));
  border:1px solid rgba(201,190,234,.14);
  transition:transform .4s var(--ease), border-color .4s;
}
.day:hover{ transform:translateX(8px); border-color:var(--gold); }
.day__date{
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  border-right:1px solid rgba(201,190,234,.2);
}
.day__num{ font-family:var(--font-display); font-weight:800; font-size:3rem; line-height:1; color:var(--gold); }
.day__mon{ font-family:var(--font-fun); letter-spacing:.24em; font-size:.8rem; color:var(--lav-2); }
.day__body h3{ font-family:var(--font-display); font-size:1.4rem; margin:0 0 6px; color:var(--white); }
.day__body p{ margin:0; color:var(--lav-2); }

/* =====================================================================
   ON TOUR
   ===================================================================== */
.tour{ position:relative; overflow:hidden; padding:clamp(90px,13vw,150px) 0; background:linear-gradient(180deg,#0c0722,#130b32); }
.tour__stars{
  position:absolute; inset:-20% 0; z-index:0;
  background-image:
    radial-gradient(1.5px 1.5px at 15% 30%, #fff 50%, transparent),
    radial-gradient(1.3px 1.3px at 70% 60%, #ffe9b0 50%, transparent),
    radial-gradient(1.2px 1.2px at 45% 80%, #fff 50%, transparent),
    radial-gradient(1.4px 1.4px at 85% 25%, #cbb8ff 50%, transparent);
  background-size:420px 420px; opacity:.5;
}
.tour .container{ position:relative; z-index:1; }
.tour__grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:26px; margin-top:50px; }
.stop{
  position:relative; overflow:hidden; text-align:center;
  padding:40px 32px; border-radius:22px;
  background:linear-gradient(165deg, rgba(255,255,255,.06), rgba(255,255,255,.015));
  border:1px solid rgba(201,190,234,.16);
  transition:transform .4s var(--ease), border-color .4s;
}
.stop::before{
  content:""; position:absolute; inset:0; z-index:-1;
  background:radial-gradient(120% 70% at 50% -10%, var(--a), transparent 60%);
  opacity:.38; transition:opacity .4s;
}
.stop:hover{ transform:translateY(-8px); border-color:var(--a); }
.stop:hover::before{ opacity:.72; }
.stop__pin{ font-size:2.4rem; color:var(--a); text-shadow:0 0 24px var(--a); line-height:1; }
.stop__city{ font-family:var(--font-display); font-weight:700; font-size:2rem; color:#fff; margin:14px 0 2px; }
.stop__country{ font-family:var(--font-fun); color:var(--lav-2); margin:0 0 18px; }
.stop__date{
  display:inline-block; font-family:var(--font-fun); font-weight:600;
  font-size:.8rem; letter-spacing:.1em; text-transform:uppercase; color:var(--gold);
  border:1px solid rgba(244,183,64,.4); border-radius:999px; padding:.45em 1.2em;
}

/* =====================================================================
   TICKETS
   ===================================================================== */
.tickets{ padding:clamp(90px,13vw,150px) 0; background:#130b32; }
.tickets__grid{
  display:grid; grid-template-columns:repeat(3,1fr); gap:26px; margin-top:50px; align-items:stretch;
}
.ticket{
  position:relative; display:flex; flex-direction:column;
  padding:38px 32px; border-radius:24px;
  background:linear-gradient(170deg, rgba(255,255,255,.06), rgba(255,255,255,.015));
  border:1px solid rgba(201,190,234,.16);
  transition:transform .4s var(--ease), box-shadow .4s;
}
.ticket:hover{ transform:translateY(-8px); }
.ticket--featured{
  background:linear-gradient(170deg, rgba(244,183,64,.14), rgba(107,79,160,.12));
  border-color:rgba(244,183,64,.5);
  box-shadow:0 30px 70px -30px rgba(244,183,64,.5);
}
.ticket__badge{
  position:absolute; top:-13px; left:50%; transform:translateX(-50%);
  background:linear-gradient(135deg,var(--gold),var(--gold-2)); color:#2a1a05;
  font-family:var(--font-fun); font-weight:600; font-size:.75rem;
  padding:.35em 1.1em; border-radius:999px; letter-spacing:.05em;
}
.ticket__tier{ font-family:var(--font-display); font-weight:800; font-size:2.2rem; margin:0; color:var(--white); }
.ticket__for{ font-family:var(--font-fun); color:var(--gold); margin:2px 0 22px; }
.ticket__list{ list-style:none; padding:0; margin:0 0 28px; display:grid; gap:12px; }
.ticket__list li{ position:relative; padding-left:28px; color:var(--lav-2); font-size:.96rem; }
.ticket__list li::before{
  content:"✦"; position:absolute; left:0; top:0; color:var(--gold);
}
.ticket__btn{ margin-top:auto; width:100%; }
.tickets__note{ text-align:center; margin-top:34px; color:var(--lav); font-size:.92rem; }

/* =====================================================================
   PARTNER
   ===================================================================== */
.partner{ padding:clamp(90px,13vw,150px) 0; background:linear-gradient(180deg,#130b32,#0c0722); }
.partner .section-lead{ margin-bottom:44px; }
.partner__tiers{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
.ptier{
  padding:30px 28px; border-radius:20px;
  background:linear-gradient(160deg, rgba(255,255,255,.05), rgba(255,255,255,.01));
  border:1px solid rgba(201,190,234,.14);
  transition:transform .4s var(--ease), border-color .4s;
}
.ptier:hover{ transform:translateY(-6px); border-color:var(--lav); }
.ptier h3{ font-family:var(--font-display); font-size:1.4rem; margin:0 0 10px; color:var(--white); }
.ptier p{ margin:0; color:var(--lav-2); font-size:.95rem; }
.ptier--legend{
  background:linear-gradient(160deg, rgba(244,183,64,.14), rgba(107,79,160,.1));
  border-color:rgba(244,183,64,.45);
}
.ptier--legend h3{ color:var(--gold); }

.partner__wall{
  display:flex; flex-wrap:wrap; gap:16px; justify-content:center; margin:44px 0;
}
.partner__slot{
  flex:0 0 auto; min-width:150px; padding:22px 30px; text-align:center;
  font-family:var(--font-display); letter-spacing:.1em; color:var(--lav);
  border:1px dashed rgba(201,190,234,.3); border-radius:14px;
  background:rgba(255,255,255,.02);
}
.partner__cta{ display:flex; flex-direction:column; align-items:center; gap:16px; text-align:center; }
.partner__by{ font-style:italic; color:var(--lav); font-size:.9rem; }

/* =====================================================================
   VENUE / CTA
   ===================================================================== */
.venue{
  position:relative; overflow:hidden;
  padding:clamp(100px,16vw,180px) 0;
  text-align:center;
  background:
    radial-gradient(90% 120% at 50% 0%, #3a2270 0%, transparent 60%),
    linear-gradient(180deg,#0c0722,#150c38);
}
.venue__stars{
  position:absolute; inset:-20% 0; z-index:0;
  background-image:
    radial-gradient(1.6px 1.6px at 20% 30%, #fff 50%, transparent),
    radial-gradient(1.4px 1.4px at 70% 60%, #ffe9b0 50%, transparent),
    radial-gradient(1.2px 1.2px at 45% 80%, #fff 50%, transparent),
    radial-gradient(1.5px 1.5px at 85% 25%, #fff 50%, transparent);
  background-size:400px 400px; opacity:.6;
}
.venue__inner{ position:relative; z-index:1; }
.venue__title{
  font-family:var(--font-deco); font-weight:900;
  font-size:clamp(2.4rem,8vw,5rem); margin:0 0 14px; color:var(--white);
  text-shadow:0 0 50px rgba(169,143,210,.5);
}
.venue__meta{ font-family:var(--font-fun); color:var(--gold); font-size:clamp(1rem,2.5vw,1.3rem); margin:0 0 36px; }
.venue__form{ display:flex; gap:12px; justify-content:center; flex-wrap:wrap; max-width:520px; margin:0 auto 18px; }
.venue__input{
  flex:1 1 260px; padding:1em 1.4em; border-radius:999px;
  border:1.5px solid rgba(201,190,234,.35);
  background:rgba(12,7,34,.5); color:var(--white); font-family:var(--font-body); font-size:1rem;
}
.venue__input::placeholder{ color:var(--lav); }
.venue__input:focus{ outline:none; border-color:var(--gold); box-shadow:0 0 0 4px rgba(244,183,64,.15); }
.venue__hint{ color:var(--lav-2); font-size:.95rem; }

/* =====================================================================
   FOOTER
   ===================================================================== */
.footer{ background:#0a0620; padding:60px 0 40px; border-top:1px solid rgba(201,190,234,.12); }
.footer__inner{ display:flex; flex-wrap:wrap; align-items:center; gap:26px; justify-content:space-between; }
.footer__logo{ height:40px; width:auto; }
.footer__links{ display:flex; gap:24px; flex-wrap:wrap; }
.footer__links a{ font-family:var(--font-fun); color:var(--lav-2); font-size:.92rem; transition:color .25s; }
.footer__links a:hover{ color:var(--gold); }
.footer__meta{ text-align:right; color:var(--lav); font-size:.85rem; }
.footer__meta p{ margin:2px 0; }
.footer__by strong{ color:var(--lav-2); }

/* =====================================================================
   Reveal animation
   ===================================================================== */
/* QA static render: freeze all motion, show everything */
.is-qa *, .is-qa *::before, .is-qa *::after{ animation:none !important; transition:none !important; }
.is-qa .reveal{ opacity:1 !important; transform:none !important; }

.reveal{ opacity:0; transform:translateY(38px); transition:opacity .9s var(--ease), transform .9s var(--ease); }
.reveal.in{ opacity:1; transform:none; }
.reveal:nth-child(2){ transition-delay:.08s; }
.reveal:nth-child(3){ transition-delay:.16s; }
@media (prefers-reduced-motion: reduce){
  .reveal{ opacity:1; transform:none; transition:none; }
  .hero__stars--near, .artist__spark, .marquee__track, .hero__scroll-dot::before{ animation:none; }
}

/* =====================================================================
   Mobile menu + responsive
   ===================================================================== */
@media (max-width:900px){
  .nav__links{
    position:fixed; inset:0 0 0 auto; width:min(300px,80vw);
    flex-direction:column; gap:26px; margin:0;
    padding:100px 36px; background:rgba(12,7,34,.97); backdrop-filter:blur(18px);
    transform:translateX(100%); transition:transform .4s var(--ease);
    box-shadow:-20px 0 60px -20px #000;
  }
  .nav__links.open{ transform:translateX(0); }
  .nav__links a{ font-size:1.2rem; }
  .nav__cta{ display:none; }
  .lang{ margin-left:auto; }
  .nav__burger{ display:flex; margin-left:12px; }
  .nav__logo{ height:30px; }

  .stats__grid{ grid-template-columns:repeat(2,1fr); gap:36px 20px; }
  .stat:nth-child(2)::after{ display:none; }
  .lineup__grid{ grid-template-columns:1fr; max-width:360px; margin-inline:auto; }
  .tickets__grid{ grid-template-columns:1fr; max-width:440px; margin-inline:auto; }
  .partner__tiers{ grid-template-columns:1fr; }
  .tour__grid{ grid-template-columns:1fr; max-width:360px; margin-inline:auto; }
  .footer__inner{ flex-direction:column; text-align:center; }
  .footer__meta{ text-align:center; }
  .day{ grid-template-columns:90px 1fr; gap:18px; padding:22px; }
  .day__num{ font-size:2.3rem; }
}
@media (max-width:560px){
  .stats__grid{ grid-template-columns:1fr; }
  .stat::after{ display:none; }
  .hero__moon{ width:110px; height:110px; top:9%; right:8%; }
}
