/* =============================================
   SOLUNA FESTIVAL 2026
   Aesthetic: Tropical Neon Editorial
   ============================================= */

*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}

:root{
  --bg:#080012;
  --bg-alt:#0e0620;
  --surface:rgba(255,255,255,.04);
  --surface-hover:rgba(255,255,255,.08);
  --border:rgba(255,255,255,.08);
  --border-hover:rgba(255,255,255,.18);

  --coral:#ff6a3d;
  --magenta:#e8368f;
  --violet:#9747ff;
  --gold:#ffbe0b;
  --cyan:#00d4ff;
  --peach:#ffaa85;

  --text:#fff;
  --text-dim:rgba(255,255,255,.65);
  --text-muted:rgba(255,255,255,.45);

  --grad-fire:linear-gradient(135deg,var(--gold),var(--coral),var(--magenta));
  --grad-neon:linear-gradient(135deg,var(--cyan),var(--violet),var(--magenta));
  --grad-sunset:linear-gradient(180deg,#1a0533 0%,#3d0f5c 30%,#c2185b 60%,#ff6a3d 80%,#ffbe0b 100%);

  --font-display:'Syne',sans-serif;
  --font-body:'DM Sans',sans-serif;

  --header-h:96px;
  --max-w:1180px;
  --ease:cubic-bezier(.4,0,.2,1);
}

/* --- Base --- */
html{scroll-behavior:smooth;scroll-padding-top:var(--header-h)}

body{
  font-family:var(--font-body);
  color:var(--text);
  background:var(--bg);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

/* Wave separators between sections */
.wave-sep,.wave-hero-bottom{position:relative;z-index:2;line-height:0}
.site-footer{position:relative;z-index:2}

a{text-decoration:none;color:inherit}

/* Screen reader only — visually hidden but accessible */
.sr-only{
  position:absolute;width:1px;height:1px;
  padding:0;margin:-1px;overflow:hidden;
  clip:rect(0,0,0,0);white-space:nowrap;border:0;
}
ul{list-style:none}
img{max-width:100%;height:auto;display:block}
button{font-family:inherit}

.container{max-width:var(--max-w);margin:0 auto;padding:0 2rem}
.container--narrow{max-width:780px}
.text-center{text-align:center}
.mt-3{margin-top:2rem}

/* --- Noise texture --- */
.noise{
  position:fixed;inset:0;z-index:9999;
  pointer-events:none;
  opacity:.035;
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-repeat:repeat;
  background-size:200px;
}

/* =============================================
   HEADER
   ============================================= */
.site-header{
  position:fixed;top:0;left:0;right:0;z-index:100;
  height:auto;
  transition:background .5s var(--ease),box-shadow .5s var(--ease),transform .4s var(--ease);
}

.site-header .header-inner{
  height:var(--header-h);
}

.site-header.sticky{
  background:rgba(8,0,18,.92);
  backdrop-filter:blur(24px) saturate(1.6);
  -webkit-backdrop-filter:blur(24px) saturate(1.6);
  box-shadow:0 1px 0 rgba(232,54,143,.14),0 4px 24px rgba(0,0,0,.3);
}

.site-header.sticky .header-inner{
  height:68px;
}

.header-inner{
  display:flex;align-items:center;justify-content:space-between;
  height:100%;max-width:var(--max-w);margin:0 auto;padding:0 2rem;
}

.header-logo-img{
  height:96px;width:auto;
  filter:drop-shadow(0 0 18px rgba(232,54,143,.4));
  transition:height .3s var(--ease),filter .3s;
}

.site-header.sticky .header-logo-img{
  height:58px;
  filter:drop-shadow(0 0 10px rgba(232,54,143,.25));
}

/* Nav */
.header-nav{display:flex;gap:.2rem}

.nav-link{
  padding:.5rem 1rem;
  font-family:var(--font-display);
  font-size:.78rem;font-weight:600;
  text-transform:uppercase;letter-spacing:.12em;
  color:var(--text-dim);
  position:relative;
  transition:color .3s;
  cursor:pointer;
}

.nav-link:hover,.nav-link.active{color:var(--text)}

/* Hamburger */
.menu-toggle{
  display:none;
  width:44px;height:44px;
  background:none;border:none;cursor:pointer;
  flex-direction:column;justify-content:center;gap:6px;
  padding:8px;z-index:101;
}
.menu-toggle span{
  display:block;width:100%;height:2px;
  background:var(--text);border-radius:1px;
  transition:transform .35s var(--ease),opacity .2s;
}
.menu-toggle.open span:nth-child(1){transform:translateY(8px) rotate(45deg);background:var(--magenta)}
.menu-toggle.open span:nth-child(2){opacity:0}
.menu-toggle.open span:nth-child(3){transform:translateY(-8px) rotate(-45deg);background:var(--magenta)}

/* Mobile nav */
.mobile-nav{
  position:fixed;inset:0;z-index:99;
  background:rgba(8,0,18,.96);
  backdrop-filter:blur(30px);
  display:flex;align-items:center;justify-content:center;
  opacity:0;pointer-events:none;
  transition:opacity .4s var(--ease);
}
.mobile-nav.open{opacity:1;pointer-events:auto}

.mobile-nav-inner{display:flex;flex-direction:column;align-items:center;gap:.6rem}

.mobile-link{
  font-family:var(--font-display);
  font-size:clamp(1.6rem,5vw,2.4rem);
  font-weight:800;text-transform:uppercase;
  letter-spacing:.06em;
  color:var(--text);
  opacity:0;transform:translateY(24px);
  transition:opacity .5s var(--ease),transform .5s var(--ease),color .3s;
}
.mobile-nav.open .mobile-link{opacity:1;transform:none}
.mobile-nav.open .mobile-link:nth-child(1){transition-delay:.05s}
.mobile-nav.open .mobile-link:nth-child(2){transition-delay:.1s}
.mobile-nav.open .mobile-link:nth-child(3){transition-delay:.15s}
.mobile-nav.open .mobile-link:nth-child(4){transition-delay:.2s}
.mobile-nav.open .mobile-link:nth-child(5){transition-delay:.25s}
.mobile-nav.open .mobile-link:nth-child(6){transition-delay:.3s}
.mobile-link:hover{color:var(--magenta)}

/* =============================================
   HERO
   ============================================= */
.hero{
  position:relative;
  height:100vh;height:100svh;
  min-height:640px;
  display:flex;align-items:center;justify-content:center;
  overflow:hidden;
}

.hero-media{position:absolute;inset:0;overflow:hidden}

/* Animated gradient background */
.hero-bg-gradient{
  position:absolute;inset:0;
  background:linear-gradient(170deg,
    #0a0018 0%,
    #1a0a3a 15%,
    #3d0f5c 30%,
    #7b1a6e 45%,
    #c2185b 58%,
    #e8523a 70%,
    #ff8a3d 80%,
    #ffbe0b 92%,
    #ffe066 100%
  );
  background-size:100% 200%;
  animation:heroGradientShift 12s ease-in-out infinite alternate;
}

@keyframes heroGradientShift{
  0%{background-position:50% 0%}
  100%{background-position:50% 40%}
}

/* Floating glow orbs */
.hero-bg-glow{
  position:absolute;
  border-radius:50%;
  filter:blur(60px);
  opacity:.3;
}

.hero-bg-glow--1{
  width:500px;height:500px;
  background:radial-gradient(circle,rgba(232,54,143,.6),transparent 70%);
  top:-10%;left:-5%;
  animation:glowFloat1 8s ease-in-out infinite alternate;
}

.hero-bg-glow--2{
  width:600px;height:600px;
  background:radial-gradient(circle,rgba(151,71,255,.5),transparent 70%);
  bottom:-20%;right:-10%;
  animation:glowFloat2 10s ease-in-out infinite alternate;
}

.hero-bg-glow--3{
  width:400px;height:400px;
  background:radial-gradient(circle,rgba(255,190,11,.35),transparent 70%);
  top:40%;left:50%;transform:translateX(-50%);
  animation:glowFloat3 7s ease-in-out infinite alternate;
}

@keyframes glowFloat1{
  0%{transform:translate(0,0) scale(1)}
  100%{transform:translate(60px,40px) scale(1.15)}
}
@keyframes glowFloat2{
  0%{transform:translate(0,0) scale(1)}
  100%{transform:translate(-50px,-30px) scale(1.1)}
}
@keyframes glowFloat3{
  0%{transform:translateX(-50%) translate(0,0) scale(1)}
  100%{transform:translateX(-50%) translate(30px,-40px) scale(1.2)}
}

/* Bottom fade to dark */
.hero-media::after{
  content:'';
  position:absolute;bottom:0;left:0;right:0;height:30%;
  background:linear-gradient(to top,var(--bg),transparent);
  pointer-events:none;
}

.hero-content{
  position:relative;z-index:2;
  text-align:center;
  padding:0 2rem;
  width:100%;
  max-width:1100px;
  margin:0 auto;
  box-sizing:border-box;
}

.hero-logo{
  width:clamp(180px,30vw,300px);
  margin:0 auto 2rem;
  filter:drop-shadow(0 0 30px rgba(232,54,143,.3)) drop-shadow(0 0 80px rgba(151,71,255,.15));
  animation:logoFloat 5s ease-in-out infinite;
}

@keyframes logoFloat{
  0%,100%{transform:translateY(0)}
  50%{transform:translateY(-12px)}
}

.hero-badge{
  display:inline-block;
  font-family:var(--font-display);
  font-size:.7rem;font-weight:700;
  letter-spacing:.3em;text-transform:uppercase;
  color:var(--text-dim);
  padding:.5rem 1.4rem;
  border:1px solid rgba(255,255,255,.12);
  border-radius:100px;
  margin-bottom:1.5rem;
  background:rgba(14,6,32,.6);
}

.hero-title{margin-bottom:1.8rem}

.hero-title-line{
  display:block;
  font-family:var(--font-display);
  font-size:clamp(2.8rem,9vw,6.5rem);
  font-weight:800;
  line-height:.92;
  text-transform:uppercase;
  letter-spacing:-.02em;
}

.hero-title-line:first-child{
  background:var(--grad-fire);
  -webkit-background-clip:text;
  -webkit-text-fill-color:transparent;
  background-clip:text;
  background-size:200% auto;
  animation:shimmer 6s ease-in-out infinite alternate;
}

.hero-title-line:last-child{
  color:var(--text);
  text-shadow:0 0 60px rgba(232,54,143,.2);
}

@keyframes shimmer{
  0%{background-position:0% center}
  100%{background-position:200% center}
}

.hero-meta{
  display:flex;align-items:center;justify-content:center;
  gap:1.5rem;
  margin-bottom:1.6rem;
  flex-wrap:wrap;
}

.hero-date-block{
  display:flex;flex-direction:column;align-items:flex-end;
  line-height:1.1;
}
.hero-day{
  font-family:var(--font-display);
  font-size:clamp(2rem,5vw,3rem);
  font-weight:800;
  color:var(--gold);
}
.hero-month{
  font-family:var(--font-display);
  font-size:.75rem;font-weight:700;
  letter-spacing:.2em;text-transform:uppercase;
  color:var(--text-dim);
}

.hero-divider{
  width:1px;height:48px;
  background:linear-gradient(to bottom,transparent,var(--text-muted),transparent);
}

.hero-venue{
  display:flex;flex-direction:column;align-items:flex-start;
  font-size:.85rem;color:var(--text-dim);line-height:1.5;
}

/* Ticker */
.hero-lineup-ticker{
  overflow:hidden;width:100%;max-width:800px;
  margin:0 auto 2.2rem;
  -webkit-mask-image:linear-gradient(to right,transparent,white 8%,white 92%,transparent);
  mask-image:linear-gradient(to right,transparent,white 8%,white 92%,transparent);
  border-top:1px solid var(--border);
  border-bottom:1px solid var(--border);
  padding:.7rem 0;
}

.ticker-track{display:flex;white-space:nowrap;animation:ticker 22s linear infinite}
.ticker-content{
  font-family:var(--font-display);
  font-size:.72rem;font-weight:600;
  letter-spacing:.18em;text-transform:uppercase;
  color:var(--text-muted);
}
@keyframes ticker{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}

.hero-actions{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}

/* Scroll cue */
.scroll-cue{
  position:absolute;bottom:2rem;left:50%;
  transform:translateX(-50%);z-index:2;
  animation:fadeInUp 1s .8s both;
}

.scroll-dot{animation:scrollBounce 2s ease-in-out infinite}

@keyframes scrollBounce{
  0%,100%{cy:10;opacity:1}
  50%{cy:22;opacity:.3}
}

@keyframes fadeInUp{
  from{opacity:0;transform:translateX(-50%) translateY(16px)}
  to{opacity:1;transform:translateX(-50%) translateY(0)}
}

/* =============================================
   BUTTONS
   ============================================= */
.btn-primary{
  display:inline-flex;align-items:center;justify-content:center;
  padding:.9rem 2.4rem;
  font-family:var(--font-display);font-size:.8rem;font-weight:700;
  text-transform:uppercase;letter-spacing:.1em;
  color:var(--text);
  background:var(--grad-fire);background-size:200% auto;
  border:none;border-radius:60px;cursor:pointer;
  position:relative;overflow:hidden;
  transition:transform .35s var(--ease),box-shadow .35s var(--ease),background-position .4s;
  box-shadow:0 4px 24px rgba(255,106,61,.25);
}

.btn-primary:hover{
  transform:translateY(-2px);
  box-shadow:0 8px 36px rgba(255,106,61,.4);
  background-position:100% center;
}

.btn-primary::after{
  content:'';position:absolute;inset:0;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.12),transparent);
  transform:translateX(-100%);
  transition:transform .5s;
}
.btn-primary:hover::after{transform:translateX(100%)}

.btn-full{width:100%}

.btn-ghost{
  display:inline-flex;align-items:center;justify-content:center;
  padding:.85rem 2.2rem;
  font-family:var(--font-display);font-size:.8rem;font-weight:700;
  text-transform:uppercase;letter-spacing:.1em;
  color:var(--text-dim);
  background:transparent;
  border:1.5px solid var(--border);border-radius:60px;
  cursor:pointer;
  transition:transform .35s var(--ease),color .35s var(--ease),border-color .35s var(--ease),box-shadow .35s var(--ease),background .35s var(--ease);
}

.btn-ghost:hover{
  color:var(--text);border-color:var(--magenta);
  box-shadow:0 0 24px rgba(232,54,143,.12);
  transform:translateY(-2px);
}

/* =============================================
   SECTIONS
   ============================================= */
.section{padding:7rem 0;position:relative}

.section--alt{background:var(--bg-alt)}

.section--tickets{
  background:
    radial-gradient(ellipse at 25% 80%,rgba(151,71,255,.08) 0%,transparent 50%),
    radial-gradient(ellipse at 75% 20%,rgba(232,54,143,.06) 0%,transparent 50%),
    var(--bg);
}

.section--newsletter{
  background:linear-gradient(135deg,#0e0228 0%,#1e0a40 50%,#0e0228 100%);
  overflow:hidden;
}

.section-divider-top{
  position:absolute;top:-1px;left:0;right:0;
  color:var(--bg);
  line-height:0;
}

.section-divider-top svg{width:100%;height:40px}

/* Section header */
.section-header{text-align:center;margin-bottom:3.5rem}

.section-tag{
  display:inline-block;
  font-family:var(--font-display);
  font-size:.68rem;font-weight:600;
  letter-spacing:.25em;text-transform:uppercase;
  color:var(--coral);
  margin-bottom:.6rem;
}

.section-heading{
  font-family:var(--font-display);
  font-size:clamp(2rem,6vw,3.8rem);
  font-weight:800;text-transform:uppercase;
  letter-spacing:-.01em;line-height:1;
}

/* =============================================
   AFFICHE SHOWCASE
   ============================================= */
.section--showcase{
  background:
    radial-gradient(ellipse at 30% 50%,rgba(232,54,143,.06) 0%,transparent 60%),
    radial-gradient(ellipse at 70% 50%,rgba(151,71,255,.05) 0%,transparent 60%),
    var(--bg);
  overflow:hidden;
}

.showcase-layout{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:5rem;
  align-items:center;
}

/* Poster with 3D tilt, frame, glow */
.showcase-poster{
  display:flex;flex-direction:column;align-items:center;
  perspective:1000px;
}

.poster-frame{
  position:relative;
  border-radius:20px;
  overflow:hidden;
  transform:rotateY(-4deg) rotateX(2deg);
  transition:transform .6s var(--ease),box-shadow .6s var(--ease);
  box-shadow:
    0 30px 80px rgba(0,0,0,.5),
    0 0 60px rgba(232,54,143,.1),
    -20px 0 60px rgba(151,71,255,.08);
}

.poster-frame:hover{
  transform:rotateY(0deg) rotateX(0deg) scale(1.02);
  box-shadow:
    0 40px 100px rgba(0,0,0,.6),
    0 0 80px rgba(232,54,143,.18),
    0 0 120px rgba(151,71,255,.08);
}

.poster-frame img{
  display:block;width:100%;height:auto;
  max-height:600px;
  object-fit:cover;
}

/* Shine overlay on hover */
.poster-shine{
  position:absolute;inset:0;
  background:linear-gradient(
    105deg,
    transparent 40%,
    rgba(255,255,255,.06) 45%,
    rgba(255,255,255,.12) 50%,
    rgba(255,255,255,.06) 55%,
    transparent 60%
  );
  transform:translateX(-100%);
  transition:transform .8s var(--ease);
  pointer-events:none;
}

.poster-frame:hover .poster-shine{
  transform:translateX(100%);
}

/* Soft blurred reflection under the poster */
.poster-shadow{
  width:80%;height:40px;
  margin:-10px auto 0;
  background:radial-gradient(ellipse,rgba(232,54,143,.15),rgba(151,71,255,.08),transparent 70%);
  filter:blur(12px);
  border-radius:50%;
}

/* Text side */
.showcase-text{
  display:flex;flex-direction:column;
  align-items:flex-start;
}

.showcase-title{
  font-family:var(--font-display);
  font-size:clamp(2rem,4.5vw,3.6rem);
  font-weight:800;
  line-height:1.05;
  text-transform:uppercase;
  letter-spacing:-.01em;
  margin:.5rem 0 1.4rem;
}

.showcase-desc{
  font-size:1rem;line-height:1.7;
  color:var(--text-dim);
  max-width:400px;
  margin-bottom:2rem;
}

.showcase-stats{
  display:flex;gap:2.5rem;
  margin-bottom:2.5rem;
}

.stat{
  display:flex;flex-direction:column;
  align-items:center;
}

.stat-number{
  font-family:var(--font-display);
  font-size:2.6rem;font-weight:800;
  line-height:1;
  background:var(--grad-fire);
  -webkit-background-clip:text;
  -webkit-text-fill-color:transparent;
  background-clip:text;
}

.stat-label{
  font-size:.72rem;font-weight:600;
  letter-spacing:.1em;text-transform:uppercase;
  color:var(--text-muted);
  margin-top:.3rem;
}

/* Responsive showcase */
@media(max-width:960px){
  .showcase-layout{
    grid-template-columns:1fr;
    gap:3rem;
    text-align:center;
  }
  .showcase-text{align-items:center}
  .showcase-desc{margin-left:auto;margin-right:auto}
  .showcase-stats{justify-content:center}
  .poster-frame{transform:rotateY(0) rotateX(0)}
}

@media(max-width:640px){
  .poster-frame img{max-height:450px}
  .showcase-stats{gap:1.5rem}
  .stat-number{font-size:2rem}
}

/* =============================================
   LINEUP — Festival poster style
   ============================================= */
.lineup-poster{
  text-align:center;
  padding:3rem 1rem;
  border:1px solid var(--border);
  border-radius:24px;
  background:
    radial-gradient(ellipse at 50% 0%,rgba(255,106,61,.06) 0%,transparent 60%),
    var(--surface);
  position:relative;
  overflow:hidden;
}

.lineup-poster::before{
  content:'';position:absolute;inset:0;
  background:url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23ffffff' fill-opacity='0.02'%3E%3Ccircle cx='30' cy='30' r='1'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
}

.lineup-headliners{
  display:flex;flex-wrap:wrap;
  justify-content:center;gap:1rem 2.5rem;
  margin-bottom:2rem;
}

.lineup-name{
  font-family:var(--font-display);
  font-weight:800;text-transform:uppercase;
  transition:color .3s,text-shadow .3s,transform .3s;
  cursor:pointer;letter-spacing:.02em;
  white-space:nowrap;
}

.lineup-name:hover{
  color:var(--coral);
  text-shadow:0 0 40px rgba(255,106,61,.35);
  transform:scale(1.05);
}

.lineup-xl{font-size:clamp(1.8rem,5vw,3.4rem);line-height:1.15}
.lineup-xl.lineup-xl--long{font-size:clamp(1.3rem,3.8vw,2.6rem);letter-spacing:0}
.lineup-lg{font-size:clamp(1.4rem,3.5vw,2.2rem)}
.lineup-md{font-size:clamp(1.1rem,2.5vw,1.6rem);color:var(--text-dim)}
.lineup-sm{font-size:clamp(.9rem,2vw,1.2rem);color:var(--text-muted)}

.lineup-row{
  display:flex;flex-wrap:wrap;
  justify-content:center;align-items:center;
  gap:.8rem 2rem;
  margin-bottom:1.4rem;
}

.lineup-dot{
  width:4px;height:4px;border-radius:50%;
  background:var(--coral);opacity:.5;
  flex-shrink:0;
}

.lineup-note{
  text-align:center;
  font-family:var(--font-display);
  font-size:.8rem;font-weight:600;
  letter-spacing:.15em;text-transform:uppercase;
  color:var(--text-muted);
  margin-top:1.5rem;
}

/* =============================================
   NEWS
   ============================================= */
.news-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem;max-width:1100px;margin:0 auto}

