/* =========================================================
   NOISE FEST · v1.1 — ED. 01
   Brutalist, typographic, fanzine printed wrong.
   ========================================================= */

:root{
  --bg:#0a0a0a;
  --fg:#ededdf;
  --accent:#ff3b1f;
  --muted:#6b6b63;
  --line:#1f1f1d;
  --surface:#111110;

  --pad: clamp(1.5rem, 4vw, 4rem);
  --nav-h: 56px;
  --max: 1440px;

  --t-fast: .15s ease;
  --t-med:  .35s cubic-bezier(.2,.7,.2,1);
}

*,*::before,*::after{ box-sizing:border-box; margin:0; padding:0; }
html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
body{
  background:var(--bg);
  color:var(--fg);
  font-family:"Space Grotesk", system-ui, sans-serif;
  font-size:16px;
  line-height:1.5;
  font-feature-settings:"ss01","ss02";
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
::selection{ background:var(--accent); color:var(--bg); }
img,svg{ display:block; max-width:100%; }
a{ color:inherit; text-decoration:none; }
button{ font:inherit; color:inherit; background:none; border:0; cursor:pointer; }
input{ font:inherit; color:inherit; }

/* Subtle grain overlay */
body::before{
  content:"";
  position:fixed; inset:0;
  pointer-events:none;
  z-index:90;
  opacity:.04;
  mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .6 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
}

/* Custom scrollbar */
html{ scrollbar-color:var(--accent) var(--bg); scrollbar-width:thin; }
body::-webkit-scrollbar{ width:8px; height:8px; }
body::-webkit-scrollbar-track{ background:var(--bg); }
body::-webkit-scrollbar-thumb{ background:var(--line); }
body::-webkit-scrollbar-thumb:hover{ background:var(--accent); }

/* Focus */
:focus{ outline:none; }
:focus-visible{ outline:2px solid var(--accent); outline-offset:3px; }

/* Typography utilities */
.mono{ font-family:"JetBrains Mono", ui-monospace, monospace; }
.display{ font-family:"Anton", "Bebas Neue", sans-serif; font-weight:400; letter-spacing:-0.01em; line-height:.85; text-transform:uppercase; }
.archivo{ font-family:"Archivo Black", sans-serif; text-transform:uppercase; letter-spacing:-0.02em; }

.caption{
  font-family:"JetBrains Mono", monospace;
  font-size:.72rem;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--muted);
}

/* ==== NAV ============================================ */

.nav{
  position:fixed; top:0; left:0; right:0; z-index:80;
  height:var(--nav-h);
  display:flex; align-items:center; justify-content:space-between;
  padding:0 var(--pad);
  background:rgba(10,10,10,.92);
  backdrop-filter:saturate(140%) blur(8px);
  -webkit-backdrop-filter:saturate(140%) blur(8px);
  border-bottom:1px solid var(--line);
}
.nav__logo{
  font-family:"JetBrains Mono", monospace;
  font-weight:700;
  font-size:.85rem;
  letter-spacing:.18em;
  display:inline-flex; align-items:center; gap:.55rem;
}
.nav__logo::before{ content:"▮"; color:var(--accent); }
.nav__links{ display:flex; align-items:center; gap:1.5rem; }
.nav__links a{
  font-family:"JetBrains Mono", monospace;
  font-size:.78rem; letter-spacing:.16em; text-transform:uppercase;
  position:relative;
  padding:.25rem 0;
  transition:color var(--t-fast);
}
.nav__links a::after{
  content:""; position:absolute; left:0; right:100%; bottom:-3px;
  border-bottom:1px solid var(--fg);
  transition:right var(--t-med);
}
.nav__links a:hover::after{ right:0; }
.nav__links a.is-active{ color:var(--accent); }
.nav__links a.is-active::after{ right:0; border-bottom-color:var(--accent); }
.nav__cta{
  background:var(--accent);
  color:var(--bg);
  font-family:"JetBrains Mono", monospace;
  font-weight:700;
  font-size:.75rem;
  letter-spacing:.15em;
  text-transform:uppercase;
  padding:.7rem 1rem;
  border:2px solid var(--accent);
  transition:background var(--t-fast), color var(--t-fast);
}
.nav__cta:hover{ background:var(--bg); color:var(--accent); }
.nav__burger{
  display:none;
  width:36px; height:36px;
  position:relative;
}
.nav__burger span{
  position:absolute; left:6px; right:6px; height:2px;
  background:var(--fg);
  transition:transform var(--t-med), opacity var(--t-fast), top var(--t-med);
}
.nav__burger span:nth-child(1){ top:12px; }
.nav__burger span:nth-child(2){ top:18px; }
.nav__burger span:nth-child(3){ top:24px; }
body.menu-open .nav__burger span:nth-child(1){ top:18px; transform:rotate(45deg); }
body.menu-open .nav__burger span:nth-child(2){ opacity:0; }
body.menu-open .nav__burger span:nth-child(3){ top:18px; transform:rotate(-45deg); }

