/* Redwood Festival 2027 – gemeinsames Stylesheet (mobil zuerst, fluid bis 1440 px) */

@font-face{font-family:'Anton';font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/Anton-Regular.woff2) format('woff2')}
@font-face{font-family:'Archivo';font-style:normal;font-weight:100 900;font-display:swap;src:url(../fonts/Archivo-Variable.woff2) format('woff2')}
@font-face{font-family:'Space Mono';font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/SpaceMono-Regular.woff2) format('woff2')}
@font-face{font-family:'Space Mono';font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/SpaceMono-Bold.woff2) format('woff2')}

:root{
  --black:#0C0B0A; --panel:#161413; --paper:#F6F2EA; --mute:#A9A39A;
  --red:#D8181E; --red-text:#F2373C;
  --pad:clamp(20px,4.5vw,64px);
  --max:1440px;
  --header-h:72px;
  --halftone:radial-gradient(rgba(0,0,0,.30) 1px,transparent 1.3px) 0 0/5px 5px;
  --speck:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='420' height='420'><filter id='f' x='0' y='0' width='100%25' height='100%25'><feTurbulence type='fractalNoise' baseFrequency='0.62' numOctaves='2' seed='11' stitchTiles='stitch'/><feColorMatrix type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 0 0 0 -8.9'/></filter><rect width='420' height='420' filter='url(%23f)'/></svg>");
  --wear:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='900' height='900'><filter id='f' x='0' y='0' width='100%25' height='100%25'><feTurbulence type='fractalNoise' baseFrequency='0.02 0.035' numOctaves='3' seed='5' stitchTiles='stitch'/><feColorMatrix type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 0 0 0 -5.3'/></filter><rect width='900' height='900' filter='url(%23f)'/></svg>");
  --grain:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='420' height='420'><filter id='f' x='0' y='0' width='100%25' height='100%25'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' seed='2' stitchTiles='stitch'/><feColorMatrix type='matrix' values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1.4 -0.45'/></filter><rect width='420' height='420' filter='url(%23f)'/></svg>");
}
@media (min-width:1000px){:root{--header-h:100px}}

/* Cursor: freigestellte Hand, links-rechts gespiegelt, Finger 25 Grad nach links geneigt (Spitze oben).
   Auf klickbaren Elementen bleibt es dieselbe Hand, nur etwa 25 % größer. */
