/* Festivals Today - sitewide styles */
:root{
  --night:#120E1D;
  --haze:#1E1730;
  --line:#352A4E;
  --paper:#F3EDE1;
  --dim:#A79BC0;
  --gel-magenta:#FF4D8D;
  --gel-amber:#FFB347;
  --gel-cyan:#5BD9FF;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  background:var(--night);
  color:var(--paper);
  font-family:'Archivo',sans-serif;
  font-size:16px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
a{color:inherit}
.mono{font-family:'IBM Plex Mono',monospace}
a:focus-visible,button:focus-visible,input:focus-visible{outline:2px solid var(--gel-cyan);outline-offset:3px;border-radius:2px}

/* ── Header / footer ─────────────────── */
header{
  display:flex;justify-content:space-between;align-items:center;
  padding:18px 28px;
  border-bottom:1px solid var(--line);
  position:sticky;top:0;background:rgba(18,14,29,.9);backdrop-filter:blur(8px);
  z-index:10;
}
.wordmark{
  font-family:'Anton',sans-serif;
  font-size:1.05rem;letter-spacing:.14em;text-transform:uppercase;
  text-decoration:none;color:var(--paper);
}
nav{display:flex;gap:26px;font-size:.82rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase}
nav a{text-decoration:none;color:var(--dim);transition:color .15s}
nav a:hover,nav a:focus-visible{color:var(--paper)}
footer{
  border-top:1px solid var(--line);
  padding:30px 28px;display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;
  font-size:.78rem;color:var(--dim);letter-spacing:.06em;
}

/* ── Hero: the lineup poster ─────────── */
.poster{
  max-width:960px;margin:0 auto;
  padding:52px 24px 72px;
  text-align:center;
  position:relative;
}
.poster::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:
    radial-gradient(ellipse 60% 45% at 18% 0%, rgba(255,77,141,.16), transparent 70%),
    radial-gradient(ellipse 60% 45% at 82% 0%, rgba(91,217,255,.13), transparent 70%),
    radial-gradient(ellipse 50% 35% at 50% 8%, rgba(255,179,71,.10), transparent 70%);
}
.poster>*{position:relative}
.poster .eyebrow{
  font-size:.75rem;letter-spacing:.28em;text-transform:uppercase;color:var(--dim);
  margin-bottom:26px;
}
.poster h1{
  font-family:'Anton',sans-serif;
  font-size:clamp(3.4rem,11vw,7.5rem);
  line-height:.95;letter-spacing:.01em;text-transform:uppercase;
  margin-bottom:14px;
}
.poster h1 .today{
  display:block;
  background:linear-gradient(90deg,var(--gel-magenta),var(--gel-amber) 55%,var(--gel-cyan));
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.poster__tag{
  color:var(--dim);max-width:520px;margin:0 auto 54px;font-size:1.05rem;
}
.tiers{border-top:1px solid var(--line);padding-top:34px}
.tiers__label{
  font-size:.72rem;letter-spacing:.3em;text-transform:uppercase;color:var(--gel-amber);
  margin-bottom:22px;
}
.tier{
  font-family:'Anton',sans-serif;text-transform:uppercase;
  line-height:1.35;letter-spacing:.04em;
}
.tier--1{font-size:clamp(1.5rem,4.4vw,2.6rem)}
.tier--2{font-size:clamp(1.05rem,3vw,1.6rem);color:#CBC2DE;margin-top:10px}
.tier--3{font-size:clamp(.85rem,2.2vw,1.1rem);color:var(--dim);margin-top:10px}
.tier i{font-style:normal;color:var(--gel-magenta);margin:0 .35em}
.tier--2 i{color:var(--gel-amber)}
.tier--3 i{color:var(--gel-cyan)}
.tiers__more{margin-top:26px;font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}

/* ── Sections ────────────────────────── */
section{max-width:960px;margin:0 auto;padding:72px 24px}
.section-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:34px;gap:16px;flex-wrap:wrap}
.section-head h2,.section-title{
  font-family:'Anton',sans-serif;font-size:1.7rem;letter-spacing:.05em;text-transform:uppercase;
}
.section-head .mono{font-size:.75rem;color:var(--dim);letter-spacing:.1em;text-transform:uppercase}
.section-head a.mono{text-decoration:none;color:var(--gel-cyan)}
.section-head a.mono:hover{color:var(--paper)}

/* ── Laminate cards ──────────────────── */
.passes{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:18px}
.pass{
  background:var(--haze);
  border:1px solid var(--line);
  border-radius:10px;
  padding:22px 22px 20px;
  display:flex;flex-direction:column;gap:12px;
  position:relative;
  transition:transform .15s ease,border-color .15s ease;
}
.pass:hover{transform:translateY(-3px);border-color:var(--gel-magenta)}
.pass::before{
  content:"";position:absolute;top:10px;left:50%;transform:translateX(-50%);
  width:34px;height:5px;border-radius:3px;background:var(--night);
  border:1px solid var(--line);
}
.pass__date{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--gel-amber);margin-top:10px}
.pass__name{font-family:'Anton',sans-serif;font-size:1.35rem;letter-spacing:.03em;text-transform:uppercase;line-height:1.15}
.pass__loc{font-size:.85rem;color:var(--dim)}
.pass__chip{
  align-self:flex-start;margin-top:auto;
  font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;
  padding:5px 10px;border-radius:99px;border:1px solid var(--line);color:var(--gel-cyan);
}
a.pass{text-decoration:none;color:var(--paper)}

