@font-face{font-family:"Inter Tight";src:url(fonts/inter-tight.woff2) format("woff2");font-weight:100 900;font-display:swap}
@font-face{font-family:"Azeret Mono";src:url(fonts/azeret-mono.woff2) format("woff2");font-weight:100 900;font-display:swap}
@font-face{font-family:"Instrument Serif";src:url(fonts/instrument-serif-italic.woff2) format("woff2");font-style:italic;font-weight:400;font-display:swap}
:root{
  /* Sunnyside logo palette only: aqua, lemon, deep teal, green + near-black and white */
  --aqua:#3ED7CD;--lemon:#E7FD3D;--teal:#1B7372;--green:#2F7A5C;
  --ink:#0A0A0A;--ink2:#141414;--line:rgba(242,242,240,.14);--off:#F2F2F0;--mute:#8F8F8C;--dim:#5C5C59;
  --pad:clamp(18px,4.4vw,56px);--max:1360px;
  --gro:"Inter Tight",system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif;
  --mono:"Azeret Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --serif:"Instrument Serif",Georgia,"Times New Roman",serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;background:var(--ink)}
body{margin:0;background:var(--ink);color:var(--off);font:400 16px/1.55 var(--gro);-webkit-font-smoothing:antialiased;overflow-x:hidden}
body.locked{overflow:hidden}
img,video{display:block;max-width:100%}
a{color:inherit}
h1,h2,h3{margin:0;font-weight:500}
em{font-family:var(--serif);font-style:italic;font-weight:400;letter-spacing:-.01em}
.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--pad)}
.skip{position:absolute;left:-999px;top:8px;z-index:99;background:var(--lemon);color:var(--ink);padding:10px 14px;border-radius:999px}
.skip:focus{left:8px}
:focus-visible{outline:2px solid var(--lemon);outline-offset:3px}
.lbl{font:400 11px/1.4 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--mute);margin:0 0 18px;display:flex;flex-wrap:wrap;gap:6px 18px}
.lbl .num{color:var(--lemon)}
.h2{font:500 clamp(42px,7.2vw,104px)/.92 var(--gro);letter-spacing:-.045em}
.h2 em{color:var(--aqua)}
.pill{display:inline-flex;align-items:center;gap:10px;border:1px solid var(--off);background:var(--off);color:var(--ink);border-radius:999px;padding:12px 18px;
  font:500 11px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;text-decoration:none;cursor:pointer;transition:background .25s,color .25s,border-color .25s,transform .25s}
.pill:hover{transform:translateY(-1px)}
.pill.ghost{background:transparent;color:var(--off);border-color:var(--line)}
.pill.ghost:hover{border-color:var(--off)}
.pill.lemon{background:var(--lemon);border-color:var(--lemon);color:var(--ink)}
.pill.lemon:hover{background:var(--aqua);border-color:var(--aqua)}