.menu{
  position:fixed; inset:var(--nav-h) 0 0 0; z-index:75;
  background:var(--bg);
  padding:var(--pad);
  display:flex; flex-direction:column; justify-content:space-between;
  transform:translateY(-100%);
  transition:transform var(--t-med);
  pointer-events:none;
}
body.menu-open .menu{ transform:translateY(0); pointer-events:auto; }
.menu__links{ display:flex; flex-direction:column; gap:0; margin-top:2rem; }
.menu__links a{
  font-family:"Anton", sans-serif;
  font-size:clamp(3.5rem, 14vw, 7rem);
  line-height:.95;
  text-transform:uppercase;
  letter-spacing:-0.02em;
  border-bottom:1px solid var(--line);
  padding:1rem 0;
  transition:color var(--t-fast), padding-left var(--t-fast);
}
.menu__links a:hover{ color:var(--accent); padding-left:.4rem; }
.menu__links a.is-active{ color:var(--accent); }
.menu__footer{ display:flex; justify-content:space-between; align-items:flex-end; padding-top:2rem; }

/* ==== LAYOUT ========================================== */

main{ padding-top:var(--nav-h); }
section{
  position:relative;
  padding:clamp(4rem, 9vw, 9rem) var(--pad);
  border-top:1px solid var(--line);
}
.wrap{ max-width:var(--max); margin:0 auto; width:100%; }

.section-head{
  display:grid;
  grid-template-columns: auto 1fr auto;
  align-items:end;
  gap:2rem;
  margin-bottom:clamp(2.5rem, 5vw, 5rem);
  padding-bottom:1.25rem;
  border-bottom:1px solid var(--line);
}
.section-head__no{
  font-family:"JetBrains Mono", monospace;
  font-size:.85rem; letter-spacing:.18em;
  color:var(--accent);
}
.section-head__title{
  font-family:"Anton", sans-serif;
  font-size:clamp(2.5rem, 8vw, 6rem);
  line-height:.9;
  letter-spacing:-0.02em;
  text-transform:uppercase;
}
.section-head__meta{
  font-family:"JetBrains Mono", monospace;
  font-size:.72rem; letter-spacing:.14em; text-transform:uppercase;
  color:var(--muted);
  text-align:right;
  max-width:24ch;
}

/* ==== PAGE HEADER (subpages) ========================== */

.page-header{
  padding:clamp(4rem, 9vw, 8rem) var(--pad) clamp(2.5rem, 5vw, 4rem);
  border-top:0;
  border-bottom:1px solid var(--line);
  position:relative;
}
.page-header__top{
  display:flex; justify-content:space-between; align-items:center;
  font-family:"JetBrains Mono", monospace;
  font-size:.74rem; letter-spacing:.18em; text-transform:uppercase;
  color:var(--muted);
  margin-bottom:clamp(1.5rem, 3vw, 2.5rem);
  padding-bottom:1rem;
  border-bottom:1px dashed var(--line);
}
.page-header__back{ transition:color var(--t-fast), padding-left var(--t-fast); }
.page-header__back:hover{ color:var(--accent); padding-left:.4rem; }
.page-header__no{ color:var(--accent); }
.page-header__title{
  font-family:"Anton", sans-serif;
  font-size:clamp(4.5rem, 18vw, 16rem);
  line-height:.82;
  letter-spacing:-0.025em;
  text-transform:uppercase;
  display:flex; align-items:flex-start; gap:.4em; flex-wrap:wrap;
}
.page-header__title small{
  font-family:"JetBrains Mono", monospace;
  font-size:clamp(.85rem, 1.4vw, 1.2rem);
  letter-spacing:.18em;
  color:var(--muted);
  margin-top:.6em;
  font-weight:400;
  text-transform:uppercase;
}
.page-header__title span{ color:var(--accent); }
.page-header__meta{
  margin-top:clamp(1.5rem, 3vw, 2.5rem);
  padding-top:1.25rem;
  border-top:1px solid var(--line);
  display:flex; flex-wrap:wrap; gap:1.5rem 2.5rem;
  font-family:"JetBrains Mono", monospace;
  font-size:.72rem;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:var(--muted);
}
.page-header__meta b{ color:var(--fg); font-weight:500; margin-right:.5em; }

/* ==== HERO ============================================ */

.hero{
  position:relative;
  isolation:isolate;
  height:100vh;
  height:100dvh;
  min-height:100vh;
  min-height:100dvh;
  width:100%;
  padding:calc(var(--nav-h) + 1rem) var(--pad) 1.5rem;
  overflow:hidden;
  display:flex; flex-direction:column; justify-content:space-between;
  border-top:0;
  background:#000;
}
.hero > *{ position:relative; z-index:3; }