html,body{cursor:url(../img/cursor-hand.png?v=4) 15 0,auto;cursor:-webkit-image-set(url(../img/cursor-hand.png?v=4) 1x,url(../img/cursor-hand@2x.png?v=4) 2x) 15 0,auto;cursor:image-set(url(../img/cursor-hand.png?v=4) 1x,url(../img/cursor-hand@2x.png?v=4) 2x) 15 0,auto}
a,button,label,summary,[role="button"],input[type="checkbox"],.btn,.nav-toggle{cursor:url(../img/cursor-hand-hover.png?v=4) 18 0,pointer;cursor:-webkit-image-set(url(../img/cursor-hand-hover.png?v=4) 1x,url(../img/cursor-hand-hover@2x.png?v=4) 2x) 18 0,pointer;cursor:image-set(url(../img/cursor-hand-hover.png?v=4) 1x,url(../img/cursor-hand-hover@2x.png?v=4) 2x) 18 0,pointer}
input[type="email"],input[type="text"]{cursor:text}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 10px)}
body{margin:0;background:var(--black);color:var(--paper);font-family:'Archivo',system-ui,sans-serif;font-size:clamp(16px,.35vw + 14.6px,18px);line-height:1.6;overflow-x:hidden;min-width:320px}
img,svg{display:block;max-width:100%}
img{height:auto}
a{color:inherit;text-decoration:none}
a:hover{color:#fff}
ul{margin:0;padding:0;list-style:none}
h1,h2,h3,p,figure{margin:0}
button,input{font:inherit;color:inherit}
:focus-visible{outline:3px solid var(--paper);outline-offset:3px}
.visually-hidden{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip-link{position:absolute;left:12px;top:-60px;z-index:100;background:var(--paper);color:var(--black);padding:12px 18px;font-weight:800}
.skip-link:focus{top:12px}

/* Textur über der ganzen Seite (fest im Fenster, sparsam im Aufwand) */
html::before,body::before,body::after{content:"";position:fixed;inset:0;pointer-events:none}
html::before{z-index:41;background:var(--wear);mix-blend-mode:multiply;opacity:.11}
body::before{z-index:40;background:var(--speck);mix-blend-mode:multiply;opacity:.55}
body::after{z-index:42;background:var(--grain);mix-blend-mode:overlay;opacity:.4}
.crease{position:absolute;top:0;bottom:0;left:50%;width:3px;background:linear-gradient(90deg,rgba(0,0,0,.6),rgba(255,255,255,.08));pointer-events:none;z-index:30}

.wrap{width:100%;max-width:var(--max);margin-inline:auto;padding-inline:var(--pad)}
.rough{filter:url(#rough)}
.display{font-family:'Anton',Impact,sans-serif;font-weight:400;text-transform:uppercase;line-height:.95;letter-spacing:.005em}
.sec-title{font-size:clamp(60px,13.2vw,190px);text-shadow:.03em .025em 0 var(--red);overflow-wrap:break-word}
.tag{display:inline-block;padding:.5em .9em;background:var(--red);color:var(--paper);font-weight:800;font-size:clamp(11px,.5vw + 9.5px,13px);letter-spacing:.12em;text-transform:uppercase;line-height:1.3;transform:rotate(var(--r,-1.2deg))}
.tag--paper{background:var(--paper);color:var(--black)}
.tag--dark{background:var(--black);color:var(--paper)}
.plus{position:absolute;color:var(--red);font-weight:300;font-size:26px;line-height:1}
.muted{color:var(--mute)}
.lead{font-size:clamp(16px,.5vw + 14px,19px);line-height:1.55;color:var(--mute)}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5em;min-height:56px;padding:.6em 1.7em;background:var(--red);color:var(--paper);font-weight:800;font-size:clamp(14px,.4vw + 12.6px,17px);letter-spacing:.1em;text-transform:uppercase;text-align:center;line-height:1.2;border:0;border-radius:0}
.btn:hover{color:#fff;filter:brightness(1.1)}
.btn--dark{background:var(--black);color:var(--paper)}
.btn--paper{background:var(--paper);color:var(--black)}
.btn--paper:hover{color:var(--black)}
.btn--line{background:transparent;border:4px solid var(--paper)}
.btn--block{display:flex;width:100%}

/* Kopfzeile */
.site-header{position:sticky;top:0;z-index:60;background:var(--paper);color:var(--black);border-bottom:6px solid var(--red)}
.site-header::after{content:"";position:absolute;inset:0;pointer-events:none;background:var(--speck);mix-blend-mode:multiply;opacity:.27}
.header-in{display:flex;align-items:center;justify-content:space-between;gap:16px;height:var(--header-h);max-width:var(--max);margin:auto;padding-inline:var(--pad)}
.logo img{height:clamp(36px,3.6vw,54px);width:auto}
.nav-list{display:flex;align-items:center;gap:clamp(18px,2.8vw,44px)}
.nav-list a{font-weight:800;font-size:clamp(13px,1vw,16px);letter-spacing:.14em;text-transform:uppercase;color:var(--black);padding:10px 0;display:inline-block}
.nav-list a:hover{color:var(--red)}
.header-cta{min-height:44px;padding:.5em 1.1em;font-size:clamp(12px,1vw,14px);letter-spacing:.1em}
.nav-toggle{display:none;width:48px;height:48px;background:transparent;border:0;position:relative}
.nav-toggle span{position:absolute;left:11px;right:11px;height:3px;background:var(--black);transition:transform .2s,opacity .2s}
.nav-toggle span:nth-child(1){top:16px}.nav-toggle span:nth-child(2){top:23px}.nav-toggle span:nth-child(3){top:30px}
.nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
.nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
.header-right{display:flex;align-items:center;gap:8px}
@media (max-width:999px){
  .nav-toggle{display:block}
  .site-nav{position:absolute;left:0;right:0;top:100%;background:var(--black);border-bottom:6px solid var(--red);padding:12px var(--pad) 28px;display:none}
  .site-nav.is-open{display:block}
  .nav-list{flex-direction:column;align-items:stretch;gap:0}
  .nav-list a{display:block;color:var(--paper);font-family:'Anton',sans-serif;font-weight:400;font-size:34px;letter-spacing:.02em;padding:14px 0;border-bottom:2px solid rgba(246,242,234,.2)}
  .nav-list a:hover{color:var(--red-text)}
}
@media (max-width:420px){.header-cta{padding:.5em .8em;font-size:11px}}

/* Hero */
.hero{position:relative;overflow:hidden;background:var(--black);padding-bottom:clamp(36px,5vw,70px)}
.streaks{position:absolute;left:0;top:0;width:100%;height:min(980px,100%);-webkit-mask-image:linear-gradient(180deg,transparent 0,#000 25%,#000 70%,transparent 100%);mask-image:linear-gradient(180deg,transparent 0,#000 25%,#000 70%,transparent 100%);pointer-events:none}
.streaks svg{width:100%;height:100%}
.glow{position:absolute;left:50%;top:clamp(60px,9vw,130px);width:min(920px,100%);height:min(620px,90vw);transform:translateX(-50%);background:radial-gradient(ellipse at 50% 50%,rgba(216,24,30,.38),transparent 65%);pointer-events:none}
.hero-in{position:relative}
.meta-row{display:flex;align-items:center;justify-content:space-between;padding-top:clamp(22px,2.6vw,36px)}
.meta-row .plus{position:static}
.meta{display:flex;flex-wrap:wrap;justify-content:center;gap:4px clamp(18px,6.6vw,96px);font-family:'Space Mono',monospace;font-size:clamp(10px,.55vw + 8px,13px);letter-spacing:.24em;text-transform:uppercase;color:var(--mute);text-align:center;line-height:1.8;padding-inline:10px}
.hero-logo{margin-top:clamp(28px,4vw,56px);display:flex;justify-content:center}
.hero-logo .logo-wrap{position:relative;width:min(1060px,92%);transform:rotate(-2.4deg) translateX(-2%)}
.hero-logo img{width:100%}
.hero-logo .glowimg{position:absolute;inset:0;filter:blur(clamp(10px,1.7vw,22px));opacity:.6}
.hero-logo .main{position:relative;filter:url(#rough)}
.date-block{margin-top:clamp(26px,3.2vw,44px);display:flex;justify-content:center}
.date{display:inline-block;transform:rotate(-1.6deg);background:var(--paper);color:var(--black);padding:.05em .4em .12em;font-size:clamp(34px,7.3vw,104px);line-height:1;box-shadow:.1em .1em 0 var(--red);filter:url(#rough);white-space:nowrap;max-width:100%}
.lineup-teaser{margin:clamp(26px,3vw,40px) auto 0;max-width:800px;text-align:center;transform:rotate(-1deg);position:relative}
.lineup-teaser h2{font-size:clamp(11px,.5vw + 9.5px,13px);font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--mute);margin-bottom:14px;font-family:'Archivo',sans-serif}
.lineup-teaser ul{display:grid;grid-template-columns:repeat(3,1fr);gap:10px 0}
.lineup-teaser li{font-family:'Anton',sans-serif;text-transform:uppercase;font-size:clamp(18px,2vw,24px);letter-spacing:.03em;color:var(--red-text)}
@media (max-width:640px){.lineup-teaser ul{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}

/* Rotes Band mit 2027 */
.band{position:relative;overflow:hidden;background:var(--red) var(--halftone);height:clamp(390px,55vw,800px);margin-top:-8px}
.band-clip{clip-path:polygon(0 100%,0 14px,4% 3px,8% 20px,13% 0,17% 18px,22% 6px,27% 22px,32% 2px,37% 16px,42% 0,47% 20px,52% 5px,57% 22px,63% 1px,68% 17px,73% 4px,78% 21px,84% 0,89% 15px,94% 6px,100% 18px,100% 100%)}
.band::before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 60% 70% at 50% 40%,rgba(255,110,100,.55),transparent 70%),linear-gradient(90deg,rgba(0,0,0,.5),transparent 22%,transparent 78%,rgba(0,0,0,.5))}
.band .streaks{height:100%;-webkit-mask-image:linear-gradient(180deg,#000,transparent 85%);mask-image:linear-gradient(180deg,#000,transparent 85%)}
.band-num{position:absolute;left:1.5%;top:clamp(48px,9vw,130px);white-space:nowrap;font-size:clamp(140px,45.5vw,650px);line-height:.95;color:var(--black);transform:rotate(-1.6deg);transform-origin:left center;filter:url(#rough);letter-spacing:-.01em}
.band-in{position:relative;max-width:var(--max);height:100%;margin-inline:auto}
.band .tag{position:absolute;left:var(--pad);top:clamp(28px,6vw,84px);z-index:3}
.forest{position:absolute;left:0;right:0;bottom:0;height:clamp(240px,25vw,360px);animation:wipe 1.3s cubic-bezier(.7,0,.2,1) both}
.forest svg{width:100%;height:100%;filter:url(#rough)}
@keyframes wipe{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}

/* Intro-Karten unter dem Band */
.intro{position:relative;background:var(--black);padding-bottom:clamp(50px,7vw,90px)}
.intro-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:22px;align-items:start;margin-top:clamp(-70px,-5vw,-40px);position:relative;z-index:5}
.photo-frame{position:relative;border:4px solid var(--paper);background:var(--black);overflow:hidden}
.photo-frame img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.photo-frame--duo img{filter:contrast(1.08) saturate(.95)}
.photo-frame--clean{background:var(--black)}
.photo-frame--clean img{filter:contrast(1.2) saturate(1.15)}
.intro-photo{aspect-ratio:1.7;transform:rotate(-1.4deg);box-shadow:clamp(8px,1vw,14px) clamp(8px,1vw,14px) 0 var(--red)}
.intro-text{border:4px solid var(--paper);background:var(--black);padding:clamp(22px,3vw,38px) clamp(20px,3vw,40px);transform:rotate(.8deg);margin-top:clamp(30px,5vw,70px);display:flex;flex-direction:column;gap:clamp(20px,3vw,34px)}
.intro-text p{font-size:clamp(17px,.7vw + 14.5px,21px);line-height:1.5;max-width:30em}
.btn-row{display:flex;gap:14px;flex-wrap:wrap}
.hero-foot{display:flex;align-items:center;justify-content:space-between;margin-top:clamp(36px,4vw,56px);font-size:clamp(11px,.4vw + 9.6px,13px);font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--mute)}
@media (max-width:860px){
  .intro-grid{grid-template-columns:minmax(0,1fr);gap:0}
  .intro-text{margin-top:30px}
}

/* Abschnitte */
.section{position:relative;padding-block:clamp(60px,8vw,130px);overflow:hidden}
.section .plus.tl{left:30px;top:30px}.section .plus.tr{right:30px;top:30px}
.sec-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px 40px;flex-wrap:wrap;margin-bottom:clamp(30px,4vw,56px)}
.sec-head .lead{max-width:24em;margin-bottom:.4em}
.ghost{position:absolute;color:transparent;-webkit-text-stroke:3px var(--red);opacity:.4;pointer-events:none;white-space:nowrap;line-height:.8;filter:url(#rough);font-size:clamp(220px,52vw,900px);z-index:0}
.section>.wrap{position:relative;z-index:1}

/* Line-up 2027 */
.soon{position:relative;background:var(--red) var(--halftone);padding:clamp(28px,4vw,60px) clamp(22px,4vw,56px) clamp(26px,3.5vw,56px);transform:rotate(-1deg);box-shadow:clamp(8px,1vw,14px) clamp(8px,1vw,14px) 0 var(--paper);overflow:hidden}
.soon::before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 60% 80% at 30% 30%,rgba(255,110,100,.45),transparent 70%)}
.soon-title{position:relative;text-align:center;color:var(--black);font-size:clamp(92px,21.5vw,250px);line-height:.88;filter:url(#rough)}
.soon-title span{display:block}
@media (min-width:720px){.soon-title span{display:inline}.soon-title{white-space:nowrap;font-size:clamp(100px,16vw,250px)}}
.soon-foot{position:relative;display:flex;justify-content:space-between;align-items:flex-end;gap:clamp(20px,3vw,48px);margin-top:clamp(22px,3vw,40px);flex-wrap:wrap}
.soon-foot p{max-width:34em;font-size:clamp(17px,.6vw + 14.6px,22px);line-height:1.5;font-weight:600}

/* Rückblick */
.collage{position:relative;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-auto-rows:clamp(34px,6.55vw,86px);margin:0 0 clamp(36px,4vw,56px)}
.collage figure{position:relative;border:4px solid var(--paper);overflow:hidden;background:var(--black)}
.collage img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.collage .c1{grid-area:1/1/7/8;transform:rotate(-1deg);z-index:2;box-shadow:12px 12px 0 var(--red);margin-top:clamp(12px,2vw,28px)}
.collage .c2{grid-area:1/7/7/10;transform:rotate(2deg);z-index:4}
.collage .c3{grid-area:2/10/9/13;transform:rotate(-2deg);z-index:1;box-shadow:-10px 10px 0 var(--paper)}
.collage .c4{grid-area:7/1/12/4;transform:rotate(1.5deg);z-index:5;margin-top:clamp(0px,1vw,10px)}
.collage .c5{grid-area:8/4/12/8;transform:rotate(-1.2deg);z-index:3;box-shadow:10px 10px 0 var(--red)}
.collage .c6{grid-area:8/8/12/11;transform:rotate(2deg);z-index:2}
.collage img{filter:contrast(1.08) saturate(.95)}
.collage .tag{position:absolute;left:44%;top:56%;z-index:6;--r:1.5deg}
@media (max-width:719px){
  .collage{grid-template-columns:repeat(6,minmax(0,1fr));grid-auto-rows:clamp(46px,14.2vw,70px)}
  .collage .c1{grid-area:1/1/5/7;margin-top:0;box-shadow:8px 8px 0 var(--red)}
  .collage .c2{grid-area:4/3/9/7}
  .collage .c3{grid-area:12/4/16/7;box-shadow:-6px 6px 0 var(--paper)}
  .collage .c4{grid-area:6/1/11/4;margin-top:0}
  .collage .c5{grid-area:9/3/12/7;box-shadow:6px 6px 0 var(--red)}
  .collage .c6{grid-area:11/1/15/4}
  .collage .tag{left:35%;top:34%}
}
.bandlist{border:4px solid var(--paper);background:var(--black);padding:clamp(22px,3vw,34px) clamp(20px,3vw,40px);transform:rotate(.5deg);position:relative}
.bandlist ul{columns:3;column-gap:clamp(30px,4vw,56px);margin-top:12px}
.bandlist li{font-family:'Anton',sans-serif;text-transform:uppercase;font-size:clamp(22px,2vw,30px);letter-spacing:.02em;padding:10px 0;border-bottom:2px solid rgba(246,242,234,.3);break-inside:avoid}
@media (max-width:900px){.bandlist ul{columns:2}}
@media (max-width:520px){.bandlist ul{columns:1}}

/* Spenden */
.give{position:relative;background:var(--red) var(--halftone);color:var(--paper);padding-block:clamp(80px,11vw,160px) clamp(70px,10vw,160px);margin-top:-14px;clip-path:polygon(0 100%,0 22px,3% 4px,7% 24px,11% 0,16% 18px,21% 4px,26% 24px,31% 2px,36% 20px,41% 0,46% 22px,51% 6px,56% 24px,62% 2px,67% 19px,72% 5px,77% 23px,83% 0,88% 17px,93% 7px,100% 20px,100% 100%)}
.give::before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 70% 80% at 30% 20%,rgba(255,110,100,.45),transparent 70%),linear-gradient(180deg,transparent 60%,rgba(0,0,0,.45))}
.give .wrap{position:relative}
.give-grid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:clamp(30px,6vw,80px);align-items:start}
.give-title{font-size:clamp(66px,13vw,210px);line-height:.98;color:var(--black);transform:rotate(-1.5deg);transform-origin:left top;padding-top:.28em;margin-top:-.28em;overflow-wrap:break-word}
.give-text{padding-top:clamp(0px,4vw,70px)}
.give-text p{font-size:clamp(18px,.8vw + 14.6px,22px);line-height:1.5;font-weight:600;max-width:24em;margin-bottom:clamp(22px,2.4vw,30px)}
.give .tag{margin-bottom:clamp(16px,2vw,24px)}
.who{margin-top:clamp(40px,6vw,80px);border-top:4px solid var(--black);padding-top:clamp(24px,3vw,44px);display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(24px,5vw,64px)}
.who h3{font-size:clamp(38px,5.2vw,72px);line-height:1.14;color:var(--black)}
.who p{font-size:clamp(17px,.6vw + 14.6px,22px);line-height:1.5;font-weight:600;max-width:24em;align-self:center}
@media (max-width:860px){.give-grid,.who{grid-template-columns:minmax(0,1fr)}.give-text{padding-top:0}}

/* Merch */
.merch-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(18px,2.4vw,30px) clamp(14px,2vw,24px);align-items:start;position:relative;z-index:45}
.product{border:4px solid var(--paper);background:var(--black);transform:rotate(var(--r,0deg));position:relative}
.product:nth-child(3n+2){margin-top:clamp(0px,3.6vw,52px)}
.product:nth-child(3n+3){margin-top:clamp(0px,1.2vw,16px)}
.product-img{display:block;position:relative;aspect-ratio:1;background:#fff;overflow:hidden}
.product-img img{width:100%;height:100%;object-fit:cover}
.product-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;padding:clamp(12px,1.6vw,20px) clamp(12px,1.8vw,24px);border-top:4px solid var(--paper)}
.product h3{font-size:clamp(21px,2.1vw,30px);line-height:1;letter-spacing:.01em}
.product .btn{min-height:44px;padding:.5em 1.1em;font-size:clamp(11px,.7vw + 8.6px,13px);letter-spacing:.08em}
.merch-cta{display:flex;justify-content:center;margin-top:clamp(40px,6vw,90px)}
@media (max-width:900px){
  .merch-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .product:nth-child(3n+2),.product:nth-child(3n+3){margin-top:0}
  .product:nth-child(even){margin-top:28px}
}
@media (max-width:520px){.product-bar{flex-direction:column;align-items:stretch}.product .btn{width:100%}}

/* Festivalguide */
.guide-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;align-items:start}
.card{border:4px solid var(--paper);background:var(--black);padding:clamp(20px,2.2vw,32px) clamp(18px,2.2vw,34px) clamp(22px,2.4vw,38px);transform:rotate(var(--r,0deg))}
.card h3{font-size:clamp(34px,3.4vw,48px);line-height:1.05;margin-bottom:18px;text-shadow:.07em .06em 0 var(--red)}
.card:nth-child(2){margin-top:clamp(0px,3.8vw,56px)}
.card:nth-child(3){margin-top:clamp(0px,1.4vw,20px)}
.days div{display:flex;align-items:baseline;gap:14px;padding:12px 0;border-bottom:2px solid rgba(246,242,234,.3)}
.days b{font-family:'Anton',sans-serif;font-weight:400;font-size:clamp(24px,2.1vw,30px);width:2.1em;color:var(--red-text);text-decoration:underline;text-decoration-thickness:3px;text-underline-offset:6px;text-transform:uppercase}
.days span{flex:1;font-weight:700;font-size:clamp(16px,.6vw + 14px,21px)}
.days small{font-size:14px;color:var(--mute)}
.rules li{padding:10px 0;border-bottom:2px solid rgba(246,242,234,.3);font-weight:500;line-height:1.4;font-size:clamp(16px,.4vw + 14.6px,18px)}
.card .note{margin-top:16px;font-size:15px;color:var(--mute)}
.strip{margin:clamp(60px,8vw,110px) -40px 0;background:var(--paper);color:var(--black);padding:clamp(18px,2.2vw,28px) 40px;text-align:center;font-size:clamp(28px,4.4vw,60px);line-height:1.05;transform:rotate(-1.6deg);box-shadow:0 10px 0 var(--red);filter:url(#rough)}
@media (max-width:1000px){
  .guide-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .card:nth-child(3){grid-column:1/-1;margin-top:0}
  .card:nth-child(2){margin-top:26px}
}
@media (max-width:640px){.guide-grid{grid-template-columns:minmax(0,1fr)}.card:nth-child(2){margin-top:20px}.card:nth-child(3){grid-column:auto;margin-top:20px}}

/* Anfahrt */
.route-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:22px;align-items:start}
.map{position:relative;display:block;border:4px solid var(--paper);transform:rotate(.6deg)}
.map-in{position:relative;aspect-ratio:1.65;background:var(--black);overflow:hidden;min-height:240px}
.map-in img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:contrast(1.05) saturate(.9)}
.map-in::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(0,0,0,.5));pointer-events:none}
.pin{position:absolute;left:46%;top:44%;width:clamp(60px,8vw,110px);height:clamp(60px,8vw,110px);transform:translate(-50%,-50%);filter:drop-shadow(5px 5px 0 var(--black));z-index:2}
.pin-label{position:absolute;left:46%;top:44%;margin-top:clamp(36px,4.6vw,60px);transform:translateX(-50%) rotate(-1.5deg);background:var(--black);color:var(--paper);font-weight:800;font-size:clamp(11px,.5vw + 9.6px,14px);letter-spacing:.12em;text-transform:uppercase;padding:.55em 1em;white-space:nowrap;z-index:2}
.map .tag{position:absolute;left:14px;top:14px;z-index:3;--r:-1.2deg}
.route-info{border:4px solid var(--paper);background:var(--black);padding:clamp(22px,2.6vw,38px);transform:rotate(-.8deg);margin-top:clamp(0px,5vw,80px);margin-left:max(-60px,-4vw);position:relative}
.route-info h2{font-size:clamp(64px,7vw,100px);line-height:.95;text-shadow:.05em .04em 0 var(--red);margin-bottom:20px}
.route-info address{font-style:normal;font-weight:600;font-size:clamp(18px,.7vw + 14.6px,21px);line-height:1.5;margin-bottom:22px}
.route-info p.muted{margin-top:16px;font-size:14px;line-height:1.5}
@media (max-width:900px){.route-grid{grid-template-columns:minmax(0,1fr)}.route-info{margin:6px 0 0}}

/* Ticket-Alarm */
.alarm{position:relative;overflow:hidden;background:var(--black);border-top:4px solid var(--paper);padding-block:clamp(44px,8vw,120px)}
.tickets{position:absolute;inset:0;font-size:clamp(7px,1.12vw,16px);overflow:hidden;pointer-events:none}
.tickets::after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 55% 60% at 28% 35%,transparent 0,rgba(12,11,10,.3) 65%,rgba(12,11,10,.85) 100%)}
.trow{position:absolute;left:0;display:flex;gap:1em;white-space:nowrap}
.ticket{position:relative;flex:0 0 40em;height:14.4em;background:var(--red);overflow:hidden;color:var(--black)}
.ticket::before,.ticket::after{content:"";position:absolute;top:50%;width:1.8em;height:1.8em;margin-top:-.9em;border-radius:50%;background:var(--black)}
.ticket::before{left:-.9em}.ticket::after{right:-.9em}
.ticket b{position:absolute;left:.9em;top:.1em;font-family:'Anton',sans-serif;font-weight:400;font-size:11.2em;line-height:1.15}
.ticket i{position:absolute;left:20.6em;top:1.9em;bottom:1.9em;border-left:.12em dashed rgba(12,11,10,.55)}
.ticket em{position:absolute;left:22em;top:1.9em;font-style:normal;font-weight:800;font-size:.8em;letter-spacing:.1em;text-transform:uppercase;line-height:1.6}
.ticket u{position:absolute;right:1.6em;top:1.4em;writing-mode:vertical-rl;text-decoration:none;font-family:'Anton',sans-serif;font-size:3.2em;letter-spacing:.02em;text-transform:uppercase;line-height:1}
.alarm-card{position:relative;z-index:5;display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1fr);border:4px solid var(--paper);background:var(--black);transform:rotate(-1deg);box-shadow:clamp(8px,1vw,16px) clamp(8px,1vw,16px) 0 var(--black);max-width:1020px;margin-inline:auto 0}
.alarm-card .head{background:var(--red) var(--halftone);padding:clamp(24px,3vw,40px) clamp(22px,2.6vw,36px)}
.alarm-card h2{font-size:clamp(66px,8vw,110px);line-height:.92;color:var(--black);margin-top:12px}
.alarm-card form{padding:clamp(24px,3vw,44px) clamp(22px,3vw,40px)}
.alarm-card form>p{font-size:clamp(17px,.5vw + 14.6px,20px);line-height:1.5;font-weight:600;margin-bottom:22px}
.field label{display:block;font-weight:700;font-size:13px;letter-spacing:.12em;text-transform:uppercase;margin-bottom:8px}
.field-row{display:flex}
.field input[type=email]{flex:1;min-width:0;height:62px;padding:0 20px;background:transparent;border:4px solid var(--paper);border-right:0;border-radius:0;font-size:18px}
.field input::placeholder{color:var(--mute)}
.field .btn{height:62px;white-space:nowrap;padding:0 1.2em;font-size:13px}
.consent{display:flex;gap:12px;align-items:flex-start;margin-top:18px;font-size:15px;line-height:1.45;color:var(--mute)}
.consent input{width:22px;height:22px;margin-top:2px;flex-shrink:0;accent-color:var(--red)}
.consent a{color:var(--paper);text-decoration:underline}
.hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.form-status{margin-top:16px;min-height:1.5em;font-weight:600}
.form-status.ok{color:#7fe08a}.form-status.err{color:var(--red-text)}
@media (max-width:900px){
  .alarm-card{grid-template-columns:minmax(0,1fr);max-width:640px;margin-inline:auto}
  .tickets{font-size:9px}
}
@media (max-width:520px){.field-row{flex-direction:column}.field input[type=email]{border-right:4px solid var(--paper)}.field .btn{width:100%;margin-top:12px}}

/* Footer */
.site-footer{position:relative;background:#070606;border-top:4px solid var(--paper);padding-block:clamp(44px,6vw,80px) 36px}
.foot-top{display:flex;justify-content:space-between;align-items:flex-start;gap:clamp(30px,5vw,60px);flex-wrap:wrap}
.foot-brand img{width:clamp(180px,20vw,300px)}
.foot-brand p{margin-top:24px;font-size:clamp(28px,3.4vw,44px);line-height:1.1}
.foot-cols{display:flex;gap:clamp(30px,6.6vw,96px);flex-wrap:wrap}
.foot-cols h2{font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--mute);margin-bottom:14px;font-family:'Archivo',sans-serif}
.foot-cols li{margin-bottom:8px}
.foot-cols a{font-weight:600;font-size:clamp(16px,.4vw + 14.6px,18px);padding:4px 0;display:inline-block}
.foot-bottom{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:clamp(40px,6vw,72px);padding-top:22px;border-top:2px solid rgba(246,242,234,.3);font-size:14px;color:var(--mute)}
@media (max-width:640px){.foot-cols{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);width:100%}.foot-cols>div:last-child{grid-column:1/-1}}

/* Rechtliche Seiten */
.legal-hero{padding-top:clamp(46px,7vw,90px)}
.legal-title{font-size:clamp(54px,11vw,140px);text-shadow:.04em .035em 0 var(--red);overflow-wrap:anywhere}
.legal-sub{margin-top:24px;font-size:clamp(17px,.6vw + 14.6px,20px);line-height:1.5;color:var(--mute);max-width:38em}
.legal-grid{display:flex;gap:clamp(30px,5vw,72px);align-items:flex-start;padding-block:clamp(30px,4vw,60px) clamp(60px,8vw,120px)}
.legal{flex:1;min-width:0;max-width:880px}
.legal h2{margin:clamp(54px,6vw,84px) 0 22px;padding-top:26px;border-top:4px solid var(--paper);font-family:'Anton',sans-serif;font-weight:400;text-transform:uppercase;font-size:clamp(34px,4.3vw,58px);line-height:1.02;overflow-wrap:break-word}
.legal h3{margin:40px 0 12px;font-family:'Anton',sans-serif;font-weight:400;text-transform:uppercase;font-size:clamp(24px,2.4vw,32px);line-height:1.12;letter-spacing:.01em;color:var(--red-text);overflow-wrap:break-word}
.legal p{margin:0 0 16px;line-height:1.65;overflow-wrap:break-word}
.legal ul{margin:0 0 20px}
.legal li{position:relative;padding:8px 0 8px 28px;border-bottom:1px solid rgba(246,242,234,.16);line-height:1.55;overflow-wrap:break-word}
.legal li::before{content:"+";position:absolute;left:0;top:6px;color:var(--red);font-weight:300;font-size:22px;line-height:1.3}
.legal a{text-decoration:underline;text-underline-offset:3px}
.legal .toc{display:flex;flex-direction:column;gap:2px;margin:36px 0 0}
.legal .toc a{font-weight:700;padding:8px 0;text-decoration:none;display:block}
.legal-aside{width:340px;flex-shrink:0;border:4px solid var(--paper);padding:26px 26px 28px;transform:rotate(.6deg);margin-top:20px;position:sticky;top:calc(var(--header-h) + 20px)}
.legal-aside .display{font-size:30px;line-height:1.05;margin-bottom:14px}
.legal-aside p{font-size:16px;line-height:1.55;margin-bottom:14px}
.check{background:var(--red);color:var(--paper);font-weight:700;font-size:.82em;padding:1px 7px;margin:0 2px;box-decoration-break:clone;-webkit-box-decoration-break:clone}
@media (max-width:1100px){
  .legal-grid{flex-direction:column-reverse}
  .legal-aside{width:100%;position:static;transform:none;margin-top:0}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
}

.legal p>strong:first-child{color:var(--red-text)}

/* Alle Fotos: nur ein sehr schwacher Rotstich */
.photo-frame::before,.collage figure::before,.map-in::before{content:"";position:absolute;inset:0;z-index:1;background:var(--red);opacity:.09;mix-blend-mode:color;pointer-events:none}

/* Spenden per Überweisung (GiroCode) */
.donate{position:relative;margin-top:clamp(40px,6vw,80px);display:grid;grid-template-columns:minmax(0,.75fr) minmax(0,1.25fr);gap:clamp(26px,4.5vw,64px);align-items:start}
.donate-qr{background:var(--paper);color:var(--black);padding:clamp(14px,2vw,24px);border:4px solid var(--black);box-shadow:10px 10px 0 var(--black);transform:rotate(-1.2deg);max-width:420px;width:100%}
.donate-qr img{width:100%;height:auto}
.donate-qr figcaption{margin-top:12px;text-align:center;font-weight:800;font-size:13px;letter-spacing:.1em;text-transform:uppercase}
.donate-info{background:var(--black);border:4px solid var(--paper);padding:clamp(22px,3vw,40px);transform:rotate(.5deg)}
.donate-info h3{font-size:clamp(38px,4.8vw,66px);line-height:1.08;margin-bottom:18px;color:var(--paper)}
.steps{counter-reset:s;margin:0 0 24px;padding:0;list-style:none}
.steps li{counter-increment:s;position:relative;padding:11px 0 11px 50px;border-bottom:2px solid rgba(246,242,234,.25);font-weight:600;line-height:1.45;font-size:clamp(16px,.5vw + 14.4px,19px)}
.steps li::before{content:counter(s);position:absolute;left:0;top:9px;width:34px;height:34px;background:var(--red);color:var(--paper);font-family:'Anton',sans-serif;font-size:21px;line-height:34px;text-align:center}
.bank-head{font-weight:800;font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--mute);margin-bottom:10px}
.bank{margin:0;display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px 20px;font-size:clamp(16px,.5vw + 14.4px,19px)}
.bank dt{color:var(--mute);font-weight:600}
.bank dd{margin:0;font-weight:700;overflow-wrap:anywhere}
#iban-text{letter-spacing:.04em}
.copy-btn{margin-left:8px;padding:6px 12px;background:var(--red);color:var(--paper);border:0;border-radius:0;font-weight:800;font-size:12px;letter-spacing:.08em;text-transform:uppercase;min-height:36px}
.copy-status{min-height:1.4em;margin-top:12px;font-weight:600;color:#7fe08a}
@media (max-width:860px){.donate{grid-template-columns:minmax(0,1fr)}.donate-info{order:-1}.donate-qr{margin-inline:auto}}

/* Spendenabschnitt liegt über der Seitentextur, damit der GiroCode gestochen scharf bleibt; die Körnung kommt hier aus einer eigenen Ebene */
.give{z-index:45}
.give::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:var(--speck);mix-blend-mode:multiply;opacity:.55}
.donate-qr{position:relative;z-index:2;transform:none}

/* Spendenbereich: Überschrift über die volle Breite, Text und Knopf darunter */
.give-grid{grid-template-columns:minmax(0,1fr);gap:0}
.give-title{font-size:clamp(66px,17vw,250px);line-height:.92}
.give-text{padding-top:clamp(20px,2.4vw,30px);display:flex;flex-wrap:wrap;gap:22px clamp(24px,4vw,56px);align-items:center;justify-content:space-between}
.give-text p{margin-bottom:0;max-width:30em}

/* Tickets coming soon (ersetzt das Ticket-Alarm-Formular) */
.tix-info{padding:clamp(24px,3vw,44px) clamp(22px,3vw,40px);display:flex;flex-direction:column;justify-content:center}
.tix-info p{font-size:clamp(17px,.5vw + 14.6px,20px);line-height:1.5;font-weight:600}
.tix-info .tix-early{font-size:clamp(38px,4.4vw,64px);line-height:1;color:#f2373c;margin:18px 0}
.tix-info .tix-later{color:#a9a39a}

/* Merch: Produktbilder aus dem Spreadshop (freigestellt, daher contain) */
.product-img{background:var(--paper)}
.product-img img{object-fit:contain}
.product:nth-child(3n+1){margin-top:0}

/* Limited-Shirt: große Karte über dem Raster */
.product--limited{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);margin-bottom:clamp(30px,4vw,56px);box-shadow:clamp(8px,1vw,14px) clamp(8px,1vw,14px) 0 var(--red);position:relative;z-index:46;--r:-.6deg}
.product--limited .product-img{aspect-ratio:auto;min-height:clamp(320px,40vw,560px)}
.product--limited .product-img img{position:absolute;inset:0}
.product--limited .stamp{position:absolute;left:clamp(10px,1.4vw,18px);top:clamp(10px,1.4vw,18px);transform:rotate(-4deg);background:var(--red);color:var(--paper);font-family:"Archivo",sans-serif;font-weight:800;font-size:clamp(12px,.6vw + 9px,15px);letter-spacing:.12em;text-transform:uppercase;padding:.6em .9em}
.limited-info{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:clamp(14px,1.6vw,20px);padding:clamp(22px,3.4vw,48px) clamp(18px,3.6vw,52px);background:var(--red) var(--halftone);color:var(--paper);border-left:4px solid var(--paper)}
.limited-info h3{font-size:clamp(64px,7.8vw,112px);line-height:.92;color:var(--black)}
.limited-info p{font-size:clamp(17px,.5vw + 14.6px,21px);line-height:1.5;font-weight:600;max-width:22em}
@media (max-width:860px){.product--limited{grid-template-columns:minmax(0,1fr)}.product--limited .product-img{aspect-ratio:1;min-height:0}.limited-info{border-left:0;border-top:4px solid var(--paper)}.limited-info .btn{width:100%}}

/* Hinweiskasten auf den Rechtstext-Seiten */
.legal-note{margin:0 0 30px;padding:20px 24px;border:4px solid var(--paper);line-height:1.55}
.map-in{background:var(--red) var(--halftone)}
