:root{--ink:#151515;--paper:#f6f4e9;--violet:#b184ff;--lime:#d7ff36;--line:rgba(21,21,21,.22);--pad:clamp(16px,2vw,34px);font-family:Archivo,Arial,sans-serif;color:var(--ink);background:var(--ink)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);overflow-x:hidden}a{color:inherit;text-decoration:none}.site-header{position:fixed;z-index:20;top:0;left:0;width:100%;display:flex;align-items:flex-start;padding:18px var(--pad);mix-blend-mode:normal;transition:color .35s,background .35s}.site-header.on-dark{color:var(--paper)}.brand{font-size:22px;font-weight:900;line-height:.7;letter-spacing:-1.9px;text-transform:lowercase;display:flex;flex-direction:column}.desktop-nav{display:flex;gap:clamp(22px,3vw,56px);margin:4px auto 0;font-size:14px;font-weight:900;font-style:italic;text-transform:uppercase}.desktop-nav a,.header-cta{position:relative}.desktop-nav a:after{content:"";position:absolute;height:2px;bottom:-5px;left:0;width:0;background:currentColor;transition:width .25s}.desktop-nav a:hover:after,.desktop-nav a.active:after{width:100%}.header-cta{font-size:14px;font-weight:900;font-style:italic;text-transform:uppercase;background:var(--violet);padding:6px 9px;color:var(--ink);border-radius:2px}.header-cta span{font-size:18px;margin-left:5px}.menu-toggle{display:none;background:none;border:0;padding:4px;margin-left:auto}.menu-toggle i{display:block;width:25px;height:2px;background:currentColor;margin:5px}
.loader,.page-wipe{position:fixed;inset:0;z-index:100;background:var(--ink);display:grid;place-items:center;color:var(--violet)}.loader span,.page-wipe span{font-size:52px;animation:pulse .9s ease-in-out infinite alternate}.loader{animation:loader-out .65s 1.05s cubic-bezier(.76,0,.24,1) forwards}.page-wipe{transform:translateY(105%);transition:transform .55s cubic-bezier(.76,0,.24,1)}.page-wipe.enter{transform:translateY(0)}.page-wipe.leave{transform:translateY(-105%)}@keyframes loader-out{to{transform:translateY(-105%)}}@keyframes pulse{to{transform:rotate(35deg) scale(.72)}}
.home-hero{min-height:100svh;background:var(--ink);color:var(--paper);display:flex;flex-direction:column;padding:clamp(115px,16vh,190px) var(--pad) 26px;position:relative;overflow:hidden}.hero-kicker{font-size:13px;text-transform:uppercase;font-weight:800;letter-spacing:.03em;display:flex;justify-content:space-between;border-top:1px solid rgba(246,244,233,.35);padding-top:8px}.hero-title{font-size:clamp(82px,14.5vw,230px);font-weight:900;font-style:italic;letter-spacing:-.1em;line-height:.73;text-transform:uppercase;margin:auto 0 28px -8px;position:relative;z-index:1}.hero-title span{display:block}.hero-title .outline{-webkit-text-stroke:2px var(--paper);color:transparent;margin-left:9vw}.hero-copy{display:grid;grid-template-columns:1fr minmax(270px,34vw);gap:30px;align-items:end}.hero-copy p{font-size:clamp(18px,1.8vw,28px);line-height:1.08;margin:0;max-width:530px}.hero-scroll{font-size:13px;font-weight:800;text-transform:uppercase;justify-self:end;display:flex;gap:9px;align-items:center}.hero-scroll:after{content:"↓";font-size:26px}.star{position:absolute;color:var(--violet);font-size:clamp(90px,18vw,270px);right:8%;top:22%;line-height:1;animation:spin 12s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.intro{background:var(--violet);padding:clamp(70px,11vw,160px) var(--pad);min-height:62vh;display:grid;grid-template-columns:1fr 42%;gap:60px}.eyebrow{font-size:13px;font-weight:900;font-style:italic;text-transform:uppercase;margin:0}.section-title{font-size:clamp(52px,8vw,128px);font-weight:900;font-style:italic;letter-spacing:-.09em;line-height:.8;text-transform:uppercase;margin:10px 0}.intro-copy{align-self:end;font-size:clamp(20px,2.15vw,34px);line-height:1.07;margin:0}.arrow-link{font-weight:900;font-style:italic;font-size:15px;text-transform:uppercase;border-bottom:2px solid currentColor;padding-bottom:3px;display:inline-flex;gap:12px;transition:gap .2s}.arrow-link:hover{gap:20px}
.marquee{background:var(--lime);overflow:hidden;white-space:nowrap;padding:11px 0;border-block:2px solid var(--ink)}.marquee-track{display:inline-flex;gap:36px;animation:marquee 20s linear infinite;font-weight:900;font-style:italic;font-size:clamp(28px,4vw,58px);letter-spacing:-.06em}.marquee-track span:after{content:"✳";margin-left:36px;color:var(--violet)}@keyframes marquee{to{transform:translateX(-50%)}}
.work-section{padding:clamp(70px,9vw,130px) var(--pad) 30px;background:var(--paper)}.work-heading{display:flex;justify-content:space-between;align-items:end;margin-bottom:36px}.work-grid{border-top:1px solid var(--ink)}.work-card{display:grid;grid-template-columns:10% 39% 1fr;gap:20px;padding:16px 0;border-bottom:1px solid var(--ink);align-items:center;transition:padding .35s,background .35s;cursor:pointer}.work-card:hover{padding-inline:12px;background:var(--lime)}.work-num{font-weight:900;font-size:14px}.work-image{height:clamp(135px,18vw,265px);position:relative;overflow:hidden;background:var(--ink)}.work-image:before{content:"";position:absolute;inset:-20%;background:var(--accent);transform:rotate(-12deg) scale(1.25);transition:transform .55s cubic-bezier(.2,.8,.2,1)}.work-card:hover .work-image:before{transform:rotate(12deg) scale(1.35)}.work-image:after{content:"";position:absolute;width:48%;aspect-ratio:1;border:3px solid var(--paper);border-radius:50%;top:28%;left:29%;box-shadow:15px -13px 0 var(--violet)}.work-info h3{font-size:clamp(28px,4vw,64px);font-weight:900;font-style:italic;letter-spacing:-.08em;line-height:.85;text-transform:uppercase;margin:0 0 13px}.work-info p{font-size:14px;margin:0;max-width:420px}.work-tags{display:flex;gap:7px;flex-wrap:wrap;margin-top:16px}.work-tags span{font-size:11px;font-weight:800;text-transform:uppercase;border:1px solid var(--ink);padding:4px 6px;border-radius:99px}.work-card .jump{font-size:30px;justify-self:end}.all-work{display:flex;justify-content:flex-end;margin:28px 0 0}
.statement{background:var(--ink);color:var(--paper);padding:clamp(80px,12vw,180px) var(--pad);min-height:80vh;display:flex;flex-direction:column}.statement h2{font-size:clamp(52px,8.4vw,135px);font-weight:900;font-style:italic;letter-spacing:-.1em;line-height:.8;text-transform:uppercase;max-width:1120px;margin:auto 0}.statement h2 em{font-style:inherit;color:var(--violet)}.statement-bottom{display:flex;justify-content:space-between;gap:35px;margin-top:80px;font-size:17px;line-height:1.2}.statement-bottom p{max-width:375px;margin:0}.quote-mark{font-size:90px;color:var(--lime);line-height:.3}
.contact-band{padding:clamp(80px,10vw,150px) var(--pad);background:var(--paper);display:grid;grid-template-columns:1fr 1fr;gap:20px}.contact-band h2{font-size:clamp(58px,9vw,144px);font-weight:900;font-style:italic;line-height:.75;letter-spacing:-.1em;text-transform:uppercase;margin:0}.contact-actions{align-self:end;display:flex;gap:10px;flex-wrap:wrap}.button{display:inline-flex;align-items:center;gap:17px;font-size:15px;font-weight:900;font-style:italic;text-transform:uppercase;padding:13px 16px;background:var(--ink);color:var(--paper);transition:transform .2s,background .2s}.button:hover{background:var(--violet);color:var(--ink);transform:translateY(-4px)}.button.alt{background:var(--lime);color:var(--ink)}
.site-footer{background:var(--ink);color:var(--paper);padding:14px var(--pad);font-size:11px;font-weight:800;display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap}.site-footer a{text-decoration:underline;text-underline-offset:3px}
.subpage{min-height:100svh;padding:clamp(128px,18vh,210px) var(--pad) 60px;background:var(--paper)}.subpage.dark{background:var(--ink);color:var(--paper)}.subpage-header{border-top:2px solid currentColor;padding-top:10px;display:flex;justify-content:space-between;align-items:start;gap:20px}.subpage h1{font-size:clamp(72px,13vw,210px);font-weight:900;font-style:italic;letter-spacing:-.11em;line-height:.75;text-transform:uppercase;margin:70px 0 65px}.subpage-intro{max-width:580px;margin-left:auto;font-size:clamp(21px,2.4vw,38px);line-height:1.05}.index-list{border-top:1px solid currentColor;margin-top:100px}.index-list a{display:grid;grid-template-columns:80px 1fr auto;gap:20px;border-bottom:1px solid currentColor;padding:15px 0;align-items:center;transition:padding .25s,color .25s}.index-list a:hover{padding-inline:12px;color:var(--violet)}.index-list b{font-size:clamp(25px,4vw,58px);font-style:italic;letter-spacing:-.07em;text-transform:uppercase}.index-list span{font-size:13px}.studio-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(45px,10vw,150px);padding-top:80px}.studio-grid h2{font-size:clamp(39px,5.4vw,82px);margin:0;font-style:italic;letter-spacing:-.08em;line-height:.85;text-transform:uppercase}.studio-grid p{font-size:20px;line-height:1.15}.numbers{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid currentColor;margin-top:100px}.numbers div{border-right:1px solid currentColor;padding:20px 0 0}.numbers strong{font-size:clamp(42px,6vw,96px);font-weight:900;font-style:italic;letter-spacing:-.08em;display:block}.numbers small{font-size:12px;font-weight:800;text-transform:uppercase}.contact-form{max-width:850px;margin-left:auto}.contact-form label{display:block;font-size:12px;font-weight:900;text-transform:uppercase;margin:26px 0 8px}.contact-form input,.contact-form textarea{width:100%;border:0;border-bottom:2px solid currentColor;background:transparent;padding:12px 0;font:700 clamp(22px,3.6vw,50px)/1 Archivo;color:inherit;outline:none}.contact-form textarea{height:150px;resize:vertical}.form-note{font-size:13px;line-height:1.3;max-width:450px}.submitted{color:var(--lime);font-size:17px;font-weight:800;display:none}
@media(max-width:720px){.desktop-nav,.header-cta{display:none}.menu-toggle{display:block}.site-header.menu-open{background:var(--ink);color:var(--paper);height:100svh}.site-header.menu-open .desktop-nav{display:flex;position:absolute;top:115px;left:var(--pad);right:var(--pad);flex-direction:column;gap:24px;font-size:clamp(40px,12vw,72px);letter-spacing:-.08em}.hero-copy,.intro,.contact-band{grid-template-columns:1fr}.hero-copy{gap:28px}.hero-scroll{justify-self:start}.intro{gap:40px}.work-card{grid-template-columns:36px 1fr;gap:10px}.work-image{grid-column:2;height:170px}.work-info{grid-column:2}.work-card .jump{display:none}.statement-bottom{flex-direction:column;margin-top:60px}.contact-actions{margin-top:20px}.subpage h1{margin:48px 0}.index-list{margin-top:55px}.index-list a{grid-template-columns:34px 1fr}.index-list a span{display:none}.studio-grid{grid-template-columns:1fr;padding-top:40px}.numbers{margin-top:65px}.site-footer{display:grid;grid-template-columns:1fr 1fr}.site-footer a{grid-column:1/-1}.subpage-header{font-size:12px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}

/* Home page: rebuilt to follow the reference festival composition. */
.site-header{height:48px;padding:7px 44px;align-items:center}.brand{display:flex;flex-direction:row;align-items:center;gap:10px;font-size:16px;line-height:.69;letter-spacing:-.9px;font-style:italic}.brand-spark{font-size:34px;line-height:1;color:var(--violet);text-shadow:-2px 0 #d6ff00,2px 1px #f93cac}.desktop-nav{margin:0 43px 0 auto;gap:36px;font-size:13px;line-height:1}.desktop-nav a:after{bottom:-7px}.header-cta{padding:8px 13px;border-radius:6px;background:#ee3cad;color:var(--ink);font-size:13px;line-height:1}.festival-hero{min-height:100svh;padding:0;background:#151515;isolation:isolate}.festival-title{position:absolute;z-index:2;left:17.2vw;top:30.2vh;margin:0;font-size:clamp(96px,16.6vw,270px);line-height:.74;letter-spacing:-.095em;cursor:default;transform:skewX(-3deg);transition:filter .25s}.festival-title .hero-word{display:block;transform-origin:left center;transition:transform .36s cubic-bezier(.16,1,.3,1),letter-spacing .36s cubic-bezier(.16,1,.3,1),color .2s}.festival-title:hover{filter:drop-shadow(6px 5px 0 #b184ff)}.festival-title:hover .hero-word:first-child{transform:translateX(3.5vw) rotate(-2deg);letter-spacing:-.13em;color:#d7ff36}.festival-title:hover .hero-word:last-child{transform:translateX(-1.5vw) rotate(1.5deg);letter-spacing:-.13em;color:#ee3cad}.date-sticker{position:absolute;z-index:3;top:21.4vh;left:75.8vw;width:150px;color:#f6f4e9;font-weight:900;font-style:italic;line-height:.65;letter-spacing:-.07em;text-align:left;transform:rotate(5deg) skewX(-8deg);display:flex;flex-direction:column;font-size:31px}.date-sticker i{color:#50c885;font-style:inherit;text-shadow:10px 0 #0955ff}.date-sticker b{color:#d7ff36;font-size:34px}.date-sticker em{color:#ee7bd7;font-size:29px;font-style:inherit}.mascot-placeholder{position:absolute;z-index:3;left:50%;bottom:5.2vh;width:98px;height:76px;transform:translateX(-50%) rotate(-4deg);filter:drop-shadow(3px 3px 0 #ee3cad);transition:transform .3s}.mascot-placeholder:before,.mascot-placeholder:after{content:"";position:absolute;top:6px;width:53px;height:58px;border:4px solid #d7ff36;background:#4d59ff;border-radius:53% 47% 48% 52%}.mascot-placeholder:before{left:3px;transform:rotate(-14deg);box-shadow:-5px 3px 0 #ff3da7,4px -4px 0 #53df92}.mascot-placeholder:after{right:3px;transform:rotate(14deg);box-shadow:5px 3px 0 #f4ee51,-4px -4px 0 #1b78ff}.mascot-placeholder i{position:absolute;z-index:2;top:38px;width:23px;height:22px;border-radius:50%;background:#f6f4e9;border:2px solid var(--ink)}.mascot-placeholder i:first-child{left:26px}.mascot-placeholder i:nth-child(2){right:25px}.mascot-placeholder b,.mascot-placeholder em{position:absolute;z-index:4;bottom:-8px;border-style:solid;width:0;height:0}.mascot-placeholder b{left:9px;border-width:16px 0 0 18px;border-color:transparent transparent transparent #38ae76}.mascot-placeholder em{right:4px;border-width:0 18px 18px 0;border-color:transparent #ee3cad transparent transparent}.mascot-placeholder:hover{transform:translateX(-50%) rotate(8deg) scale(1.12)}
.festival-intro{position:relative;overflow:hidden;background:#c9ff00;min-height:84svh;padding:clamp(72px,7.5vw,98px) 12.7vw 55px;grid-template-columns:1fr 38%;gap:6vw;align-items:start}.festival-intro .eyebrow{display:none}.festival-intro .section-title{font-size:clamp(62px,8.05vw,130px);line-height:.7;letter-spacing:-.105em;text-transform:none;margin:0;max-width:830px}.festival-intro .intro-copy{font-size:clamp(17px,1.6vw,25px);line-height:1.05;max-width:440px;margin-top:clamp(190px,19vw,310px);position:relative;z-index:2}.intro-hover-media{position:absolute;z-index:1;left:11%;bottom:-26px;width:230px;height:160px;display:grid;place-items:center;background:linear-gradient(135deg,#fa4db8 0 19%,#1d55ff 19% 45%,#f6f4e9 45% 63%,#151515 63%);color:var(--paper);font-size:24px;font-weight:900;font-style:italic;line-height:.78;letter-spacing:-.07em;transform:translateY(180px) rotate(-8deg);opacity:0;transition:transform .5s cubic-bezier(.16,1,.3,1),opacity .25s}.festival-intro:hover .intro-hover-media{transform:translateY(0) rotate(-8deg);opacity:1}.festival-intro:hover .section-title{animation:title-wiggle .44s ease both}@keyframes title-wiggle{35%{transform:translateX(9px) skewX(-4deg)}70%{transform:translateX(-5px) skewX(2deg)}}
@media(max-width:720px){.site-header{padding:7px 16px;height:48px}.brand{font-size:13px}.brand-spark{font-size:28px}.site-header.menu-open .desktop-nav{top:82px;gap:18px;font-size:clamp(38px,10vw,54px)}.festival-title{left:10.5vw;top:29vh;font-size:22vw}.date-sticker{top:18.5vh;left:auto;right:8vw;width:100px;font-size:21px}.date-sticker b{font-size:24px}.date-sticker em{font-size:20px}.mascot-placeholder{bottom:8vh;transform:translateX(-50%) scale(.78)}.festival-intro{min-height:70svh;padding:70px 16px 50px;grid-template-columns:1fr;gap:0}.festival-intro .section-title{font-size:15vw;line-height:.73}.festival-intro .intro-copy{font-size:18px;margin-top:80px;max-width:82%}.intro-hover-media{left:48%;width:165px;height:120px;font-size:18px}.festival-title:hover .hero-word:first-child,.festival-title:hover .hero-word:last-child{letter-spacing:-.1em}}

@media(min-width:721px){.festival-title .hero-word:first-child{margin-left:1.7vw}.festival-title .hero-word:last-child{font-size:1.08em}}

@media(min-width:721px){.festival-intro .section-title{width:72vw;max-width:920px;white-space:nowrap;line-height:.8}}

@media(min-width:721px){.festival-intro{display:block}.festival-intro>div:first-child{position:absolute;top:clamp(72px,7.5vw,98px);left:12.7vw}.festival-intro .intro-copy{position:absolute;right:3.5vw;top:clamp(240px,26.3vw,338px);width:35vw;max-width:440px;margin:0}.festival-intro .intro-hover-media{left:11%;bottom:-26px}}

/* Festival home sequence */
body{background:var(--ink)}.festival-stage{background:var(--ink);padding:16px 0 8px}.festival-stage .festival-intro{display:block;position:relative;margin:0 16px;min-height:min(62vw,990px);padding:clamp(58px,7.4vw,126px) clamp(40px,12.7vw,214px);border-radius:22px;background:#c9ff00;overflow:hidden}.festival-stage .festival-intro>div:first-child{position:static}.festival-stage .festival-intro .section-title{width:auto;max-width:1050px;white-space:nowrap;font-size:clamp(66px,8.15vw,136px);line-height:.8}.festival-stage .festival-intro .intro-copy{position:absolute;right:10.5%;top:41%;width:34%;max-width:570px;margin:0;font-size:clamp(18px,1.55vw,26px)}.festival-stage .intro-hover-media{left:4.5%;bottom:5%;width:260px;height:178px;border-radius:50% 50% 9px 9px;overflow:hidden;background:#ee3cad;transform:translateY(210px) rotate(-7deg);box-shadow:8px 8px 0 #161616}.festival-stage .intro-hover-media img{width:100%;height:100%;object-fit:cover;mix-blend-mode:multiply;filter:saturate(1.2) contrast(1.06)}.festival-stage .festival-intro:hover .intro-hover-media{transform:translateY(0) rotate(-7deg);opacity:1}.lineup-intro{min-height:clamp(290px,31vw,510px);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 clamp(32px,12vw,205px);color:var(--paper);background:var(--ink)}.lineup-intro h2,.location-heading h2{font-size:clamp(74px,10vw,176px);font-style:italic;letter-spacing:-.11em;line-height:.74;text-transform:capitalize;margin:0}.lineup-intro span{font-size:38px;color:var(--violet);justify-self:start}.lineup-intro i{font-size:74px;font-style:normal;color:var(--lime);justify-self:end;transform:rotate(-20deg)}.lineup-card{margin:0 16px;border-radius:22px;background:var(--paper);padding:clamp(55px,8vw,135px) 8%;overflow:hidden}.lineup-person{text-align:center;margin:0 0 clamp(48px,6vw,105px)}.lineup-person:last-child{margin-bottom:0}.lineup-person h3{margin:0;font-size:clamp(44px,8.1vw,138px);font-weight:900;font-style:italic;letter-spacing:-.105em;line-height:.8;transition:color .25s,transform .3s cubic-bezier(.16,1,.3,1);cursor:default}.lineup-person p{font-size:clamp(15px,1.5vw,25px);line-height:1.12;margin:12px auto 0;max-width:900px;transition:color .25s,transform .3s cubic-bezier(.16,1,.3,1)}.lineup-person:hover h3,.lineup-person:hover p{color:#ee3cad}.lineup-person:hover h3{transform:translateY(-13px) rotate(-1deg)}.lineup-person:hover p{transform:translateY(-7px)}.location-heading{min-height:clamp(380px,43vw,720px);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 clamp(32px,12vw,205px);color:var(--paper);background:var(--ink)}.location-heading h2{text-align:center;font-size:clamp(60px,8vw,138px);line-height:.75;text-transform:none}.location-heading span{font-size:38px;color:#ee3cad}.location-heading i{font-size:clamp(28px,5vw,76px);font-weight:900;font-style:italic;color:var(--lime);transform:rotate(-12deg)}.location-layout{display:grid;grid-template-columns:minmax(280px,.82fr) minmax(450px,1.48fr);gap:clamp(24px,4vw,70px);align-items:center;padding:16px;background:var(--ink)}.location-copy{min-height:clamp(480px,51vw,820px);padding:clamp(32px,4.4vw,75px) clamp(24px,3vw,52px);border-radius:20px;background:#c9ff00;display:flex;flex-direction:column}.location-copy h3{font-size:clamp(78px,9vw,155px);font-weight:400;letter-spacing:-.1em;line-height:.75;margin:0}.location-copy p{margin:auto 0 28px;font-size:clamp(18px,1.5vw,26px);line-height:1.08}.location-button{align-self:start;padding:13px 17px;border-radius:7px;background:var(--ink);color:var(--paper);font-weight:900;font-size:clamp(13px,1.2vw,19px);font-style:italic;text-transform:uppercase}.location-photo{min-height:clamp(480px,51vw,820px);border-radius:999px;overflow:hidden;background:#2630c8}.location-photo img{display:block;width:100%;height:100%;object-fit:cover}.festival-outro{position:relative;min-height:clamp(600px,62vw,1000px);margin:72px 16px 0;border:1px solid rgba(246,244,233,.8);border-radius:22px;background:var(--ink);color:var(--paper);padding:clamp(28px,4vw,68px);overflow:hidden}.outro-copy h2{font-size:clamp(50px,5.7vw,98px);font-weight:400;letter-spacing:-.08em;line-height:.8;margin:0}.outro-copy p{font-size:clamp(18px,1.6vw,27px);margin:24px 0}.newsletter{position:absolute;z-index:2;right:clamp(28px,4vw,68px);top:clamp(28px,4vw,68px);width:min(42%,680px)}.newsletter label{position:absolute;width:1px;height:1px;overflow:hidden}.newsletter div{display:flex;gap:10px}.newsletter input{width:100%;border:0;border-radius:8px;background:var(--paper);padding:18px 20px;font:500 clamp(15px,1.5vw,24px)/1 Archivo;color:var(--ink)}.newsletter button{width:64px;border:0;border-radius:8px;background:var(--paper);font-size:32px;cursor:pointer}.newsletter p{font-size:12px;line-height:1.2}.paper-collage{position:absolute;bottom:-26px;left:0;width:100%;height:43%;display:flex;justify-content:center;align-items:end;gap:1.2vw;overflow:hidden}.paper-collage>*{display:grid;place-items:center;flex:none;background:var(--paper);color:var(--ink);font-size:clamp(18px,2vw,36px);font-weight:900;font-style:italic;line-height:.78;text-align:center;box-shadow:5px -5px 0 #273dff}.paper-collage b{width:11vw;height:18vw;transform:rotate(-16deg);background:#ee3cad}.paper-collage i{width:12vw;height:21vw;transform:rotate(13deg);background:#c9ff00}.paper-collage em{width:9vw;height:9vw;transform:rotate(25deg);border-radius:50%;background:#273dff;color:var(--paper)}.paper-collage span{width:14vw;height:14vw;transform:rotate(-7deg);background:var(--paper)}.paper-collage strong{width:12vw;height:17vw;transform:rotate(17deg);background:#ee3cad}
@media(max-width:720px){.festival-stage{padding-top:8px}.festival-stage .festival-intro{margin:0 8px;min-height:670px;padding:52px 22px;border-radius:15px}.festival-stage .festival-intro .section-title{font-size:13.5vw;white-space:normal;line-height:.76}.festival-stage .festival-intro .intro-copy{left:22px;right:auto;top:auto;bottom:55px;width:80%;font-size:18px}.festival-stage .intro-hover-media{display:none}.lineup-intro{min-height:260px;padding:0 24px}.lineup-intro h2{font-size:21vw}.lineup-card{margin:0 8px;border-radius:15px;padding:55px 18px}.lineup-person h3{font-size:13.2vw}.lineup-person p{font-size:16px}.location-heading{min-height:300px;padding:0 24px}.location-heading h2{font-size:14vw}.location-layout{grid-template-columns:1fr;padding:8px;gap:8px}.location-copy,.location-photo{min-height:460px;border-radius:15px}.location-copy h3{font-size:26vw}.festival-outro{margin:52px 8px 0;min-height:650px;border-radius:15px;padding:24px}.newsletter{position:static;width:100%;margin-top:35px}.newsletter p{font-size:10px}.paper-collage{height:32%;gap:2vw}.paper-collage b{width:20vw;height:29vw}.paper-collage i{width:21vw;height:34vw}.paper-collage em{width:16vw;height:16vw}.paper-collage span{width:23vw;height:23vw}.paper-collage strong{width:19vw;height:28vw}}

/* Pointer-driven states from the interaction recordings. */
.lineup-card[data-tone="0"] .lineup-thumb img{filter:contrast(1.12) saturate(1.35)}.lineup-card[data-tone="1"] .lineup-thumb img{filter:hue-rotate(112deg) saturate(1.45) contrast(1.1)}.lineup-card[data-tone="2"] .lineup-thumb img{filter:hue-rotate(240deg) saturate(1.45) contrast(1.1)}

/* The former blue roster state uses the festival green from the reference. */
.lineup-person.is-active[data-tone="1"] h3,.lineup-person.is-active[data-tone="1"] p{color:#31a866}
.festival-title{--tilt-x:0px;--tilt-y:0px;--tilt-r:0deg}.festival-title.is-moving{transform:translate(var(--tilt-x),var(--tilt-y)) skewX(-3deg) rotate(var(--tilt-r));transition:transform .08s linear}.festival-title.is-moving .hero-word:first-child{color:#d7ff36}.festival-title.is-moving .hero-word:last-child{color:#ee3cad}.festival-stage .intro-hover-media{pointer-events:none;opacity:0;transition:opacity .16s ease,transform .18s cubic-bezier(.16,1,.3,1)}.festival-stage .intro-hover-media.is-visible{opacity:1;transform:translate(-50%,-50%) rotate(-7deg) scale(1)}.lineup-card{position:relative}.lineup-person{position:relative;z-index:2}.lineup-person.is-active h3,.lineup-person.is-active p{transform:translateY(-14px);color:#ee3cad}.lineup-person.is-active[data-tone="1"] h3,.lineup-person.is-active[data-tone="1"] p{color:#273dff}.lineup-person.is-active[data-tone="2"] h3,.lineup-person.is-active[data-tone="2"] p{color:#a6d900}.lineup-thumb{position:absolute;z-index:5;top:0;left:0;width:clamp(180px,19vw,310px);aspect-ratio:1.22;opacity:0;pointer-events:none;overflow:hidden;border-radius:50% 50% 14px 14px;box-shadow:8px 8px 0 #151515;transform:translate(-50%,-50%) rotate(-7deg) scale(.75);transition:opacity .14s ease,transform .24s cubic-bezier(.16,1,.3,1)}.lineup-thumb.is-visible{opacity:1;transform:translate(-50%,-50%) rotate(5deg) scale(1)}.lineup-thumb img{display:block;width:100%;height:100%;object-fit:cover;filter:contrast(1.12) saturate(1.35)}.lineup-person[data-tone="1"]~.lineup-thumb img{filter:hue-rotate(112deg) saturate(1.45) contrast(1.1)}.lineup-person[data-tone="2"]~.lineup-thumb img{filter:hue-rotate(240deg) saturate(1.45) contrast(1.1)}

/* Precise hover corrections */
.festival-title:hover{filter:none}.festival-title:hover .hero-word:first-child,.festival-title:hover .hero-word:last-child{transform:none;letter-spacing:inherit;color:inherit}.blast-char{display:inline-block;transform-origin:50% 88%;will-change:transform}.blast-char.is-burst{animation:letter-burst .52s cubic-bezier(.2,.9,.25,1)}.blast-char[data-burst="0"].is-burst{color:#ee3cad}.blast-char[data-burst="1"].is-burst{color:#c9ff00}.blast-char[data-burst="2"].is-burst{color:#5366ff}.blast-char[data-burst="3"].is-burst{color:#f6f4e9}@keyframes letter-burst{0%{transform:translateY(0) scale(1) rotate(0)}32%{transform:translateY(-.22em) scale(1.38) rotate(-8deg)}60%{transform:translateY(.04em) scale(.92) rotate(5deg)}82%{transform:translateY(-.07em) scale(1.1) rotate(-2deg)}100%{transform:translateY(0) scale(1) rotate(0)}}.festival-stage .festival-intro{min-height:min(46.5vw,742px)}.lineup-thumb{width:clamp(120px,12vw,200px);transform:translate(-50%,0) rotate(-7deg) scale(.75)}.lineup-thumb.is-visible{transform:translate(-50%,0) rotate(5deg) scale(1)}.festival-outro{min-height:clamp(480px,44vw,720px)}
@media(max-width:720px){.festival-stage .festival-intro{min-height:510px}.festival-outro{min-height:500px}.blast-char.is-burst{animation-duration:.44s}.lineup-thumb{display:none}}

@media(min-width:721px){.festival-stage .festival-intro .intro-copy{top:50%}}

/* Autonomous starfield: deliberately kept behind the typography. */
.meteor-field{position:absolute;z-index:0;inset:0;overflow:hidden;pointer-events:none;background:radial-gradient(circle at 76% 29%,rgba(177,132,255,.08),transparent 20%),radial-gradient(circle at 22% 68%,rgba(201,255,0,.035),transparent 25%)}.meteor,.star-dot{position:absolute;display:block}.meteor{width:clamp(90px,12vw,220px);height:2px;border-radius:99px;background:linear-gradient(90deg,transparent,rgba(246,244,233,.92));filter:drop-shadow(0 0 7px rgba(177,132,255,.8));opacity:0;transform-origin:right center;animation:shooting-meteor 10s linear infinite}.meteor:after{content:"";position:absolute;right:-2px;top:50%;width:5px;height:5px;border-radius:50%;background:#f6f4e9;box-shadow:0 0 10px 3px rgba(177,132,255,.72);transform:translateY(-50%)}.m1{top:15%;left:104%;animation-delay:.8s}.m2{top:30%;left:114%;width:150px;animation-delay:4.1s}.m3{top:4%;left:96%;width:110px;animation-delay:7.3s}.m4{top:52%;left:109%;width:180px;animation-delay:9.1s}.star-dot{width:3px;height:3px;border-radius:50%;background:rgba(246,244,233,.75);box-shadow:0 0 6px rgba(177,132,255,.9);animation:star-glimmer 3.8s ease-in-out infinite}.s1{top:19%;left:17%;animation-delay:.3s}.s2{top:64%;left:82%;animation-delay:1.8s}.s3{top:37%;left:61%;animation-delay:2.6s}@keyframes shooting-meteor{0%,68%{opacity:0;transform:translate3d(0,0,0) rotate(145deg)}70%{opacity:.95}82%{opacity:0;transform:translate3d(-56vw,40vh,0) rotate(145deg)}100%{opacity:0;transform:translate3d(-56vw,40vh,0) rotate(145deg)}}@keyframes star-glimmer{0%,100%{opacity:.15;transform:scale(.65)}50%{opacity:1;transform:scale(1.45)}}

/* Meteors stay fully lit: they begin and end beyond the clipping bounds. */
.meteor{opacity:1}@keyframes shooting-meteor{0%{transform:translate3d(0,0,0) rotate(145deg)}18%{transform:translate3d(-170vw,120vh,0) rotate(145deg)}100%{transform:translate3d(-170vw,120vh,0) rotate(145deg)}}

/* Keep every former blue lineup hover state green; this must follow legacy rules. */
.lineup-card .lineup-person.is-active[data-tone="1"] h3,.lineup-card .lineup-person.is-active[data-tone="1"] p{color:#31a866!important}

/* Per-letter explosion: persists for the entire hover, then eases back on leave. */
.festival-title,.festival-title .hero-word{white-space:nowrap}.festival-title .blast-char{display:inline-block;color:inherit!important;transition:transform .34s cubic-bezier(.16,1,.3,1)}.blast-char.is-burst{animation:none}.blast-char.is-active{position:relative;z-index:4;animation:letter-hover-bounce .68s cubic-bezier(.42,0,.16,1) infinite alternate}@keyframes letter-hover-bounce{0%{transform:translateY(0) scale(1.28) rotate(var(--letter-tilt,0deg))}48%{transform:translateY(-.22em) scale(1.52) rotate(calc(var(--letter-tilt,0deg) * -.62))}100%{transform:translateY(-.06em) scale(1.37) rotate(var(--letter-tilt,0deg))}}
@media(max-width:720px){.festival-title{left:10.5vw;top:29vh;font-size:17.2vw;width:max-content;max-width:none}.festival-title .hero-word{white-space:nowrap}.festival-title .hero-word:first-child{margin-left:0}.festival-title .hero-word:last-child{font-size:1em}}

/* Wide-angle bounce and an explicit slow settle after pointer leave. */
.blast-char.is-active{animation:letter-hover-bounce .8s cubic-bezier(.45,0,.12,1) infinite alternate}.blast-char.is-recovering{animation:letter-settle 1.8s cubic-bezier(.22,1,.36,1) both}@keyframes letter-hover-bounce{0%{transform:translateY(.01em) scale(1.3) rotate(var(--letter-tilt,0deg))}42%{transform:translateY(-.25em) scale(1.58) rotate(calc(var(--letter-tilt,0deg) * -1.05))}73%{transform:translateY(-.12em) scale(1.46) rotate(calc(var(--letter-tilt,0deg) * .78))}100%{transform:translateY(-.19em) scale(1.53) rotate(calc(var(--letter-tilt,0deg) * -.72))}}@keyframes letter-settle{0%{transform:translateY(-.16em) scale(1.48) rotate(calc(var(--letter-tilt,0deg) * -.72))}38%{transform:translateY(.04em) scale(.96) rotate(calc(var(--letter-tilt,0deg) * .32))}70%{transform:translateY(-.025em) scale(1.05) rotate(calc(var(--letter-tilt,0deg) * -.12))}100%{transform:translateY(0) scale(1) rotate(0)}}

/* Hold at full size, then pulse around it from the letter's centre. */
.festival-title .blast-char{transform-origin:center center}.blast-char.is-active{animation:letter-hover-heart .92s cubic-bezier(.38,0,.16,1) infinite}.blast-char.is-recovering{animation:letter-settle 2.5s cubic-bezier(.22,1,.36,1) both}@keyframes letter-hover-heart{0%{transform:translateY(0) scale(1) rotate(0)}18%{transform:translateY(-.05em) scale(1.62) rotate(var(--letter-tilt,0deg))}33%{transform:translateY(-.02em) scale(1.43) rotate(calc(var(--letter-tilt,0deg) * -.72))}53%{transform:translateY(-.05em) scale(1.58) rotate(calc(var(--letter-tilt,0deg) * .88))}75%{transform:translateY(-.025em) scale(1.44) rotate(calc(var(--letter-tilt,0deg) * -.55))}100%{transform:translateY(-.05em) scale(1.56) rotate(var(--letter-tilt,0deg))}}

/* Narrow-screen composition: static card, then an autonomous image rail. */
.mobile-intro-gallery{display:none}.festival-stage .festival-intro .section-title span{display:inline}.festival-stage .festival-intro .section-title span:last-child{display:block}
@media(max-width:900px){
  .desktop-nav,.header-cta{display:none}.menu-toggle{display:block}.site-header{height:52px;padding:8px 22px}.brand{font-size:14px}.brand-spark{font-size:29px}
  .festival-hero{min-height:min(100svh,920px)}.festival-title{left:8vw;top:34svh;font-size:min(20vw,116px);line-height:.76}.date-sticker{top:22svh;right:9vw;left:auto;width:110px;font-size:23px}.date-sticker b{font-size:26px}.date-sticker em{font-size:22px}.mascot-placeholder{bottom:6svh;transform:translateX(-50%) scale(.88)}
  .festival-stage{padding:14px 0 8px}.festival-stage .festival-intro{margin:0 24px;min-height:0;padding:36px 24px 30px;border-radius:22px}.festival-stage .festival-intro .section-title{font-size:clamp(54px,14vw,104px);line-height:.73;letter-spacing:-.105em;white-space:normal}.festival-stage .festival-intro .section-title span{display:block;white-space:nowrap}.festival-stage .festival-intro .intro-copy{position:static;width:auto;max-width:none;margin:50px 0 0;font-size:clamp(18px,4.8vw,25px);line-height:1.05;text-align:center}.festival-stage .intro-hover-media{display:none!important}
  .mobile-intro-gallery{display:block;margin:34px 24px 42px;overflow:hidden}.mobile-intro-gallery-track{display:flex;width:max-content;align-items:end;gap:14px;animation:mobile-gallery-loop 19s linear infinite}.mobile-intro-gallery figure{flex:0 0 51vw;height:clamp(250px,66vw,420px);margin:0;overflow:hidden;border-radius:120px 120px 8px 8px;background:#3030dc}.mobile-intro-gallery figure:nth-child(2n){height:clamp(285px,73vw,462px);border-radius:16px 16px 130px 130px}.mobile-intro-gallery figure:nth-child(3n){filter:hue-rotate(58deg) saturate(1.25);transform:rotate(6deg)}.mobile-intro-gallery img{display:block;width:100%;height:100%;object-fit:cover;object-position:center}.lineup-intro{min-height:240px;padding:0 28px}.lineup-intro h2{font-size:min(21vw,154px)}.lineup-card{margin:0 24px;border-radius:22px;padding:58px 22px}.lineup-person{margin-bottom:70px}.lineup-person h3{font-size:clamp(48px,13.2vw,95px)}.lineup-person p{font-size:16px}.location-heading{min-height:260px;padding:0 28px}.location-heading h2{font-size:clamp(54px,14vw,102px)}.location-layout{grid-template-columns:1fr;padding:8px 24px;gap:12px}.location-copy,.location-photo{min-height:460px;border-radius:20px}.festival-outro{margin:52px 24px 0;min-height:500px;border-radius:22px;padding:26px}.newsletter{position:static;width:100%;margin-top:32px}
}
@media(max-width:560px){
  .site-header{padding-inline:16px}.festival-title{left:7vw;top:35svh;font-size:20.2vw}.date-sticker{top:22vh;right:8vw}.festival-stage .festival-intro{margin:0 18px;padding:32px 20px 28px;border-radius:20px}.festival-stage .festival-intro .section-title{font-size:14.2vw}.festival-stage .festival-intro .intro-copy{margin-top:46px;font-size:5.1vw}.mobile-intro-gallery{margin:30px 18px 38px}.lineup-card{margin:0 18px}.location-layout{padding-inline:18px}.festival-outro{margin-inline:18px}
}
@keyframes mobile-gallery-loop{from{transform:translateX(0)}to{transform:translateX(calc(-153vw - 42px))}}
@media(prefers-reduced-motion:reduce){.mobile-intro-gallery-track{animation:none}}

/* Mobile first fold and the fixed festival Ticket control from the reference. */
.mobile-ticket-dock{display:none}
@media(max-width:900px){
  .festival-hero{height:min(100svh,600px);min-height:545px}.festival-title{top:max(106px,14vh);font-size:min(20vw,116px)}.date-sticker{top:max(76px,8.5vh)}.mascot-placeholder{bottom:48px}.festival-stage{padding-top:6px}
  .mobile-ticket-dock{position:fixed;z-index:30;display:flex;align-items:center;justify-content:space-between;left:20px;right:20px;bottom:max(12px,env(safe-area-inset-bottom));height:70px;padding:8px 10px;border:1px solid rgba(246,244,233,.55);border-radius:22px;background:rgba(21,21,21,.97);box-shadow:0 6px 20px rgba(0,0,0,.26);color:var(--paper)}.mobile-ticket-dock strong{display:grid;place-items:center;height:52px;padding:0 20px;border-radius:12px;background:#ee3cad;color:var(--ink);font-size:24px;font-weight:900;font-style:italic;letter-spacing:-.07em;text-transform:uppercase}.mobile-ticket-dock span{display:grid;place-items:center;width:52px;height:52px;border-radius:50%;background:var(--paper);color:var(--ink);font-size:42px;font-weight:300;line-height:1}
}
@media(max-width:560px){.festival-hero{height:545px;min-height:545px}.festival-title{top:108px;font-size:20.2vw}.date-sticker{top:82px}.mascot-placeholder{bottom:42px}.festival-stage .festival-intro{margin-top:0}.mobile-ticket-dock{left:18px;right:18px;height:68px;border-radius:21px}.mobile-ticket-dock strong{height:50px;font-size:23px}.mobile-ticket-dock span{width:50px;height:50px}}

/* Final mobile type scale: each content block has a fixed three-line rhythm. */
@media(max-width:900px){
  .mobile-ticket-dock{display:none!important}
  .festival-title{left:24px;right:24px;width:auto;top:max(122px,16vh);font-size:clamp(68px,18.6vw,104px);line-height:.76}.date-sticker{top:max(84px,10vh);right:7vw}.mascot-placeholder{bottom:66px}
  .festival-stage .festival-intro{display:flex!important;flex-direction:column;justify-content:space-between;aspect-ratio:1.42;min-height:0;margin-inline:24px;padding:clamp(19px,5.8vw,48px) clamp(17px,4.4vw,36px) clamp(16px,4.4vw,32px)}
  .festival-stage .festival-intro .section-title{width:88%;margin:0 auto;text-align:center;font-size:clamp(36px,11.5vw,84px);line-height:.72}.festival-stage .festival-intro .section-title span{white-space:nowrap}
  .festival-stage .festival-intro .intro-copy{width:100%;margin:0;text-align:center;font-family:"Bantangti","Bantang","PingFang SC",Arial,sans-serif;font-size:clamp(8px,2.55vw,18px);line-height:1.13;letter-spacing:-.035em}.festival-stage .festival-intro .intro-copy span{display:block;white-space:nowrap}
  .lineup-person h3{font-size:clamp(34px,9.1vw,68px);white-space:nowrap;letter-spacing:-.11em}
}
@media(max-width:560px){
  .festival-hero{height:565px;min-height:565px}.festival-title{left:18px;right:18px;top:124px;font-size:18.6vw}.date-sticker{top:88px;right:8vw}.mascot-placeholder{bottom:62px}
  .festival-stage .festival-intro{margin-inline:18px}.festival-stage .festival-intro .section-title{font-size:11.5vw}.festival-stage .festival-intro .intro-copy{font-size:2.55vw}.lineup-card{margin-inline:18px}
}

/* Mobile alignment is deliberately isolated so desktop art direction remains intact. */
@media(max-width:900px){
  .site-header{height:56px;padding:8px 18px;align-items:center;background:var(--ink);color:var(--paper)}.menu-toggle{display:grid;place-items:center;width:42px;height:36px;margin-left:auto;padding:0;border-radius:7px;background:#ee3cad}.menu-toggle i{width:20px;height:2px;margin:3px 0;background:var(--ink)}
  .festival-title{left:24px;right:24px;width:auto;top:max(134px,17vh);font-size:clamp(80px,24vw,132px);text-align:center;line-height:.76}.festival-title .hero-word{width:100%;text-align:center}
  .festival-stage .festival-intro>div:first-child{display:flex;width:100%;justify-content:center}.festival-stage .festival-intro .section-title{width:100%;text-align:center}.festival-stage .festival-intro .intro-copy{text-align:center}
  .lineup-person h3{max-width:100%;font-size:clamp(26px,7.8vw,55px);letter-spacing:-.12em}
}
@media(max-width:560px){.festival-title{left:18px;right:18px;top:138px;font-size:24vw}.festival-stage .festival-intro{margin-inline:18px}.lineup-person h3{font-size:clamp(26px,7.8vw,55px)}}
@media(min-width:901px){.festival-stage .festival-intro>div:first-child{width:100%;display:flex;justify-content:center}.festival-stage .festival-intro .section-title{width:100%;text-align:center}}

/* Copy alignment: shared card centre on mobile, lower justified block on desktop. */
@media(max-width:900px){.festival-stage .festival-intro>div:nth-child(2){display:flex;width:100%;justify-content:center}.festival-stage .festival-intro .intro-copy{align-self:center;width:100%;text-align:center}}
@media(min-width:901px){.festival-stage .festival-intro .section-title span:first-child:after{content:" "}.festival-stage .festival-intro .intro-copy{top:60%;text-align:justify;line-height:1.08}}

/* Mobile drawer: adapted from the referenced magenta sparkle button. */
@media(max-width:900px){
  .menu-toggle{display:grid;place-items:center;width:42px;height:36px;margin-left:auto;padding:0;border:0;border-radius:999px;background:#ee3cad;color:var(--lime);box-shadow:0 10px 18px -12px rgba(238,60,173,.85),inset 0 0 0 1px rgba(255,255,255,.1);transition:transform 140ms cubic-bezier(.22,1,.36,1),background 240ms cubic-bezier(.22,1,.36,1),box-shadow 240ms cubic-bezier(.22,1,.36,1)}.menu-toggle i{display:none}.menu-toggle b{display:block;font-size:23px;line-height:1;font-weight:400;color:var(--lime);transition:transform 280ms cubic-bezier(.34,1.56,.64,1)}.menu-toggle:hover{background:#ff4fbe;transform:translateY(-1px);box-shadow:0 16px 25px -12px rgba(238,60,173,.9),inset 0 0 0 1px rgba(255,255,255,.12)}.menu-toggle:hover b{transform:rotate(20deg) scale(1.12)}.menu-toggle:focus-visible{outline:2px solid var(--lime);outline-offset:3px}.site-header.menu-open .menu-toggle b{transform:rotate(45deg)}
}

/* Compact mobile drawer: a floating dark card rather than a full-screen takeover. */
@media(max-width:900px){
  .site-header.menu-open{height:56px;background:var(--ink);color:var(--paper)}
  .site-header.menu-open .desktop-nav{display:flex;position:fixed;z-index:22;top:72px;right:18px;left:auto;width:min(252px,calc(100vw - 36px));margin:0;padding:24px 28px;flex-direction:column;align-items:center;gap:19px;border:1px solid rgba(246,244,233,.62);border-radius:22px;background:#18191e;color:var(--paper);box-shadow:0 16px 34px rgba(0,0,0,.26);font-size:clamp(21px,5.8vw,31px);font-weight:900;font-style:italic;letter-spacing:-.07em;line-height:1;text-transform:uppercase}
  .site-header.menu-open .desktop-nav a{width:100%;text-align:center}
  .site-header.menu-open .desktop-nav a:after{display:none}
  .site-header.menu-open .desktop-nav a:hover,.site-header.menu-open .desktop-nav a.active{color:#ee3cad}
}

/* Desktop Ticket keeps its label, but shares the magenta bloom treatment. */
@media(min-width:901px){.header-cta{border-radius:999px;background:#ee3cad;box-shadow:0 10px 18px -12px rgba(238,60,173,.85),inset 0 0 0 1px rgba(255,255,255,.1);transition:transform 140ms cubic-bezier(.22,1,.36,1),background 240ms cubic-bezier(.22,1,.36,1),box-shadow 240ms cubic-bezier(.22,1,.36,1)}.header-cta:hover{background:#ff4fbe;transform:translateY(-1px);box-shadow:0 16px 25px -12px rgba(238,60,173,.9),inset 0 0 0 1px rgba(255,255,255,.12)}}

/* Fixed-frame, three-card rotation adapted from the referenced Move Slide Card. */
@media(max-width:900px){
  .mobile-intro-gallery{display:block;height:clamp(290px,72vw,420px);margin:34px 24px 42px;overflow:hidden;border-radius:24px;background:#17181e}.mobile-stack-carousel{position:relative;width:100%;height:100%;overflow:hidden}.gallery-card{position:absolute;display:block;overflow:hidden;margin:0;border-radius:26px;background:#20212a;box-shadow:0 16px 30px rgba(0,0,0,.32);will-change:transform,top,left,width,height;animation-duration:9s;animation-timing-function:cubic-bezier(.75,0,0,1.01);animation-iteration-count:infinite}.gallery-card img{display:block;width:100%;height:100%;object-fit:cover;object-position:center}.gallery-card-1{animation-name:gallery-cycle-one}.gallery-card-2{animation-name:gallery-cycle-two}.gallery-card-3{animation-name:gallery-cycle-three}
}
@keyframes gallery-cycle-one{0%,32%{z-index:3;top:3%;left:50%;width:54%;height:92%;transform:translateX(-50%) rotate(0)}33%,65%{z-index:1;top:15%;left:3%;width:46%;height:76%;transform:rotate(-12deg)}66%,99%{z-index:1;top:15%;left:51%;width:46%;height:76%;transform:rotate(12deg)}}
@keyframes gallery-cycle-two{0%,32%{z-index:1;top:15%;left:51%;width:46%;height:76%;transform:rotate(12deg)}33%,65%{z-index:3;top:3%;left:50%;width:54%;height:92%;transform:translateX(-50%) rotate(0)}66%,99%{z-index:1;top:15%;left:3%;width:46%;height:76%;transform:rotate(-12deg)}}
@keyframes gallery-cycle-three{0%,32%{z-index:1;top:15%;left:3%;width:46%;height:76%;transform:rotate(-12deg)}33%,65%{z-index:1;top:15%;left:51%;width:46%;height:76%;transform:rotate(12deg)}66%,99%{z-index:3;top:3%;left:50%;width:54%;height:92%;transform:translateX(-50%) rotate(0)}}
@media(max-width:560px){.mobile-intro-gallery{height:clamp(280px,74vw,380px);margin:30px 18px 38px;border-radius:20px}.gallery-card{border-radius:20px}}
@media(prefers-reduced-motion:reduce){.gallery-card{animation:none}.gallery-card-1{z-index:3;top:3%;left:50%;width:54%;height:92%;transform:translateX(-50%)}.gallery-card-2{z-index:1;top:15%;left:51%;width:46%;height:76%;transform:rotate(12deg)}.gallery-card-3{z-index:1;top:15%;left:3%;width:46%;height:76%;transform:rotate(-12deg)}}

/* Reference interaction: the desktop card paints a short photo trail under the pointer. */
@media(min-width:901px){
  .festival-stage .intro-hover-media{display:none!important}
  .festival-stage .intro-hover-trail{position:absolute;inset:0;z-index:4;overflow:hidden;pointer-events:none}
  .festival-stage .intro-hover-card{position:absolute;z-index:var(--trail-index,1);width:clamp(116px,12vw,194px);aspect-ratio:.74;overflow:hidden;margin:0;border-radius:12px;background:#1b1d22;box-shadow:0 12px 24px rgba(0,0,0,.2);opacity:0;transform:translate(-50%,-50%) rotate(var(--card-rotation,0deg)) scale(.86);transition:opacity 140ms linear,transform 220ms cubic-bezier(.22,1,.36,1);will-change:transform,opacity}
  .festival-stage .intro-hover-card.is-visible{opacity:1;transform:translate(-50%,-50%) rotate(var(--card-rotation,0deg)) scale(1)}
  .festival-stage .intro-hover-card.is-leaving{opacity:0;transform:translate(-50%,-50%) rotate(var(--card-rotation,0deg)) scale(.94);transition-duration:260ms}
  .festival-stage .intro-hover-card img{display:block;width:100%;height:100%;object-fit:cover;object-position:center;filter:none!important;mix-blend-mode:normal!important}
}

/* Mobile: four real cards advance one slot at a time; the fourth card enters from the right. */
@media(max-width:900px){
  .mobile-intro-gallery,.mobile-stack-carousel{border-radius:22px}
  .mobile-intro-gallery{background:#17181e}
  .mobile-stack-carousel{overflow:hidden}
  .mobile-intro-gallery figure.gallery-card{border-radius:18px!important;animation:none!important;filter:none!important;transition:top 720ms linear,left 720ms linear,width 720ms linear,height 720ms linear,transform 720ms linear,opacity 180ms linear;will-change:top,left,width,height,transform,opacity}
  .mobile-intro-gallery figure.gallery-card img{filter:none!important;mix-blend-mode:normal!important}
  .mobile-intro-gallery figure.gallery-card.slot-left,.mobile-intro-gallery figure.gallery-card.slide-left{z-index:2;top:14%;left:3%;width:46%;height:76%;transform:rotate(-9deg);opacity:1}
  .mobile-intro-gallery figure.gallery-card.slot-center,.mobile-intro-gallery figure.gallery-card.slide-center{z-index:4;top:3%;left:50%;width:54%;height:92%;transform:translateX(-50%) rotate(0);opacity:1}
  .mobile-intro-gallery figure.gallery-card.slot-right,.mobile-intro-gallery figure.gallery-card.slide-right{z-index:3;top:14%;left:51%;width:46%;height:76%;transform:rotate(9deg);opacity:1}
  .mobile-intro-gallery figure.gallery-card.slot-enter{z-index:1;top:14%;left:105%;width:46%;height:76%;transform:rotate(9deg);opacity:0}
  .mobile-intro-gallery figure.gallery-card.slide-out{z-index:1;top:14%;left:-51%;width:46%;height:76%;transform:rotate(-9deg);opacity:0}
}
@media(max-width:560px){.mobile-intro-gallery,.mobile-stack-carousel{border-radius:20px}.gallery-card{border-radius:16px!important}}
@media(prefers-reduced-motion:reduce){.gallery-card.slot-enter,.gallery-card-4{display:none}.gallery-card.slot-left{z-index:2}.gallery-card.slot-center{z-index:4}.gallery-card.slot-right{z-index:3}}

/* Lineup entries reveal only once, as their own row rises into the viewport. */
@media(prefers-reduced-motion:no-preference){
  .lineup-card.reveal-ready .lineup-person{opacity:0;transform:translateY(74px)}
  .lineup-card.reveal-ready .lineup-person.is-revealed{animation:lineup-row-rise 680ms cubic-bezier(.22,1,.36,1) var(--reveal-delay,0ms) both}
  @keyframes lineup-row-rise{from{opacity:0;transform:translateY(74px)}to{opacity:1;transform:translateY(0)}}
}

/* Footer: a taller stage holds a one-time falling stack that remains draggable. */
.festival-outro{min-height:clamp(684px,50.4vw,810px);padding:clamp(34px,4vw,68px);isolation:isolate}
.festival-outro .outro-copy{position:relative;z-index:4}.festival-outro .newsletter{z-index:4}
.festival-outro .paper-collage{display:block;z-index:2;inset:0;width:auto;height:auto;overflow:visible;pointer-events:none}
.paper-collage .drop-card{position:absolute;display:grid;place-items:center;box-sizing:border-box;margin:0;padding:clamp(10px,1.1vw,18px);border:0;box-shadow:7px 9px 0 rgba(21,21,21,.24);color:var(--ink);font-family:Archivo,Arial,sans-serif;font-size:clamp(17px,1.8vw,31px);font-weight:900;font-style:italic;letter-spacing:-.08em;line-height:.8;text-align:center;user-select:none;touch-action:none;pointer-events:auto;cursor:grab;transform:rotate(var(--rest-rotation,0deg));will-change:transform,top,left}
.paper-collage .drop-card:active,.paper-collage .drop-card.is-dragging{cursor:grabbing;box-shadow:4px 5px 0 rgba(21,21,21,.2)}
.paper-collage .card-design{--rest-rotation:-9deg;--drop-delay:0ms;left:-2%;bottom:-13%;width:15.5%;height:40.83%;background:#ee3cad;color:var(--ink)}
.paper-collage .card-festival{--rest-rotation:9deg;--drop-delay:90ms;left:17%;bottom:-17%;width:17%;height:44.64%;background:var(--lime)}
.paper-collage .card-spark{--rest-rotation:0deg;--drop-delay:180ms;left:40%;bottom:-11%;width:13%;aspect-ratio:1;border-radius:50%;background:#3146e8;color:var(--paper);font-size:clamp(42px,4.6vw,76px)}
.paper-collage .card-team{--rest-rotation:-7deg;--drop-delay:270ms;left:56%;bottom:-15%;width:15%;height:38.11%;background:var(--paper)}
.paper-collage .card-year{--rest-rotation:8deg;--drop-delay:360ms;left:75%;bottom:-19%;width:14%;height:43.56%;background:#ee3cad}
.paper-collage .card-stripes{--rest-rotation:-5deg;--drop-delay:450ms;left:29%;bottom:-23%;width:13%;height:38.66%;background:repeating-linear-gradient(0deg,#f6f4e9 0 10%,#ee3cad 10% 20%,#c9ff00 20% 30%,#3146e8 30% 40%);font-size:clamp(14px,1.35vw,23px)}
.paper-collage .card-orbit{--rest-rotation:11deg;--drop-delay:540ms;left:88%;bottom:-11%;width:14%;aspect-ratio:1;background:#c9ff00;color:#3146e8;font-size:clamp(36px,4vw,62px)}
@media(prefers-reduced-motion:no-preference){
  .paper-collage.is-dropping .drop-card{animation:footer-card-fall 920ms cubic-bezier(.22,.84,.29,1.12) var(--drop-delay) both}
  @keyframes footer-card-fall{0%{opacity:0;transform:translateY(-105vh) rotate(var(--rest-rotation,0deg))}68%{opacity:1;transform:translateY(12px) rotate(var(--rest-rotation,0deg))}100%{opacity:1;transform:translateY(0) rotate(var(--rest-rotation,0deg))}}
}
@media(max-width:900px){
  .festival-outro{min-height:clamp(608px,140.8vw,816px);margin-top:54px;padding:34px}
  .festival-outro .newsletter{width:100%;margin-top:30px}
  .festival-outro .paper-collage{inset:0;width:auto;height:auto}
  .paper-collage .drop-card{padding:9px;font-size:clamp(15px,4.2vw,24px)}
  .paper-collage .card-design{left:-9%;bottom:-10%;width:31%;height:30.6%}
  .paper-collage .card-festival{left:16%;bottom:-15%;width:30%;height:35.28%}
  .paper-collage .card-spark{left:42%;bottom:-5%;width:25%;font-size:clamp(37px,10vw,57px)}
  .paper-collage .card-team{left:63%;bottom:-14%;width:28%;height:29.75%}
  .paper-collage .card-year{left:87%;bottom:-12%;width:28%;height:32.3%}
  .paper-collage .card-stripes{left:7%;bottom:-27%;width:25%;height:29.75%;font-size:14px}
  .paper-collage .card-orbit{left:87%;bottom:-5%;width:22%;font-size:clamp(34px,9vw,50px)}
}
@media(max-width:560px){.festival-outro{margin-inline:18px;padding:32px 34px;min-height:clamp(608px,140.8vw,816px)}.festival-outro .newsletter{margin-top:29px}.paper-collage .drop-card{font-size:clamp(14px,4.2vw,22px)}}

/* Location: equal desktop panels, then one-time opposing entrances on scroll. */
@media(min-width:901px){
  .location-layout{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(14px,1.35vw,24px)}
}
@media(prefers-reduced-motion:no-preference){
  .location-layout.reveal-ready .location-copy,.location-layout.reveal-ready .location-photo{opacity:0}
  .location-layout.reveal-ready.is-revealed .location-copy{animation:location-slide-from-left 760ms cubic-bezier(.22,1,.36,1) both}
  .location-layout.reveal-ready.is-revealed .location-photo{animation:location-slide-from-right 760ms cubic-bezier(.22,1,.36,1) 90ms both}
  @keyframes location-slide-from-left{from{opacity:0;transform:translateX(-72px)}to{opacity:1;transform:translateX(0)}}
  @keyframes location-slide-from-right{from{opacity:0;transform:translateX(72px)}to{opacity:1;transform:translateX(0)}}
}
@media(max-width:900px){
  .location-layout{grid-template-columns:minmax(0,1fr)}
  @keyframes location-slide-from-left{from{opacity:0;transform:translateX(-38px)}to{opacity:1;transform:translateX(0)}}
  @keyframes location-slide-from-right{from{opacity:0;transform:translateX(38px)}to{opacity:1;transform:translateX(0)}}
}