.hero__video{
  position:absolute; inset:0; z-index:0;
  pointer-events:none;
  background:#000;
  overflow:hidden;
}
.hero__video video{
  position:absolute;
  top:50%; left:50%;
  width:max(100vw, calc(100dvh * 16/9));
  height:max(100dvh, calc(100vw * 9/16));
  transform:translate(-50%, -50%);
  object-fit:cover;
  pointer-events:none;
  border:0;
}
.hero::before{
  content:"";
  position:absolute; inset:0; z-index:1;
  pointer-events:none;
  background:
    linear-gradient(180deg,
      rgba(10,10,10,.75) 0%,
      rgba(10,10,10,.15) 16%,
      rgba(10,10,10,.05) 50%,
      rgba(10,10,10,.18) 78%,
      rgba(10,10,10,.85) 100%);
}
.hero::after{
  content:"";
  position:absolute; inset:0; z-index:1;
  pointer-events:none;
  background:
    radial-gradient(ellipse at center, transparent 0%, transparent 55%, rgba(0,0,0,.35) 100%);
}
.hero__top{
  display:flex; justify-content:space-between; align-items:flex-start;
  gap:2rem;
}
.hero__edition{
  font-family:"JetBrains Mono", monospace;
  font-size:.72rem; letter-spacing:.18em; text-transform:uppercase;
  color:var(--muted);
  display:flex; flex-direction:column; gap:.25rem;
}
.hero__edition strong{ color:var(--fg); font-weight:500; }
.hero__tag{
  font-family:"JetBrains Mono", monospace;
  font-size:.72rem; letter-spacing:.14em; text-transform:uppercase;
  text-align:right;
  color:var(--muted);
  max-width:18ch;
}
.hero__tag em{ color:var(--accent); font-style:normal; }

.hero__title{
  display:flex; flex-direction:column;
  font-family:"Anton", sans-serif;
  text-transform:uppercase;
  line-height:.82;
  letter-spacing:-0.025em;
  font-size:clamp(5rem, 22vw, 22rem);
  position:relative;
  margin:0;
  color:#fff;
  mix-blend-mode:difference;
  z-index:4;
  isolation:isolate;
}
.hero__title span{
  display:block;
  color:#fff;
}
.hero__title .word-1{ align-self:flex-start; }
.hero__title .word-2{ align-self:flex-end; margin-top:-0.08em; }

.hero__title .glitch{ position:relative; display:inline-block; }
.hero__title .glitch::before,
.hero__title .glitch::after{
  content:attr(data-text);
  position:absolute; inset:0;
  pointer-events:none;
  opacity:0;
}
.hero__title .glitch.on::before{
  color:var(--accent);
  transform:translate(-3px, 1px);
  opacity:.85;
  clip-path: inset(0 0 65% 0);
  animation:glitch-a .35s steps(2) 1;
}
.hero__title .glitch.on::after{
  color:#21c8ff;
  transform:translate(3px, -1px);
  opacity:.85;
  clip-path: inset(60% 0 0 0);
  animation:glitch-b .35s steps(2) 1;
}
@keyframes glitch-a{
  0%{ clip-path:inset(0 0 70% 0); transform:translate(-4px,1px); }
  50%{ clip-path:inset(20% 0 40% 0); transform:translate(2px,-1px); }
  100%{ clip-path:inset(40% 0 30% 0); transform:translate(-2px,2px); }
}
@keyframes glitch-b{
  0%{ clip-path:inset(60% 0 0 0); transform:translate(4px,-1px); }
  50%{ clip-path:inset(35% 0 30% 0); transform:translate(-2px,1px); }
  100%{ clip-path:inset(45% 0 15% 0); transform:translate(2px,-2px); }
}

.hero__bottom{
  display:grid;
  grid-template-columns:1fr auto 1fr;
  gap:2rem;
  align-items:end;
  padding-top:2rem;
  border-top:1px solid var(--line);
}
.hero__count{
  font-family:"JetBrains Mono", monospace;
  font-size:.78rem; letter-spacing:.18em; text-transform:uppercase;
  color:var(--muted);
  display:flex; flex-direction:column; gap:.35rem;
}
.hero__count strong{
  font-family:"Anton", sans-serif;
  font-weight:400;
  font-size:clamp(2.2rem, 6vw, 4rem);
  line-height:.9;
  letter-spacing:-0.02em;
  color:var(--fg);
}
.hero__strip{
  display:flex; gap:1.25rem; align-items:center;
  font-family:"JetBrains Mono", monospace;
  font-size:clamp(.78rem, 1.4vw, 1rem);
  letter-spacing:.16em;
  text-transform:uppercase;
  white-space:nowrap;
}
.hero__strip span{ color:var(--accent); }
.hero__id{
  font-family:"JetBrains Mono", monospace;
  font-size:.72rem; letter-spacing:.16em; text-transform:uppercase;
  text-align:right;
  color:var(--muted);
  display:flex; flex-direction:column; gap:.25rem;
}
.hero__id b{ color:var(--fg); font-weight:500; }

/* ==== MARQUEE ========================================= */