.news-card{
  display:grid;grid-template-columns:100px 1fr;
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:16px;overflow:hidden;
  transition:transform .4s var(--ease),border-color .4s,box-shadow .4s;
}

.news-card:hover{
  transform:translateY(-6px);
  border-color:var(--border-hover);
  box-shadow:0 20px 50px rgba(0,0,0,.25);
}

.news-card-visual{
  display:flex;align-items:center;justify-content:center;
  background:var(--grad-sunset);
}

.news-card-number{
  font-family:var(--font-display);
  font-size:2.4rem;font-weight:800;
  color:rgba(255,255,255,.2);
}

.news-card-body{padding:1.6rem}

.news-card-date{
  font-size:.7rem;font-weight:600;
  letter-spacing:.08em;text-transform:uppercase;
  color:var(--coral);
}

.news-card-title{
  font-family:var(--font-display);
  font-size:1.05rem;font-weight:700;
  margin:.5rem 0;line-height:1.35;
}

.news-card-excerpt{
  font-size:.85rem;color:var(--text-dim);
  line-height:1.6;margin-bottom:1rem;
}

.news-card-link{
  font-family:var(--font-display);
  font-size:.75rem;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;
  color:var(--coral);
  transition:color .3s var(--ease),letter-spacing .3s var(--ease);
}
.news-card-link:hover{color:var(--magenta);letter-spacing:.14em}

/* =============================================
   INFO BLOCKS
   ============================================= */
.info-row{
  display:grid;grid-template-columns:repeat(3,1fr);
  gap:1.5rem;max-width:1100px;margin:0 auto;
}

.info-block{
  padding:2.5rem 2rem;
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:20px;
  transition:transform .4s var(--ease),border-color .4s,box-shadow .4s;
  position:relative;overflow:hidden;
}

.info-block:hover{
  transform:translateY(-6px);
  border-color:var(--cyan);
  box-shadow:0 0 40px rgba(0,212,255,.06);
}

.info-number{
  font-family:var(--font-display);
  font-size:3.5rem;font-weight:800;
  color:rgba(255,255,255,.04);
  position:absolute;top:.5rem;right:1.2rem;
  line-height:1;
}

.info-title{
  font-family:var(--font-display);
  font-size:1.1rem;font-weight:700;
  text-transform:uppercase;letter-spacing:.06em;
  margin-bottom:.8rem;
}

.info-text{
  color:var(--text-dim);font-size:.9rem;line-height:1.65;
}

/* =============================================
   TICKETS
   ============================================= */
.tickets-row{
  display:grid;grid-template-columns:repeat(3,1fr);
  gap:1.5rem;align-items:start;
}

.ticket{
  background:
    radial-gradient(ellipse at 50% 0%,rgba(255,255,255,.03) 0%,transparent 60%),
    var(--surface);
  border:1px solid var(--border);
  border-radius:24px;
  padding:2.8rem 1.5rem 1.8rem;
  text-align:center;
  position:relative;
  overflow:visible;
  transition:transform .5s var(--ease),border-color .4s,box-shadow .5s;
}

.ticket:hover{
  transform:translateY(-10px);
  border-color:var(--border-hover);
  box-shadow:0 28px 70px rgba(0,0,0,.35),0 0 40px rgba(232,54,143,.06);
}

/* Icon circle at top */
.ticket-icon-wrap{
  width:56px;height:56px;
  margin:0 auto 1.2rem;
  display:flex;align-items:center;justify-content:center;
  border-radius:50%;
  background:rgba(255,255,255,.03);
  border:1px solid var(--border);
  transition:transform .4s var(--ease),box-shadow .4s,border-color .4s;
}
.ticket:hover .ticket-icon-wrap{
  transform:scale(1.1) translateY(-3px);
  box-shadow:0 0 20px rgba(255,106,61,.15);
  border-color:rgba(255,106,61,.2);
}
.ticket-icon-wrap--featured{
  border-color:rgba(255,190,11,.15);
  background:rgba(255,190,11,.04);
}
.ticket:hover .ticket-icon-wrap--featured{
  box-shadow:0 0 20px rgba(255,190,11,.2);
  border-color:rgba(255,190,11,.3);
}
.ticket-icon-wrap--vip{
  border-color:rgba(0,212,255,.15);
  background:rgba(0,212,255,.04);
}
.ticket:hover .ticket-icon-wrap--vip{
  box-shadow:0 0 20px rgba(0,212,255,.2);
  border-color:rgba(0,212,255,.3);
}

/* Featured ticket */
.ticket--featured{
  border-color:rgba(232,54,143,.2);
  background:
    radial-gradient(ellipse at 50% 0%,rgba(255,190,11,.04) 0%,transparent 50%),
    linear-gradient(135deg,rgba(151,71,255,.04),rgba(232,54,143,.04)),
    var(--surface);
  transform:scale(1.04);
}
.ticket--featured:hover{
  transform:scale(1.04) translateY(-10px);
  box-shadow:0 28px 70px rgba(0,0,0,.4),0 0 60px rgba(232,54,143,.1);
}

/* VIP ticket */
.ticket--vip{
  border-color:rgba(0,212,255,.15);
  background:
    radial-gradient(ellipse at 50% 0%,rgba(0,212,255,.04) 0%,transparent 50%),
    var(--surface);
}
.ticket--vip:hover{
  border-color:rgba(0,212,255,.3);
  box-shadow:0 28px 70px rgba(0,0,0,.35),0 0 50px rgba(0,212,255,.08);
}

/* Popular badge */
.ticket-popular{
  position:absolute;top:-12px;left:50%;transform:translateX(-50%);
  font-family:var(--font-display);font-size:.62rem;font-weight:700;
  letter-spacing:.15em;text-transform:uppercase;
  background:var(--grad-fire);color:var(--text);
  padding:.4rem 1.4rem;border-radius:40px;
  box-shadow:0 4px 18px rgba(255,106,61,.3);
  display:flex;align-items:center;gap:.3rem;
  white-space:nowrap;
}

/* VIP badge */
.ticket-vip-badge{
  position:absolute;top:1rem;right:1rem;
  font-family:var(--font-display);
  font-size:.55rem;font-weight:800;
  letter-spacing:.2em;
  color:var(--cyan);
  padding:.3rem .7rem;
  border:1px solid rgba(0,212,255,.25);
  border-radius:6px;
  background:rgba(0,212,255,.06);
}

.ticket-type{
  font-family:var(--font-display);
  font-size:.9rem;font-weight:700;
  letter-spacing:.12em;text-transform:uppercase;
  color:var(--text);margin-bottom:.2rem;
}

.ticket-subtitle{
  font-family:var(--font-body);
  font-size:.75rem;
  color:var(--text-muted);
  margin-bottom:1rem;
}

.ticket-price{
  font-family:var(--font-display);
  font-size:clamp(2rem,3.5vw,2.8rem);font-weight:800;
  line-height:1;margin-bottom:.6rem;
  color:var(--coral);
  background:var(--grad-fire);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
  position:relative;
  width:fit-content;
  margin-left:auto;margin-right:auto;
}

.ticket--vip .ticket-price{
  background:linear-gradient(135deg,var(--cyan),var(--violet));
  -webkit-background-clip:text;
  background-clip:text;
}

.ticket-currency{
  font-size:.85rem;font-weight:600;
  margin-right:.15rem;
  -webkit-text-fill-color:var(--text-muted);
}

/* Save badge */
.ticket-save{
  font-family:var(--font-display);
  font-size:.62rem;font-weight:700;
  letter-spacing:.1em;text-transform:uppercase;
  color:var(--gold);
  background:rgba(255,190,11,.08);
  border:1px solid rgba(255,190,11,.15);
  display:inline-block;
  padding:.25rem .8rem;
  border-radius:20px;
  margin-bottom:1.2rem;
}

.ticket-perks{margin-bottom:1.5rem}
.ticket-perks li{
  display:flex;align-items:center;gap:.5rem;
  padding:.5rem 0;color:var(--text-dim);
  font-size:.82rem;text-align:left;line-height:1.4;
  border-bottom:1px solid rgba(255,255,255,.04);
}
.ticket-perks li:last-child{border:none}
.ticket-perks li svg{flex-shrink:0}

/* Remaining / urgency */
.ticket-remaining{
  display:flex;align-items:center;justify-content:center;gap:.4rem;
  font-family:var(--font-display);
  font-size:.6rem;font-weight:600;
  letter-spacing:.08em;text-transform:uppercase;
  color:var(--text-muted);
  margin-top:1rem;
  padding-top:.8rem;
  border-top:1px solid var(--border);
}
.ticket-remaining-dot{
  width:6px;height:6px;
  border-radius:50%;
  background:var(--text-muted);
  animation:remainDot 2s ease-in-out infinite;
}
.ticket-remaining--hot{
  color:var(--coral);
}
.ticket-remaining-dot--hot{
  background:var(--coral);
  box-shadow:0 0 8px rgba(255,106,61,.6);
}
@keyframes remainDot{
  0%,100%{opacity:1}
  50%{opacity:.3}
}

/* VIP button style */
.btn-vip{
  background:linear-gradient(135deg,var(--cyan),var(--violet),var(--magenta));
  background-size:200% auto;
  box-shadow:0 4px 24px rgba(0,212,255,.25);
}
.btn-vip:hover{
  box-shadow:0 8px 36px rgba(0,212,255,.4);
}

/* Guarantee badges */
.ticket-guarantees{
  display:flex;
  justify-content:center;
  gap:2rem;
  margin-top:3rem;
  flex-wrap:wrap;
}
.ticket-guarantee{
  display:flex;align-items:center;gap:.5rem;
  font-family:var(--font-display);
  font-size:.65rem;font-weight:600;
  letter-spacing:.08em;text-transform:uppercase;
  color:var(--text-muted);
  padding:.6rem 1rem;
  background:rgba(255,255,255,.02);
  border:1px solid var(--border);
  border-radius:40px;
  transition:border-color .3s,color .3s;
}
.ticket-guarantee:hover{
  border-color:rgba(255,190,11,.2);
  color:var(--text-dim);
}

/* =============================================
   GALLERY
   ============================================= */
.gallery{
  display:grid;
  grid-template-columns:2fr 1fr;
  gap:1rem;
  height:420px;
}

.gallery-hero{
  border-radius:16px;overflow:hidden;
  position:relative;
}
.gallery-hero img{
  width:100%;height:100%;object-fit:cover;
  transition:transform .6s var(--ease);
}
.gallery-hero:hover img{transform:scale(1.05)}

.gallery-side{
  display:flex;flex-direction:column;gap:1rem;
}

.gallery-thumb{
  flex:1;border-radius:12px;overflow:hidden;
  position:relative;
}
.gallery-thumb img{width:100%;height:100%;object-fit:cover}

.gallery-thumb--grad{
  background:linear-gradient(135deg,var(--magenta),var(--coral),var(--gold));
}
.gallery-thumb--grad2{
  background:linear-gradient(135deg,var(--violet),var(--cyan));
}

/* =============================================
   PARTNERS
   ============================================= */
.partners{
  display:flex;flex-wrap:wrap;justify-content:center;
  gap:1.2rem;
}

.partner-slot{
  padding:1.2rem 2rem;
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:12px;
  font-family:var(--font-display);
  font-size:.8rem;font-weight:600;
  letter-spacing:.05em;text-transform:uppercase;
  color:var(--text-muted);
  transition:color .35s var(--ease),border-color .35s var(--ease),transform .35s var(--ease),box-shadow .35s var(--ease);
}
.partner-slot:hover{
  color:var(--text);border-color:var(--border-hover);
  transform:translateY(-3px);
  box-shadow:0 8px 24px rgba(0,0,0,.2);
}

/* =============================================
   NEWSLETTER
   ============================================= */
.newsletter-desc{
  text-align:center;color:var(--text-dim);
  font-size:1rem;margin-bottom:2rem;
}

.newsletter-form{
  display:flex;gap:.75rem;max-width:480px;
  margin:0 auto 1rem;
}

.newsletter-input{
  flex:1;padding:.9rem 1.4rem;
  background:rgba(255,255,255,.05);
  border:1px solid var(--border);border-radius:50px;
  color:var(--text);font-family:var(--font-body);font-size:.9rem;
  transition:border-color .3s,box-shadow .3s;
}
.newsletter-input::placeholder{color:var(--text-muted)}
.newsletter-input:focus{
  outline:none;border-color:var(--magenta);
  box-shadow:0 0 16px rgba(232,54,143,.1);
}

.newsletter-legal{
  text-align:center;font-size:.72rem;
  color:var(--text-muted);margin-bottom:2rem;
}
.newsletter-legal a{color:var(--coral);text-decoration:underline}

.socials{display:flex;justify-content:center;gap:1.6rem}

.social{
  color:var(--text-muted);
  transition:color .3s,transform .3s var(--ease);
}
.social:hover{
  color:var(--magenta);
  transform:translateY(-3px) scale(1.12);
}

/* =============================================
   FAQ
   ============================================= */
.faq-list{display:flex;flex-direction:column;gap:0}

.faq{border-bottom:1px solid var(--border)}

.faq-q{
  display:flex;justify-content:space-between;align-items:center;
  padding:1.4rem 0;cursor:pointer;
  font-family:var(--font-display);
  font-size:.9rem;font-weight:600;
  text-transform:uppercase;letter-spacing:.04em;
  color:var(--text-dim);
  list-style:none;
  transition:color .3s;
}
.faq-q::-webkit-details-marker{display:none}
.faq-q:hover{color:var(--text)}

.faq-icon{
  width:24px;height:24px;
  border:1.5px solid var(--border);border-radius:50%;
  position:relative;flex-shrink:0;
  transition:border-color .3s,transform .35s var(--ease);
}
.faq-icon::before,.faq-icon::after{
  content:'';position:absolute;
  top:50%;left:50%;
  background:var(--coral);border-radius:1px;
  transition:transform .3s var(--ease);
}
.faq-icon::before{width:10px;height:1.5px;transform:translate(-50%,-50%)}
.faq-icon::after{width:1.5px;height:10px;transform:translate(-50%,-50%)}

.faq[open] .faq-icon{border-color:var(--magenta);transform:rotate(45deg)}
.faq[open] .faq-q{color:var(--text)}

.faq-a{
  padding:0 0 1.4rem;
  color:var(--text-dim);font-size:.9rem;line-height:1.7;
  animation:faqOpen .35s var(--ease);
}

@keyframes faqOpen{
  from{opacity:0;transform:translateY(-8px)}
  to{opacity:1;transform:none}
}

/* =============================================
   CONTACT
   ============================================= */
.contact-layout{
  display:grid;grid-template-columns:1fr 1.2fr;
  gap:4rem;align-items:start;
}
.contact-layout--simple{
  grid-template-columns:1fr;
  max-width:560px;margin:0 auto;
}
.contact-cta{margin-top:1.6rem;align-self:flex-start}
.contact-layout--simple .contact-info{display:flex;flex-direction:column;width:100%}

.contact-line{
  display:flex;justify-content:space-between;
  padding:1rem 0;
  border-bottom:1px solid var(--border);
  font-size:.9rem;
}
.contact-line strong{color:var(--text);font-weight:600}
.contact-line span{color:var(--text-dim)}

.contact-form{display:flex;flex-direction:column;gap:.8rem}

.contact-form input,.contact-form textarea{
  padding:1rem 1.4rem;
  background:var(--surface);
  border:1px solid var(--border);border-radius:14px;
  color:var(--text);font-family:var(--font-body);
  font-size:.9rem;resize:vertical;
  transition:border-color .3s,box-shadow .3s;
}
.contact-form input::placeholder,.contact-form textarea::placeholder{color:var(--text-muted)}
.contact-form input:focus,.contact-form textarea:focus{
  outline:none;border-color:var(--cyan);
  box-shadow:0 0 16px rgba(0,212,255,.06);
}

/* =============================================
   FOOTER
   ============================================= */
.site-footer{
  background:#04000a;padding:4rem 0 2rem;
  position:relative;
}
.site-footer::before{
  content:'';position:absolute;top:0;left:0;right:0;height:1px;
  background:linear-gradient(90deg,transparent,var(--magenta),var(--coral),var(--gold),transparent);
  opacity:.2;
}

.footer-top{
  display:grid;grid-template-columns:2fr 1fr 1fr 1fr;
  gap:2.5rem;
  padding-bottom:2.5rem;margin-bottom:2rem;
  border-bottom:1px solid var(--border);
}

.footer-logo{
  height:80px;width:auto;margin-bottom:.8rem;
  filter:drop-shadow(0 0 18px rgba(232,54,143,.35));
}

.footer-brand p{font-size:.82rem;color:var(--text-muted)}

.footer-col{display:flex;flex-direction:column;gap:.4rem}
.footer-col h4{
  font-family:var(--font-display);
  font-size:.68rem;font-weight:700;
  letter-spacing:.15em;text-transform:uppercase;
  color:var(--text-dim);margin-bottom:.5rem;
}
.footer-col a{
  font-size:.82rem;color:var(--text-muted);
  transition:color .3s,padding-left .3s;
}
.footer-col a:hover{color:var(--coral);padding-left:3px}

.footer-bottom{text-align:center;font-size:.72rem;color:var(--text-muted)}

/* =============================================
   ANIMATIONS
   ============================================= */

/* Hero reveal sequence */
.reveal{
  opacity:0;transform:translateY(32px);
  transition:opacity .8s var(--ease),transform .8s var(--ease);
}
.reveal.visible{opacity:1;transform:none}

/* Scroll reveal */
.scroll-reveal{
  opacity:0;transform:translateY(40px);
  transition:opacity .9s var(--ease),transform .9s var(--ease);
}
.scroll-reveal.in-view{opacity:1;transform:none}

/* =============================================
   RESPONSIVE
   ============================================= */