/* ── Signup ──────────────────────────── */
.signup{
  border:1px solid var(--line);border-radius:14px;
  background:linear-gradient(140deg,var(--haze),#171126);
  padding:48px 30px;text-align:center;
}
.signup h2{font-family:'Anton',sans-serif;font-size:1.7rem;letter-spacing:.05em;text-transform:uppercase;margin-bottom:10px}
.signup p{color:var(--dim);max-width:440px;margin:0 auto 28px}
.signup form{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.signup input{
  background:var(--night);border:1px solid var(--line);border-radius:8px;
  color:var(--paper);padding:13px 16px;font:inherit;min-width:min(300px,100%);
}
.signup input::placeholder{color:#6E628A}
.signup button{
  font-family:'Archivo',sans-serif;font-weight:600;font-size:.9rem;letter-spacing:.04em;
  background:var(--gel-magenta);color:var(--night);
  border:none;border-radius:8px;padding:13px 24px;cursor:pointer;
  transition:filter .15s;
}
.signup button:hover{filter:brightness(1.12)}
.signup .done{display:none;color:var(--gel-cyan);font-weight:500;letter-spacing:.04em}

/* ── Articles ────────────────────────── */
.back{font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;text-decoration:none;color:var(--dim)}
.back:hover{color:var(--paper)}
article{max-width:680px;margin:0 auto;padding:64px 24px 80px;font-size:17px;line-height:1.7}
article a{color:var(--gel-cyan)}
article .eyebrow{font-size:.72rem;letter-spacing:.26em;text-transform:uppercase;color:var(--gel-amber);margin-bottom:18px}
article h1{font-family:'Anton',sans-serif;font-size:clamp(2rem,6vw,3.2rem);line-height:1.05;letter-spacing:.01em;text-transform:uppercase;margin-bottom:18px}
.dek{color:var(--dim);font-size:1.1rem;margin-bottom:44px;padding-bottom:32px;border-bottom:1px solid var(--line)}
article h2{font-family:'Anton',sans-serif;font-size:1.25rem;letter-spacing:.05em;text-transform:uppercase;margin:40px 0 12px;color:var(--gel-magenta)}
article p{margin-bottom:18px}
.q{font-family:'Anton',sans-serif;font-size:1.05rem;letter-spacing:.04em;text-transform:uppercase;margin:36px 0 10px;color:var(--gel-magenta)}
.socials{margin-top:52px;padding-top:30px;border-top:1px solid var(--line)}
.socials h2{font-family:'Anton',sans-serif;font-size:1rem;letter-spacing:.08em;text-transform:uppercase;margin-bottom:14px;color:var(--paper)}
.socials a{display:inline-block;margin-right:18px;margin-bottom:8px;font-size:.85rem;letter-spacing:.06em;text-transform:uppercase;text-decoration:none;color:var(--gel-cyan);border:1px solid var(--line);border-radius:99px;padding:7px 16px}
.socials a:hover{border-color:var(--gel-cyan)}

@media (max-width:760px){
  header{flex-direction:column;align-items:flex-start;gap:14px;padding:16px 20px}
  .site-nav{width:100%;gap:14px 18px;flex-wrap:wrap;font-size:.76rem}
  .poster{padding-top:48px}
}
@media (max-width:640px){
  .footer-cols{grid-template-columns:1fr 1fr}
}
@media (max-width:460px){
  .footer-cols{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){
  .pass:hover{transform:none}
  .related-card:hover{transform:none}
  html{scroll-behavior:auto}
}

/* ── Nav: active state + newsletter CTA ─ */
.site-nav{align-items:center}
nav a[aria-current="page"]{color:var(--paper)}
nav a[aria-current="page"]:not(.nav-cta){position:relative}
nav a[aria-current="page"]:not(.nav-cta)::after{
  content:"";position:absolute;left:0;right:0;bottom:-6px;height:2px;
  background:linear-gradient(90deg,var(--gel-magenta),var(--gel-cyan));
}
.nav-cta{
  color:var(--night)!important;background:var(--gel-magenta);
  padding:7px 14px;border-radius:99px;letter-spacing:.05em;
  transition:filter .15s;
}
.nav-cta:hover,.nav-cta:focus-visible{filter:brightness(1.12);color:var(--night)}

/* ── Breadcrumbs ─────────────────────── */
.crumbs{
  max-width:680px;margin:0 auto;padding:26px 24px 0;
  font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;
  color:var(--dim);
}
.crumbs a{color:var(--dim);text-decoration:none;transition:color .15s}
.crumbs a:hover{color:var(--paper)}
.crumbs span[aria-current]{color:var(--gel-amber)}
.crumbs i{font-style:normal;color:var(--line);margin:0 .5em}

/* ── Article meta / byline ───────────── */
.article-meta{
  display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;
  margin:-6px 0 30px;
}
.article-meta .cat{
  font-family:'IBM Plex Mono',monospace;font-size:.68rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--night);background:var(--gel-amber);
  padding:4px 10px;border-radius:99px;
}
.article-meta .cat[data-cat="Feature"]{background:var(--gel-cyan)}
.article-meta .cat[data-cat="Recap"]{background:var(--gel-magenta)}
.article-meta .cat[data-cat="News"]{background:var(--gel-magenta)}
.article-meta .cat[data-cat="Voices"]{background:#C6A7FF}
.article-meta .dot{color:var(--line)}
.article-meta .meta-item{
  font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--dim);
}

/* ── Keep reading (related) ──────────── */
.related{max-width:960px;margin:0 auto;padding:8px 24px 84px}
.related__head{
  font-family:'IBM Plex Mono',monospace;font-size:.72rem;letter-spacing:.28em;
  text-transform:uppercase;color:var(--gel-amber);
  margin-bottom:22px;padding-top:34px;border-top:1px solid var(--line);
}
.related__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px}
.related-card{
  background:var(--haze);border:1px solid var(--line);border-radius:10px;
  padding:20px;display:flex;flex-direction:column;gap:10px;
  text-decoration:none;color:var(--paper);
  transition:transform .15s ease,border-color .15s ease;
}
.related-card:hover{transform:translateY(-3px);border-color:var(--gel-cyan)}
.related-card .rc-cat{
  font-family:'IBM Plex Mono',monospace;font-size:.68rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--gel-amber);
}
.related-card h3{
  font-family:'Anton',sans-serif;font-size:1.1rem;letter-spacing:.03em;
  text-transform:uppercase;line-height:1.15;
}
.related-card p{font-size:.84rem;color:var(--dim);line-height:1.5}

/* ── Rich footer ─────────────────────── */
.site-footer{
  display:block;border-top:1px solid var(--line);
  padding:56px 28px 30px;
}
.footer-cols{
  max-width:960px;margin:0 auto;
  display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:36px 28px;
}
.footer-brand .wordmark{
  font-family:'Anton',sans-serif;font-size:1rem;letter-spacing:.14em;
  text-transform:uppercase;text-decoration:none;color:var(--paper);
  display:inline-block;margin-bottom:14px;
}
.footer-brand p{font-size:.85rem;color:var(--dim);max-width:34ch;line-height:1.6}
.site-footer nav{display:block;gap:0;font-size:inherit;letter-spacing:normal;text-transform:none}
.footer-col h2{
  font-family:'IBM Plex Mono',monospace;font-size:.7rem;letter-spacing:.2em;
  text-transform:uppercase;color:var(--gel-amber);margin-bottom:16px;font-weight:500;
}
.footer-col a{
  display:block;font-size:.86rem;color:var(--dim);text-decoration:none;
  padding:5px 0;transition:color .15s;
}
.footer-col a:hover{color:var(--paper)}
.footer-base{
  max-width:960px;margin:44px auto 0;padding-top:24px;border-top:1px solid var(--line);
  display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;
  font-size:.76rem;color:var(--dim);letter-spacing:.06em;
}

/* ── Contact form ────────────────────── */
.form-card{
  border:1px solid var(--line);border-radius:14px;
  background:linear-gradient(140deg,var(--haze),#171126);
  padding:34px 28px;margin-top:8px;
}
.form-card h2{
  font-family:'Anton',sans-serif;font-size:1.15rem;letter-spacing:.05em;
  text-transform:uppercase;margin:0 0 20px;color:var(--paper);
}
.field{display:flex;flex-direction:column;gap:7px;margin-bottom:16px}
.field label{
  font-family:'IBM Plex Mono',monospace;font-size:.72rem;letter-spacing:.1em;
  text-transform:uppercase;color:var(--dim);
}
.field input,.field textarea,.field select{
  background:var(--night);border:1px solid var(--line);border-radius:8px;
  color:var(--paper);padding:12px 14px;font:inherit;width:100%;
}
.field textarea{min-height:130px;resize:vertical}
.field input::placeholder,.field textarea::placeholder{color:#6E628A}
.form-card button{
  font-family:'Archivo',sans-serif;font-weight:600;font-size:.9rem;letter-spacing:.04em;
  background:var(--gel-magenta);color:var(--night);
  border:none;border-radius:8px;padding:13px 26px;cursor:pointer;transition:filter .15s;
}
.form-card button:hover{filter:brightness(1.12)}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