.marquee{
  overflow:hidden;
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
  background:var(--bg);
  position:relative;
}
.marquee__track{
  display:flex; gap:0;
  white-space:nowrap;
  animation:marq 36s linear infinite;
  will-change:transform;
}
.marquee:hover .marquee__track{ animation-play-state:paused; }
.marquee__item{
  font-family:"Anton", sans-serif;
  font-size:clamp(3rem, 7vw, 5.5rem);
  line-height:1;
  text-transform:uppercase;
  letter-spacing:-0.02em;
  padding: .55em 1.5rem;
  display:inline-flex; align-items:center; gap:1.25rem;
}
.marquee__item span{ color:var(--accent); }
.marquee--alt .marquee__item{ color:var(--accent); }
.marquee--alt .marquee__item span{ color:var(--fg); }
.marquee--alt{ background:#0d0d0c; }
@keyframes marq{ to{ transform:translateX(-50%); } }

/* ==== CARTELL ========================================= */

.lineup__filters{
  display:flex; flex-wrap:wrap; gap:0;
  border:1px solid var(--line);
  margin-bottom:3rem;
  overflow:hidden;
}
.lineup__group{
  display:flex; flex-wrap:wrap;
  border-right:1px solid var(--line);
}
.lineup__group:last-child{ border-right:0; }
.lineup__group-label{
  font-family:"JetBrains Mono", monospace;
  font-size:.7rem; letter-spacing:.18em; text-transform:uppercase;
  color:var(--muted);
  padding:.95rem 1.1rem;
  border-right:1px solid var(--line);
  display:flex; align-items:center;
  background:var(--surface);
}
.filter-btn{
  font-family:"JetBrains Mono", monospace;
  font-size:.78rem; font-weight:500;
  letter-spacing:.14em; text-transform:uppercase;
  padding:.95rem 1.1rem;
  border-right:1px solid var(--line);
  transition:background var(--t-fast), color var(--t-fast);
}
.filter-btn:last-child{ border-right:0; }
.filter-btn:hover{ background:var(--fg); color:var(--bg); }
.filter-btn.is-active{ background:var(--accent); color:var(--bg); }

.lineup__grid{
  display:grid;
  grid-template-columns:1fr;
  gap:0;
  border-top:1px solid var(--line);
}
@media (min-width: 900px){
  .lineup__grid{ grid-template-columns:repeat(3, 1fr); }
}
.day{
  border-bottom:1px solid var(--line);
  padding:2rem 0 3.5rem;
  position:relative;
  transition:opacity var(--t-med);
}
@media (min-width: 900px){
  .day{ border-right:1px solid var(--line); border-bottom:0; padding:2rem 1.75rem 3.5rem; }
  .day:last-child{ border-right:0; padding-right:0; }
  .day:first-child{ padding-left:0; }
}
.day__no{
  font-family:"Anton", sans-serif;
  font-size:clamp(7rem, 16vw, 13rem);
  line-height:.85;
  letter-spacing:-0.04em;
  text-transform:uppercase;
  display:flex; align-items:flex-start; gap:.4rem;
}
.day__no sup{
  font-family:"JetBrains Mono", monospace;
  font-size:.78rem;
  letter-spacing:.18em;
  color:var(--accent);
  vertical-align:top;
  margin-top:.4em;
  text-transform:uppercase;
}
.day__name{
  font-family:"JetBrains Mono", monospace;
  font-size:.78rem; letter-spacing:.2em; text-transform:uppercase;
  color:var(--muted);
  border-top:1px solid var(--line);
  padding-top:.8rem;
  margin:.5rem 0 2.2rem;
  display:flex; justify-content:space-between; align-items:center;
}
.day__name b{ color:var(--fg); font-weight:500; }

.sala{
  margin-bottom:2rem;
}
.sala__label{
  font-family:"JetBrains Mono", monospace;
  font-size:.7rem; letter-spacing:.2em; text-transform:uppercase;
  color:var(--accent);
  display:flex; justify-content:space-between; align-items:baseline;
  border-bottom:1px dashed var(--line);
  padding-bottom:.5rem;
  margin-bottom:.85rem;
}
.sala__label small{ color:var(--muted); font-weight:400; letter-spacing:.14em; }

.artist{
  display:block;
  padding:.55rem 0;
  cursor:pointer;
  position:relative;
  border:0; background:transparent;
  width:100%;
  text-align:left;
  transition:opacity var(--t-med), color var(--t-fast), padding-left var(--t-fast);
}
.artist__name{
  font-family:"Anton", sans-serif;
  font-size:clamp(1.6rem, 2.6vw, 2.3rem);
  line-height:1;
  letter-spacing:-0.015em;
  text-transform:uppercase;
  display:inline-block;
  border-bottom:2px solid transparent;
  transition:border-color var(--t-fast);
}
.artist--head .artist__name{ font-size:clamp(2.2rem, 3.6vw, 3.4rem); }
.artist__meta{
  font-family:"JetBrains Mono", monospace;
  font-size:.68rem; letter-spacing:.18em; text-transform:uppercase;
  color:var(--muted);
  display:flex; gap:.75rem; align-items:baseline;
  margin-top:.3rem;
}
.artist__meta span{ color:var(--accent); }
.artist:hover .artist__name{ border-bottom-color:var(--accent); color:var(--accent); }
.artist:hover{ padding-left:.5rem; }

.artist__desc{
  max-height:0;
  overflow:hidden;
  opacity:0;
  transition:max-height var(--t-med), opacity var(--t-med), margin var(--t-med);
  font-size:.92rem; line-height:1.45;
  color:var(--fg);
}
.artist.is-open .artist__desc{
  max-height:140px;
  opacity:1;
  margin-top:.6rem;
}
.artist__desc-inner{ padding:.5rem .85rem; border-left:2px solid var(--accent); }

.day.is-dim, .sala.is-dim, .artist.is-dim{ opacity:.15; }
.artist.is-dim{ pointer-events:none; }

/* ==== HORARIS ========================================= */

.schedule__tabs{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  border:1px solid var(--line);
  margin-bottom:clamp(2rem, 4vw, 3rem);
}
.schedule__tab{
  display:flex; flex-direction:column; gap:.4rem;
  padding:clamp(1rem, 2vw, 1.6rem) clamp(1rem, 2vw, 1.6rem) clamp(.85rem, 1.6vw, 1.25rem);
  border-right:1px solid var(--line);
  text-align:left;
  background:transparent;
  transition:background var(--t-fast), color var(--t-fast);
  position:relative;
  font-family:inherit;
}
.schedule__tab:last-child{ border-right:0; }
.schedule__tab:hover:not(.is-active){ background:var(--surface); }
.schedule__tab.is-active{ background:var(--accent); color:var(--bg); }
.schedule__tab-no{
  font-family:"Anton", sans-serif;
  font-size:clamp(2.4rem, 5vw, 4.2rem);
  line-height:.9;
  letter-spacing:-0.02em;
  text-transform:uppercase;
}
.schedule__tab-label{
  font-family:"JetBrains Mono", monospace;
  font-size:.7rem;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--muted);
}
.schedule__tab.is-active .schedule__tab-label{ color:var(--bg); }