@media(max-width:960px){
  .header-nav{display:none}
  .menu-toggle{display:flex}
  .gallery{height:320px}
  .contact-layout{grid-template-columns:1fr;gap:2.5rem}
  .footer-top{grid-template-columns:1fr 1fr}
  .lineup-xl{font-size:clamp(1.5rem,4.5vw,2.6rem)}
  .tickets-row{grid-template-columns:1fr 1fr;max-width:700px;margin:0 auto}
  .tickets-row .ticket:last-child{grid-column:1 / -1;max-width:380px;justify-self:center}
  .ticket--featured{transform:none}
  .ticket--featured:hover{transform:translateY(-8px)}
}

@media(max-width:640px){
  .container{padding:0 1.2rem}
  .section{padding:5rem 0}
  .hero-divider{width:40px;height:1px}
  .hero-date-block,.hero-venue{align-items:center}
  .tickets-row{grid-template-columns:1fr;max-width:420px;margin:0 auto}
  .ticket--featured{transform:none}
  .ticket--featured:hover{transform:translateY(-8px)}
  .news-card{grid-template-columns:1fr}
  .news-card-visual{height:60px}
  .footer-top{grid-template-columns:1fr;gap:1.5rem}
  .lineup-headliners{gap:.5rem 1.2rem}
}

/* =============================================
   ENHANCED ANIMATIONS & DESIGN V2
   ============================================= */

/* --- Hero particles --- */
.hero-particles{
  position:absolute;inset:0;
  pointer-events:none;z-index:1;overflow:hidden;
}
.hero-particle{
  position:absolute;
  border-radius:50%;
  animation:particleRise var(--dur,8s) linear var(--delay,0s) infinite;
}
@media(max-width:640px){
  .hero-particle{animation-duration:calc(var(--dur,8s) * 1.5)}
}
@keyframes particleRise{
  0%{transform:translateY(0) scale(1);opacity:0}
  8%{opacity:1}
  85%{opacity:.5}
  100%{transform:translateY(-110vh) scale(.2);opacity:0}
}

/* --- Scroll reveal directional variants --- */
.scroll-reveal--left{
  opacity:0;transform:translateX(-60px);
  transition:opacity .9s var(--ease),transform .9s var(--ease);
}
.scroll-reveal--left.in-view{opacity:1;transform:none}

.scroll-reveal--right{
  opacity:0;transform:translateX(60px);
  transition:opacity .9s var(--ease),transform .9s var(--ease);
}
.scroll-reveal--right.in-view{opacity:1;transform:none}

.scroll-reveal--scale{
  opacity:0;transform:scale(.88) translateY(16px);
  transition:opacity .8s var(--ease),transform .8s var(--ease);
}
.scroll-reveal--scale.in-view{opacity:1;transform:scale(1) translateY(0)}

/* --- Stagger delays via data attribute --- */
[data-stagger="1"]{transition-delay:.07s!important}
[data-stagger="2"]{transition-delay:.16s!important}
[data-stagger="3"]{transition-delay:.25s!important}
[data-stagger="4"]{transition-delay:.34s!important}
[data-stagger="5"]{transition-delay:.43s!important}
[data-stagger="6"]{transition-delay:.52s!important}

/* --- Section heading animated underline --- */
.section-heading::after{
  content:'';display:block;
  height:3px;width:48px;
  margin:.45rem auto 0;
  background:var(--grad-fire);
  border-radius:2px;
  transform:scaleX(0);transform-origin:center;
  transition:transform .8s .3s var(--ease);
}
.scroll-reveal.in-view .section-heading::after,
.scroll-reveal--left.in-view .section-heading::after,
.scroll-reveal--right.in-view .section-heading::after{
  transform:scaleX(1)
}

/* --- Featured ticket pulse glow --- */
@keyframes ticketGlow{
  0%,100%{box-shadow:0 0 30px rgba(232,54,143,.06),inset 0 0 0 transparent}
  50%{box-shadow:0 0 55px rgba(232,54,143,.22),0 0 100px rgba(151,71,255,.1)}
}
.ticket--featured{
  animation:ticketGlow 3.5s ease-in-out infinite;
}
.ticket--featured:hover{animation-play-state:paused}

/* --- Info block cursor radial glow --- */
.info-block::after{
  content:'';
  position:absolute;inset:0;
  border-radius:20px;
  background:radial-gradient(circle 120px at var(--mx,50%) var(--my,50%),rgba(0,212,255,.07),transparent 70%);
  opacity:0;
  transition:opacity .4s;
  pointer-events:none;
}
.info-block:hover::after{opacity:1}

/* --- Enhanced ticker --- */
.hero-lineup-ticker{
  border-color:rgba(255,255,255,.15);
  padding:.8rem 0;
}
.ticker-content{
  color:rgba(255,255,255,.65);
  font-size:.78rem;
  letter-spacing:.2em;
}

/* --- Mobile nav date info --- */
.mobile-nav-info{
  margin-top:2.5rem;
  text-align:center;
  opacity:0;transform:translateY(20px);
  transition:opacity .5s .5s var(--ease),transform .5s .5s var(--ease);
}
.mobile-nav.open .mobile-nav-info{opacity:1;transform:none}
.mobile-nav-info-date{
  font-family:var(--font-display);
  font-size:1.1rem;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;
  color:var(--gold);
  margin-bottom:.3rem;
}
.mobile-nav-info-place{
  font-size:.75rem;font-weight:500;
  letter-spacing:.1em;text-transform:uppercase;
  color:var(--text-muted);
}

/* --- Section tag pulse --- */
@keyframes tagPulse{
  0%,100%{opacity:1}
  50%{opacity:.7}
}
.section-tag{
  animation:tagPulse 4s ease-in-out infinite;
}

/* (Button shimmer on load removed — was conflicting with the hover btnShimmer keyframes
   defined later, causing the hero billetterie button to slide off-screen on load.
   The hover shimmer at line ~2710 is the only shimmer kept.) */

/* =============================================
   MOBILE IMPROVEMENTS V2
   ============================================= */
@media(max-width:960px){
  :root{--header-h:84px}
  .site-header.sticky .header-inner{height:64px}
  .hero-logo{width:clamp(160px,40vw,230px)}
  .info-block{padding:2rem 1.5rem}
}

@media(max-width:640px){
  :root{--header-h:70px}
  .site-header.sticky .header-inner{height:56px}
  .section{padding:4.5rem 0}
  .section-heading{font-size:clamp(1.7rem,7.5vw,2.6rem)}

  /* Hero mobile */
  .hero-content{padding:0 1.2rem;padding-top:1rem;width:100%;box-sizing:border-box}
  .hero-title{overflow:hidden;width:100%}
  .hero-logo{
    width:clamp(130px,46vw,190px);
    margin-bottom:1rem;
    filter:drop-shadow(0 0 20px rgba(232,54,143,.4)) drop-shadow(0 0 50px rgba(151,71,255,.2));
  }
  .hero-title-line{
    font-size:clamp(2rem,9vw,3.2rem);
  }
  .hero-meta{
    background:rgba(0,0,0,.2);
    backdrop-filter:blur(12px);
    -webkit-backdrop-filter:blur(12px);
    border:1px solid rgba(255,255,255,.08);
    margin-bottom:1.2rem;
    margin-left:auto;margin-right:auto;
  }
  .hero-day{font-size:1.9rem}
  .hero-month{font-size:.7rem}
  .hero-venue{font-size:.76rem}

  .hero-lineup-ticker{
    max-width:100%;
    margin-bottom:1.4rem;
    padding:.6rem 0;
  }
  .ticker-content{font-size:.72rem}

  .hero-actions{
    flex-direction:column;
    gap:.65rem;
    width:100%;
    max-width:290px;
    margin-left:auto;margin-right:auto;
  }
  .hero-actions .btn-primary,
  .hero-actions .btn-ghost{
    width:100%;
    justify-content:center;
    padding:.85rem 1.4rem;
    font-size:.78rem;
  }

  /* Scroll reveal on mobile — reduce translate distance */
  .scroll-reveal{transform:translateY(28px)}
  .scroll-reveal--left{transform:translateX(-32px)}
  .scroll-reveal--right{transform:translateX(32px)}

  /* Showcase mobile */
  .showcase-layout{gap:2rem}
  .showcase-title{font-size:clamp(1.6rem,6vw,2.2rem)}
  .showcase-desc{font-size:.88rem}
  .showcase-stats{gap:2rem}
  .stat-number{font-size:2.2rem}

  /* Lineup mobile */
  .lineup-poster{padding:2rem .5rem;text-align:center}
  .lineup-xl{font-size:clamp(1.4rem,6.5vw,2.2rem)}
  .lineup-xl--long{font-size:clamp(1.1rem,4.8vw,1.7rem)}
  .lineup-lg{font-size:clamp(1.15rem,5.5vw,1.7rem)}
  .lineup-md{font-size:clamp(.95rem,4vw,1.35rem)}
  .lineup-sm{font-size:clamp(.82rem,3vw,1.05rem)}
  .lineup-headliners{gap:.4rem 1rem;flex-direction:column;align-items:center}
  .lineup-row{gap:.4rem 1rem;margin-bottom:.8rem;justify-content:center;width:100%}
  .lineup-divider{width:80%;margin:.4rem auto}

  /* News mobile */
  .news-grid{gap:1rem}
  .news-card{border-radius:14px}
  .news-card-body{padding:1.2rem 1rem}
  .news-card-title{font-size:.95rem;line-height:1.3}
  .news-card-excerpt{font-size:.82rem}

  /* Info blocks mobile */
  .info-row{gap:1rem}
  .info-block{border-radius:16px;padding:1.6rem 1.3rem}
  .info-number{font-size:2.8rem}
  .info-title{font-size:1rem}
  .info-text{font-size:.85rem}

  /* Tickets mobile */
  .tickets-row{max-width:100%;gap:1rem}
  .ticket{padding:2rem 1.4rem 1.6rem;border-radius:20px}
  .ticket-icon-wrap{width:48px;height:48px}
  .ticket-icon-wrap svg{width:22px;height:22px}
  .ticket-guarantees{gap:1rem}
  .ticket-guarantee{font-size:.58rem;padding:.5rem .8rem}
  .ticket-perks li{font-size:.82rem;padding:.4rem 0}

  /* Newsletter mobile */
  .newsletter-form{flex-direction:column;gap:.6rem;padding:0 .5rem}
  .newsletter-input{border-radius:14px;text-align:center}
  .newsletter-form .btn-primary{width:100%;border-radius:14px}

  /* Contact mobile */
  .contact-layout{gap:2rem}
  .contact-line{flex-direction:column;gap:.2rem;padding:.8rem 0}
  .contact-form input,.contact-form textarea{font-size:.9rem}

  /* Footer mobile */
  .footer-top{gap:1.5rem}
  .footer-logo{height:40px}
  .site-footer{padding:2.5rem 0 1.5rem}
  .footer-bottom{font-size:.7rem;padding-top:.5rem}
}

@media(max-width:375px){
  .hero-logo{width:115px}
  .hero-title-line{font-size:clamp(1.8rem,9vw,2.4rem)}
  .hero-actions{max-width:260px}
  .section{padding:3.5rem 0}
  .header-logo-img{height:50px}
  .site-header.sticky .header-logo-img{height:38px}
}

/* =============================================
   VISUAL ENHANCEMENTS V3
   ============================================= */

/* ---- Logo sizes per breakpoint ---- */
@media(max-width:960px){
  .header-logo-img{height:82px}
  .site-header.sticky .header-logo-img{height:54px}
  .footer-logo{height:68px}
}
@media(max-width:640px){
  .header-logo-img{height:68px}
  .site-header.sticky .header-logo-img{height:48px}
  .footer-logo{height:56px}
}

/* ---- Announce bar ---- */
.announce-bar{
  height:34px;overflow:hidden;
  background:var(--grad-fire);
  display:flex;align-items:center;
  transition:height .45s var(--ease),opacity .45s var(--ease);
}
.site-header.sticky .announce-bar{height:0;opacity:0;pointer-events:none}

.announce-track{
  display:inline-flex;align-items:center;
  gap:1.2rem;white-space:nowrap;
  animation:ticker 28s linear infinite;
  font-family:var(--font-display);
  font-size:.65rem;font-weight:700;
  letter-spacing:.18em;text-transform:uppercase;
  color:rgba(8,0,18,.75);
  padding-left:2rem;
}
.announce-dot{
  width:4px;height:4px;border-radius:50%;
  background:rgba(8,0,18,.4);flex-shrink:0;
}

/* ---- Featured ticket animated gradient border ---- */
.ticket--featured{
  position:relative;
  isolation:isolate;
}
.ticket--featured::before{
  content:'';
  position:absolute;inset:-2px;
  border-radius:26px;
  background:linear-gradient(135deg,
    var(--magenta) 0%,
    var(--coral) 25%,
    var(--gold) 50%,
    var(--violet) 75%,
    var(--magenta) 100%
  );
  background-size:300% 300%;
  z-index:-1;
  animation:gradientBorder 4s ease infinite;
}
@keyframes gradientBorder{
  0%{background-position:0% 50%}
  50%{background-position:100% 50%}
  100%{background-position:0% 50%}
}

/* ---- Hero: second ticker reverse ---- */
.hero-lineup-ticker--reverse .ticker-track{
  animation:tickerReverse 26s linear infinite;
}
@keyframes tickerReverse{0%{transform:translateX(-50%)}100%{transform:translateX(0)}}
.hero-lineup-ticker--reverse .ticker-content{
  color:rgba(255,190,11,.55);
  font-size:.68rem;
}
.hero-lineup-ticker--reverse{
  margin-top:.4rem;
  margin-bottom:1.6rem;
  border-top:none;
  padding:.5rem 0;
}

/* ---- Hero date block enhanced ---- */
.hero-date-block{position:relative}
.hero-day{
  font-size:clamp(2.2rem,6vw,3.4rem);
  background:linear-gradient(135deg,var(--gold),var(--coral));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
  text-shadow:none;
}

/* ---- Lineup section atmosphere ---- */
.lineup-poster{
  background:
    radial-gradient(ellipse at 20% 50%,rgba(232,54,143,.07) 0%,transparent 55%),
    radial-gradient(ellipse at 80% 50%,rgba(151,71,255,.07) 0%,transparent 55%),
    radial-gradient(ellipse at 50% 0%,rgba(255,106,61,.05) 0%,transparent 50%),
    var(--surface);
}

/* Tier dividers between lineup rows */
.lineup-divider{
  width:100%;height:1px;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.08),transparent);
  margin:.8rem 0;
}

/* ---- Info blocks atmosphere ---- */
.section--infos-bg{
  background:
    radial-gradient(ellipse at 10% 50%,rgba(0,212,255,.04) 0%,transparent 50%),
    radial-gradient(ellipse at 90% 50%,rgba(151,71,255,.04) 0%,transparent 50%),
    var(--bg);
}

/* ---- Ticket section atmosphere ---- */
.section--tickets::before{
  content:'';
  position:absolute;top:0;left:50%;transform:translateX(-50%);
  width:1px;height:100%;
  background:linear-gradient(to bottom,transparent,rgba(232,54,143,.08),rgba(151,71,255,.06),transparent);
  pointer-events:none;
}

/* ---- Gallery + Hero pills: mobile ---- */
@media(max-width:640px){
  .gallery{
    display:flex;flex-direction:column;
    height:auto;gap:.7rem;
  }
  .gallery-hero{height:280px;border-radius:16px}
  .gallery-side{
    display:grid;
    grid-template-columns:1fr 1fr;
    height:120px;gap:.7rem;
  }
  .gallery-thumb{border-radius:12px}
  .hero-meta{flex-direction:row;gap:.6rem;flex-wrap:nowrap;padding:.7rem 1rem;border-radius:16px;width:auto}
  .hero-divider{display:block;width:1px;height:40px}
  .section-header{margin-bottom:2.5rem}
  .hero-lineup-ticker{border-radius:8px}
}

/* ---- Floating orbs in lineup section ---- */
.lineup-orb{
  position:absolute;border-radius:50%;
  filter:blur(50px);pointer-events:none;opacity:.08;
}
.lineup-orb--1{
  width:300px;height:300px;
  background:radial-gradient(circle,var(--magenta),transparent 70%);
  top:-60px;right:-80px;
  animation:glowFloat2 9s ease-in-out infinite alternate;
}
.lineup-orb--2{
  width:250px;height:250px;
  background:radial-gradient(circle,var(--gold),transparent 70%);
  bottom:-40px;left:-60px;
  animation:glowFloat1 11s ease-in-out infinite alternate;
}

/* ---- Newsletter section floating orbs ---- */
.section--newsletter::before{
  content:'';position:absolute;
  width:500px;height:500px;
  background:radial-gradient(circle,rgba(232,54,143,.08),transparent 65%);
  top:-100px;left:-100px;
  border-radius:50%;pointer-events:none;
}
.section--newsletter::after{
  content:'';position:absolute;
  width:400px;height:400px;
  background:radial-gradient(circle,rgba(151,71,255,.08),transparent 65%);
  bottom:-80px;right:-80px;
  border-radius:50%;pointer-events:none;
}

/* ---- Partner slots: better hover ---- */
.partner-slot{
  position:relative;overflow:hidden;
}
.partner-slot::after{
  content:'';
  position:absolute;inset:0;border-radius:12px;
  background:linear-gradient(135deg,rgba(255,106,61,.06),rgba(151,71,255,.04));
  opacity:0;transition:opacity .35s;
}
.partner-slot:hover::after{opacity:1}

/* ---- Social icons ---- */
.social svg{
  filter:drop-shadow(0 0 0 transparent);
  transition:filter .3s;
}
.social:hover svg{
  filter:drop-shadow(0 0 8px rgba(232,54,143,.5));
}

/* ---- Scroll cue enhanced ---- */
.scroll-cue svg rect{
  animation:scrollCueGlow 2s ease-in-out infinite alternate;
}
@keyframes scrollCueGlow{
  0%{stroke:rgba(255,255,255,.25)}
  100%{stroke:rgba(255,106,61,.6)}
}

/* ---- Mobile: hero ticker + hamburger ---- */
@media(max-width:640px){
  .hero-lineup-ticker{margin-bottom:1rem}
  .hero-lineup-ticker--reverse{margin-bottom:1.2rem}
  .menu-toggle{width:44px;height:44px;gap:7px}
  .menu-toggle span{height:2.5px;border-radius:2px}
}

/* ---- Better info-block top accent ---- */
.info-block::before{
  content:'';
  position:absolute;top:0;left:2rem;right:2rem;height:2px;
  background:linear-gradient(90deg,transparent,var(--cyan),transparent);
  opacity:0;border-radius:0 0 2px 2px;
  transition:opacity .4s;
}
.info-block:hover::before{opacity:1}

/* ---- Glowing dots on section dividers ---- */
.section-divider-top svg{
  filter:drop-shadow(0 0 8px rgba(232,54,143,.12));
}

/* =============================================
   WAVES SYSTEM — SECTION BACKGROUNDS
   ============================================= */

/* Waves live inside sections, scroll with page */
.sec-waves{
  position:absolute;inset:0;
  overflow:hidden;
  pointer-events:none;
  z-index:0;
}

/* Each wave: full-width container */
.sw{
  position:absolute;left:0;width:100%;
}
.sw--a{bottom:0}
.sw--b{bottom:0;opacity:.7}

/* Scroll direction variants */
.sw-inner{
  display:flex;width:200%;
  animation:swSlide 14s linear infinite;
}
.sw--rev .sw-inner{animation-direction:reverse}
.sw--slow .sw-inner{animation-duration:22s}

.sw-inner svg{
  flex:0 0 50%;height:auto;display:block;
}