/* top bar + menu */
.bar{position:fixed;inset:0 0 auto 0;z-index:40;display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:12px var(--pad);padding-top:max(12px,env(safe-area-inset-top));transition:background .3s,backdrop-filter .3s}
.bar.solid{background:rgba(10,10,10,.82);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;font:500 11px/1 var(--mono);letter-spacing:.18em;text-transform:uppercase}
.brand img{width:34px;height:34px;border-radius:50%}
.bar-r{display:flex;gap:8px}
@media (max-width:480px){.hide-s{display:none}.brand span{display:none}}
.menu{position:fixed;inset:0;z-index:35;background:var(--ink);overflow-y:auto;opacity:0;transition:opacity .35s}
.menu.open{opacity:1}
.menu-in{max-width:var(--max);margin:0 auto;padding:96px var(--pad) 48px}
.mlist{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.mlist a{display:grid;grid-template-columns:44px 1fr auto;align-items:baseline;gap:12px;padding:12px 0;border-bottom:1px solid var(--line);text-decoration:none;color:#C9C9C6;transition:color .2s,padding .3s}
.mlist .mn{font:400 11px/1 var(--mono);color:var(--dim);letter-spacing:.1em}
.mlist .mt{font:500 clamp(30px,6vw,76px)/1 var(--gro);letter-spacing:-.04em}
.mlist .md{font:400 11px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--mute)}
.mlist a:hover,.mlist a:focus-visible{color:var(--lemon);padding-left:10px}
.menu-foot{display:flex;flex-wrap:wrap;gap:10px 24px;margin-top:28px}
.menu-foot a{font:400 12px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;text-decoration:none;color:var(--off)}
.menu-foot a:hover{color:var(--lemon)}
.menu .mlist li{opacity:0;transform:translateY(16px);transition:opacity .45s,transform .45s}
.menu.open .mlist li{opacity:1;transform:none}
@media (max-width:600px){.mlist .md{display:none}.mlist a{grid-template-columns:34px 1fr}}

/* hero */
.hero{padding:clamp(108px,15vh,150px) 0 clamp(40px,6vw,72px)}
@media (min-width:600px){.hero-lbl span+span::before{content:"·";margin-right:18px;color:var(--dim)}}
.mega{font:500 clamp(64px,15.6vw,236px)/.84 var(--gro);letter-spacing:-.06em;margin:0 0 0 -.04em}
.mega span{display:block}
.mega em{color:var(--lemon);letter-spacing:-.035em;font-size:1.04em;line-height:.9}
.rot{font:500 clamp(24px,3.6vw,52px)/1.1 var(--gro);letter-spacing:-.035em;margin:clamp(18px,3vw,34px) 0 0;display:flex;flex-wrap:wrap;gap:0 .3em;align-items:baseline}
.rot-pre{color:var(--dim)}
.rot-slot{position:relative;display:inline-grid;color:var(--aqua);min-width:6ch}
.rot-slot .w{grid-area:1/1;white-space:nowrap;opacity:0;transform:translateY(60%);transition:opacity .5s,transform .6s cubic-bezier(.2,.8,.2,1)}
.rot-slot .w.on{opacity:1;transform:none}
.rot-slot .w.out{opacity:0;transform:translateY(-60%)}
.hero-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:18px 32px;margin:clamp(24px,3.4vw,40px) 0 clamp(26px,3.6vw,44px);padding-top:20px;border-top:1px solid var(--line)}
.hero-copy{margin:0;max-width:40ch;color:#C9C9C6;font-size:15px}
.hero-media{position:relative;margin:0;border-radius:18px;overflow:hidden;background:var(--ink2);aspect-ratio:16/9}
.hero-media video{width:100%;height:100%;object-fit:cover}
.hero-media figcaption{position:absolute;left:16px;bottom:4px;color:var(--off);text-shadow:0 1px 8px rgba(0,0,0,.6)}
@media (max-width:700px){.hero-media{aspect-ratio:4/5}}
@media (min-width:1100px){
  .hero .wrap{display:grid;grid-template-columns:1fr minmax(320px,30%);column-gap:clamp(32px,4vw,64px);align-items:end}
  .hero .wrap>*{grid-column:1}
  .hero .wrap>.hero-media{grid-column:2;grid-row:1/span 4;aspect-ratio:4/5;align-self:end;margin-bottom:6px}
  .hero-row{margin-bottom:0}
}

/* word band */
.band{overflow:hidden;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:18px 0;white-space:nowrap}
.band-track{display:flex;width:max-content;animation:band 60s linear infinite}
.band-g{display:flex;align-items:center;gap:28px;padding-right:28px}
.band .gr{font:500 clamp(34px,5vw,72px)/1 var(--gro);letter-spacing:-.045em;color:var(--off)}
.band .it{font:400 italic clamp(36px,5.3vw,78px)/1 var(--serif);color:var(--aqua)}
.band i{font-style:normal;color:var(--lemon);font-size:clamp(20px,2.4vw,32px)}
@keyframes band{from{transform:translate3d(0,0,0)}to{transform:translate3d(-50%,0,0)}}

/* statement with scroll fill */
.statement{padding:clamp(80px,12vw,170px) 0}
.fill{font:500 clamp(30px,5.2vw,74px)/1.04 var(--gro);letter-spacing:-.045em;margin:0 0 28px;max-width:20ch}
.js .fill span{color:#333330;transition:color .35s}
.js .fill span.lit{color:var(--off)}
.lbl.sm{color:#C9C9C6;max-width:46ch;line-height:1.7}

/* flyer strip */
.season{padding:clamp(56px,8vw,110px) 0 clamp(56px,8vw,100px);border-top:1px solid var(--line)}
.season .h2{margin-bottom:clamp(28px,4vw,48px)}
.marquee{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent);mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent)}
.mq-track{display:flex;width:max-content;animation:mq-ltr 46s linear infinite;will-change:transform}
.mq-group{display:flex;gap:12px;padding-right:12px}
.fly{display:block;text-decoration:none;flex:0 0 auto}
.fly img{height:120px;width:auto;border-radius:6px;background:var(--ink2);transition:transform .35s}
.fly span{display:block;margin-top:10px;font:400 10px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--mute)}
.fly:hover img{transform:translateY(-4px)}
.fly:hover span{color:var(--lemon)}
.marquee:hover .mq-track,.marquee.hold .mq-track,.marquee:has(:focus-visible) .mq-track{animation-play-state:paused}
@keyframes mq-ltr{from{transform:translate3d(-50%,0,0)}to{transform:translate3d(0,0,0)}}
@media (min-width:900px){.fly img{height:170px}.mq-group{gap:16px;padding-right:16px}}