.schedule__grid{
  display:grid;
  grid-template-columns: clamp(60px, 8vw, 100px) repeat(3, minmax(0, 1fr));
  grid-template-rows: auto;
  grid-auto-rows: clamp(34px, 4.2vw, 48px);
  border:1px solid var(--line);
  background:var(--bg);
  position:relative;
}

.schedule__head{
  font-family:"JetBrains Mono", monospace;
  font-size:.7rem;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--muted);
  padding:1rem .9rem;
  border-bottom:1px solid var(--line);
  border-right:1px solid var(--line);
  background:var(--surface);
  display:flex; flex-direction:column;
  justify-content:center;
  gap:.25rem;
  grid-row:1;
  min-height:60px;
}
.schedule__head:last-child{ border-right:0; }
.schedule__head b{
  font-family:"Anton", sans-serif;
  font-weight:400;
  font-size:clamp(1rem, 1.6vw, 1.5rem);
  letter-spacing:-0.01em;
  color:var(--fg);
}
.schedule__head span{
  font-size:.62rem;
  letter-spacing:.18em;
  color:var(--muted);
}
.schedule__head--time b{ color:var(--accent); }

.schedule__time{
  grid-column:1;
  font-family:"JetBrains Mono", monospace;
  font-size:.7rem;
  letter-spacing:.12em;
  text-transform:uppercase;
  padding:.35rem .75rem;
  border-right:1px solid var(--line);
  border-bottom:1px dashed var(--line);
  display:flex;
  align-items:flex-start;
  color:var(--muted);
}
.schedule__time--hour{
  color:var(--fg);
  border-bottom:1px solid var(--line);
  font-weight:500;
}
.schedule__time--last{ border-bottom:0; }

.schedule__cell{
  border-right:1px solid var(--line);
  border-bottom:1px dashed var(--line);
}
.schedule__cell--hour{ border-bottom:1px solid var(--line); }
.schedule__cell--last-col{ border-right:0; }
.schedule__cell--last-row{ border-bottom:0; }

.slot{
  margin:2px;
  padding:.4rem .65rem;
  display:flex; flex-direction:column;
  justify-content:space-between;
  gap:.25rem;
  overflow:hidden;
  position:relative;
  z-index:2;
  background:var(--surface);
  border:1px solid var(--line);
  transition:transform var(--t-fast);
}
.slot:hover{ z-index:5; transform:translateY(-1px); }

.slot--head{
  background:var(--accent);
  color:var(--bg);
  border-color:var(--accent);
}
.slot--main{
  background:var(--surface);
  border:1px solid var(--fg);
  color:var(--fg);
}
.slot--dj{
  background:var(--bg);
  border:1px dashed var(--fg);
  color:var(--fg);
}
.slot__name{
  font-family:"Anton", sans-serif;
  font-size:clamp(.85rem, 1.5vw, 1.4rem);
  line-height:.95;
  letter-spacing:-0.01em;
  text-transform:uppercase;
}
.slot__time{
  font-family:"JetBrains Mono", monospace;
  font-size:.6rem;
  letter-spacing:.12em;
  text-transform:uppercase;
  opacity:.85;
}

.slot--doors{
  background:var(--fg);
  color:var(--bg);
  border-color:var(--fg);
  flex-direction:row;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  padding:.55rem 1rem;
  font-family:"JetBrains Mono", monospace;
  font-size:.74rem;
  letter-spacing:.2em;
  text-transform:uppercase;
  font-weight:700;
}