@keyframes swSlide{
  from{transform:translateX(0)}
  to{transform:translateX(-50%)}
}
@keyframes wgSlide{
  from{transform:translateX(0)}
  to{transform:translateX(-50%)}
}

/* Sections with waves: must be position:relative so abs waves anchor correctly */
.hero,.section{position:relative}
.sec-waves{z-index:0}

/* Section content appears above its background waves */
.section>.container,
.section>.section-divider-top{
  position:relative;z-index:1;
}

/* Hero: content above hero-media (which is position:absolute) */
.hero>.hero-content,
.hero>.scroll-cue,
.hero>.wave-hero-bottom{
  position:relative;z-index:2;
}
/* hero-media keeps its own position:absolute but stays below content */
.hero>.hero-media{z-index:1}

/* Hero wave divider (bottom of hero) */
.wave-hero-bottom{
  position:absolute;bottom:-1px;left:0;right:0;
  z-index:3;pointer-events:none;line-height:0;
}
.wave-hero-bottom-inner{
  display:flex;width:200%;
  animation:wgSlide 10s linear infinite;
}
.wave-hero-bottom-inner svg{flex:0 0 50%;display:block}

/* Section wave dividers */
.wave-sep{
  position:relative;width:100%;
  pointer-events:none;line-height:0;overflow:hidden;
  z-index:2;
}
.wave-sep-inner{
  display:flex;width:200%;
}
.wave-sep-inner svg{flex:0 0 50%;display:block}

.wave-sep--slow .wave-sep-inner{animation:wgSlide 18s linear infinite}
.wave-sep--med .wave-sep-inner{animation:wgSlide 12s linear infinite}
.wave-sep--fast .wave-sep-inner{animation:wgSlide 8s linear infinite reverse}
.wave-sep--rev .wave-sep-inner{animation:wgSlide 15s linear infinite reverse}

/* =============================================
   MORE DESIGN — DESKTOP & MOBILE
   ============================================= */

/* ---- Hero: desktop — push content below header+announce, right sizes ---- */
@media(min-width:961px){
  /* Push hero flex centering below header (96px) + announce bar (34px) */
  .hero{
    padding-top:130px;
  }
  /* Title: large on desktop */
  .hero-title-line{font-size:clamp(3rem,6.5vw,6.5rem)}
}

/* ---- Buttons: relative + GPU layer for pseudo animations ---- */
.btn-primary,.btn-ghost{position:relative;backface-visibility:hidden}

/* ---- Section heading decoration ---- */
.section-header{position:relative}

/* ---- Lineup: headliner gradient text on hover ---- */
.lineup-xl.lineup-name:hover{
  background:var(--grad-fire);
  -webkit-background-clip:text;
  -webkit-text-fill-color:transparent;
  background-clip:text;
  color:unset;
  text-shadow:none;
  transform:scale(1.04);
}

/* ---- Ticket VIP special treatment ---- */
.ticket:last-child .ticket-type{
  background:var(--grad-neon);
  -webkit-background-clip:text;
  -webkit-text-fill-color:transparent;
  background-clip:text;
}

/* ---- News card left border accent ---- */
.news-card{
  border-left:3px solid transparent;
  transition:transform .4s var(--ease),border-color .4s,box-shadow .4s;
}
.news-card:hover{
  border-left-color:var(--coral);
}

/* ---- FAQ accent color on open ---- */
.faq[open]{
  background:rgba(232,54,143,.02);
  border-radius:4px;
}

/* (contact form focus: consolidated in V5 below) */

/* ---- Footer enhanced ---- */
.footer-col a{
  display:inline-flex;align-items:center;gap:.4rem;
}
.footer-col a::before{
  content:'';
  width:0;height:1px;
  background:var(--coral);
  transition:width .3s var(--ease);
}
.footer-col a:hover::before{width:8px}
.footer-col a:hover{padding-left:0}

/* ---- Hero: more dramatic on desktop ---- */
@media(min-width:961px){
  .hero-meta{
    gap:2rem;
    padding:1rem 2rem;
    background:rgba(0,0,0,.18);
    border-radius:100px;
    backdrop-filter:blur(16px);
    -webkit-backdrop-filter:blur(16px);
    border:1px solid rgba(255,255,255,.08);
    margin-bottom:1.6rem;
    width:fit-content;
    margin-left:auto;margin-right:auto;
  }
  .hero-day{font-size:clamp(2.2rem,3vw,3rem)}
  .hero-venue{font-size:.9rem}
  .hero-divider{height:52px}
  /* Tickers: constrain width on desktop */
  .hero-lineup-ticker{max-width:700px}
}

/* ---- Showcase section: extra flair desktop ---- */
@media(min-width:1024px){
  .showcase-stats{gap:3.5rem}
  .stat-number{font-size:3.2rem}
  .showcase-title{font-size:clamp(2.8rem,4vw,4.4rem)}
}

/* ---- Stronger section atmospheres ---- */
.section--alt{
  position:relative;
  background:
    radial-gradient(ellipse at 0% 0%,rgba(232,54,143,.04) 0%,transparent 50%),
    radial-gradient(ellipse at 100% 100%,rgba(151,71,255,.03) 0%,transparent 50%),
    var(--bg-alt);
}

/* ---- Hero badge: "BY SOLUNA EVENT" ---- */
.hero-organizer{
  display:inline-flex;align-items:center;gap:.6rem;
  font-family:var(--font-display);
  font-size:.7rem;font-weight:600;
  letter-spacing:.22em;text-transform:uppercase;
  color:var(--text-muted);
  margin-top:3rem;
  margin-bottom:1.4rem;
}
.hero-organizer-line{
  width:32px;height:1px;
  background:linear-gradient(to right,transparent,var(--coral));
}
.hero-organizer-line--r{
  background:linear-gradient(to left,transparent,var(--coral));
}

/* =============================================
   LINEUP DAY FILTER — Tabs + Tags + Legend
   ============================================= */

/* --- Tab bar --- */
.lineup-tabs{
  display:flex;justify-content:center;
  gap:.5rem;margin-bottom:.8rem;
  position:relative;
}

.lineup-tab{
  font-family:var(--font-display);
  font-size:.72rem;font-weight:700;
  letter-spacing:.1em;text-transform:uppercase;
  color:var(--text-muted);
  background:none;
  border:none;
  padding:.7rem 1.4rem;
  cursor:pointer;
  position:relative;
  display:flex;align-items:center;gap:.5rem;
  border-radius:8px;
  transition:color .35s var(--ease),background .35s;
}

.lineup-tab:hover{
  color:var(--text-dim);
  background:rgba(255,255,255,.03);
}

.lineup-tab.active{
  color:var(--text);
  background:rgba(255,255,255,.06);
}

/* Color dot in tab */
.lineup-tab-dot{
  width:8px;height:8px;border-radius:50%;
  flex-shrink:0;
}
.lineup-tab-dot--ven{
  background:var(--coral);
  box-shadow:0 0 8px rgba(255,106,61,.5);
}
.lineup-tab-dot--sam{
  background:var(--cyan);
  box-shadow:0 0 8px rgba(0,212,255,.5);
}

/* Count badge */
.lineup-tab-count{
  font-size:.58rem;font-weight:600;
  letter-spacing:.05em;
  color:var(--text-muted);
  background:rgba(255,255,255,.06);
  padding:.15rem .5rem;
  border-radius:20px;
  transition:color .3s var(--ease),background .3s var(--ease);
}
.lineup-tab.active .lineup-tab-count{
  color:var(--text);
  background:rgba(255,255,255,.1);
}

/* Animated bar under tabs */
.lineup-tab-bar{
  max-width:420px;margin:0 auto 2rem;
  padding:0 1rem;
}
.lineup-tab-bar-track{
  height:2px;
  background:rgba(255,255,255,.06);
  border-radius:2px;
  position:relative;
  overflow:hidden;
}
.lineup-tab-bar-fill{
  position:absolute;top:0;left:0;
  height:100%;width:33.33%;
  border-radius:2px;
  background:var(--grad-fire);
  transition:left .45s var(--ease),width .45s var(--ease),background .45s;
}
/* States set by JS via data-active on .lineup-tab-bar */
.lineup-tab-bar[data-active="all"] .lineup-tab-bar-fill{left:0;width:33.33%;background:var(--grad-fire)}
.lineup-tab-bar[data-active="vendredi"] .lineup-tab-bar-fill{left:33.33%;width:33.33%;background:var(--coral)}
.lineup-tab-bar[data-active="samedi"] .lineup-tab-bar-fill{left:66.66%;width:33.34%;background:var(--cyan)}

/* --- Day tags on artist names --- */
.lineup-day-tag{
  display:inline-block;
  font-family:var(--font-display);
  font-size:.5rem;font-weight:700;
  letter-spacing:.08em;
  padding:.15rem .4rem;
  border-radius:4px;
  margin-left:.5rem;
  vertical-align:middle;
  opacity:0;
  transform:scale(.7) translateY(-2px);
  transition:opacity .4s var(--ease),transform .4s var(--ease);
  pointer-events:none;
}

.lineup-day-tag--ven{
  background:rgba(255,106,61,.15);
  color:var(--coral);
  border:1px solid rgba(255,106,61,.25);
}
.lineup-day-tag--sam{
  background:rgba(0,212,255,.12);
  color:var(--cyan);
  border:1px solid rgba(0,212,255,.2);
}
.lineup-day-tag--both{
  background:rgba(255,190,11,.12);
  color:var(--gold);
  border:1px solid rgba(255,190,11,.2);
}

/* Show tags when filter active */
.lineup-poster.show-tags .lineup-day-tag{
  opacity:1;
  transform:scale(1) translateY(-2px);
}

/* Hide tags on hidden artists */
.lineup-name.lineup-hidden .lineup-day-tag{
  opacity:0 !important;
}

/* Headliner tags: slightly bigger */
.lineup-xl .lineup-day-tag{
  font-size:.55rem;
  padding:.2rem .5rem;
}

/* --- Artist hide/show --- */
.lineup-name[data-day]{
  transition:opacity .5s cubic-bezier(.22,1,.36,1),
             transform .5s cubic-bezier(.22,1,.36,1),
             color .3s,text-shadow .3s,filter .5s;
}

.lineup-name.lineup-hidden{
  opacity:.06 !important;
  transform:scale(.9) translateY(4px) !important;
  pointer-events:none;
  filter:grayscale(1) blur(1px);
}

/* Dots hide with artists */
.lineup-dot{
  transition:opacity .4s var(--ease);
}
.lineup-dot.dot-hidden{
  opacity:0;
}

/* --- Active day color tint on poster --- */
.lineup-poster.filter-ven{
  background:
    radial-gradient(ellipse at 50% 30%,rgba(255,106,61,.06) 0%,transparent 50%),
    radial-gradient(ellipse at 20% 50%,rgba(232,54,143,.07) 0%,transparent 55%),
    radial-gradient(ellipse at 80% 50%,rgba(151,71,255,.07) 0%,transparent 55%),
    var(--surface);
}
.lineup-poster.filter-sam{
  background:
    radial-gradient(ellipse at 50% 30%,rgba(0,212,255,.06) 0%,transparent 50%),
    radial-gradient(ellipse at 20% 50%,rgba(232,54,143,.07) 0%,transparent 55%),
    radial-gradient(ellipse at 80% 50%,rgba(151,71,255,.07) 0%,transparent 55%),
    var(--surface);
}

/* --- Legend --- */
.lineup-legend{
  display:flex;justify-content:center;
  gap:1.5rem;
  margin-top:1.5rem;
  flex-wrap:wrap;
}

.lineup-legend-item{
  display:flex;align-items:center;gap:.4rem;
  font-family:var(--font-display);
  font-size:.65rem;font-weight:600;
  letter-spacing:.08em;text-transform:uppercase;
  color:var(--text-muted);
}

.lineup-legend-dot{
  width:8px;height:8px;border-radius:50%;
  flex-shrink:0;
}
.lineup-legend-dot--ven{
  background:var(--coral);
  box-shadow:0 0 6px rgba(255,106,61,.5);
}
.lineup-legend-dot--sam{
  background:var(--cyan);
  box-shadow:0 0 6px rgba(0,212,255,.5);
}
.lineup-legend-dot--both{
  background:var(--gold);
  box-shadow:0 0 6px rgba(255,190,11,.5);
}

/* --- Responsive tabs --- */
@media(max-width:640px){
  .lineup-tabs{gap:.3rem}
  .lineup-tab{
    font-size:.62rem;
    padding:.55rem .8rem;
    gap:.35rem;
  }
  .lineup-tab-count{font-size:.52rem;padding:.1rem .35rem}
  .lineup-tab-dot{width:6px;height:6px}
  .lineup-tab-label{display:block}
  .lineup-legend{gap:1rem;margin-top:1.2rem}
  .lineup-legend-item{font-size:.58rem}
  .lineup-day-tag{font-size:.42rem;padding:.1rem .3rem;margin-left:.3rem}
  .lineup-xl .lineup-day-tag{font-size:.45rem;padding:.12rem .35rem}
}

/* =============================================
   MAP SECTION — Mapbox 3D
   ============================================= */
.section--map{
  background:
    radial-gradient(ellipse at 30% 80%,rgba(0,212,255,.05) 0%,transparent 50%),
    radial-gradient(ellipse at 70% 20%,rgba(151,71,255,.04) 0%,transparent 50%),
    var(--bg);
  overflow:hidden;
}

.map-layout{
  display:grid;
  grid-template-columns:1.4fr 1fr;
  gap:2.5rem;
  align-items:start;
  max-width:1080px;
  margin:0 auto;
}

/* Map card */
.map-card{
  position:relative;
  border-radius:20px;
  overflow:hidden;
  border:1px solid var(--border);
  box-shadow:
    0 24px 60px rgba(0,0,0,.4),
    0 0 40px rgba(0,212,255,.04);
  transition:transform .5s var(--ease),box-shadow .5s;
}

.map-card:hover{
  transform:translateY(-4px);
  box-shadow:
    0 32px 80px rgba(0,0,0,.5),
    0 0 50px rgba(0,212,255,.08);
}

/* Mapbox container */
.map-container{
  width:100%;
  height:460px;
}

/* Gradient overlays on edges to blend with site */
.map-overlay-top{
  position:absolute;top:0;left:0;right:0;height:40px;
  background:linear-gradient(to bottom,var(--bg),transparent);
  pointer-events:none;z-index:2;
}
.map-overlay-bottom{
  position:absolute;bottom:0;left:0;right:0;height:40px;
  background:linear-gradient(to top,var(--bg),transparent);
  pointer-events:none;z-index:2;
}

/* Custom marker — large, precise, visible */
.mapbox-marker{
  display:flex;flex-direction:column;align-items:center;
  cursor:pointer;
  text-decoration:none;
  transition:transform .3s var(--ease);
  position:relative;
}
.mapbox-marker:hover{
  transform:scale(1.06);
}

/* Vertical beam of light */
.marker-beam{
  position:absolute;
  bottom:58px;left:50%;
  width:2px;height:120px;
  margin-left:-1px;
  background:linear-gradient(to top,rgba(255,190,11,.6),rgba(255,106,61,.2),transparent);
  pointer-events:none;
  animation:beamPulse 3s ease-in-out infinite;
}
@keyframes beamPulse{
  0%,100%{opacity:.8;height:120px}
  50%{opacity:.4;height:150px}
}

/* Pulsing rings on ground */
.marker-ring{
  position:absolute;
  bottom:-6px;left:50%;
  border-radius:50%;
  border:2px solid;
  transform:translateX(-50%) scale(.3);
  opacity:0;
  pointer-events:none;
}
.marker-ring--1{
  width:60px;height:60px;
  border-color:rgba(255,190,11,.5);
  animation:ringPulse 2.5s ease-out infinite;
}
.marker-ring--2{
  width:90px;height:90px;
  border-color:rgba(255,106,61,.35);
  animation:ringPulse 2.5s ease-out .6s infinite;
}
.marker-ring--3{
  width:120px;height:120px;
  border-color:rgba(232,54,143,.2);
  animation:ringPulse 2.5s ease-out 1.2s infinite;
}
@keyframes ringPulse{
  0%{transform:translateX(-50%) scale(.3);opacity:.8}
  100%{transform:translateX(-50%) scale(1);opacity:0}
}

/* SVG pin pointer */
.marker-pointer{
  position:relative;
  z-index:2;
  filter:drop-shadow(0 4px 16px rgba(255,106,61,.5)) drop-shadow(0 0 30px rgba(232,54,143,.3));
  animation:markerBounce 3s ease-in-out infinite;
}
@keyframes markerBounce{
  0%,100%{transform:translateY(0)}
  50%{transform:translateY(-6px)}
}

/* Label below marker */
.mapbox-marker-label{
  margin-top:6px;
  padding:.5rem 1rem;
  background:rgba(8,0,18,.92);
  backdrop-filter:blur(16px);
  -webkit-backdrop-filter:blur(16px);
  border:1px solid rgba(255,190,11,.25);
  border-radius:10px;
  text-align:center;
  white-space:nowrap;
  box-shadow:0 8px 30px rgba(0,0,0,.6),0 0 20px rgba(255,190,11,.08);
  transition:border-color .3s,box-shadow .3s,transform .3s;
  z-index:2;
}
.mapbox-marker:hover .mapbox-marker-label{
  border-color:var(--gold);
  box-shadow:0 8px 30px rgba(0,0,0,.6),0 0 30px rgba(255,190,11,.15);
  transform:translateY(-2px);
}

.mapbox-marker-label strong{
  display:block;
  font-family:var(--font-display);
  font-size:.72rem;font-weight:700;
  letter-spacing:.1em;
  color:var(--gold);
}

.marker-address{
  display:block;
  font-family:var(--font-body);
  font-size:.6rem;
  color:var(--text-dim);
  letter-spacing:.04em;
  margin:.15rem 0;
}

.mapbox-marker-label small{
  font-family:var(--font-body);
  font-size:.55rem;
  color:var(--coral);
  letter-spacing:.04em;
  transition:color .3s;
}
.mapbox-marker:hover .mapbox-marker-label small{
  color:var(--gold);
}

/* Hide mapbox default UI elements for cleaner look */
.mapboxgl-ctrl-attrib{display:none!important}
.mapboxgl-ctrl-logo{opacity:.4!important}

/* Right side: detail cards */
.map-details{
  display:flex;flex-direction:column;
  gap:1rem;
}

.map-detail-card{
  display:flex;align-items:flex-start;gap:1rem;
  padding:1.4rem 1.5rem;
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:16px;
  transition:transform .4s var(--ease),border-color .4s,box-shadow .4s;
  position:relative;overflow:hidden;
}

.map-detail-card:hover{
  transform:translateY(-4px) translateX(4px);
  border-color:var(--border-hover);
  box-shadow:0 12px 36px rgba(0,0,0,.25);
}

.map-detail-icon{
  flex-shrink:0;
  width:40px;height:40px;
  display:flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,.04);
  border-radius:10px;
  border:1px solid var(--border);
}

.map-detail-title{
  font-family:var(--font-display);
  font-size:.72rem;font-weight:700;
  letter-spacing:.1em;text-transform:uppercase;
  color:var(--text);
  margin-bottom:.3rem;
}

.map-detail-text{
  font-size:.82rem;
  color:var(--text-dim);
  line-height:1.5;
}

/* Map responsive */
@media(max-width:960px){
  .map-layout{
    grid-template-columns:1fr;
    gap:2rem;
  }
  .map-card{max-width:600px;margin:0 auto;width:100%}
  .map-container{height:380px}
  .map-details{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:1rem;
  }
}