/* season index (light section) */
.index{background:var(--off);color:var(--ink);padding:clamp(64px,9vw,130px) 0;border-radius:28px;margin:0 clamp(6px,1vw,16px)}
.index .lbl{color:var(--dim)}
.index .h2 em{color:var(--teal)}
.index-top{margin-bottom:clamp(30px,4vw,56px)}
.rows{list-style:none;margin:0;padding:0;border-top:1px solid rgba(10,10,10,.16)}
.rows a{display:grid;grid-template-columns:52px 150px 1fr 1.1fr 30px;align-items:baseline;gap:16px;padding:20px 0;border-bottom:1px solid rgba(10,10,10,.16);text-decoration:none;transition:background .25s,padding .3s}
.rows .ix,.rows .id{font:400 11px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}
.rows .it2{font:500 clamp(24px,2.8vw,40px)/1 var(--gro);letter-spacing:-.04em}
.rows .il{font-size:14px;color:#4a4a47}
.rows .ia{font-size:20px;color:var(--teal);justify-self:end;transition:transform .3s}
.rows a:hover{padding-left:12px;background:rgba(62,215,205,.16)}
.rows a:hover .ia{transform:translate(3px,-3px)}
@media (max-width:860px){
  .rows a{grid-template-columns:34px 1fr 24px;gap:6px 12px;padding:16px 0}
  .rows .id{grid-column:2;grid-row:1}.rows .it2{grid-column:2;grid-row:2}.rows .il{grid-column:2;grid-row:3;font-size:13px}
  .rows .ix{grid-row:1/3}.rows .ia{grid-column:3;grid-row:1/3;align-self:center}
}

/* events */
.ev{padding:clamp(64px,9vw,128px) 0;border-top:1px solid var(--line);scroll-margin-top:40px}
.index+.ev{border-top:0}
.ev-head{margin-bottom:clamp(28px,4vw,56px)}
.ev h2{font:500 clamp(54px,10.4vw,170px)/.86 var(--gro);letter-spacing:-.055em;margin:0 0 0 -.03em;overflow-wrap:anywhere}
.ev:nth-of-type(even) h2{color:var(--off)}
.sub{font:400 italic clamp(22px,2.6vw,34px)/1.1 var(--serif);color:var(--aqua);margin:14px 0 0}
.lineup{font:400 12px/1.7 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:#C9C9C6;margin:16px 0 0}
.lineup span{color:var(--lemon);margin:0 4px}
.note{margin:10px 0 0;font-size:14px;color:var(--mute);max-width:56ch}
.ev-body{display:grid;gap:28px}
.k{margin:6px 0 -6px;color:var(--off)}
.k::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--lemon);align-self:center}
.ev-media{display:grid;gap:22px;min-width:0}
.flyer{max-width:520px}
.flyer .tile{border-radius:14px}
.tile{display:block;border-radius:12px;overflow:hidden;background:var(--ink2);cursor:zoom-in}
.tile img{width:100%;height:auto;opacity:0;transition:opacity .5s,transform .7s cubic-bezier(.2,.8,.2,1)}
.tile img.in{opacity:1}
.tile:hover img{transform:scale(1.03)}
.clips,.reels{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:4px;scrollbar-width:none;margin-right:calc(-1*var(--pad));padding-right:var(--pad)}
.clips::-webkit-scrollbar,.reels::-webkit-scrollbar{display:none}
.clip{position:relative;margin:0;flex:0 0 auto;width:min(64vw,280px);aspect-ratio:4/5;scroll-snap-align:start;border-radius:12px;overflow:hidden;background:var(--ink2)}
.clip video{width:100%;height:100%;object-fit:cover}
.snd{position:absolute;right:10px;bottom:10px;border:0;border-radius:999px;padding:9px 12px;background:rgba(242,242,240,.92);color:var(--ink);font:500 10px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;cursor:pointer}
.clip.on .snd{background:var(--lemon)}
.reel{position:relative;flex:0 0 auto;width:min(44vw,200px);aspect-ratio:9/16;border-radius:12px;overflow:hidden;background:var(--ink2);scroll-snap-align:start;text-decoration:none}
.reel img,.reel video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.reel video{opacity:0;transition:opacity .5s}.reel video.on{opacity:1}
.rl{position:absolute;left:8px;bottom:8px;z-index:1;background:rgba(10,10,10,.72);color:var(--off);border-radius:999px;padding:7px 10px;font:400 9px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase}
.set.trio{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.set.trio .tile{aspect-ratio:1/1}
.set.trio .tile:first-child{grid-column:1/-1;aspect-ratio:3/2}
.set.trio .tile img{width:100%;height:100%;object-fit:cover}
@media (min-width:700px){.set.trio{grid-template-columns:repeat(3,1fr)}.set.trio .tile,.set.trio .tile:first-child{grid-column:auto;aspect-ratio:4/5}}
.more{justify-self:start}
@media (min-width:960px){
  .ev-body{grid-template-columns:minmax(280px,34%) 1fr;gap:clamp(28px,4vw,64px);align-items:start}
  .flyer{position:sticky;top:90px}
  .clips,.reels{margin-right:0;padding-right:0}
}
@media (max-width:959px){.flyer{max-width:min(78%,420px)}}

/* reveal on scroll */
.js .rv{opacity:0;transform:translateY(28px);transition:opacity .8s,transform .9s cubic-bezier(.2,.8,.2,1)}
.js .rv.seen{opacity:1;transform:none}

/* partners */
.partners{padding:clamp(72px,10vw,140px) 0;border-top:1px solid var(--line);text-align:center}
.partners .lbl{justify-content:center}
.sponsor{display:block;font:500 clamp(36px,6vw,88px)/1 var(--gro);letter-spacing:-.045em;margin:0 0 28px}
.corona{width:min(60vw,280px);height:auto;margin:0 auto clamp(48px,6vw,80px)}
.plogos{list-style:none;margin:0;padding:clamp(28px,4vw,44px) 0 0;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:30px 56px}
.plogos img{height:30px;width:auto}
.plogos .pl-ca{height:22px}.plogos .pl-emb{height:34px}.plogos .pl-addy{height:32px}

/* follow / footer */
.follow{background:var(--ink);border-top:1px solid var(--line);padding:clamp(72px,10vw,130px) 0 calc(28px + env(safe-area-inset-bottom));overflow:hidden}
.follow-h{font:500 clamp(30px,4.6vw,64px)/1.04 var(--gro);letter-spacing:-.04em;max-width:22ch;margin:0 0 clamp(32px,4vw,56px)}
.follow-h em{color:var(--lemon)}
.contact{list-style:none;padding:0;margin:0;border-top:1px solid var(--line)}
.contact a{display:grid;grid-template-columns:170px 1fr auto;align-items:baseline;gap:12px;padding:20px 0;border-bottom:1px solid var(--line);text-decoration:none;transition:color .2s,padding .3s}
.contact small{font:400 11px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--mute)}
.contact span{font:500 clamp(20px,2.4vw,32px)/1.1 var(--gro);letter-spacing:-.03em;overflow-wrap:anywhere}
.contact b{font-weight:400;color:var(--aqua)}
.contact a:hover{color:var(--lemon);padding-left:10px}
@media (max-width:640px){.contact a{grid-template-columns:1fr auto}.contact small{grid-column:1/-1}}
.giant{font:500 clamp(54px,12.4vw,190px)/.85 var(--gro);letter-spacing:-.065em;margin:clamp(56px,8vw,110px) 0 22px;color:var(--off);white-space:nowrap}
.giant em{color:var(--aqua);margin-left:.12em}
@media (max-width:700px){.giant{white-space:normal}.giant em{display:block;margin-left:0}}
.venue{color:var(--aqua);margin:0}