.schedule__legend{
  display:flex;
  flex-wrap:wrap;
  gap:1.5rem;
  margin-top:1.5rem;
  padding-top:1.5rem;
  border-top:1px solid var(--line);
  font-family:"JetBrains Mono", monospace;
  font-size:.7rem;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--muted);
}
.schedule__legend-item{
  display:flex; align-items:center; gap:.6rem;
}
.schedule__legend-item--note{
  margin-left:auto;
  color:var(--muted);
  max-width:32ch;
  text-align:right;
}
.schedule__dot{
  display:inline-block;
  width:14px; height:14px;
  flex-shrink:0;
}
.schedule__dot--head{ background:var(--accent); }
.schedule__dot--main{ background:transparent; border:1px solid var(--fg); }
.schedule__dot--dj{ background:transparent; border:1px dashed var(--fg); }

@media (max-width: 760px){
  .schedule__tabs{ grid-template-columns:1fr; }
  .schedule__tab{ flex-direction:row; align-items:center; gap:1rem; padding:.85rem 1rem; border-right:0; border-bottom:1px solid var(--line); }
  .schedule__tab:last-child{ border-bottom:0; }
  .schedule__tab-no{ font-size:1.8rem; }
  .schedule__head{ padding:.7rem .5rem; min-height:54px; }
  .schedule__head b{ font-size:.85rem; }
  .schedule__head span{ font-size:.55rem; letter-spacing:.14em; }
  .schedule__time{ font-size:.6rem; padding:.25rem .35rem; letter-spacing:.08em; }
  .slot{ padding:.3rem .45rem; margin:1px; }
  .slot__name{ font-size:.75rem; }
  .slot__time{ font-size:.52rem; }
  .slot--doors{ font-size:.6rem; letter-spacing:.14em; padding:.4rem .6rem; }
  .schedule__legend{ font-size:.62rem; flex-direction:column; gap:.7rem; }
  .schedule__legend-item--note{ margin-left:0; text-align:left; max-width:none; }
}

/* ==== ENTRADES ======================================== */