@media(max-width:640px){
  .map-container{height:300px}
  .map-details{grid-template-columns:1fr}
  .map-detail-card{padding:1.1rem 1.2rem}
  .marker-pointer svg{width:34px;height:46px}
  .marker-beam{height:80px;bottom:46px}
  .marker-ring--1{width:45px;height:45px}
  .marker-ring--2{width:65px;height:65px}
  .marker-ring--3{width:85px;height:85px}
  .mapbox-marker-label{padding:.35rem .7rem}
  .mapbox-marker-label strong{font-size:.6rem}
  .marker-address{font-size:.52rem}
  .mapbox-marker-label small{font-size:.48rem}
}

/* =============================================
   DESIGN IMPROVEMENTS V4
   ============================================= */

/* ---- Glowing cursor trail on hero ---- */
.hero::after{
  content:'';
  position:absolute;inset:0;
  background:radial-gradient(circle 300px at var(--hero-mx,50%) var(--hero-my,50%),
    rgba(232,54,143,.06),transparent 70%);
  pointer-events:none;z-index:1;
  opacity:0;
  transition:opacity .6s;
}
.hero:hover::after{opacity:1}

/* ---- Section heading text glow ---- */
.section-heading{
  text-shadow:0 0 60px rgba(232,54,143,.08);
}

/* ---- Ticket card glass shine (moved to inset shadow for no pseudo conflict) ---- */
.ticket{
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04);
}

/* ---- News card image shimmer ---- */
.news-card-visual{
  position:relative;overflow:hidden;
}
.news-card-visual::after{
  content:'';
  position:absolute;inset:0;
  background:linear-gradient(105deg,transparent 40%,rgba(255,255,255,.06) 50%,transparent 60%);
  transform:translateX(-100%);
  transition:transform .7s var(--ease);
}
.news-card:hover .news-card-visual::after{
  transform:translateX(100%);
}

/* ---- FAQ hover slide ---- */
.faq summary{
  transition:color .3s,padding-left .3s;
}
.faq:hover summary{
  padding-left:.5rem;
}

/* ---- Footer gradient line animated ---- */
.site-footer::before{
  background-size:200% 100%;
  animation:footerLine 8s linear infinite;
}
@keyframes footerLine{
  0%{background-position:0% 0}
  100%{background-position:200% 0}
}

/* ---- Gallery image overlay glow ---- */
.gallery-hero::after{
  content:'';
  position:absolute;inset:0;
  background:linear-gradient(135deg,rgba(232,54,143,.1),transparent 50%,rgba(151,71,255,.08));
  opacity:0;
  transition:opacity .5s;
  pointer-events:none;
}
.gallery-hero:hover::after{opacity:1}

/* ---- Contact form submit button glow ---- */
.contact-form .btn-primary{
  width:fit-content;
  align-self:flex-end;
}

/* ---- Smoother scroll-reveal timings ---- */
.scroll-reveal,.scroll-reveal--left,.scroll-reveal--right,.scroll-reveal--scale{
  transition-timing-function:cubic-bezier(.22,1,.36,1);
  will-change:auto; /* avoid compositing overhead after animation */
}

/* ---- Partner slots sequential float ---- */
.partner-slot:nth-child(odd){animation:partnerFloat 4s ease-in-out infinite}
.partner-slot:nth-child(even){animation:partnerFloat 4s ease-in-out infinite .5s}

@keyframes partnerFloat{
  0%,100%{transform:translateY(0)}
  50%{transform:translateY(-4px)}
}
.partner-slot:hover{animation-play-state:paused}

/* ---- Newsletter input glow ring ---- */
.newsletter-input:focus{
  border-color:var(--gold);
  box-shadow:0 0 0 3px rgba(255,190,11,.1),0 0 20px rgba(255,190,11,.06);
}

/* =============================================
   DESIGN IMPROVEMENTS V5
   ============================================= */

/* ---- Back to top button ---- */
.back-to-top{
  position:fixed;
  bottom:2rem;right:2rem;
  width:48px;height:48px;
  display:flex;align-items:center;justify-content:center;
  background:rgba(14,6,32,.85);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  border:1px solid var(--border);
  border-radius:50%;
  color:var(--text);
  text-decoration:none;
  opacity:0;
  visibility:hidden;
  transform:translateY(20px) scale(.8);
  transition:opacity .4s var(--ease),visibility .4s,transform .4s var(--ease),
    border-color .3s,box-shadow .3s,background .3s;
  z-index:900;
  cursor:pointer;
}
.back-to-top.visible{
  opacity:1;visibility:visible;
  transform:translateY(0) scale(1);
}
.back-to-top:hover{
  border-color:var(--magenta);
  background:rgba(232,54,143,.12);
  box-shadow:0 0 24px rgba(232,54,143,.2),0 8px 20px rgba(0,0,0,.3);
  transform:translateY(-3px) scale(1.08);
  color:var(--gold);
}
.back-to-top:active{transform:translateY(0) scale(.95)}
.back-to-top svg{transition:transform .3s}
.back-to-top:hover svg{transform:translateY(-2px)}

/* ---- Custom text selection ---- */
::selection{
  background:rgba(232,54,143,.3);
  color:#fff;
}
::-moz-selection{
  background:rgba(232,54,143,.3);
  color:#fff;
}

/* ---- Custom scrollbar ---- */
::-webkit-scrollbar{width:8px}
::-webkit-scrollbar-track{background:var(--bg)}
::-webkit-scrollbar-thumb{
  background:linear-gradient(180deg,var(--violet),var(--magenta));
  border-radius:4px;
}
::-webkit-scrollbar-thumb:hover{
  background:linear-gradient(180deg,var(--magenta),var(--coral));
}

/* (section position:relative — already set on .section) */

/* (ticket hover: handled by JS tilt + original CSS hover) */

/* ---- CTA button shimmer ---- */
.btn-primary{
  position:relative;overflow:hidden;
}
.btn-primary::before{
  content:'';
  position:absolute;top:0;left:-100%;
  width:60%;height:100%;
  background:linear-gradient(105deg,transparent 30%,rgba(255,255,255,.12) 50%,transparent 70%);
  transition:none;
  pointer-events:none;
}
.btn-primary:hover::before{
  animation:btnShimmer .7s ease forwards;
}
@keyframes btnShimmer{
  0%{left:-100%}
  100%{left:150%}
}

/* ---- Info block icon pulse ---- */
.info-icon{
  transition:transform .4s var(--ease),box-shadow .4s;
}
.info-block:hover .info-icon{
  transform:scale(1.1);
  box-shadow:0 0 20px rgba(232,54,143,.15);
}

/* (header transitions consolidated in base .site-header) */

/* (lineup-name transitions: consolidated in base + data-day selector) */

/* ---- FAQ details open animation ---- */
.faq[open] summary{
  color:var(--gold);
}
.faq[open]{
  border-color:rgba(255,190,11,.15);
}

/* (footer-col a: consolidated in V4 above) */

/* (gallery-hero: consolidated in V8) */

/* ---- Announce bar glow line ---- */
.announce-bar::after{
  content:'';
  position:absolute;bottom:0;left:0;right:0;
  height:1px;
  background:linear-gradient(90deg,transparent,var(--magenta),var(--gold),var(--magenta),transparent);
  opacity:.4;
}

/* ---- Nav link hover underline glow ---- */
.nav-link::after{
  content:'';
  position:absolute;bottom:-2px;left:50%;
  width:0;height:2px;
  background:linear-gradient(90deg,var(--magenta),var(--gold));
  border-radius:1px;
  transition:width .35s var(--ease),left .35s var(--ease);
}
.nav-link:hover::after,.nav-link.active::after{
  width:100%;left:0;
}

/* (map-card hover: consolidated in V7 below) */

/* ---- Showcase poster shine sweep ---- */
.poster-frame::after{
  content:'';
  position:absolute;inset:0;
  background:linear-gradient(115deg,transparent 20%,rgba(255,255,255,.04) 40%,transparent 60%);
  pointer-events:none;
  border-radius:inherit;
}

/* ---- Mobile nav enhanced ---- */
.mobile-nav.open .mobile-link{
  animation:mobileSlideIn .4s var(--ease) backwards;
}
.mobile-link:nth-child(1){animation-delay:.05s}
.mobile-link:nth-child(2){animation-delay:.1s}
.mobile-link:nth-child(3){animation-delay:.15s}
.mobile-link:nth-child(4){animation-delay:.2s}
.mobile-link:nth-child(5){animation-delay:.25s}
.mobile-link:nth-child(6){animation-delay:.3s}
.mobile-link:nth-child(7){animation-delay:.35s}

@keyframes mobileSlideIn{
  from{opacity:0;transform:translateX(-20px)}
  to{opacity:1;transform:translateX(0)}
}

/* ---- News date accent ---- */
.news-card:hover .news-card-date{
  color:var(--gold);
}

/* ---- Section heading hover shimmer ---- */
.section-heading{
  transition:text-shadow .5s;
}
.section-heading:hover{
  text-shadow:0 0 40px rgba(232,54,143,.15),0 0 80px rgba(151,71,255,.08);
}

/* ---- Back to top responsive ---- */
@media(max-width:640px){
  .back-to-top{
    bottom:1.2rem;right:1.2rem;
    width:42px;height:42px;
  }
}

/* ---- Lineup poster enhanced glow on filter ---- */
#lineupPoster.filter-ven{
  box-shadow:0 0 80px rgba(255,106,61,.06),0 20px 60px rgba(0,0,0,.3);
}
#lineupPoster.filter-sam{
  box-shadow:0 0 80px rgba(0,212,255,.06),0 20px 60px rgba(0,0,0,.3);
}

/* ---- Contact form inputs focus glow ---- */
.contact-form input:focus,
.contact-form textarea:focus{
  border-color:var(--magenta);
  box-shadow:0 0 0 3px rgba(232,54,143,.08),0 0 20px rgba(232,54,143,.04);
  outline:none;
}

/* ---- Stat number color pulse ---- */
.stat-number{
  transition:color .3s;
}
.showcase-stats:hover .stat-number{
  text-shadow:0 0 20px currentColor;
}

/* =============================================
   DESIGN IMPROVEMENTS V6 — Aurora & Atmosphere
   ============================================= */

/* ---- Animated Aurora Background ---- */
.aurora{
  position:fixed;inset:0;z-index:-1;
  overflow:hidden;
  pointer-events:none;
}

.aurora-blob{
  position:absolute;
  border-radius:50%;
  filter:blur(80px);
  opacity:.06;
}

.aurora-blob--1{
  width:60vw;height:60vw;
  max-width:800px;max-height:800px;
  background:radial-gradient(circle,var(--magenta),transparent 70%);
  top:-20%;left:-15%;
  animation:auroraMove1 25s ease-in-out infinite alternate;
}
.aurora-blob--2{
  width:50vw;height:50vw;
  max-width:700px;max-height:700px;
  background:radial-gradient(circle,var(--violet),transparent 70%);
  bottom:-10%;right:-10%;
  animation:auroraMove2 30s ease-in-out infinite alternate;
}
.aurora-blob--3{
  width:40vw;height:40vw;
  max-width:600px;max-height:600px;
  background:radial-gradient(circle,var(--cyan),transparent 70%);
  top:40%;left:60%;
  animation:auroraMove3 20s ease-in-out infinite alternate;
}
.aurora-blob--4{
  width:35vw;height:35vw;
  max-width:500px;max-height:500px;
  background:radial-gradient(circle,var(--coral),transparent 70%);
  top:60%;left:20%;
  animation:auroraMove4 22s ease-in-out infinite alternate;
}

@keyframes auroraMove1{
  0%{transform:translate(0,0) scale(1)}
  33%{transform:translate(15vw,10vh) scale(1.2)}
  66%{transform:translate(-5vw,20vh) scale(.9)}
  100%{transform:translate(10vw,-5vh) scale(1.1)}
}
@keyframes auroraMove2{
  0%{transform:translate(0,0) scale(1)}
  33%{transform:translate(-10vw,-15vh) scale(1.15)}
  66%{transform:translate(8vw,-5vh) scale(.85)}
  100%{transform:translate(-15vw,10vh) scale(1.05)}
}
@keyframes auroraMove3{
  0%{transform:translate(0,0) scale(1)}
  50%{transform:translate(-20vw,15vh) scale(1.3)}
  100%{transform:translate(5vw,-10vh) scale(.9)}
}
@keyframes auroraMove4{
  0%{transform:translate(0,0) scale(1)}
  50%{transform:translate(12vw,-8vh) scale(1.1)}
  100%{transform:translate(-8vw,12vh) scale(1.2)}
}

/* ---- Ambient floating particles (site-wide) ---- */
.ambient-particles{
  position:fixed;inset:0;
  pointer-events:none;
  z-index:0;
  overflow:hidden;
}
.ambient-dot{
  position:absolute;
  border-radius:50%;
  opacity:0;
  animation:ambientFloat var(--a-dur,15s) var(--a-delay,0s) linear infinite;
}
@keyframes ambientFloat{
  0%{transform:translateY(0) translateX(0);opacity:0}
  5%{opacity:.6}
  50%{transform:translateY(calc(-50vh)) translateX(var(--a-drift,20px));opacity:.3}
  95%{opacity:0}
  100%{transform:translateY(-100vh) translateX(calc(var(--a-drift,20px) * -1));opacity:0}
}

/* ---- Section glass borders ---- */
.section--alt::before{
  content:'';
  position:absolute;top:0;left:0;right:0;
  height:1px;
  background:linear-gradient(90deg,transparent 5%,rgba(232,54,143,.12) 30%,rgba(0,212,255,.1) 70%,transparent 95%);
  pointer-events:none;
}

/* ---- Ticket card inner glow ---- */
.ticket{
  background:
    radial-gradient(ellipse at 50% 0%,rgba(255,255,255,.03) 0%,transparent 60%),
    var(--surface);
}

/* ---- Enhanced info block glassmorphism ---- */
.info-block{
  background:
    linear-gradient(135deg,rgba(255,255,255,.04),rgba(255,255,255,.01)),
    var(--surface);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
}

/* ---- Map detail card glassmorphism ---- */
.map-detail-card{
  background:
    linear-gradient(135deg,rgba(255,255,255,.04),rgba(255,255,255,.01)),
    var(--surface);
  backdrop-filter:blur(6px);
  -webkit-backdrop-filter:blur(6px);
}
.map-detail-card::before{
  content:'';
  position:absolute;top:0;left:1.5rem;right:1.5rem;
  height:1px;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.06),transparent);
}

/* ---- Animated gradient border on lineup poster ---- */
.lineup-poster{
  border:none;
  background-clip:padding-box;
  position:relative;
  isolation:isolate;
}
.lineup-poster::after{
  content:'';
  position:absolute;inset:-1px;
  border-radius:25px;
  background:linear-gradient(135deg,
    rgba(232,54,143,.15),
    rgba(151,71,255,.1),
    rgba(0,212,255,.08),
    rgba(255,190,11,.1),
    rgba(232,54,143,.15)
  );
  background-size:400% 400%;
  z-index:-1;
  animation:lineupBorderGlow 8s ease infinite;
  -webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);
  -webkit-mask-composite:xor;
  mask-composite:exclude;
  padding:1px;
  border-radius:25px;
}
@keyframes lineupBorderGlow{
  0%{background-position:0% 50%}
  50%{background-position:100% 50%}
  100%{background-position:0% 50%}
}

/* ---- Contact section glow orb ---- */
#contact{
  overflow:hidden;
}
#contact::after{
  content:'';
  position:absolute;
  width:400px;height:400px;
  background:radial-gradient(circle,rgba(0,212,255,.05),transparent 65%);
  top:50%;right:-100px;
  transform:translateY(-50%);
  border-radius:50%;
  pointer-events:none;
}

/* ---- FAQ section vertical line accent ---- */
.faq-list{
  position:relative;
}
.faq-list::before{
  content:'';
  position:absolute;left:0;top:0;bottom:0;
  width:2px;
  background:linear-gradient(to bottom,transparent,rgba(232,54,143,.15),rgba(255,190,11,.1),transparent);
  border-radius:2px;
}

/* ---- Gallery thumb hover effects ---- */
.gallery-thumb{
  transition:transform .5s var(--ease),box-shadow .5s;
}
.gallery-thumb:hover{
  transform:scale(1.04);
  box-shadow:0 12px 36px rgba(0,0,0,.3);
  z-index:2;
}

/* ---- News card gradient border on hover ---- */
.news-card::before{
  content:'';
  position:absolute;inset:-1px;
  border-radius:17px;
  background:linear-gradient(135deg,var(--coral),var(--magenta),var(--violet));
  z-index:-1;
  opacity:0;
  transition:opacity .5s var(--ease);
}
.news-card{
  position:relative;isolation:isolate;
}
.news-card:hover::before{
  opacity:1;
}

/* ---- Footer atmospheric glow ---- */
.footer-glow{
  position:absolute;
  top:-80px;left:50%;
  transform:translateX(-50%);
  width:400px;height:100px;
  background:radial-gradient(ellipse,rgba(232,54,143,.05),transparent 70%);
  filter:blur(30px);
  pointer-events:none;
}

/* ---- Showcase section: animated gradient accent ---- */
.section--showcase::before{
  content:'';
  position:absolute;
  top:0;left:0;right:0;height:2px;
  background:linear-gradient(90deg,transparent,var(--magenta),var(--gold),var(--coral),transparent);
  background-size:200% 100%;
  animation:showcaseLine 6s linear infinite;
  opacity:.3;
}
@keyframes showcaseLine{
  0%{background-position:0% 0}
  100%{background-position:200% 0}
}

/* ---- Newsletter form glass card ---- */
.newsletter-form{
  padding:1.5rem 2rem;
  background:rgba(255,255,255,.02);
  border:1px solid var(--border);
  border-radius:60px;
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  transition:border-color .4s,box-shadow .4s;
}
.newsletter-form:focus-within{
  border-color:rgba(255,190,11,.2);
  box-shadow:0 0 40px rgba(255,190,11,.04);
}

/* ---- Social icons: background circle on hover ---- */
.social{
  width:44px;height:44px;
  display:inline-flex;align-items:center;justify-content:center;
  border-radius:50%;
  border:1px solid transparent;
  transition:color .3s,transform .3s var(--ease),
    border-color .3s,background .3s,box-shadow .3s;
}
.social:hover{
  border-color:rgba(232,54,143,.25);
  background:rgba(232,54,143,.06);
  box-shadow:0 0 20px rgba(232,54,143,.1);
}

/* ---- Hero: enhanced scroll cue ---- */
.scroll-cue{
  animation:fadeInUp 1s .8s both,scrollCuePulse 3s 2s ease-in-out infinite;
}
@keyframes scrollCuePulse{
  0%,100%{opacity:.8;transform:translateX(-50%) translateY(0)}
  50%{opacity:.5;transform:translateX(-50%) translateY(6px)}
}

/* ---- Ticket perks stagger reveal ---- */
.ticket-perks li{
  transition:opacity .4s,transform .4s;
}
.ticket:hover .ticket-perks li:nth-child(1){transition-delay:.05s}
.ticket:hover .ticket-perks li:nth-child(2){transition-delay:.1s}
.ticket:hover .ticket-perks li:nth-child(3){transition-delay:.15s}

/* ---- Section tag: gradient underline ---- */
.section-tag{
  position:relative;
  padding-bottom:.3rem;
}
.section-tag::after{
  content:'';
  position:absolute;bottom:0;left:50%;
  width:24px;height:1px;
  transform:translateX(-50%);
  background:var(--coral);
  opacity:.5;
}

/* ---- Map section: floating compass orb ---- */
.section--map::before{
  content:'';
  position:absolute;
  width:300px;height:300px;
  background:radial-gradient(circle,rgba(0,212,255,.05),transparent 65%);
  top:-50px;right:-50px;
  border-radius:50%;
  pointer-events:none;
  animation:auroraMove3 18s ease-in-out infinite alternate;
}

/* ---- Showcase stat hover ---- */
.stat{
  padding:.6rem .8rem;
  border-radius:12px;
  transition:background .3s,transform .3s var(--ease);
}
.stat:hover{
  background:rgba(255,255,255,.03);
  transform:translateY(-3px);
}

