/* Steinbruchfete 2027 · Onepager */

@font-face{font-family:'Bangers';src:url('../fonts/bangers-v25-latin-regular.woff2') format('woff2');font-display:swap}
@font-face{font-family:'Permanent Marker';src:url('../fonts/permanent-marker-v16-latin-regular.woff2') format('woff2');font-display:swap}
@font-face{font-family:'Fuzzy Bubbles';src:url('../fonts/fuzzy-bubbles-v9-latin-regular.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:'Fuzzy Bubbles';src:url('../fonts/fuzzy-bubbles-v9-latin-700.woff2') format('woff2');font-weight:700;font-display:swap}

:root{
  --black:#070606;
  --ink:#0e0d0c;
  --stone-1:#161513;
  --stone-2:#22201d;
  --stone-3:#2f2c28;
  --gelb:#FDC117;
  --orange:#F2662A;
  --blau:#3d6bff;
  --lila:#7b3cff;
  --weiss:#f6f3ec;
  --grau:#9a948a;
  --pad:clamp(16px,4vw,56px);
  --max:1280px;
  --ease:cubic-bezier(.2,.9,.2,1);
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--black);color:var(--weiss);font-family:'Fuzzy Bubbles',system-ui,sans-serif;font-size:clamp(16px,1.1vw,19px);line-height:1.55;overflow-x:hidden}
img{max-width:100%;height:auto;display:block}
a{color:inherit}
h1,h2,h3{font-family:'Bangers',Impact,sans-serif;font-weight:400;letter-spacing:.02em;line-height:.95;margin:0;text-wrap:balance}
p{text-wrap:pretty}
.wrap{width:100%;max-width:var(--max);margin:0 auto;padding:0 var(--pad)}
.marker{font-family:'Permanent Marker',cursive}
.gelb{color:var(--gelb)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* Körnung über allem */
.grain{position:fixed;inset:-50%;width:200%;height:200%;pointer-events:none;z-index:90;opacity:.09;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:grain 1.2s steps(6) infinite}
@keyframes grain{0%{transform:translate(0,0)}20%{transform:translate(-3%,2%)}40%{transform:translate(2%,-3%)}60%{transform:translate(-2%,-1%)}80%{transform:translate(3%,3%)}100%{transform:translate(0,0)}}

/* ---------- Navigation ---------- */
.nav{position:fixed;top:0;left:0;right:0;z-index:80;display:flex;align-items:center;justify-content:space-between;padding:14px var(--pad);transition:background .4s,padding .4s,top .5s var(--ease)}
.nav.scrolled{padding:8px var(--pad)}
/* Unschärfe auf eigener Ebene: backdrop-filter direkt auf .nav würde das fixierte Mobilmenü in die Leiste einsperren */
.nav::before{content:'';position:absolute;inset:0;z-index:-2;background:rgba(7,6,6,.82);backdrop-filter:saturate(1.4) blur(10px);-webkit-backdrop-filter:saturate(1.4) blur(10px);opacity:0;transition:opacity .4s}
.nav.scrolled::before{opacity:1}
.nav.open::before{opacity:0}
/* top statt transform: transform würde das fixierte Mobilmenü einsperren */
.nav.hide{top:-110px}
.nav__logo{display:flex;align-items:center;gap:10px;text-decoration:none;font-family:'Bangers';font-size:24px;letter-spacing:.04em;color:var(--gelb)}
.nav__logo img{height:44px;width:auto;transition:height .4s}
.nav.scrolled .nav__logo img{height:36px}
.nav__links{display:flex;gap:clamp(14px,2vw,32px);list-style:none;margin:0;padding:0}
.nav__links a{font-family:'Bangers';font-size:22px;letter-spacing:.06em;text-decoration:none;position:relative;padding:4px 0}
.nav__links a::after{content:'';position:absolute;left:0;right:100%;bottom:0;height:3px;background:var(--gelb);transition:right .35s var(--ease)}
.nav__links a:hover::after{right:0}
.nav__cta{font-family:'Bangers';font-size:20px;letter-spacing:.06em;background:var(--gelb);color:var(--black);text-decoration:none;padding:8px 18px;transform:skew(-8deg);box-shadow:4px 4px 0 var(--orange);transition:transform .2s,box-shadow .2s}
.nav__cta:hover{transform:skew(-8deg) translate(-2px,-2px);box-shadow:6px 6px 0 var(--orange)}
.burger{display:none;background:none;border:0;width:44px;height:44px;position:relative;cursor:pointer}
.burger span{position:absolute;left:8px;right:8px;height:3px;background:var(--gelb);transition:transform .3s,opacity .3s}
.burger span:nth-child(1){top:13px}.burger span:nth-child(2){top:21px}.burger span:nth-child(3){top:29px}
.nav.open .burger span:nth-child(1){transform:translateY(8px) rotate(45deg)}
.nav.open .burger span:nth-child(2){opacity:0}
.nav.open .burger span:nth-child(3){transform:translateY(-8px) rotate(-45deg)}

@media (max-width:900px){
  .burger{display:block}
  .nav__cta{margin-left:auto;margin-right:12px;font-size:17px;padding:6px 12px;box-shadow:3px 3px 0 var(--orange)}
  .nav__links{position:fixed;inset:0;background:var(--black);flex-direction:column;align-items:center;justify-content:center;gap:18px;clip-path:circle(0% at calc(100% - 40px) 36px);transition:clip-path .6s var(--ease);z-index:-1}
  .nav.open .nav__links{clip-path:circle(150% at calc(100% - 40px) 36px)}
  .nav__links a{font-size:clamp(40px,11vw,64px);color:var(--gelb)}
  .nav__social{display:block;margin-top:18px}
  .nav__links .social a{font-size:0;padding:0;width:58px;height:58px}
  .nav__links .social a::after{display:none}
  .nav.open .nav__logo img{height:56px}
}
@media (min-width:901px){.nav__social{display:none}}

/* ---------- Hero ---------- */
.hero{position:relative;height:100svh;min-height:620px;overflow:hidden;background:radial-gradient(120% 80% at 50% 110%,#1d1530 0%,#0b0910 45%,var(--black) 75%);isolation:isolate}
.hero__layer{position:absolute;left:-4%;right:-4%;bottom:0;pointer-events:none;will-change:transform}
.hero__layer svg{display:block;width:100%;height:100%;overflow:visible}
/* Steinhaufen aus der Flyer-Vorlage: links original, rechts gespiegelt */
.rocks{top:auto;bottom:-6%;height:112%;left:auto;right:auto;width:auto}
.rocks img{height:100%;width:auto;max-width:none}
.rocks--l{left:-6%;z-index:3}
/* Bildkanten weich ausblenden: der Hintergrund der Vorlage ist kein reines Schwarz */
.rocks--l{-webkit-mask-image:radial-gradient(ellipse 110% 95% at 0% 100%,#000 55%,transparent 100%);mask-image:radial-gradient(ellipse 110% 95% at 0% 100%,#000 55%,transparent 100%)}
.rocks--r{-webkit-mask-image:radial-gradient(ellipse 110% 95% at 100% 100%,#000 55%,transparent 100%);mask-image:radial-gradient(ellipse 110% 95% at 100% 100%,#000 55%,transparent 100%)}
.rocks--r{right:-10%;bottom:-20%;height:124%;z-index:4}
.rocks--r img{transform:scaleX(-1)}
/* Verlauf wie auf dem Flyer: Ränder ins Schwarz, dunkle Mitte hinter Logo und Datum */
.hero__shade{position:absolute;inset:0;z-index:8;pointer-events:none;
  background:radial-gradient(ellipse 42% 48% at 50% 46%,rgba(7,6,6,.82),rgba(7,6,6,.45) 55%,transparent 80%),
    linear-gradient(180deg,rgba(7,6,6,.7) 0%,transparent 22%,transparent 80%,rgba(7,6,6,.7) 100%)}

/* Lichtkegel hinter den Steinen */
.beams{position:absolute;inset:0;z-index:2;opacity:.75;pointer-events:none;mix-blend-mode:screen;filter:blur(8px)}
.beam{position:absolute;bottom:18%;width:34vmax;height:120vh;margin-left:-17vmax;transform-origin:50% 100%;
  clip-path:polygon(47% 100%,53% 100%,100% 0,0 0);opacity:0;animation:beamIn 1.4s 1.6s forwards, sway 7s ease-in-out infinite alternate}
.beam--1{left:22%;background:linear-gradient(to top,rgba(253,193,23,.55),rgba(253,193,23,0) 75%);animation-duration:1.4s,6s;--a:-28deg;--b:8deg}
.beam--2{left:42%;background:linear-gradient(to top,rgba(61,107,255,.6),rgba(61,107,255,0) 75%);animation-duration:1.4s,8s;--a:18deg;--b:-14deg}
.beam--3{left:60%;background:linear-gradient(to top,rgba(123,60,255,.6),rgba(123,60,255,0) 75%);animation-duration:1.4s,7s;--a:-12deg;--b:22deg}
.beam--4{left:80%;background:linear-gradient(to top,rgba(242,102,42,.5),rgba(242,102,42,0) 75%);animation-duration:1.4s,9s;--a:26deg;--b:-6deg}
@keyframes beamIn{to{opacity:1}}
@keyframes sway{from{transform:rotate(var(--a))}to{transform:rotate(var(--b))}}

.fog{position:absolute;inset:auto -20% 0 -20%;height:60%;z-index:6;pointer-events:none;
  background:radial-gradient(40% 50% at 30% 80%,rgba(140,120,200,.16),transparent 70%),radial-gradient(35% 45% at 70% 85%,rgba(253,193,23,.10),transparent 70%);
  animation:fog 18s ease-in-out infinite alternate}
@keyframes fog{to{transform:translateX(8%)}}

/* Taschenlampe: Maus beleuchtet den Steinbruch */
.torch{position:absolute;inset:0;z-index:8;pointer-events:none;
  background:radial-gradient(260px 260px at var(--mx,50%) var(--my,60%),rgba(253,193,23,.14),transparent 70%);mix-blend-mode:screen;transition:opacity .4s}

#embers{position:absolute;inset:0;z-index:9;pointer-events:none;width:100%;height:100%}

.hero__content{position:relative;z-index:10;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:84px var(--pad) 9svh}
.hero__brand{display:flex;align-items:flex-start;gap:clamp(6px,1.5vw,18px)}
.hero__nr{font-family:'Bangers';color:var(--gelb);font-size:clamp(54px,min(10vw,13svh),150px);line-height:.8;transform:rotate(-6deg) translateY(12%);text-shadow:5px 5px 0 var(--black);opacity:0;animation:nrIn .7s 1.15s var(--ease) forwards}
@keyframes nrIn{from{opacity:0;transform:rotate(-30deg) scale(2.4)}to{opacity:1;transform:rotate(-6deg) translateY(12%) scale(1)}}
.hero__logo{width:clamp(130px,min(24vw,25svh),330px);filter:drop-shadow(0 12px 30px rgba(0,0,0,.8));clip-path:inset(100% 0 0 0);animation:logoIn 1s .5s var(--ease) forwards}
@keyframes logoIn{0%{clip-path:inset(100% 0 0 0);transform:scale(1.25) translateY(30px)}70%{transform:scale(.98)}100%{clip-path:inset(0 0 0 0);transform:none}}
.hero.slam{animation:slam .45s 1.45s}
@keyframes slam{0%,100%{transform:none}20%{transform:translate(-6px,4px)}40%{transform:translate(5px,-3px)}60%{transform:translate(-3px,2px)}80%{transform:translate(2px,-1px)}}

.hero__date{margin-bottom:0;margin-top:clamp(10px,2.4svh,28px);font-family:'Bangers';font-size:clamp(40px,min(7.5vw,9.5svh),108px);line-height:.9;letter-spacing:.04em;transform:skew(-9deg);text-shadow:4px 4px 0 var(--black)}
.hero__date span{display:inline-block;opacity:0;transform:translateY(60px) rotate(8deg);animation:charIn .6s var(--ease) forwards}
@keyframes charIn{to{opacity:1;transform:none}}
/* Mittelstrich an der 7, damit sie im Bangers-Schnitt nicht wie eine 1 wirkt */
.hero__date .seven{position:relative}
.hero__date .seven::after{content:'';position:absolute;left:28%;width:70%;top:40%;height:.1em;background:currentColor;transform:skew(-9deg)}
.hero__place{margin:4px 0 0;text-transform:uppercase;font-family:'Bangers';font-size:clamp(18px,2.2vw,28px);letter-spacing:.12em;color:var(--orange);opacity:0;animation:fadeUp .8s 2.3s forwards}
.hero__place b{color:var(--gelb);font-weight:400;font-size:1.6em;letter-spacing:.05em;display:block;line-height:1}
@keyframes fadeUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}

.countdown{display:flex;gap:clamp(8px,1.6vw,18px);margin-top:clamp(12px,2.6svh,28px);opacity:0;animation:fadeUp .8s 2.6s forwards}
.cd{background:rgba(10,9,8,.72);border:2px solid var(--stone-3);padding:10px clamp(10px,1.6vw,18px) 6px;min-width:clamp(64px,8vw,96px);transform:skew(-6deg);position:relative;overflow:hidden}
.cd::before{content:'';position:absolute;left:0;right:0;top:50%;height:1px;background:rgba(255,255,255,.08)}
.cd b{display:block;font-family:'Bangers';font-weight:400;font-size:clamp(30px,min(4.6vw,6svh),60px);line-height:1;color:var(--gelb);font-variant-numeric:tabular-nums}
.cd b.tick{animation:tick .45s var(--ease)}
@keyframes tick{0%{transform:translateY(-40%);opacity:0}100%{transform:none;opacity:1}}
.cd small{font-family:'Bangers';letter-spacing:.12em;font-size:clamp(11px,1vw,14px);color:var(--grau)}

.hero__ctas{display:flex;flex-wrap:wrap;justify-content:center;gap:14px;margin-top:clamp(14px,3svh,32px);opacity:0;animation:fadeUp .8s 2.9s forwards}
.btn{display:inline-flex;align-items:center;gap:10px;font-family:'Bangers';font-size:clamp(20px,1.8vw,26px);letter-spacing:.06em;text-decoration:none;padding:12px 26px;transform:skew(-8deg);transition:transform .2s,box-shadow .2s,background .2s;cursor:pointer;border:0}
.btn > *{transform:skew(8deg)}
.btn--gelb{background:var(--gelb);color:var(--black);box-shadow:5px 5px 0 var(--orange)}
.btn--gelb:hover{transform:skew(-8deg) translate(-3px,-3px);box-shadow:8px 8px 0 var(--orange)}
.btn--ghost{background:transparent;color:var(--weiss);box-shadow:inset 0 0 0 2px var(--weiss)}
.btn--ghost:hover{background:var(--weiss);color:var(--black)}
.btn--dark{background:var(--black);color:var(--gelb);box-shadow:5px 5px 0 var(--orange)}
.btn--dark:hover{transform:skew(-8deg) translate(-3px,-3px);box-shadow:8px 8px 0 var(--orange)}

.scrollhint{position:absolute;z-index:10;left:50%;bottom:22px;transform:translateX(-50%);width:26px;height:42px;border:2px solid rgba(246,243,236,.5);border-radius:14px;opacity:0;animation:fadeUp .8s 3.3s forwards}
.scrollhint::after{content:'';position:absolute;left:50%;top:8px;width:4px;height:8px;margin-left:-2px;border-radius:2px;background:var(--gelb);animation:wheel 1.6s infinite}
@keyframes wheel{0%{transform:translateY(0);opacity:1}100%{transform:translateY(14px);opacity:0}}

@media (max-height:760px){.scrollhint{display:none}}

/* ---------- Laufband ---------- */
.ticker{position:relative;z-index:12;margin-top:-4vw;padding:2vw 0 3vw;overflow:hidden;pointer-events:none}
.ticker__band{display:flex;white-space:nowrap;font-family:'Bangers';font-size:clamp(26px,4vw,54px);letter-spacing:.04em;padding:.18em 0;width:max-content}
.ticker__band span{padding-right:.5em}
.ticker__band--a{background:var(--gelb);color:var(--black);transform:rotate(-3deg);animation:marquee 26s linear infinite}
.ticker__band--b{background:var(--black);color:var(--gelb);border-block:2px solid var(--gelb);transform:rotate(2deg) translateY(-30%);animation:marquee 32s linear infinite reverse}
@keyframes marquee{from{translate:0 0}to{translate:var(--shift,-50%) 0}}

/* ---------- Sektionen allgemein ---------- */
section{position:relative}
.sec{padding:clamp(80px,12vw,170px) 0}
.kicker{font-family:'Permanent Marker';color:var(--orange);font-size:clamp(18px,1.6vw,24px);display:inline-block;transform:rotate(-3deg);margin-bottom:10px}
.h2{font-size:clamp(42px,5.8vw,96px);line-height:1.06}
.h2 .w{display:inline-block;overflow:hidden;vertical-align:top;padding:.12em .04em .02em;margin:-.12em 0 -.02em}
.h2 .w > span{display:inline-block;transform:translateY(105%);transition:transform .9s var(--ease)}
.in .h2 .w > span,.h2.in .w > span{transform:none}

.rv{opacity:0;transform:translateY(50px);transition:opacity .9s var(--ease),transform .9s var(--ease)}
.rv.in{opacity:1;transform:none}
.rv--l{transform:translateX(-60px)}.rv--r{transform:translateX(60px)}
.rv--pop{transform:scale(.4) rotate(-10deg)}
.rv--l.in,.rv--r.in,.rv--pop.in{transform:none}

/* Steinkante als Trenner */
.edge{position:absolute;left:0;right:0;height:clamp(40px,7vw,110px);pointer-events:none;z-index:2}
.edge svg{width:100%;height:100%;display:block}
.edge--top{top:2px;transform:translateY(-100%)}
.edge--bottom{bottom:2px;transform:translateY(100%) scaleY(-1)}

/* ---------- Intro ---------- */
.intro{background:var(--black)}
.intro__grid{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(30px,6vw,90px);align-items:center}
.intro__text p{font-size:clamp(18px,1.4vw,22px);color:#d9d3c7;max-width:34em}
.intro__img{position:relative;aspect-ratio:4/3.2}
.intro__img .ph{position:absolute;inset:0;overflow:hidden;clip-path:polygon(4% 6%,96% 0,100% 92%,0 100%);transition:clip-path 1.2s var(--ease)}
.intro__img:not(.in) .ph{clip-path:polygon(50% 50%,50% 50%,50% 50%,50% 50%)}
.intro__img img{width:100%;height:115%;object-fit:cover;will-change:transform}
.intro__img .tape{position:absolute;z-index:2;top:-14px;left:28%;width:120px;height:34px;background:rgba(253,193,23,.85);transform:rotate(-6deg)}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:clamp(40px,6vw,80px)}
.stat{border-top:3px solid var(--gelb);padding-top:12px}
.stat b{display:block;font-family:'Bangers';font-weight:400;font-size:clamp(46px,6vw,86px);line-height:.9;color:var(--gelb)}
.stat span{font-family:'Bangers';letter-spacing:.08em;font-size:clamp(14px,1.2vw,18px);color:var(--grau)}

/* ---------- Line-up ---------- */
.lineup{background:linear-gradient(180deg,var(--black),#0d0b14 60%,var(--black))}
.lineup__head{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;flex-wrap:wrap;margin-bottom:clamp(40px,5vw,70px)}
.lineup__head p{max-width:26em;color:#cfc8bb;margin:0}
.acts{display:grid;grid-template-columns:1.25fr 1fr;max-width:1000px;gap:clamp(14px,2vw,26px)}
.act{position:relative;aspect-ratio:3/4;overflow:hidden;background:var(--stone-1);transform-style:preserve-3d;transition:transform .2s ease-out}
.act__img{position:absolute;inset:0;background-size:cover;background-position:center 15%;filter:grayscale(1) contrast(1.15);transition:transform .8s var(--ease)}
.act::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,transparent 35%,rgba(7,6,6,.95)),linear-gradient(135deg,rgba(253,193,23,.35),rgba(123,60,255,.35));mix-blend-mode:normal}
.act:hover .act__img{transform:scale(1.07)}
.act__info{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:clamp(16px,2vw,28px)}
.act__tag{font-family:'Permanent Marker';color:var(--orange);font-size:clamp(15px,1.3vw,20px)}
.act__name{font-family:'Bangers';font-size:clamp(44px,5.4vw,84px);line-height:.9;color:var(--gelb);transform:skew(-6deg)}
.act--tba{display:flex;align-items:center;justify-content:center;background:repeating-linear-gradient(-45deg,var(--stone-1) 0 18px,#121110 18px 36px)}
.act--tba::after{display:none}
.act--tba .q{font-family:'Bangers';font-size:clamp(120px,16vw,240px);color:transparent;-webkit-text-stroke:2px var(--stone-3);line-height:1;animation:glitch 4s infinite steps(1)}
.act--tba .act__name{color:var(--weiss);font-size:clamp(34px,3.6vw,56px)}
@keyframes glitch{0%,92%{transform:none;-webkit-text-stroke-color:var(--stone-3)}93%{transform:translate(-6px,2px) skew(-10deg);-webkit-text-stroke-color:var(--gelb)}95%{transform:translate(5px,-3px);-webkit-text-stroke-color:var(--blau)}97%{transform:none;-webkit-text-stroke-color:var(--orange)}}

/* ---------- Party (gelb) ---------- */
.party{background:var(--gelb);color:var(--black);overflow-x:clip;z-index:3}
.party .kicker{color:var(--black)}
.party__grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(30px,5vw,70px);align-items:center}
.party__intro p{font-size:clamp(18px,1.4vw,22px);max-width:26em}
.bubbles{position:relative;min-height:clamp(440px,48vw,640px)}
.bubble{position:absolute;background:var(--black);color:var(--gelb);border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;font-family:'Bangers';line-height:.95;padding:6%;animation:float 6s ease-in-out infinite;box-shadow:8px 10px 0 rgba(0,0,0,.18)}
.bubble::after{content:'';position:absolute;width:22%;height:22%;background:inherit;bottom:2%;left:14%;clip-path:polygon(0 100%,30% 0,100% 30%)}
.bubble small{font-size:.42em;letter-spacing:.1em;color:var(--weiss)}
.b1{width:46%;aspect-ratio:1.25;left:0;top:2%;font-size:clamp(22px,2.6vw,38px);animation-delay:-1s}
.b2{width:42%;aspect-ratio:1.1;right:2%;top:10%;font-size:clamp(30px,3.6vw,54px);background:var(--orange);color:var(--black);animation-delay:-3s}
.b2 small{color:var(--black)}
.b3{width:44%;aspect-ratio:1.3;left:8%;bottom:4%;font-size:clamp(22px,2.4vw,36px);animation-delay:-2s}
.b4{width:30%;aspect-ratio:1;right:14%;bottom:0;font-size:clamp(20px,2.1vw,32px);background:var(--weiss);color:var(--black);animation-delay:-4s}
.b4 small{color:var(--black)}
@keyframes float{0%,100%{translate:0 0}50%{translate:0 -14px}}

.facts{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px}
.fact{font-family:'Bangers';letter-spacing:.06em;font-size:clamp(18px,1.5vw,22px);background:var(--black);color:var(--gelb);padding:8px 16px;transform:skew(-8deg)}

/* ---------- Galerie (horizontal) ---------- */
.gallery{background:var(--black)}
.gallery__pin{position:sticky;top:0;height:100svh;overflow:hidden;display:flex;flex-direction:column;justify-content:center}
.gallery__head{padding:0 var(--pad);margin-bottom:clamp(20px,3vw,40px);display:flex;justify-content:space-between;align-items:flex-end;gap:20px;flex-wrap:wrap}
.gallery__track{display:flex;gap:clamp(14px,2vw,30px);padding:0 var(--pad);will-change:transform;width:max-content}
.shot{flex:0 0 auto;height:clamp(260px,52vh,560px);position:relative;overflow:hidden;background:var(--stone-1)}
.shot img{height:100%;width:auto;object-fit:cover;transition:transform .8s var(--ease),filter .5s}
.shot:hover img{transform:scale(1.06)}
.shot:nth-child(odd){transform:rotate(-1.5deg) translateY(10px)}
.shot:nth-child(even){transform:rotate(1.2deg) translateY(-12px)}
.shot--wide img{aspect-ratio:16/10}
.shot--tall img{aspect-ratio:3/4}
.progress{height:3px;background:var(--stone-2);margin:clamp(24px,4vh,40px) var(--pad) 0;position:relative}
.progress i{position:absolute;left:0;top:0;bottom:0;width:0;background:var(--gelb)}

/* ---------- Tickets ---------- */
.tickets{background:radial-gradient(70% 60% at 50% 40%,#1c1726,var(--black) 70%)}
.tickets__inner{display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,5vw,80px);align-items:center}
.ticket{position:relative;background:var(--gelb);color:var(--black);display:grid;grid-template-columns:1fr auto;transform:rotate(-4deg);box-shadow:18px 22px 0 rgba(0,0,0,.5);transition:transform .25s ease-out}
.ticket__main{padding:clamp(22px,3vw,40px)}
.ticket__main h3{font-size:clamp(40px,4.6vw,72px)}
.ticket__main .d{font-family:'Bangers';font-size:clamp(26px,2.6vw,38px);letter-spacing:.03em;margin-top:8px}
.ticket__main ul{text-transform:uppercase;list-style:none;padding:0;margin:16px 0 0;font-family:'Bangers';letter-spacing:.06em;font-size:clamp(15px,1.3vw,19px)}
.ticket__stub{position:relative;border-left:3px dashed rgba(0,0,0,.45);padding:clamp(22px,3vw,40px) clamp(16px,2vw,28px);display:flex;align-items:center;justify-content:center;writing-mode:vertical-rl;font-family:'Bangers';font-size:clamp(28px,3vw,46px);letter-spacing:.08em}
.ticket::before,.ticket::after{content:'';position:absolute;right:calc(clamp(16px,2vw,28px)*2 + 1.1em);width:34px;height:34px;border-radius:50%;background:#15121b}
.ticket::before{top:-17px}.ticket::after{bottom:-17px}
.ticket__shine{position:absolute;inset:0;pointer-events:none;background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.45) 45%,transparent 60%);background-size:250% 100%;animation:shine 4.5s infinite}
@keyframes shine{0%{background-position:150% 0}60%,100%{background-position:-50% 0}}
.tickets__text p{color:#d6cfc2;font-size:clamp(17px,1.3vw,21px)}
.note{display:inline-block;margin-top:14px;font-family:'Permanent Marker';color:var(--orange);transform:rotate(-2deg)}

/* ---------- Anfahrt ---------- */
.anfahrt{background:var(--stone-1);overflow:hidden}
.anfahrt__grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,5vw,80px);align-items:center}
.mapcard{position:relative;aspect-ratio:1;background:#0f0e0d;overflow:hidden;border:2px solid var(--stone-3)}
.mapcard svg{position:absolute;inset:0;width:100%;height:100%}
.mapcard .route{stroke-dasharray:400;stroke-dashoffset:400;transition:stroke-dashoffset 2.6s var(--ease) .3s}
.mapcard.in .route{stroke-dashoffset:0}
.pin{position:absolute;width:40px;height:40px;margin:-46px 0 0 -20px;background:var(--gelb);border-radius:50% 50% 50% 0;transform:rotate(-45deg);box-shadow:0 0 0 0 rgba(253,193,23,.6);animation:pulse 2s infinite}
.pin::after{content:'';position:absolute;inset:13px;border-radius:50%;background:var(--black)}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(253,193,23,.55)}100%{box-shadow:0 0 0 40px rgba(253,193,23,0)}}
.coords{display:block;margin-top:12px;font-family:'Bangers';letter-spacing:.1em;color:var(--grau);font-size:15px}
.anfahrt__text address{text-transform:uppercase;font-style:normal;font-family:'Bangers';font-size:clamp(28px,3vw,44px);line-height:1.05;margin:14px 0 24px;letter-spacing:.03em}
.anfahrt__text address span{color:var(--gelb)}

/* ---------- Crew ---------- */
.crew{background:var(--black)}
.crew__img{position:relative;max-width:860px;margin:clamp(30px,4vw,50px) auto 0;aspect-ratio:16/9;overflow:hidden;border:6px solid var(--stone-2);transform:rotate(-1.5deg);box-shadow:14px 16px 0 rgba(0,0,0,.6)}
.crew__img img{position:absolute;left:0;top:-8%;width:100%;height:116%;object-fit:cover;filter:grayscale(.4) brightness(.82) contrast(1.05);transition:filter .6s;will-change:transform}
.crew__img:hover img{filter:none}
.crew__quote{margin:clamp(28px,4vw,46px) auto 0;text-align:center;font-family:'Bangers';font-size:clamp(32px,4.4vw,64px);color:var(--gelb);transform:rotate(-2deg);padding:0 var(--pad)}
@media (max-width:900px){.crew__img{margin-left:var(--pad);margin-right:var(--pad)}}

/* ---------- Footer ---------- */
.footer{position:relative;background:var(--black);padding:clamp(60px,8vw,110px) 0 30px;overflow:hidden}
.footer__rocks{position:absolute;inset:0;opacity:.45;pointer-events:none;display:flex;justify-content:space-between}
.footer__rocks img{height:130%;width:auto;max-width:none;margin-top:-10%}
.footer__rocks img:last-child{transform:scaleX(-1)}
.footer__inner{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;text-align:center;gap:22px}
.footer__logo{width:clamp(130px,14vw,190px)}
.footer__big{font-family:'Bangers';font-size:clamp(36px,5vw,72px);line-height:.95}
.social{display:flex;gap:14px}
.social a{width:54px;height:54px;display:grid;place-items:center;background:var(--stone-2);border-radius:50%;transition:background .25s,transform .25s}
.social a:hover{background:var(--gelb);transform:translateY(-4px) rotate(-8deg)}
.social a:hover svg{fill:var(--black)}
.social svg{width:24px;height:24px;fill:var(--gelb);transition:fill .25s}
.legal{font-size:14px;color:var(--grau);margin-top:20px}
.legal a{text-decoration:none}
.legal a:hover{color:var(--gelb)}

/* ---------- Responsive ---------- */
@media (max-width:900px){
  .intro__grid,.party__grid,.tickets__inner,.anfahrt__grid{grid-template-columns:1fr}
  .acts{grid-template-columns:1fr 1fr}
  .act:first-child{grid-column:1/-1;aspect-ratio:4/3.4}
  .stats{grid-template-columns:1fr 1fr;row-gap:26px}
  .bubbles{min-height:clamp(380px,95vw,560px)}
  .ticket{transform:rotate(-2deg)}
  .rocks{height:78%}
  .rocks--l{left:-38%}.rocks--r{right:-38%}
}
@media (max-width:560px){
  .hero__brand{flex-direction:column;align-items:center}
  .hero__nr{transform:rotate(-6deg);font-size:48px;margin-bottom:-4px}
  @keyframes nrIn{from{opacity:0;transform:rotate(-30deg) scale(2)}to{opacity:1;transform:rotate(-6deg)}}
  .hero__logo{width:min(44vw,22svh,200px)}
  /* Abstand zur Kopfleiste: Inhalt mittig mit Luft oben statt nach unten gedrückt */
  .hero__content{justify-content:center;padding-top:88px;padding-bottom:4svh}
  .btn{padding:11px 20px}
  .scrollhint{display:none}
  .acts{grid-template-columns:1fr}
  .act{aspect-ratio:4/4.4}
  .act--tba{aspect-ratio:16/9}
  .act--tba .q{font-size:110px}
  .ticket{grid-template-columns:1fr}
  .ticket__stub{writing-mode:horizontal-tb;border-left:0;border-top:3px dashed rgba(0,0,0,.45);padding:14px}
  .ticket::before,.ticket::after{display:none}
  .b1{width:58%}.b2{width:50%}.b3{width:56%;left:0}.b4{width:40%;right:2%}
}

/* Mobil & Touch: Galerie als Wisch-Leiste statt gepinnt */
@media (max-width:900px),(hover:none){
  .gallery{height:auto !important}
  .gallery__pin{position:relative;height:auto;padding:clamp(80px,12vw,140px) 0}
  .gallery__track{width:auto;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding-bottom:20px;transform:none !important;scrollbar-width:none}
  .gallery__track::-webkit-scrollbar{display:none}
  .shot{scroll-snap-align:center;height:clamp(240px,62vw,420px)}
  .progress{display:none}
}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001s !important;animation-delay:0s !important;transition-duration:.001s !important}
  .grain{display:none}
  .rv,.h2 .w > span{opacity:1;transform:none}
}

/* ---------- Impressum / Datenschutz (Texte aus eRecht24) ---------- */
.legal-hero{position:relative;height:clamp(200px,32vw,340px);overflow:hidden;background:radial-gradient(80% 90% at 50% 120%,#1d1530,var(--black) 70%)}
.legal-hero__rocks{position:absolute;inset:0;display:flex;justify-content:space-between;opacity:.8}
.legal-hero__rocks img{height:220%;width:auto;max-width:none;margin-top:-18%}
.legal-hero__rocks img:last-child{transform:scaleX(-1)}
.legal-hero::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(7,6,6,.4),var(--black) 95%)}
.legal{background:var(--black);padding:0 0 clamp(70px,9vw,130px)}
.legal__inner{max-width:860px;margin-top:clamp(-120px,-9vw,-60px);position:relative;z-index:2}
.legal__back{display:inline-block;color:var(--orange);text-decoration:none;font-size:18px;margin-bottom:14px;transform:rotate(-2deg)}
.legal__back:hover{color:var(--gelb)}
.legal .mod_article > .inside > *:not(.ce_er24_legal_text){display:none}
.legal .ce_er24_legal_text{font-family:system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;font-size:clamp(15px,1.05vw,17px);line-height:1.7;color:#d9d3c7;overflow-wrap:anywhere}
.legal .ce_er24_legal_text h1{font-family:'Bangers',Impact,sans-serif;font-weight:400;font-size:clamp(52px,7vw,104px);line-height:1;color:var(--weiss);margin:0 0 .4em;letter-spacing:.02em}
.legal .ce_er24_legal_text h2{font-family:'Bangers',Impact,sans-serif;font-weight:400;font-size:clamp(28px,2.6vw,40px);line-height:1.05;color:var(--gelb);letter-spacing:.03em;margin:1.6em 0 .4em}
.legal .ce_er24_legal_text h3,.legal .ce_er24_legal_text h4{font-family:'Bangers',Impact,sans-serif;font-weight:400;font-size:clamp(21px,1.7vw,26px);letter-spacing:.04em;color:var(--weiss);margin:1.4em 0 .3em}
.legal .ce_er24_legal_text a{color:var(--gelb);text-decoration:underline;text-underline-offset:3px}
.legal .ce_er24_legal_text strong{color:var(--weiss)}
.legal .ce_er24_legal_text ul{padding-left:1.2em}
.legalpage .nav{background:transparent}