.tickets{ background:#070707; }
.tickets__grid{
  display:grid;
  grid-template-columns:1fr;
  gap:0;
  border:1px solid var(--line);
  margin-bottom:2.5rem;
}
@media (min-width:900px){
  .tickets__grid{ grid-template-columns:repeat(3, 1fr); }
}
.ticket{
  padding:clamp(1.75rem, 3vw, 2.5rem);
  background:var(--surface);
  border-bottom:1px solid var(--line);
  display:flex; flex-direction:column; gap:1rem;
  position:relative;
}
.ticket:last-child{ border-bottom:0; }
@media (min-width:900px){
  .ticket{ border-bottom:0; border-right:1px solid var(--line); }
  .ticket:last-child{ border-right:0; }
}
.ticket--feat{ background:#13110f; }
.ticket--feat::before{
  content:"RECOMANAT";
  position:absolute; top:1rem; right:1rem;
  font-family:"JetBrains Mono", monospace;
  font-size:.62rem; letter-spacing:.2em;
  color:var(--bg); background:var(--accent);
  padding:.3rem .55rem;
}
.ticket__no{
  font-family:"JetBrains Mono", monospace;
  font-size:.72rem; letter-spacing:.18em; color:var(--muted);
}
.ticket__name{
  font-family:"Anton", sans-serif;
  font-size:clamp(2rem, 3.2vw, 2.8rem);
  line-height:.95;
  text-transform:uppercase;
  letter-spacing:-0.015em;
}
.ticket__price{
  font-family:"Anton", sans-serif;
  font-size:clamp(3.5rem, 6vw, 5.5rem);
  line-height:.9;
  color:var(--accent);
  letter-spacing:-0.02em;
  display:flex; align-items:flex-start; gap:.15em;
  margin:.5rem 0 1rem;
}
.ticket__price sup{
  font-family:"JetBrains Mono", monospace;
  font-size:.85rem; letter-spacing:.05em;
  color:var(--muted);
  margin-top:1em;
}
.ticket__list{
  list-style:none;
  font-size:.92rem;
  line-height:1.55;
  display:flex; flex-direction:column; gap:.4rem;
  flex:1;
}
.ticket__list li{
  padding-left:1.1rem;
  position:relative;
  color:var(--fg);
}
.ticket__list li::before{
  content:"▶";
  position:absolute; left:0; top:.4em;
  font-size:.6rem;
  color:var(--accent);
}
.ticket__btn{
  font-family:"JetBrains Mono", monospace;
  font-weight:700; font-size:.78rem;
  letter-spacing:.18em; text-transform:uppercase;
  padding:1rem;
  border:1px solid var(--fg);
  margin-top:1rem;
  transition:background var(--t-fast), color var(--t-fast);
  display:flex; justify-content:space-between; align-items:center;
}
.ticket__btn:hover{ background:var(--fg); color:var(--bg); }
.ticket--feat .ticket__btn{ border-color:var(--accent); background:var(--accent); color:var(--bg); }
.ticket--feat .ticket__btn:hover{ background:var(--bg); color:var(--accent); }

.tickets__notes{
  display:grid; grid-template-columns:repeat(auto-fit, minmax(220px, 1fr));
  gap:1.5rem;
  margin-bottom:2.5rem;
  padding:1.5rem 0;
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
}
.tickets__notes div{
  font-family:"JetBrains Mono", monospace;
  font-size:.72rem; letter-spacing:.14em; text-transform:uppercase;
  color:var(--muted);
}
.tickets__notes div b{
  display:block;
  color:var(--fg);
  font-weight:500;
  margin-bottom:.3rem;
}
.tickets__cta{
  display:block;
  width:100%;
  background:var(--accent);
  color:var(--bg);
  font-family:"Anton", sans-serif;
  font-size:clamp(2.5rem, 6vw, 5rem);
  line-height:1;
  letter-spacing:-0.02em;
  text-transform:uppercase;
  padding:clamp(1.5rem, 3vw, 2.5rem) 1.5rem;
  text-align:center;
  border:2px solid var(--accent);
  transition:background var(--t-fast), color var(--t-fast);
  position:relative;
  overflow:hidden;
}
.tickets__cta:hover{ background:var(--bg); color:var(--accent); }
.tickets__cta span{ display:inline-block; margin:0 .35em; }

/* ==== INFO & FAQ ====================================== */

.info__grid{
  display:grid;
  grid-template-columns:1fr;
  gap:3rem;
}
@media (min-width:900px){
  .info__grid{ grid-template-columns: 2fr 3fr; gap:5rem; }
}
.info__list{
  display:flex; flex-direction:column; gap:1.5rem;
}
.info__item{
  border-bottom:1px solid var(--line);
  padding-bottom:1.2rem;
}
.info__item:last-child{ border-bottom:0; }
.info__label{
  font-family:"JetBrains Mono", monospace;
  font-size:.7rem; letter-spacing:.2em; text-transform:uppercase;
  color:var(--accent);
  margin-bottom:.5rem;
}
.info__body{
  font-family:"Anton", sans-serif;
  font-size:clamp(1.3rem, 2vw, 1.9rem);
  line-height:1.1;
  letter-spacing:-0.01em;
  text-transform:uppercase;
}
.info__body small{
  display:block;
  font-family:"JetBrains Mono", monospace;
  font-size:.78rem;
  letter-spacing:.12em;
  text-transform:uppercase;
  color:var(--muted);
  margin-top:.4rem;
}

.faq{ display:flex; flex-direction:column; }
.faq__item{ border-bottom:1px solid var(--line); }
.faq__item:first-child{ border-top:1px solid var(--line); }
.faq__btn{
  width:100%;
  display:flex; justify-content:space-between; align-items:center; gap:1rem;
  padding:1.4rem 0;
  text-align:left;
  font-family:"Anton", sans-serif;
  font-size:clamp(1.3rem, 2.2vw, 2rem);
  line-height:1.05;
  letter-spacing:-0.01em;
  text-transform:uppercase;
  transition:color var(--t-fast), padding var(--t-fast);
}
.faq__btn:hover{ color:var(--accent); padding-left:.5rem; }
.faq__no{
  font-family:"JetBrains Mono", monospace;
  font-size:.72rem; letter-spacing:.18em; color:var(--muted);
  flex-shrink:0;
}
.faq__icon{
  flex-shrink:0;
  width:24px; height:24px;
  position:relative;
  transition:transform var(--t-med);
}
.faq__icon::before, .faq__icon::after{
  content:""; position:absolute; left:50%; top:50%;
  background:currentColor;
  transform:translate(-50%, -50%);
}
.faq__icon::before{ width:14px; height:2px; }
.faq__icon::after{ width:2px; height:14px; transition:opacity var(--t-med); }
.faq__item.is-open .faq__icon{ transform:rotate(180deg); }
.faq__item.is-open .faq__icon::after{ opacity:0; }
.faq__body{
  max-height:0;
  overflow:hidden;
  transition:max-height var(--t-med);
}
.faq__body-inner{
  padding:0 0 1.6rem 0;
  font-size:1rem;
  line-height:1.55;
  max-width:60ch;
  color:var(--fg);
}

/* ==== FOOTER ========================================== */

.footer{
  padding:clamp(3rem, 6vw, 6rem) var(--pad) 1.5rem;
  border-top:1px solid var(--line);
  background:var(--bg);
}
.footer__logo{
  font-family:"Anton", sans-serif;
  font-size:clamp(5rem, 18vw, 18rem);
  line-height:.82;
  text-transform:uppercase;
  letter-spacing:-0.025em;
  margin-bottom:3rem;
  border-bottom:1px solid var(--line);
  padding-bottom:1.5rem;
}
.footer__logo span{ color:var(--accent); }
.footer__cols{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(160px, 1fr));
  gap:2rem;
  margin-bottom:3rem;
}
.footer__col h4{
  font-family:"JetBrains Mono", monospace;
  font-size:.7rem; letter-spacing:.2em; text-transform:uppercase;
  color:var(--accent);
  margin-bottom:.85rem;
  font-weight:500;
}
.footer__col ul{ list-style:none; display:flex; flex-direction:column; gap:.45rem; }
.footer__col a{
  font-family:"JetBrains Mono", monospace;
  font-size:.82rem; letter-spacing:.06em;
  transition:color var(--t-fast);
}
.footer__col a:hover{ color:var(--accent); }
.footer__bottom{
  display:flex; justify-content:space-between; align-items:center; gap:1rem;
  padding-top:1.5rem;
  border-top:1px solid var(--line);
  font-family:"JetBrains Mono", monospace;
  font-size:.7rem; letter-spacing:.16em; text-transform:uppercase;
  color:var(--muted);
  flex-wrap:wrap;
}

/* ==== MODAL =========================================== */

.modal{
  position:fixed; inset:0; z-index:100;
  background:rgba(0,0,0,.85);
  display:flex; align-items:center; justify-content:center;
  padding:var(--pad);
  opacity:0; pointer-events:none;
  transition:opacity var(--t-med);
  backdrop-filter:blur(4px);
}
.modal.is-open{ opacity:1; pointer-events:auto; }
.modal__box{
  width:100%; max-width:520px;
  background:var(--bg);
  border:1px solid var(--accent);
  padding:clamp(1.75rem, 3vw, 2.75rem);
  position:relative;
  transform:translateY(20px);
  transition:transform var(--t-med);
}
.modal.is-open .modal__box{ transform:translateY(0); }
.modal__no{
  font-family:"JetBrains Mono", monospace;
  font-size:.72rem; letter-spacing:.18em; text-transform:uppercase;
  color:var(--accent);
  margin-bottom:1rem;
}
.modal__title{
  font-family:"Anton", sans-serif;
  font-size:clamp(2rem, 4vw, 3rem);
  line-height:.95;
  text-transform:uppercase;
  letter-spacing:-0.02em;
  margin-bottom:1rem;
}
.modal__body{
  font-size:.95rem; line-height:1.5;
  margin-bottom:1.5rem;
  color:var(--fg);
}
.modal__form{ display:flex; flex-direction:column; gap:.75rem; }
.modal__form input{
  width:100%;
  background:var(--bg);
  border:1px solid var(--line);
  border-radius:2px;
  padding:.95rem 1rem;
  font-family:"JetBrains Mono", monospace;
  font-size:.85rem;
  letter-spacing:.08em;
  color:var(--fg);
  transition:border-color var(--t-fast);
}
.modal__form input:focus{ border-color:var(--accent); }
.modal__form button{
  background:var(--accent); color:var(--bg);
  font-family:"JetBrains Mono", monospace; font-weight:700;
  font-size:.78rem; letter-spacing:.18em; text-transform:uppercase;
  padding:1rem;
  border:2px solid var(--accent);
  transition:background var(--t-fast), color var(--t-fast);
}
.modal__form button:hover{ background:var(--bg); color:var(--accent); }
.modal__close{
  position:absolute; top:.75rem; right:.75rem;
  width:36px; height:36px;
  display:flex; align-items:center; justify-content:center;
  font-family:"JetBrains Mono", monospace;
  font-size:1.2rem;
  color:var(--muted);
  transition:color var(--t-fast);
}
.modal__close:hover{ color:var(--accent); }
.modal__success{
  display:none;
  margin-top:1rem;
  padding:1rem;
  border:1px solid var(--accent);
  font-family:"JetBrains Mono", monospace;
  font-size:.82rem; letter-spacing:.12em; text-transform:uppercase;
  color:var(--accent);
}
.modal__success.is-on{ display:block; }

/* ==== RESPONSIVE ====================================== */

@media (max-width: 760px){
  .nav__links{ display:none; }
  .nav__cta{ display:none; }
  .nav__burger{ display:block; }
  .hero__bottom{ grid-template-columns: 1fr 1fr; gap:1rem; }
  .hero__strip{ grid-column: 1 / -1; order: 3; font-size:.7rem; gap:.6rem; flex-wrap:wrap; white-space:normal; }
  .hero__id{ display:none; }
  .section-head{ grid-template-columns:1fr; gap:.5rem; }
  .section-head__meta{ text-align:left; max-width:none; }
  .lineup__filters{ flex-direction:column; }
  .lineup__group{ border-right:0; border-bottom:1px solid var(--line); }
  .lineup__group:last-child{ border-bottom:0; }
  .page-header__meta{ gap:.8rem 1.5rem; }
}

/* alt+R accent flicker mode */
body.flicker{ animation:flicker 1.2s steps(4) infinite; }
@keyframes flicker{
  0%{ --accent:#ff3b1f; }
  25%{ --accent:#21c8ff; }
  50%{ --accent:#ededdf; }
  75%{ --accent:#ffe04b; }
  100%{ --accent:#ff3b1f; }
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{ animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; }
  html{ scroll-behavior:auto; }
  .marquee__track{ animation:none; }
}