/* ---- Mobile nav: glassmorphism background ---- */
@media(max-width:960px){
  .mobile-nav{
    background:rgba(8,0,18,.92);
    backdrop-filter:blur(40px) saturate(1.8);
    -webkit-backdrop-filter:blur(40px) saturate(1.8);
  }
  .mobile-nav::before{
    content:'';
    position:absolute;inset:0;
    background:
      radial-gradient(circle at 20% 30%,rgba(232,54,143,.06),transparent 50%),
      radial-gradient(circle at 80% 70%,rgba(151,71,255,.05),transparent 50%);
    pointer-events:none;
  }
}

/* ---- Mobile link: gradient on hover ---- */
.mobile-link:hover{
  background:linear-gradient(90deg,transparent,rgba(232,54,143,.06),transparent);
  -webkit-background-clip:text;
  -webkit-text-fill-color:transparent;
  background-clip:text;
  background:var(--grad-fire);
  -webkit-background-clip:text;
  background-clip:text;
}

/* ---- Ticket: floating shine stripe ---- */
.ticket::before{
  content:'';
  position:absolute;top:0;left:-50%;
  width:50%;height:100%;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.02),transparent);
  transform:skewX(-15deg);
  transition:left .8s var(--ease);
  pointer-events:none;
}
.ticket:hover::before{
  left:120%;
}

/* ---- Footer bottom: copyright glow ---- */
.footer-bottom p{
  background:linear-gradient(90deg,var(--text-muted),rgba(232,54,143,.4),var(--text-muted));
  background-size:200% auto;
  -webkit-background-clip:text;
  -webkit-text-fill-color:transparent;
  background-clip:text;
  animation:footerCopyright 8s linear infinite;
}
@keyframes footerCopyright{
  0%{background-position:0% center}
  100%{background-position:200% center}
}

/* ---- Gallery gradient thumbs: animated ---- */
.gallery-thumb--grad{
  background-size:200% 200%;
  animation:galleryGrad1 6s ease-in-out infinite alternate;
}
.gallery-thumb--grad2{
  background-size:200% 200%;
  animation:galleryGrad2 8s ease-in-out infinite alternate;
}
@keyframes galleryGrad1{
  0%{background-position:0% 0%}
  100%{background-position:100% 100%}
}
@keyframes galleryGrad2{
  0%{background-position:100% 0%}
  100%{background-position:0% 100%}
}

/* (partner counter removed — never displayed) */

/* wave separators — no filter for perf */

/* ---- Responsive V6 — Performance ---- */
@media(max-width:640px){
  /* Kill expensive effects on mobile */
  .aurora-blob{filter:blur(50px);opacity:.04}
  .lineup-orb{display:none}
  .poster-shadow{display:none}
  .wave-sep svg path{filter:none}
  .newsletter-form{padding:1rem 1rem;border-radius:20px;flex-direction:column}
  .newsletter-form .btn-primary{width:100%;border-radius:14px}
  .faq-list::before{display:none}
  .footer-glow{width:200px;height:60px;filter:blur(40px)}
  /* Slower wave animations = less GPU work */
  .sw-inner,.wave-sep-inner,.wave-hero-bottom-inner{animation-duration:40s}
  /* Reduce hero glow blur on mobile */
  .hero-bg-glow{filter:blur(40px);opacity:.2}
  /* Remove backdrop-filter on mobile (very expensive) */
  .site-header.sticky{backdrop-filter:none;-webkit-backdrop-filter:none;background:rgba(8,0,18,.97)}
  .hero-meta{backdrop-filter:none;-webkit-backdrop-filter:none;background:rgba(0,0,0,.35)}
}

@media(max-width:375px){
  .aurora-blob{opacity:.03}
}

/* =============================================
   DESIGN IMPROVEMENTS V7 — Countdown, Progress, Features
   ============================================= */

/* ---- Scroll progress bar ---- */
.scroll-progress-track{
  position:fixed;top:0;left:0;right:0;
  height:3px;
  z-index:9998;
  background:rgba(255,255,255,.03);
}
.scroll-progress-bar{
  height:100%;
  width:0%;
  background:linear-gradient(90deg,var(--gold),var(--coral),var(--magenta),var(--violet));
  background-size:300% 100%;
  animation:progressGradient 4s linear infinite;
  border-radius:0 2px 2px 0;
  transition:width .15s linear;
  box-shadow:0 0 10px rgba(255,106,61,.4),0 0 20px rgba(232,54,143,.2);
}
@keyframes progressGradient{
  0%{background-position:0% 0}
  100%{background-position:300% 0}
}

/* ---- Countdown timer ---- */
.countdown{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:.3rem;
  margin-bottom:1.8rem;
}

.countdown-block{
  display:flex;flex-direction:column;align-items:center;
  min-width:60px;
  padding:.6rem .5rem;
  background:rgba(0,0,0,.25);
  border:1px solid rgba(255,255,255,.08);
  border-radius:12px;
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
}

.countdown-num{
  font-family:var(--font-display);
  font-size:clamp(1.4rem,4vw,2rem);
  font-weight:800;
  line-height:1;
  background:var(--grad-fire);
  -webkit-background-clip:text;
  -webkit-text-fill-color:transparent;
  background-clip:text;
  letter-spacing:-.01em;
}

.countdown-label{
  font-family:var(--font-display);
  font-size:.52rem;
  font-weight:600;
  letter-spacing:.12em;
  text-transform:uppercase;
  color:var(--text-muted);
  margin-top:.25rem;
}

.countdown-sep{
  font-family:var(--font-display);
  font-size:1.4rem;
  font-weight:800;
  color:var(--text-muted);
  opacity:.4;
  margin:0 .1rem;
  animation:countdownBlink 1s step-end infinite;
}
@keyframes countdownBlink{
  0%,100%{opacity:.4}
  50%{opacity:.1}
}

.countdown-live{
  font-family:var(--font-display);
  font-size:1.6rem;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.15em;
  background:var(--grad-fire);
  -webkit-background-clip:text;
  -webkit-text-fill-color:transparent;
  background-clip:text;
  animation:shimmer 3s ease-in-out infinite alternate;
}

/* ---- Countdown responsive ---- */
@media(max-width:640px){
  .countdown{gap:.2rem}
  .countdown-block{
    min-width:48px;
    padding:.5rem .35rem;
    border-radius:10px;
  }
  .countdown-num{font-size:clamp(1.1rem,5vw,1.5rem)}
  .countdown-label{font-size:.45rem}
  .countdown-sep{font-size:1.1rem;margin:0 .05rem}
}

@media(max-width:375px){
  .countdown-block{min-width:42px;padding:.4rem .25rem}
  .countdown-num{font-size:1.1rem}
}

/* (ticket-price position:relative — already in original) */

/* ---- Section separator micro-glow dots ---- */
.lineup-divider{position:relative}
.lineup-divider::after{
  content:'';
  position:absolute;left:50%;top:50%;
  width:6px;height:6px;
  transform:translate(-50%,-50%);
  border-radius:50%;
  background:var(--coral);
  box-shadow:0 0 10px rgba(255,106,61,.4);
  opacity:.5;
}

/* ---- Enhanced map container border glow ---- */
.map-card{
  border:1px solid rgba(151,71,255,.15);
}
.map-card::before{
  content:'';
  position:absolute;inset:-1px;
  border-radius:21px;
  background:linear-gradient(135deg,
    rgba(151,71,255,.2),
    rgba(232,54,143,.15),
    rgba(0,212,255,.1),
    rgba(255,190,11,.15)
  );
  background-size:400% 400%;
  z-index:-1;
  animation:lineupBorderGlow 6s ease infinite;
  -webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);
  -webkit-mask-composite:xor;
  mask-composite:exclude;
  padding:1px;
  border-radius:21px;
  opacity:.6;
}

/* ---- Info blocks: number reveal animation ---- */
.info-number{
  transition:color .5s,opacity .5s;
}
.info-block:hover .info-number{
  color:rgba(232,54,143,.08);
  opacity:1;
}

/* ---- Gallery: "View" overlay text ---- */
.gallery-hero::before{
  content:'VOIR';
  position:absolute;
  top:50%;left:50%;
  transform:translate(-50%,-50%) scale(.8);
  font-family:var(--font-display);
  font-size:1rem;
  font-weight:800;
  letter-spacing:.3em;
  text-transform:uppercase;
  color:var(--text);
  opacity:0;
  z-index:3;
  transition:opacity .4s,transform .4s var(--ease);
  pointer-events:none;
  text-shadow:0 0 20px rgba(0,0,0,.8);
}
.gallery-hero:hover::before{
  opacity:1;
  transform:translate(-50%,-50%) scale(1);
}

/* ---- Partner slot shine sweep ---- */
.partner-slot::before{
  content:'';
  position:absolute;top:0;left:-100%;
  width:60%;height:100%;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.04),transparent);
  transform:skewX(-20deg);
  transition:left .6s var(--ease);
  pointer-events:none;
}
.partner-slot:hover::before{
  left:140%;
}

/* ---- News card: reading time badge ---- */
.news-card-link{
  position:relative;
  display:inline-flex;
  align-items:center;
  gap:.4rem;
}
.news-card-link::after{
  content:'';
  display:inline-block;
  width:0;height:1px;
  background:var(--magenta);
  transition:width .3s var(--ease);
}
.news-card-link:hover::after{
  width:16px;
}

/* ---- Enhanced contact info hover ---- */
.contact-line{
  transition:background .3s,padding-left .3s;
  border-radius:8px;
  padding-left:.5rem;
  padding-right:.5rem;
}
.contact-line:hover{
  background:rgba(255,255,255,.02);
  padding-left:1rem;
}

/* ---- Section number watermarks ---- */
#lineup::before{
  content:'01';
  position:absolute;top:3rem;right:2rem;
  font-family:var(--font-display);
  font-size:8rem;font-weight:800;
  color:rgba(255,255,255,.015);
  line-height:1;
  pointer-events:none;
}
#tickets::before{
  content:'02';
  position:absolute;top:3rem;left:2rem;
  font-family:var(--font-display);
  font-size:8rem;font-weight:800;
  color:rgba(255,255,255,.015);
  line-height:1;
  pointer-events:none;
}

/* Hide section numbers on mobile */
@media(max-width:640px){
  #lineup::before,#tickets::before{
    font-size:4rem;
    opacity:.5;
  }
}

/* =============================================
   DESIGN IMPROVEMENTS V8 — Preloader, Forms, Gallery, Polish
   ============================================= */

/* ---- Page loading state ---- */
body.is-loading{
  overflow:hidden;
}

/* ---- Preloader ---- */
.preloader{
  position:fixed;inset:0;z-index:99999;
  background:var(--bg);
  display:flex;align-items:center;justify-content:center;
  transition:opacity .6s var(--ease),visibility .6s;
}
.preloader.done{
  opacity:0;visibility:hidden;
  pointer-events:none;
}

.preloader-inner{
  display:flex;flex-direction:column;align-items:center;gap:1.5rem;
}

.preloader-logo{
  animation:preloaderPulse 1.5s ease-in-out infinite;
}
.preloader-logo img{
  width:100px;height:auto;
  filter:drop-shadow(0 0 30px rgba(232,54,143,.4)) drop-shadow(0 0 60px rgba(151,71,255,.2));
}

@keyframes preloaderPulse{
  0%,100%{transform:scale(1);opacity:1}
  50%{transform:scale(1.06);opacity:.7}
}

.preloader-bar{
  width:180px;height:3px;
  background:rgba(255,255,255,.08);
  border-radius:3px;
  overflow:hidden;
}
.preloader-bar-fill{
  height:100%;width:0%;
  background:var(--grad-fire);
  border-radius:3px;
  transition:width .3s var(--ease);
}

.preloader-text{
  font-family:var(--font-display);
  font-size:.6rem;font-weight:700;
  letter-spacing:.3em;
  color:var(--text-muted);
  animation:preloaderTextBlink 1s ease-in-out infinite;
}
@keyframes preloaderTextBlink{
  0%,100%{opacity:1}
  50%{opacity:.3}
}

/* ---- Page enter animation ---- */
body:not(.is-loading) .aurora,
body:not(.is-loading) .ambient-particles{
  animation:pageEnterFade .8s var(--ease) both;
}

@keyframes pageEnterFade{
  from{opacity:0}
  to{opacity:1}
}

/* ---- Gallery hover overlay ---- */
.gallery-overlay{
  position:absolute;inset:0;
  display:flex;align-items:center;justify-content:center;
  background:rgba(8,0,18,.6);
  backdrop-filter:blur(4px);
  -webkit-backdrop-filter:blur(4px);
  opacity:0;
  transition:opacity .4s var(--ease);
  pointer-events:none;
  z-index:3;
  border-radius:inherit;
}

.gallery-hero:hover .gallery-overlay,
.gallery-thumb:hover .gallery-overlay{
  opacity:1;
}

.gallery-overlay-text{
  font-family:var(--font-display);
  font-size:.9rem;font-weight:800;
  letter-spacing:.3em;text-transform:uppercase;
  color:var(--text);
  padding:.5rem 1.5rem;
  border:1.5px solid rgba(255,255,255,.25);
  border-radius:40px;
  transform:translateY(8px);
  transition:transform .4s var(--ease),border-color .4s;
}

.gallery-hero:hover .gallery-overlay-text,
.gallery-thumb:hover .gallery-overlay-text{
  transform:translateY(0);
}

.gallery-hero:hover .gallery-overlay-text{
  border-color:var(--gold);
}

/* Remove old ::before VOIR overlay since we now use .gallery-overlay */
.gallery-hero::before{
  display:none;
}