/* photo pages */
.gp{padding:110px 0 80px;min-height:100vh}
.back{display:inline-flex;text-decoration:none;color:var(--off);margin-bottom:34px}
.back:hover{color:var(--lemon)}
.gh{margin:0 0 6px}
.gp .note{margin-bottom:30px}
.set.photos{display:flex;gap:10px}
.set .col{flex:1;display:flex;flex-direction:column;gap:10px;min-width:0}
.set.photos:not(.js){flex-wrap:wrap}
.set.photos:not(.js) .tile{width:calc(50% - 5px)}
.gp-foot{display:flex;flex-wrap:wrap;gap:10px;margin:36px 0 0}

/* lightbox */
.lb{position:fixed;inset:0;z-index:60;background:rgba(6,6,6,.97);opacity:0;transition:opacity .25s}
.lb.open{opacity:1}
.lb-stage{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:max(56px,env(safe-area-inset-top)) 8px 56px}
.lb-stage img{max-width:100%;max-height:100%;object-fit:contain;transition:opacity .2s,transform .25s;touch-action:none}
.lb-stage img.dragging{transition:none}
.lb-count{position:absolute;left:18px;top:max(24px,env(safe-area-inset-top));margin:0;font:400 11px/1 var(--mono);letter-spacing:.16em;color:var(--mute)}
.lb-btn{position:absolute;border:1px solid var(--line);background:rgba(242,242,240,.06);color:var(--off);width:46px;height:46px;border-radius:50%;font-size:26px;line-height:1;cursor:pointer}
.lb-close{top:max(12px,env(safe-area-inset-top));right:12px}
.lb-prev{left:12px;top:50%;transform:translateY(-50%)}.lb-next{right:12px;top:50%;transform:translateY(-50%)}
@media (hover:none){.lb-prev,.lb-next{display:none}}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *{transition:none!important}
  .band-track{animation:none}
  .marquee{overflow-x:auto;-webkit-mask-image:none;mask-image:none}
  .mq-track{animation:none;transform:none}
  .mq-group[aria-hidden]{display:none}
  .js .rv{opacity:1;transform:none}
  .js .fill span{color:var(--off)}
}