/* ---- News card cyan visual variant ---- */
.news-card-visual--cyan{
  background:linear-gradient(135deg,#0c1a3a,#0a2844,#00d4ff);
}

/* ---- Newsletter success message ---- */
.newsletter-success{
  display:flex;align-items:center;justify-content:center;
  gap:.6rem;
  padding:1rem;
  font-family:var(--font-display);
  font-size:.82rem;font-weight:600;
  letter-spacing:.06em;
  color:var(--gold);
  animation:successAppear .5s var(--ease) both;
}

@keyframes successAppear{
  from{opacity:0;transform:translateY(10px)}
  to{opacity:1;transform:none}
}

/* ---- Contact form group with validation icon ---- */
.form-group{
  position:relative;
}

.form-group input,
.form-group textarea{
  width:100%;
}

.form-valid-icon{
  position:absolute;
  right:1rem;top:50%;
  transform:translateY(-50%) scale(.6);
  opacity:0;
  transition:opacity .3s,transform .3s var(--ease);
  pointer-events:none;
}

.form-group input:valid:not(:placeholder-shown) ~ .form-valid-icon{
  opacity:1;
  transform:translateY(-50%) scale(1);
}

/* ---- Contact success ---- */
.contact-success{
  display:flex;align-items:center;justify-content:center;
  gap:.5rem;
  padding:1.2rem;
  font-family:var(--font-display);
  font-size:.85rem;font-weight:600;
  letter-spacing:.06em;
  color:var(--gold);
  background:rgba(255,190,11,.04);
  border:1px solid rgba(255,190,11,.15);
  border-radius:14px;
  margin-top:1rem;
  animation:successAppear .5s var(--ease) both;
}

/* ---- Form error state ---- */
.contact-error{
  padding:.9rem 1.1rem;
  font-family:var(--font-display);
  font-size:.8rem;font-weight:600;
  letter-spacing:.04em;
  color:var(--coral);
  background:rgba(255,106,61,.06);
  border:1px solid rgba(255,106,61,.25);
  border-radius:12px;
  margin-top:.8rem;
  text-align:center;
}
.newsletter-success.nl-error{
  color:var(--coral);
  background:rgba(255,106,61,.06);
  border-color:rgba(255,106,61,.2);
}

/* Submit button loading state */
button[type="submit"]:disabled{
  opacity:.6;
  cursor:wait;
}

/* ---- Info grid: better for 6 blocks ---- */
@media(max-width:960px){
  .info-row{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:640px){
  .info-row{grid-template-columns:1fr}
}

/* ---- Smooth hover on all interactive elements ---- */
a,button,.ticket,.news-card,.info-block,.partner-slot,.map-detail-card,.gallery-hero,.gallery-thumb{
  -webkit-tap-highlight-color:transparent;
}

/* ---- Enhanced focus visible styles for accessibility ---- */
:focus-visible{
  outline:2px solid var(--gold);
  outline-offset:3px;
}
input:focus-visible,
textarea:focus-visible{
  outline:2px solid var(--coral);
  outline-offset:2px;
}

/* ---- FAQ items stagger animation ---- */
.faq:nth-child(1){transition-delay:.05s}
.faq:nth-child(2){transition-delay:.1s}
.faq:nth-child(3){transition-delay:.15s}
.faq:nth-child(4){transition-delay:.2s}
.faq:nth-child(5){transition-delay:.25s}
.faq:nth-child(6){transition-delay:.3s}
.faq:nth-child(7){transition-delay:.35s}
.faq:nth-child(8){transition-delay:.4s}
.faq:nth-child(9){transition-delay:.45s}

/* ---- Gallery thumb position relative for overlay ---- */
.gallery-hero,
.gallery-thumb{
  position:relative;
  overflow:hidden;
  cursor:pointer;
  transition:transform .5s var(--ease),box-shadow .5s;
}
.gallery-hero:hover{
  transform:scale(1.03);
  box-shadow:0 16px 48px rgba(0,0,0,.4);
  z-index:2;
}

/* ---- Contact form inputs inside form-group ---- */
.form-group input{
  padding:1rem 1.4rem;
  background:var(--surface);
  border:1px solid var(--border);border-radius:14px;
  color:var(--text);font-family:var(--font-body);
  font-size:.9rem;
  transition:border-color .3s,box-shadow .3s;
}
.form-group input::placeholder{color:var(--text-muted)}
.form-group input:focus{
  outline:none;border-color:var(--magenta);
  box-shadow:0 0 0 3px rgba(232,54,143,.08),0 0 20px rgba(232,54,143,.04);
}

/* ---- Hover shimmer on stat blocks ---- */
.stat::after{
  content:'';
  position:absolute;inset:0;
  border-radius:12px;
  background:linear-gradient(105deg,transparent 40%,rgba(255,255,255,.04) 50%,transparent 60%);
  transform:translateX(-100%);
  transition:transform .6s var(--ease);
  pointer-events:none;
}
.stat{position:relative;overflow:hidden}
.stat:hover::after{transform:translateX(100%)}

/* ---- Better ticket grid on large screens ---- */
@media(min-width:1024px){
  .tickets-row{
    gap:2rem;
    max-width:1100px;
    margin:0 auto;
  }
}

/* ---- Improved news grid for 3 cards ---- */
@media(max-width:960px){
  .news-grid{grid-template-columns:repeat(2,1fr)}
  .news-grid .news-card:last-child{grid-column:1 / -1;max-width:500px;justify-self:center}
}
@media(max-width:640px){
  .news-grid{grid-template-columns:1fr}
  .news-grid .news-card:last-child{max-width:none;grid-column:auto}
}

/* =============================================
   DESIGN IMPROVEMENTS V9 — Cursor, Header, Lightbox, EQ, Scramble, CTA
   ============================================= */

/* ---- Smart Sticky Header (hide on scroll down) ---- */
.site-header.header-hidden{
  transform:translateY(-100%);
  pointer-events:none;
}
.site-header.header-hidden.sticky{
  box-shadow:none;
}

/* ---- Equalizer bars in hero ---- */
.hero-eq{
  display:flex;
  align-items:flex-end;
  justify-content:center;
  gap:3px;
  height:28px;
  margin-bottom:1rem;
  opacity:.45;
}

.eq-bar{
  width:3px;
  border-radius:2px;
  background:var(--grad-fire);
  will-change:height;
}

.eq-bar:nth-child(1){animation:eqBounce 1.2s ease-in-out infinite;height:10px}
.eq-bar:nth-child(2){animation:eqBounce 0.8s ease-in-out .1s infinite;height:18px}
.eq-bar:nth-child(3){animation:eqBounce 1.0s ease-in-out .2s infinite;height:24px}
.eq-bar:nth-child(4){animation:eqBounce 0.7s ease-in-out .05s infinite;height:28px}
.eq-bar:nth-child(5){animation:eqBounce 1.1s ease-in-out .15s infinite;height:22px}
.eq-bar:nth-child(6){animation:eqBounce 0.9s ease-in-out .25s infinite;height:16px}
.eq-bar:nth-child(7){animation:eqBounce 1.3s ease-in-out .08s infinite;height:12px}

@keyframes eqBounce{
  0%,100%{transform:scaleY(1)}
  25%{transform:scaleY(.3)}
  50%{transform:scaleY(.85)}
  75%{transform:scaleY(.5)}
}

/* ---- Floating CTA ---- */
.floating-cta{
  position:fixed;
  bottom:2rem;left:2rem;
  z-index:910;
  display:inline-flex;align-items:center;gap:.5rem;
  padding:.7rem 1.6rem;
  font-family:var(--font-display);
  font-size:.72rem;font-weight:700;
  letter-spacing:.12em;text-transform:uppercase;
  color:var(--text);
  background:var(--grad-fire);background-size:200% auto;
  border:none;border-radius:50px;
  text-decoration:none;
  box-shadow:0 6px 24px rgba(255,106,61,.35),0 0 40px rgba(232,54,143,.12);
  opacity:0;visibility:hidden;
  transform:translateY(20px) scale(.9);
  transition:opacity .4s var(--ease),visibility .4s,transform .4s var(--ease),
    box-shadow .3s,background-position .4s;
  cursor:pointer;
}

.floating-cta.visible{
  opacity:1;visibility:visible;
  transform:translateY(0) scale(1);
}

.floating-cta:hover{
  background-position:100% center;
  box-shadow:0 10px 36px rgba(255,106,61,.5),0 0 50px rgba(232,54,143,.18);
  transform:translateY(-2px) scale(1.04);
}

.floating-cta::before{
  content:'';
  position:absolute;inset:-2px;
  border-radius:52px;
  background:var(--grad-fire);
  opacity:0;filter:blur(12px);z-index:-1;
  transition:opacity .4s;
}
.floating-cta:hover::before{opacity:.5}

/* Pulse animation on CTA */
.floating-cta::after{
  content:'';
  position:absolute;inset:-4px;
  border-radius:54px;
  border:2px solid rgba(255,106,61,.3);
  animation:ctaPulse 2.5s ease-out infinite;
}
@keyframes ctaPulse{
  0%{transform:scale(1);opacity:.6}
  100%{transform:scale(1.15);opacity:0}
}

@media(max-width:640px){
  .floating-cta{
    bottom:1rem;left:1rem;right:1rem;
    justify-content:center;
    padding:.75rem;
    font-size:.7rem;
    border-radius:14px;
  }
  .floating-cta::after{border-radius:16px}
  .floating-cta::before{border-radius:16px}
  /* Shift back-to-top up when CTA visible */
  .floating-cta.visible ~ .back-to-top.visible,
  .back-to-top.visible{
    bottom:4.5rem;
  }
}

/* ---- Custom cursor (desktop) ---- */
.cursor-dot,.cursor-ring{
  display:none;
}

@media(hover:hover) and (min-width:961px){
  .cursor-dot{
    display:block;
    position:fixed;
    top:0;left:0;
    width:6px;height:6px;
    background:var(--gold);
    border-radius:50%;
    pointer-events:none;
    z-index:99997;
    mix-blend-mode:difference;
    transition:transform .08s ease-out,width .2s,height .2s,background .2s;
    will-change:transform;
  }

  .cursor-ring{
    display:block;
    position:fixed;
    top:0;left:0;
    width:36px;height:36px;
    border:1.5px solid rgba(255,190,11,.35);
    border-radius:50%;
    pointer-events:none;
    z-index:99996;
    transition:transform .15s ease-out,width .3s var(--ease),height .3s var(--ease),
      border-color .3s,opacity .3s;
    will-change:transform;
  }

  /* Expand on hover over interactive elements */
  .cursor-ring.cursor-hover{
    width:52px;height:52px;
    border-color:rgba(232,54,143,.5);
    opacity:.6;
  }
  .cursor-dot.cursor-hover{
    width:10px;height:10px;
    background:var(--magenta);
  }

  /* Hide default cursor on body */
  body:not(.is-loading){
    cursor:none;
  }
  body:not(.is-loading) a,
  body:not(.is-loading) button,
  body:not(.is-loading) input,
  body:not(.is-loading) textarea,
  body:not(.is-loading) summary,
  body:not(.is-loading) .lineup-name,
  body:not(.is-loading) .ticket,
  body:not(.is-loading) .gallery-hero,
  body:not(.is-loading) .gallery-thumb,
  body:not(.is-loading) .partner-slot{
    cursor:none;
  }
}

/* ---- Lightbox ---- */
.lightbox{
  position:fixed;inset:0;
  z-index:100000;
  background:rgba(4,0,10,.92);
  backdrop-filter:blur(24px);
  -webkit-backdrop-filter:blur(24px);
  display:flex;align-items:center;justify-content:center;
  opacity:0;visibility:hidden;
  transition:opacity .4s var(--ease),visibility .4s;
}

.lightbox.open{
  opacity:1;visibility:visible;
}

.lightbox-img{
  max-width:90vw;
  max-height:85vh;
  object-fit:contain;
  border-radius:12px;
  box-shadow:0 40px 120px rgba(0,0,0,.6),0 0 80px rgba(232,54,143,.08);
  transform:scale(.9);
  transition:transform .4s var(--ease);
}

.lightbox.open .lightbox-img{
  transform:scale(1);
}

.lightbox-close{
  position:absolute;
  top:2rem;right:2rem;
  width:48px;height:48px;
  display:flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,.05);
  border:1px solid rgba(255,255,255,.12);
  border-radius:50%;
  color:var(--text);
  cursor:pointer;
  transition:background .3s,border-color .3s,transform .3s;
}
.lightbox-close:hover{
  background:rgba(232,54,143,.15);
  border-color:var(--magenta);
  transform:rotate(90deg);
}

@media(max-width:640px){
  .lightbox-close{top:1rem;right:1rem;width:40px;height:40px}
  .lightbox-img{max-width:95vw;max-height:80vh;border-radius:8px}
}

/* ---- Text scramble animation ready state ---- */
.text-scramble .scramble-char{
  display:inline-block;
  transition:opacity .1s;
}
.text-scramble .scramble-char.glitch{
  color:var(--coral);
  opacity:.7;
}

/* ---- Reduced motion ---- */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms!important;
    animation-iteration-count:1!important;
    transition-duration:.01ms!important;
  }
  .hero-eq{display:none}
  .cursor-dot,.cursor-ring{display:none!important}
  body,body a,body button{cursor:auto!important}
}

/* ---- Pause all animations when tab is hidden (prevents memory leak) ---- */
.tab-hidden *,
.tab-hidden *::before,
.tab-hidden *::after{
  animation-play-state:paused!important;
}

/* =============================================
   DESIGN IMPROVEMENTS V10 — Schedule, Social Proof, Partners Marquee, Polish
   ============================================= */

/* ---- Programme / Schedule Section ---- */
.schedule-days{
  display:flex;justify-content:center;gap:1rem;
  margin-bottom:2.5rem;
}

.schedule-day{
  display:flex;flex-direction:column;align-items:center;
  padding:1rem 2rem;
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:16px;
  cursor:pointer;
  transition:transform .4s var(--ease),border-color .4s var(--ease),background .4s var(--ease),box-shadow .4s var(--ease),color .4s var(--ease);
  position:relative;
  overflow:hidden;
  font-family:var(--font-display);
  color:var(--text-dim);
}

.schedule-day::before{
  content:'';
  position:absolute;inset:0;
  background:var(--grad-fire);
  opacity:0;
  transition:opacity .4s var(--ease);
}

.schedule-day.active{
  border-color:transparent;
  color:var(--text);
  box-shadow:0 8px 32px rgba(255,106,61,.2),0 0 60px rgba(232,54,143,.08);
}

.schedule-day.active::before{opacity:.12}

.schedule-day-number{
  font-size:2.2rem;font-weight:800;
  line-height:1;
  position:relative;z-index:1;
  background:var(--grad-fire);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
  opacity:.5;
  transition:opacity .4s;
}

.schedule-day.active .schedule-day-number{opacity:1}

.schedule-day-label{
  font-size:.75rem;font-weight:600;
  letter-spacing:.1em;text-transform:uppercase;
  position:relative;z-index:1;
}

.schedule-day-month{
  font-size:.6rem;font-weight:500;
  letter-spacing:.15em;text-transform:uppercase;
  color:var(--text-muted);
  position:relative;z-index:1;
}

.schedule-day:hover:not(.active){
  border-color:var(--border-hover);
  background:var(--surface-hover);
  transform:translateY(-2px);
}

/* Stage labels */
.schedule-stages{
  display:flex;justify-content:center;gap:2rem;
  margin-bottom:1.5rem;
  font-family:var(--font-display);
  font-size:.7rem;font-weight:600;
  letter-spacing:.12em;text-transform:uppercase;
  color:var(--text-dim);
}

.schedule-stage{
  display:flex;align-items:center;gap:.5rem;
}

.schedule-stage-dot{
  width:8px;height:8px;border-radius:50%;
}

.schedule-stage-dot--main{
  background:var(--coral);
  box-shadow:0 0 8px var(--coral);
}

.schedule-stage-dot--lac{
  background:var(--cyan);
  box-shadow:0 0 8px var(--cyan);
}

/* Schedule grid */
.schedule-grid{
  position:relative;
  margin-bottom:1.5rem;
}

.schedule-col{
  display:none;
}

.schedule-col.active{
  display:block;
  animation:schedFadeIn .5s var(--ease);
}

@keyframes schedFadeIn{
  from{opacity:0;transform:translateY(12px)}
  to{opacity:1;transform:translateY(0)}
}

/* Time axis */
.schedule-time-axis{
  display:grid;
  grid-template-columns:repeat(8,1fr);
  gap:0;
  margin-bottom:.75rem;
  padding:0 0 .5rem;
  border-bottom:1px solid var(--border);
}

.schedule-time{
  font-family:var(--font-display);
  font-size:.65rem;font-weight:600;
  letter-spacing:.1em;
  color:var(--text-muted);
  text-align:center;
}

/* Track rows */
.schedule-track{
  display:flex;
  gap:4px;
  margin-bottom:.5rem;
  min-height:56px;
  position:relative;
  padding-left:6px;
}

.schedule-track::before{
  content:'';
  position:absolute;
  left:0;top:50%;
  width:3px;height:20px;
  transform:translateY(-50%);
  border-radius:2px;
}

.schedule-track--main::before{background:var(--coral)}
.schedule-track--lac::before{background:var(--cyan)}

.schedule-slot{
  flex:var(--span) 0 0;
  margin-left:calc(var(--gap,0) * 1%);
  background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.08);
  border-radius:10px;
  padding:.6rem .8rem;
  display:flex;flex-direction:column;justify-content:center;
  cursor:default;
  transition:transform .3s var(--ease),background .3s var(--ease),border-color .3s var(--ease),box-shadow .3s var(--ease),opacity .3s var(--ease);
  position:relative;
  overflow:hidden;
}

.schedule-track--main .schedule-slot{
  border-left:3px solid var(--coral);
}

.schedule-track--lac .schedule-slot{
  border-left:3px solid var(--cyan);
}

.schedule-slot:hover{
  background:rgba(255,255,255,.07);
  border-color:rgba(255,255,255,.15);
  transform:translateY(-2px);
  box-shadow:0 8px 24px rgba(0,0,0,.3);
}

.schedule-slot--hl{
  background:linear-gradient(135deg,rgba(255,106,61,.08),rgba(232,54,143,.06));
  border-color:rgba(232,54,143,.15);
}

.schedule-track--lac .schedule-slot--hl{
  background:linear-gradient(135deg,rgba(0,212,255,.08),rgba(151,71,255,.06));
  border-color:rgba(0,212,255,.15);
}

.schedule-slot-name{
  font-family:var(--font-display);
  font-size:.85rem;font-weight:700;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:var(--text);
}

.schedule-slot-time{
  font-size:.6rem;
  color:var(--text-muted);
  margin-top:2px;
}

.schedule-spacer{
  flex:var(--span) 0 0;
}

.schedule-slot-badge{
  position:absolute;
  top:4px;right:6px;
  font-family:var(--font-display);
  font-size:.45rem;font-weight:700;
  letter-spacing:.15em;
  padding:2px 6px;
  border-radius:4px;
  background:var(--grad-fire);
  color:var(--text);
}

.schedule-note{
  text-align:center;
  font-size:.75rem;
  color:var(--text-muted);
  font-style:italic;
}

/* Schedule responsive */
@media(max-width:768px){
  .schedule-slot{padding:.4rem .5rem}
  .schedule-slot-name{font-size:.7rem}
  .schedule-slot-time{font-size:.5rem}
  .schedule-slot-badge{font-size:.4rem;padding:1px 4px}
  .schedule-time{font-size:.55rem}
  .schedule-track{min-height:48px}
}

@media(max-width:480px){
  .schedule-days{gap:.5rem}
  .schedule-day{padding:.7rem 1.2rem}
  .schedule-day-number{font-size:1.6rem}
  .schedule-stages{gap:1rem;font-size:.6rem}

  .schedule-track{
    flex-direction:column;gap:6px;
    min-height:auto;
  }
  .schedule-slot{
    flex:none!important;
    padding:.5rem .7rem;
    border-radius:8px;
  }
  .schedule-spacer{display:none}
  .schedule-time-axis{
    grid-template-columns:repeat(4,1fr);
  }
  .schedule-time:nth-child(n+5){display:none}
}

/* ---- Ticket Social Proof ---- */
.ticket-social-proof{
  display:flex;align-items:center;gap:.5rem;
  margin-top:.75rem;
  padding-top:.75rem;
  border-top:1px solid var(--border);
}

.ticket-social-avatars{
  display:flex;
  margin-right:.15rem;
}

.ticket-avatar{
  width:22px;height:22px;
  border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--font-display);
  font-size:.55rem;font-weight:700;
  color:var(--text);
  border:2px solid var(--bg);
  margin-left:-6px;
}

.ticket-avatar:first-child{margin-left:0}

.ticket-social-text{
  font-size:.65rem;
  color:var(--text-muted);
}

.ticket-social-text strong{
  color:var(--text-dim);
}

/* ---- Partners Marquee ---- */
.partners-marquee{
  overflow:hidden;
  position:relative;
  padding:1rem 0;
  mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent);
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent);
}

.partners-track{
  display:flex;gap:2rem;
  animation:marqueeScroll 30s linear infinite;
  width:max-content;
}

.partners-marquee .partner-slot{
  flex-shrink:0;
  width:180px;height:80px;
  display:flex;align-items:center;justify-content:center;
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:12px;
  transition:border-color .4s var(--ease),background .4s var(--ease),box-shadow .4s var(--ease),transform .4s var(--ease);
  cursor:default;
  overflow:hidden;
  padding:14px 18px;
}

.partners-marquee .partner-slot img{
  max-width:100%;
  max-height:100%;
  width:auto;
  height:auto;
  object-fit:contain;
  filter:brightness(1.05) contrast(1.05);
  opacity:.75;
  transition:opacity .35s var(--ease),filter .35s var(--ease);
}

.partners-marquee .partner-slot:hover{
  border-color:var(--border-hover);
  background:var(--surface-hover);
  box-shadow:0 6px 24px rgba(232,54,143,.1);
  transform:translateY(-3px);
}
.partners-marquee .partner-slot:hover img{
  opacity:1;
  filter:brightness(1.1) contrast(1.1);
}

.partner-name{
  font-family:var(--font-display);
  font-size:.7rem;font-weight:600;
  letter-spacing:.12em;
  text-transform:uppercase;
  color:var(--text-muted);
  transition:color .3s;
}

.partners-marquee .partner-slot:hover .partner-name{
  color:var(--text-dim);
}

@keyframes marqueeScroll{
  from{transform:translateX(0)}
  to{transform:translateX(-50%)}
}

.partners-marquee:hover .partners-track{
  animation-play-state:paused;
}

/* ---- Enhanced card hover glow effect (V10 polish) ---- */
.news-card::after{
  content:'';
  position:absolute;inset:0;
  border-radius:inherit;
  background:radial-gradient(circle 300px at var(--mx,50%) var(--my,50%),rgba(232,54,143,.06),transparent 60%);
  opacity:0;
  transition:opacity .4s;
  pointer-events:none;
}

.news-card:hover::after{opacity:1}

/* ---- Glow line on section dividers ---- */
.section-divider-top svg{
  transition:filter .6s var(--ease);
  filter:drop-shadow(0 0 0 transparent);
}

.section-divider-top:hover svg{
  filter:drop-shadow(0 -2px 8px rgba(232,54,143,.15));
}

/* ---- Enhanced FAQ hover ---- */
.faq summary:hover{
  background:var(--surface-hover);
}

/* ---- Ticket card shimmer on hover ---- */
.ticket::after{
  content:'';
  position:absolute;
  inset:0;
  border-radius:inherit;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.03),transparent);
  background-size:50% 100%;
  background-repeat:no-repeat;
  background-position:-100% 0;
  transition:none;
  pointer-events:none;
  overflow:hidden;
}

.ticket:hover::after{
  animation:ticketShimmer .8s ease-out;
}

@keyframes ticketShimmer{
  from{background-position:-100% 0}
  to{background-position:200% 0}
}

/* =============================================
   DESKTOP LARGE SCREEN REFINEMENTS
   ============================================= */

@media(min-width:1440px){
  :root{--max-w:1280px}
  .section{padding:8rem 0}
  .section-heading{font-size:clamp(2.6rem,3.5vw,4rem)}
  .showcase-layout{gap:6rem}
  .tickets-row{max-width:1080px}
  .map-layout{gap:3.5rem}
  .countdown{gap:2rem}
}

@media(min-width:1920px){
  :root{--max-w:1360px}
  .container{padding:0 3rem}
  .hero-content{max-width:900px}
}

@media(hover:hover){
  .news-card{transition:transform .4s var(--ease),border-color .4s var(--ease),box-shadow .4s var(--ease)}
  .info-block{transition:transform .4s var(--ease),border-color .4s var(--ease),box-shadow .4s var(--ease)}
  .ticket:active{transform:scale(.98)}
  .btn-primary:active{transform:scale(.96)}
  .btn-ghost:active{transform:scale(.96)}
  .gallery-thumb:hover{
    transform:scale(1.05);
    box-shadow:0 8px 32px rgba(0,0,0,.35);
    z-index:2;
  }
}

@media(min-width:641px){
  .floating-cta.visible ~ .back-to-top.visible{
    bottom:2rem;right:2rem;
  }
}

/* =============================================
   MOBILE REFINEMENTS
   ============================================= */

@media(max-width:380px){
  .container{padding:0 1rem}
  .hero-content{padding:0 1rem;padding-top:.5rem}
  .section{padding:3.5rem 0}
  .section-heading{font-size:clamp(1.5rem,7vw,2.2rem)}
  .btn-primary{padding:.75rem 1.8rem;font-size:.72rem}
  .btn-ghost{padding:.65rem 1.4rem;font-size:.72rem}
  .countdown-value{font-size:1.8rem;min-width:56px}
  .countdown-label{font-size:.5rem}
  .ticket-price{font-size:2rem}
  .map-container{height:260px}
  .schedule-day{padding:.6rem 1rem}
  .schedule-day-number{font-size:1.4rem}
}

@media(max-width:960px){
  .gallery-hero:hover,.gallery-thumb:hover{
    transform:none;
    box-shadow:none;
  }
  .gallery-hero:active,.gallery-thumb:active{
    transform:scale(.97);
    transition-duration:.1s;
  }
  .btn-primary:active,.btn-ghost:active{
    transform:scale(.95);
    transition-duration:.1s;
  }
  .ticket:active{
    transform:scale(.98);
    transition-duration:.15s;
  }
  .news-card:active{
    transform:scale(.985);
    transition-duration:.15s;
  }
  .faq summary{min-height:48px;display:flex;align-items:center}
}

/* =============================================
   UI POLISH — Visual refinements
   ============================================= */

/* ---- Section headings: subtle text shadow ---- */
.section-heading{
  text-shadow:0 0 40px rgba(232,54,143,.08),0 0 80px rgba(151,71,255,.05);
}

/* ---- Ticket cards: inner glow on hover (uses ::after for non-featured) ---- */
.ticket:not(.ticket--featured)::before{
  content:'';
  position:absolute;top:0;left:50%;
  transform:translateX(-50%);
  width:60%;height:1px;
  background:linear-gradient(90deg,transparent,var(--border-hover),transparent);
  opacity:0;
  transition:opacity .5s var(--ease),width .5s var(--ease);
  z-index:1;
}
.ticket:not(.ticket--featured):hover::before{
  opacity:1;width:85%;
}
.ticket--vip::before{
  background:linear-gradient(90deg,transparent,rgba(0,212,255,.3),rgba(151,71,255,.3),transparent);
}

/* ---- Ticket price: number tabular for alignment ---- */
.ticket-price{
  font-variant-numeric:tabular-nums;
}

/* ---- Ticket type: better visual weight ---- */
.ticket-type{
  letter-spacing:.14em;
}

/* ---- Ticket perks: checkmark icon glow on hover ---- */
.ticket:hover .ticket-perks li svg{
  filter:drop-shadow(0 0 4px currentColor);
  transition:filter .3s var(--ease);
}

/* ---- Featured ticket: stronger visual hierarchy ---- */
.ticket--featured .ticket-type{
  background:var(--grad-fire);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
}

/* ---- VIP ticket: enhanced border glow on hover ---- */
.ticket--vip:hover{
  box-shadow:0 28px 70px rgba(0,0,0,.35),0 0 50px rgba(0,212,255,.1),inset 0 1px 0 rgba(0,212,255,.1);
}

/* ---- Ticket popular badge: shadow pulse ---- */
.ticket-popular{
  animation:popularPulse 3s ease-in-out infinite;
}
@keyframes popularPulse{
  0%,100%{box-shadow:0 4px 18px rgba(255,106,61,.3)}
  50%{box-shadow:0 4px 28px rgba(255,106,61,.5),0 0 40px rgba(232,54,143,.15)}
}

/* ---- Ticket save badge: subtle glow ---- */
.ticket-save{
  transition:background .3s var(--ease),box-shadow .3s var(--ease);
}
.ticket:hover .ticket-save{
  background:rgba(255,190,11,.12);
  box-shadow:0 0 12px rgba(255,190,11,.1);
}

/* ---- VIP badge: glow on hover ---- */
.ticket:hover .ticket-vip-badge{
  border-color:rgba(0,212,255,.45);
  box-shadow:0 0 12px rgba(0,212,255,.15);
  transition:border-color .3s,box-shadow .3s;
}

/* ---- Ticket button: full width consistency ---- */
.btn-full{
  width:100%;
  justify-content:center;
}

/* ---- Guarantees: subtle hover lift ---- */
.ticket-guarantee{
  transition:border-color .3s var(--ease),color .3s var(--ease),transform .3s var(--ease);
}
.ticket-guarantee:hover{
  transform:translateY(-2px);
}

/* ---- Countdown: glass effect ---- */
.countdown-block{
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
}

/* ---- Newsletter input: focus glow ---- */
.newsletter-input:focus{
  box-shadow:0 0 0 3px rgba(232,54,143,.15),0 0 20px rgba(232,54,143,.08);
}

/* ---- Gallery: overlay gradient on hover ---- */
.gallery-overlay{
  background:linear-gradient(to top,rgba(8,0,18,.7),transparent 60%);
}

/* ---- Map section: card hover glow refinement ---- */
.map-detail-card{
  transition:transform .4s var(--ease),border-color .4s var(--ease),box-shadow .4s var(--ease);
}
.map-detail-card:hover{
  transform:translateY(-3px);
  border-color:var(--border-hover);
  box-shadow:0 12px 36px rgba(0,0,0,.25),0 0 30px rgba(0,212,255,.04);
}

/* ---- Social icons: colored on hover ---- */
.social:nth-child(1):hover{color:var(--coral)}
.social:nth-child(2):hover{color:var(--gold)}
.social:nth-child(3):hover{color:var(--cyan)}
.social:nth-child(4):hover{color:var(--violet)}

/* ---- Footer: bottom gradient bar ---- */
.footer-bottom{
  position:relative;
}
.footer-bottom::before{
  content:'';
  position:absolute;top:0;left:10%;right:10%;
  height:1px;
  background:linear-gradient(90deg,transparent,rgba(232,54,143,.15),rgba(151,71,255,.1),transparent);
}

/* ---- Hero badge: subtle pulse ---- */
.hero-badge{
  animation:badgePulse 4s ease-in-out infinite;
}
@keyframes badgePulse{
  0%,100%{border-color:rgba(255,255,255,.12);box-shadow:0 0 0 0 transparent}
  50%{border-color:rgba(232,54,143,.2);box-shadow:0 0 16px rgba(232,54,143,.06)}
}

/* ---- Showcase: stat number gradient ---- */
.stat-number{
  background:var(--grad-fire);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
}

/* ---- Desktop: wider countdown on large screens ---- */
@media(min-width:1024px){
  .countdown-block{
    min-width:100px;
    padding:1.2rem 1.5rem;
  }
}

/* ---- Mobile: tighter section tags ---- */
@media(max-width:640px){
  .section-tag{font-size:.62rem;letter-spacing:.2em}
  .showcase-desc{font-size:.92rem}
  .ticket{padding:2.2rem 1.5rem 1.5rem;border-radius:20px}
  .social{padding:.5rem}
  .newsletter-input{font-size:.9rem}
}

/* =============================================
   DESIGN POLISH V2 — Visual depth & micro-interactions
   ============================================= */

/* ---- Hero: title line stroke outline on second line ---- */
.hero-title-line:last-child{
  -webkit-text-stroke:1px rgba(255,255,255,.15);
}

/* ---- Hero: countdown separator pulse ---- */
.countdown-sep{
  animation:sepPulse 2s ease-in-out infinite;
}
@keyframes sepPulse{
  0%,100%{opacity:1}
  50%{opacity:.3}
}

/* ---- Showcase: poster frame inner border glow ---- */
.poster-frame::after{
  content:'';
  position:absolute;inset:0;
  border-radius:inherit;
  border:1px solid rgba(255,255,255,.06);
  pointer-events:none;
}
.poster-frame:hover::after{
  border-color:rgba(232,54,143,.15);
  transition:border-color .6s;
}

/* ---- Info blocks: number gradient ---- */
.info-number{
  background:var(--grad-neon);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
}

/* ---- FAQ: open state accent line ---- */
.faq[open]{
  border-bottom-color:rgba(232,54,143,.2);
}

/* ---- FAQ: answer text max-width for readability ---- */
.faq-a{
  max-width:680px;
}

/* ---- Newsletter: glass card wrapper look ---- */
.newsletter-form{
  background:rgba(255,255,255,.02);
  border:1px solid var(--border);
  border-radius:60px;
  padding:.35rem;
}
.newsletter-input{
  border:none;
  background:transparent;
}
.newsletter-input:focus{
  border:none;
  box-shadow:none;
}
.newsletter-form:focus-within{
  border-color:var(--magenta);
  box-shadow:0 0 20px rgba(232,54,143,.08);
}

/* ---- Social icons: circle background on hover ---- */
.social{
  width:44px;height:44px;
  display:flex;align-items:center;justify-content:center;
  border-radius:50%;
  border:1px solid transparent;
  transition:color .3s var(--ease),transform .3s var(--ease),border-color .3s var(--ease),background .3s var(--ease);
}
.social:hover{
  border-color:var(--border-hover);
  background:rgba(255,255,255,.04);
}

/* ---- Footer: logo glow effect ---- */
.footer-brand img{
  transition:filter .5s var(--ease);
}
.footer-brand:hover img{
  filter:drop-shadow(0 0 16px rgba(232,54,143,.3));
}

/* ---- Countdown: glass cards with gradient top ---- */
.countdown-block{
  position:relative;
}
.countdown-block::before{
  content:'';
  position:absolute;top:0;left:20%;right:20%;
  height:1px;
  background:linear-gradient(90deg,transparent,var(--gold),transparent);
  opacity:.3;
}

/* ---- Nav links: smoother active state ---- */
.nav-link.active{
  text-shadow:0 0 12px rgba(232,54,143,.3);
}

/* ---- Map card: stronger depth ---- */
.map-card{
  box-shadow:0 20px 60px rgba(0,0,0,.4),0 0 40px rgba(0,0,0,.2);
}

/* ---- Contact form: input underline style ---- */
.contact-form input,
.contact-form textarea{
  border-bottom:2px solid var(--border);
  transition:border-color .3s var(--ease),box-shadow .3s var(--ease);
}
.contact-form input:focus,
.contact-form textarea:focus{
  border-bottom-color:var(--magenta);
  box-shadow:0 2px 0 rgba(232,54,143,.2);
}

/* ---- Showcase stats: divider between stats ---- */
.stat + .stat{
  border-left:1px solid var(--border);
  padding-left:1.5rem;
}

/* ---- Mobile link: gradient on hover ---- */
.mobile-link:hover{
  background:var(--grad-fire);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
}

/* ---- Partners: slot inner shine ---- */
.partners-marquee .partner-slot{
  position:relative;
}
.partners-marquee .partner-slot::after{
  content:'';
  position:absolute;inset:0;
  border-radius:inherit;
  background:linear-gradient(135deg,rgba(255,255,255,.03),transparent 50%);
  pointer-events:none;
}

/* ---- Schedule slot: gradient left border on hover ---- */
.schedule-track--main .schedule-slot:hover{
  border-left-color:var(--gold);
}
.schedule-track--lac .schedule-slot:hover{
  border-left-color:var(--violet);
}

/* ---- Scroll progress: thicker on hover ---- */
.scroll-progress-track{
  transition:height .3s var(--ease);
}
.scroll-progress-track:hover{
  height:5px;
}

/* ---- Back to top: gradient border on hover ---- */
.back-to-top:hover svg{
  transform:translateY(-1px);
  transition:transform .3s var(--ease);
}

/* ---- Desktop: wider showcase gap for breathing room ---- */
@media(min-width:1200px){
  .showcase-stats{gap:2.5rem}
  .stat + .stat{padding-left:2.5rem}
  .faq-q{font-size:1rem;padding:1.6rem 0}
  .newsletter-form{max-width:520px}
}

/* ---- Mobile: compact polish ---- */
@media(max-width:640px){
  .stat + .stat{border-left:none;padding-left:0;border-top:1px solid var(--border);padding-top:1rem;margin-top:1rem}
  .newsletter-form{border-radius:16px;flex-direction:column;padding:.6rem}
  .newsletter-input{border-radius:12px;text-align:center;background:rgba(255,255,255,.04)}
  .newsletter-form .btn-primary{border-radius:12px}
  .countdown-block::before{display:none}
  .hero-title-line:last-child{-webkit-text-stroke:none}
}

/* =============================================
   DÉROULÉ DE LA SOIRÉE — Timeline visuelle
   ============================================= */

.section--schedule{
  background:
    radial-gradient(ellipse at 20% 30%,rgba(255,190,11,.05) 0%,transparent 55%),
    radial-gradient(ellipse at 80% 70%,rgba(151,71,255,.06) 0%,transparent 55%),
    var(--bg);
  position:relative;
}

.timeline{
  display:grid;
  grid-template-columns:1fr auto 1fr;
  gap:1.5rem;
  align-items:stretch;
  max-width:1100px;
  margin:0 auto;
}

.timeline-step{
  position:relative;
  padding:2.5rem 2rem;
  border-radius:24px;
  border:1px solid var(--border);
  background:
    radial-gradient(ellipse at 50% 0%,rgba(255,255,255,.03) 0%,transparent 60%),
    var(--surface);
  text-align:center;
  overflow:hidden;
  transition:transform .5s var(--ease),border-color .4s,box-shadow .5s;
}

.timeline-step--openair{
  border-color:rgba(255,190,11,.2);
}
.timeline-step--openair::before{
  content:'';
  position:absolute;inset:0;
  background:
    radial-gradient(ellipse at 50% 0%,rgba(255,190,11,.08) 0%,transparent 50%),
    radial-gradient(ellipse at 0% 100%,rgba(255,106,61,.05) 0%,transparent 60%);
  pointer-events:none;
}

.timeline-step--indoor{
  border-color:rgba(151,71,255,.2);
}
.timeline-step--indoor::before{
  content:'';
  position:absolute;inset:0;
  background:
    radial-gradient(ellipse at 50% 0%,rgba(151,71,255,.08) 0%,transparent 50%),
    radial-gradient(ellipse at 100% 100%,rgba(0,212,255,.05) 0%,transparent 60%);
  pointer-events:none;
}

.timeline-step:hover{
  transform:translateY(-6px);
  box-shadow:0 24px 60px rgba(0,0,0,.35);
}
.timeline-step--openair:hover{
  border-color:rgba(255,190,11,.4);
  box-shadow:0 24px 60px rgba(0,0,0,.35),0 0 40px rgba(255,190,11,.08);
}
.timeline-step--indoor:hover{
  border-color:rgba(151,71,255,.4);
  box-shadow:0 24px 60px rgba(0,0,0,.35),0 0 40px rgba(151,71,255,.1);
}

.timeline-step > *{position:relative;z-index:1}

.timeline-badge{
  display:inline-flex;flex-direction:column;align-items:center;gap:.15rem;
  padding:.6rem 1.4rem;
  background:linear-gradient(135deg,var(--gold),var(--coral));
  border-radius:50px;
  margin-bottom:1.4rem;
  box-shadow:0 6px 20px rgba(255,106,61,.3);
}
.timeline-badge--night{
  background:linear-gradient(135deg,var(--violet),var(--cyan));
  box-shadow:0 6px 20px rgba(151,71,255,.3);
}
.timeline-time{
  font-family:var(--font-display);
  font-size:1.4rem;font-weight:800;
  line-height:1;
  color:var(--text);
  letter-spacing:.02em;
}
.timeline-phase{
  font-family:var(--font-display);
  font-size:.55rem;font-weight:700;
  letter-spacing:.25em;text-transform:uppercase;
  color:rgba(255,255,255,.85);
}

.timeline-icon{
  width:72px;height:72px;
  margin:0 auto 1.2rem;
  display:flex;align-items:center;justify-content:center;
  border-radius:50%;
  border:1px solid var(--border);
  background:rgba(255,255,255,.03);
  transition:transform .5s var(--ease),border-color .4s,box-shadow .4s;
}
.timeline-icon--sun{
  color:var(--gold);
  border-color:rgba(255,190,11,.25);
  background:rgba(255,190,11,.04);
  animation:sunGlow 3s ease-in-out infinite alternate;
}
.timeline-icon--moon{
  color:var(--violet);
  border-color:rgba(151,71,255,.25);
  background:rgba(151,71,255,.04);
  animation:moonGlow 4s ease-in-out infinite alternate;
}
@keyframes sunGlow{
  from{box-shadow:0 0 0 rgba(255,190,11,0),inset 0 0 0 rgba(255,190,11,0)}
  to{box-shadow:0 0 28px rgba(255,190,11,.3),inset 0 0 12px rgba(255,190,11,.1)}
}
@keyframes moonGlow{
  from{box-shadow:0 0 0 rgba(151,71,255,0),inset 0 0 0 rgba(151,71,255,0)}
  to{box-shadow:0 0 28px rgba(151,71,255,.3),inset 0 0 12px rgba(151,71,255,.1)}
}
.timeline-step:hover .timeline-icon{
  transform:scale(1.08) rotate(-5deg);
}

.timeline-title{
  font-family:var(--font-display);
  font-size:clamp(1.8rem,3.5vw,2.6rem);
  font-weight:800;
  letter-spacing:.05em;
  line-height:1;
  margin-bottom:.5rem;
}
.timeline-step--openair .timeline-title{
  background:linear-gradient(135deg,var(--gold),var(--coral));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
}
.timeline-step--indoor .timeline-title{
  background:linear-gradient(135deg,var(--cyan),var(--violet));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
}

.timeline-location{
  font-family:var(--font-display);
  font-size:.75rem;font-weight:600;
  letter-spacing:.2em;text-transform:uppercase;
  color:var(--text-dim);
  margin-bottom:1rem;
}

.timeline-desc{
  font-size:.92rem;line-height:1.65;
  color:var(--text-dim);
  margin-bottom:1.4rem;
  max-width:340px;
  margin-left:auto;margin-right:auto;
}

.timeline-tags{
  display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem;
}
.timeline-tag{
  display:inline-flex;align-items:center;gap:.3rem;
  font-family:var(--font-display);
  font-size:.6rem;font-weight:600;
  letter-spacing:.12em;text-transform:uppercase;
  color:var(--text-dim);
  padding:.35rem .7rem;
  background:rgba(255,255,255,.04);
  border:1px solid var(--border);
  border-radius:40px;
}
.timeline-step--openair .timeline-tag{
  border-color:rgba(255,190,11,.15);
  color:var(--gold);
}
.timeline-step--indoor .timeline-tag{
  border-color:rgba(151,71,255,.15);
  color:var(--violet);
}

.timeline-arrow{
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  color:var(--coral);
  opacity:.8;
  padding:0 .5rem;
  animation:arrowPulse 2s ease-in-out infinite;
}
@keyframes arrowPulse{
  0%,100%{transform:translateX(0)}
  50%{transform:translateX(6px)}
}
.timeline-arrow-label{
  font-family:var(--font-display);
  font-size:.6rem;font-weight:700;
  letter-spacing:.25em;text-transform:uppercase;
  color:var(--text-muted);
  margin-top:.5rem;
}

/* ---- Timeline mobile: stack vertical + badges plus petits ---- */
@media(max-width:820px){
  .timeline{
    grid-template-columns:1fr;
    gap:1rem;
  }
  .timeline-step{padding:2rem 1.5rem}
  .timeline-arrow{
    flex-direction:column;
    padding:.5rem 0;
    animation:arrowPulseV 2s ease-in-out infinite;
  }
  .timeline-arrow svg{transform:rotate(90deg)}
  @keyframes arrowPulseV{
    0%,100%{transform:translateY(0)}
    50%{transform:translateY(6px)}
  }
  .timeline-arrow-label{margin-top:.3rem}
  .timeline-icon{width:60px;height:60px}
  .timeline-icon svg{width:36px;height:36px}
  .timeline-title{font-size:clamp(1.6rem,6vw,2rem)}

  /* Bulles horaires plus compactes sur mobile */
  .timeline-badge{
    padding:.4rem 1rem;
    gap:.1rem;
    margin-bottom:1rem;
    box-shadow:0 4px 14px rgba(255,106,61,.25);
  }
  .timeline-badge--night{
    box-shadow:0 4px 14px rgba(151,71,255,.25);
  }
  .timeline-time{font-size:1.1rem}
  .timeline-phase{font-size:.5rem;letter-spacing:.22em}
}
