/* radiojavanparty.com - the group 7 face lift (3 Oct 2026): play.radiojavan.com's tokens. Ground #131313, surface #181818,
   white-alpha text (70 / 50 / 20), lines at 8%, one red for the action only, the system stack in 400 / 500, corners 6 px and round.
   Anton stays only for the city and the artist's name (the RJ Party house, from Rona's flyers). State colours are functional. */
@font-face{font-family:RJAnton;src:url("/rj-public/fonts/anton.woff2") format("woff2");font-weight:400;font-display:swap}
:root{
  --ground:#131313;--surface:#181818;--raised:#202020;--fill:rgba(255,255,255,.07);--fill-2:rgba(255,255,255,.12);
  --text:#fff;--text-2:rgba(255,255,255,.7);--text-3:rgba(255,255,255,.5);--text-4:rgba(255,255,255,.2);--line:rgba(255,255,255,.08);
  --red:#aa251b;--red-hover:#c02b20;--onsale:#3ecf8e;--few:#e8c26e;--cancelled:#f06a62;
  --r:6px;--max:1200px;--gutter:16px;
  --font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Vazirmatn",sans-serif;
  --display:RJAnton,Anton,Impact,"Arial Narrow Bold",sans-serif;
  color-scheme:dark;
}
@media (min-width:720px){:root{--gutter:32px}}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--ground);color:var(--text);font:400 16px/1.5 var(--font);-webkit-font-smoothing:antialiased;overflow-x:clip}
a{color:inherit;text-decoration:none}
a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid #fff;outline-offset:2px;border-radius:var(--r)}
img{display:block;max-width:100%}
h1,h2,h3,h4{margin:0;font-weight:500;line-height:1.2}
p{margin:0}
ul{margin:0;padding:0;list-style:none}
.skip-link{position:fixed;top:-100px;left:16px;z-index:99;background:#fff;color:#111;padding:10px 14px;border-radius:var(--r);font-size:14px}
.skip-link:focus{top:12px}
.rjx-city{font-family:var(--display);font-weight:400;text-transform:uppercase;letter-spacing:.01em;line-height:1}
.rjx-eyebrow{font-size:12px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.rjx-lead{font-size:16px;color:var(--text-2);max-width:620px}
.rjx-muted{font-size:14px;color:var(--text-3)}
.rjx-note{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-3)}
.rjx-note a{color:var(--text)}
.rjx-note a:hover{text-decoration:underline}

/* buttons: one red per view, for the action */
.rjx-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 18px;border:0;border-radius:var(--r);background:var(--fill);color:var(--text);font:500 14px/1 var(--font);white-space:nowrap;cursor:pointer;transition:background .15s}
.rjx-btn:hover{background:var(--fill-2)}
.rjx-btn-red{background:var(--red)}
.rjx-btn-red:hover{background:var(--red-hover)}
.rjx-btn-wide{display:flex;width:100%}
.rjx-btn-small{min-height:36px;padding:0 12px;font-size:13px}
.rjx-pmark{width:20px;height:20px;border-radius:4px;object-fit:contain;flex:none}

/* states: on sale, few left, sold out, tickets soon, tonight, cancelled */
.rjx-state{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:500;color:var(--text-2);white-space:nowrap}
.rjx-state:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}
.rjx-state.is-onsale,.rjx-state.is-tonight{color:var(--onsale)}
.rjx-state.is-few{color:var(--few)}
.rjx-state.is-cancelled{color:var(--cancelled)}
.rjx-state.is-soldout,.rjx-state.is-past{color:var(--text-3)}
.rjx-state.is-soon:before{background:transparent;border:1px solid currentColor;width:5px;height:5px}
.rjx-pricestate{display:flex;flex-direction:column;align-items:flex-end;gap:2px}
.rjx-price{font-size:14px;font-weight:500}

/* header */
.rjx-header{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:24px;height:56px;padding:0 var(--gutter);background:rgba(19,19,19,.92);border-bottom:1px solid var(--line);-webkit-backdrop-filter:saturate(1.4) blur(14px);backdrop-filter:saturate(1.4) blur(14px)}
.rjx-brand{display:flex;align-items:center;gap:10px;min-height:44px;flex:none}
.rjx-markframe{position:relative;display:block;flex:none;height:30px;aspect-ratio:1128.16/962.75;overflow:hidden}
.rjx-markframe .rjx-mark{position:absolute;top:0;left:0;width:100%;height:auto;max-width:none;aspect-ratio:1128.16/1482.3;filter:invert(1)}
.rjx-wordmark{width:auto;height:24px;filter:invert(1)}
.rjx-nav{display:none;gap:24px}
.rjx-nav a,.rjx-ask-link{font-size:14px;font-weight:500;color:var(--text-2);padding:10px 0;transition:color .15s}
.rjx-nav a:hover,.rjx-ask-link:hover{color:var(--text)}
.rjx-ask-link{display:none;margin-left:auto}
.rjx-menu{margin-left:auto;position:relative}
.rjx-menu summary{display:grid;place-items:center;width:44px;height:44px;margin-right:-10px;list-style:none;cursor:pointer;color:var(--text-2);border-radius:var(--r)}
.rjx-menu summary::-webkit-details-marker{display:none}
.rjx-menu[open] summary{color:var(--text);background:var(--fill)}
.rjx-menu-panel{position:absolute;right:-6px;top:50px;min-width:220px;display:flex;flex-direction:column;padding:8px;background:var(--raised);border:1px solid var(--line);border-radius:var(--r);box-shadow:0 16px 40px rgba(0,0,0,.5)}
.rjx-menu-panel a{padding:12px;font-size:16px;font-weight:500;border-radius:var(--r)}
.rjx-menu-panel a:hover{background:var(--fill)}
@media (min-width:900px){
  .rjx-header{height:64px}
  .rjx-nav,.rjx-ask-link{display:flex}
  .rjx-menu{display:none}
}

/* hero: the looping film behind the lockup (MotionBackdrop: pauses under reduced motion, on Save-Data and off screen; the poster stays),
   and the next night with Get tickets on the first screen */
.rjx-hero{position:relative;isolation:isolate;padding:88px var(--gutter) 8px;overflow:hidden;background:var(--ground)}
.rjx-hero-poster,.rjx-hero .motion-backdrop{position:absolute;left:0;right:0;top:0;width:100%;height:340px;z-index:-2}

.rjx-hero-poster{object-fit:cover}
.rjx-hero .motion-backdrop{z-index:-1;background-size:cover;background-position:center}
.rjx-hero .motion-backdrop video{width:100%;height:100%;object-fit:cover;opacity:.7}
.rjx-hero .motion-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(19,19,19,.2) 0%,rgba(19,19,19,.45) 55%,var(--ground) 100%)}
.rjx-hero .motion-control{position:absolute;right:var(--gutter);top:14px;z-index:3;display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:0 12px;border:1px solid var(--line);border-radius:999px;background:rgba(0,0,0,.45);color:var(--text-2);font:500 12px/1 var(--font);cursor:pointer}
.rjx-hero .motion-control:hover{color:var(--text);background:rgba(0,0,0,.65)}
.rjx-hero-inner{position:relative;max-width:var(--max);margin:0 auto;display:flex;flex-direction:column;gap:28px}
.rjx-lockup{display:flex;align-items:center;gap:12px}
.rjx-lockup .rjx-markframe{height:52px}
.rjx-lockup .rjx-wordmark{height:46px}
.rjx-hero-line{margin-top:14px;font-size:16px;color:var(--text-2);max-width:420px}
.rjx-film-link{display:inline-flex;align-items:center;gap:8px;min-height:44px;margin-top:6px;font-size:14px;font-weight:500;color:var(--text)}
.rjx-film-link:hover{color:var(--text-2)}
@media (min-width:720px){.rjx-hero-poster,.rjx-hero .motion-backdrop{height:420px}}
@media (min-width:1024px){
  .rjx-hero{padding:0 var(--gutter)}
  .rjx-hero-poster,.rjx-hero .motion-backdrop{height:100%}
  .rjx-hero .motion-shade{background:linear-gradient(90deg,rgba(19,19,19,.55),rgba(19,19,19,.2) 60%),linear-gradient(180deg,rgba(19,19,19,0) 60%,var(--ground) 100%)}
  .rjx-hero-inner{min-height:560px;display:grid;grid-template-columns:minmax(0,1fr) 560px;align-items:center;gap:48px;padding:64px 0}
  .rjx-lockup .rjx-markframe{height:84px}
  .rjx-lockup .rjx-wordmark{height:76px}
  .rjx-hero-line{font-size:18px}
}

/* enhancement E-hero: on a phone the vertical loop fills a 4:5 frame; the copy sits at its foot and the next night's card overlaps it */
@media (max-width:719px){
  .rjx-hero{padding-top:max(88px,calc(min(125vw,600px) - 290px))}
  .rjx-hero-poster,.rjx-hero .motion-backdrop{height:min(125vw,600px)}
  .rjx-hero .motion-backdrop video{opacity:.85}
  .rjx-hero .motion-shade{background:linear-gradient(180deg,rgba(19,19,19,.35) 0%,rgba(19,19,19,.1) 25%,rgba(19,19,19,.55) 55%,var(--ground) 100%)}
}
/* the next night, with Get tickets, right under the brand */
.rjx-next{display:grid;grid-template-columns:96px minmax(0,1fr);gap:16px;padding:16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:0 20px 50px rgba(0,0,0,.35)}
.rjx-next-flyer img{width:96px;height:96px;object-fit:cover;border-radius:var(--r)}
.rjx-next-copy{min-width:0;display:flex;flex-direction:column;gap:4px}
.rjx-next .rjx-city{font-size:30px;margin-top:2px}
.rjx-next .rjx-city a:hover{color:var(--text-2)}
.rjx-next-meta{font-size:14px;color:var(--text-2)}
.rjx-next-state{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-2)}
.rjx-actions{grid-column:1/-1;display:flex;gap:8px;margin-top:4px}
.rjx-actions .rjx-btn-red{flex:1}
@media (min-width:720px){
  .rjx-next{grid-template-columns:160px minmax(0,1fr);max-width:640px}
  .rjx-next-flyer img{width:160px;height:160px}
  .rjx-next .rjx-actions{grid-column:2}
}
@media (min-width:1024px){
  .rjx-next{grid-template-columns:184px minmax(0,1fr);padding:20px;background:rgba(24,24,24,.94);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
  .rjx-next-flyer img{width:184px;height:184px}
  .rjx-next .rjx-city{font-size:36px}
}

/* sections */
.rjx-section{max-width:calc(var(--max) + var(--gutter) * 2);margin:0 auto;padding:40px var(--gutter) 8px}
.rjx-head{display:flex;align-items:baseline;gap:10px;margin-bottom:16px}
.rjx-head h2{font-size:20px;font-weight:500}
.rjx-count{font-size:14px;color:var(--text-3)}
.rjx-head-link{display:inline-flex;align-items:center;gap:2px;margin-left:auto;font-size:14px;font-weight:500;color:var(--text-2)}
.rjx-head-link:hover{color:var(--text)}
@media (min-width:1024px){.rjx-section{padding-top:64px}.rjx-head h2{font-size:24px}.rjx-head{margin-bottom:24px}}
.rjx-empty{font-size:15px;color:var(--text-2)}
.rjx-empty a{color:var(--text);text-decoration:underline}

/* pick your night: month groups, one row per night (cards on desktop) */
.rjx-month+.rjx-month{margin-top:20px}
.rjx-month h3{display:flex;align-items:baseline;gap:8px;margin-bottom:4px;font-size:14px;font-weight:500;color:var(--text-2)}
.rjx-month h3 small{font-size:12px;font-weight:400;color:var(--text-3)}
.rjx-row-link{display:grid;grid-template-columns:56px minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}
.rjx-row-link:hover .rjx-city{color:var(--text-2)}
.rjx-row-actions{display:none}
.rjx-thumb{width:56px;height:56px;border-radius:var(--r);object-fit:cover;background:var(--surface)}
.rjx-thumb.is-logo,.rjx-card-art .is-logo{object-fit:contain;padding:18%;filter:invert(1)}
.rjx-row-main{min-width:0;display:flex;flex-direction:column;gap:3px}
.rjx-row-main .rjx-city{font-size:18px}
.rjx-row-main span{font-size:13px;color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rjx-row-end{text-align:right}
@media (min-width:900px){
  .rjx-month{display:grid;grid-template-columns:160px 1fr;gap:24px;padding:20px 0;border-top:1px solid var(--line)}
  .rjx-month+.rjx-month{margin-top:0}
  .rjx-month h3{flex-direction:column;gap:2px;font-size:16px;color:var(--text)}
  .rjx-month h3 small{font-size:13px}
  .rjx-rows{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:24px}
  .rjx-row-link{display:flex;flex-direction:column;align-items:stretch;gap:10px;padding:0;border:0}
  .rjx-row .rjx-thumb{width:100%;height:auto;aspect-ratio:1}
  .rjx-row-main .rjx-city{font-size:20px}
  .rjx-row-main span{white-space:normal}
  .rjx-row-end{text-align:left}
  .rjx-row .rjx-pricestate{flex-direction:row-reverse;justify-content:flex-end;align-items:center;gap:8px}
  /* enhancement E-rows: fewer than five nights - one full-width row each, with Get tickets and Details */
  .rjx-nights.is-rows .rjx-month{align-items:center;padding:0}
  .rjx-nights.is-rows .rjx-rows{display:block}
  .rjx-nights.is-rows .rjx-row{display:flex;align-items:center;gap:24px;padding:16px 0}
  .rjx-nights.is-rows .rjx-row+.rjx-row{border-top:1px solid var(--line)}
  .rjx-nights.is-rows .rjx-row-link{display:grid;grid-template-columns:88px minmax(0,1fr) auto;align-items:center;gap:24px;flex:1;min-width:0}
  .rjx-nights.is-rows .rjx-row .rjx-thumb{width:88px;height:88px;aspect-ratio:auto}
  .rjx-nights.is-rows .rjx-row-main .rjx-city{font-size:34px}
  .rjx-nights.is-rows .rjx-row-main span{white-space:nowrap}
  .rjx-nights.is-rows .rjx-row-end{text-align:right}
  .rjx-nights.is-rows .rjx-row .rjx-pricestate{flex-direction:column;align-items:flex-end;gap:4px}
  .rjx-nights.is-rows .rjx-row .rjx-price{font-size:16px}
  .rjx-nights.is-rows .rjx-row-actions{display:flex;gap:12px;flex:none}
  .rjx-nights.is-rows .rjx-row-actions .rjx-btn-red{min-width:160px}
}

/* the DJs: faces */
.rjx-dj-row{display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-inline:var(--gutter);margin:0 calc(var(--gutter) * -1);padding:4px var(--gutter) 8px;scrollbar-width:none}
.rjx-dj-row::-webkit-scrollbar{display:none}
.rjx-dj{flex:0 0 84px;scroll-snap-align:start;text-align:center}
.rjx-dj-link{display:flex;flex-direction:column;align-items:center;gap:8px}
.rjx-face{width:72px;height:72px;border-radius:50%;object-fit:cover;object-position:50% 25%;background:var(--surface)}
.rjx-dj-link:hover .rjx-face{outline:2px solid var(--text-4);outline-offset:2px}
.rjx-dj-name{font-family:var(--display);font-weight:400;font-size:14px;letter-spacing:.02em;text-transform:uppercase;line-height:1.1}
.rjx-dj-show{display:inline-flex;align-items:center;justify-content:center;gap:4px;margin-top:4px;font-size:12px;color:var(--text-3)}
a.rjx-dj-show:hover{color:var(--text)}
/* enhancement E-faces: the night a DJ plays next, as a green chip */
.rjx-dj-next{display:inline-flex;align-items:center;justify-content:center;min-height:44px}
.rjx-dj-next span{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border-radius:999px;background:rgba(62,207,142,.12);color:var(--onsale);font-size:11px;font-weight:500;white-space:nowrap}
.rjx-dj-next span:before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}
a.rjx-dj-next:hover span{background:rgba(62,207,142,.2)}
.rjx-head-note{margin-left:auto;font-size:13px;color:var(--text-3)}
@media (min-width:900px){
  .rjx-dj-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:24px;overflow:visible;margin:0;padding:0}
  .rjx-face{width:96px;height:96px}
  .rjx-dj-name{font-size:16px}
}

/* past nights: dimmed cards with Recap */
.rjx-cards{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-inline:var(--gutter);margin:0 calc(var(--gutter) * -1);padding:0 var(--gutter) 8px;scrollbar-width:none}
.rjx-cards::-webkit-scrollbar{display:none}
.rjx-card{flex:0 0 148px;scroll-snap-align:start}
.rjx-card a{display:flex;flex-direction:column;gap:6px}
.rjx-card-art{display:block;aspect-ratio:1;border-radius:var(--r);overflow:hidden;background:var(--surface)}
.rjx-card-art img{width:100%;height:100%;object-fit:cover;transition:opacity .2s}
.rjx-card.is-past .rjx-card-art img{opacity:.62;filter:saturate(.75)}
.rjx-card.is-past .rjx-card-art img.is-logo{filter:invert(1)}
.rjx-card a:hover .rjx-card-art img{opacity:1}
.rjx-card .rjx-city{font-size:16px;margin-top:4px}
.rjx-card-meta{font-size:12px;color:var(--text-3)}
.rjx-card-recap{font-size:12px;font-weight:500;color:var(--text-2)}
.rjx-card .rjx-pricestate{flex-direction:row-reverse;justify-content:flex-end;align-items:center;gap:8px}
@media (min-width:900px){
  .rjx-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:24px;overflow:visible;margin:0;padding:0}
}

/* audit #11: the film, one 196 px tile; the player opens on tap */
.rjx-film{padding-top:32px}
.rjx-filmtile{position:relative;display:block;width:100%;height:196px;padding:0;border:0;border-radius:var(--r);overflow:hidden;background:#050505;color:#fff;text-align:left;cursor:pointer}
.rjx-filmtile-poster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.rjx-filmtile:after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(0,0,0,.72),rgba(0,0,0,0) 65%)}
.rjx-filmtile-play{position:absolute;left:16px;bottom:16px;z-index:1;display:grid;place-items:center;width:48px;height:48px;border-radius:50%;background:var(--red)}
.rjx-filmtile:hover .rjx-filmtile-play{background:var(--red-hover)}
.rjx-filmtile-copy{position:absolute;left:76px;right:16px;bottom:16px;z-index:1;display:flex;flex-direction:column;gap:2px}
.rjx-filmtile-copy b{font-size:18px;font-weight:500}
.rjx-filmtile-copy small{font-size:13px;color:var(--text-2)}
@media (min-width:900px){.rjx-filmtile{height:240px;max-width:720px}}
.rjx-filmdialog{width:min(92vw,calc(86vh * 9 / 16));max-width:none;max-height:none;padding:0;border:0;border-radius:var(--r);background:#000;overflow:visible}
.rjx-filmdialog::backdrop{background:rgba(0,0,0,.85)}
.rjx-filmdialog video{display:block;width:100%;aspect-ratio:9/16;object-fit:cover;border-radius:var(--r)}
.rjx-filmdialog-x{position:absolute;top:-52px;right:0;width:44px;height:44px;border:0;border-radius:50%;background:rgba(255,255,255,.12);color:#fff;font-size:26px;line-height:1;cursor:pointer}
.rjx-filmdialog-err{padding:12px 14px;font-size:14px;color:var(--text-2)}
.rjx-filmdialog-err a{text-decoration:underline}
/* audit #11: the phone's archive detail opens on tap of a city chip; until then no chip, dot or map label reads as chosen */
@media (max-width:899px){
  .party-atlas:not(.is-open) .atlas-detail{display:none}
  .party-atlas:not(.is-open) .atlas-cities button[aria-pressed=true]{background:var(--fill);border-color:var(--line);color:var(--text-2)}
  .party-atlas:not(.is-open) .atlas-dot.is-selected{width:6px;height:6px;background:rgba(255,255,255,.7);box-shadow:none}
  .party-atlas:not(.is-open) .atlas-map-label{display:none}
}

/* the archive film, on tap (EventFilm) */
.film-wrap{display:grid;gap:24px;align-items:center}
.event-film{position:relative;aspect-ratio:9/16;width:100%;max-width:360px;overflow:hidden;border-radius:var(--r);background:#050505}
.event-film video{width:100%;height:100%;object-fit:cover;display:block}
.film-play{position:absolute;inset:0;width:100%;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:flex-start;gap:8px;padding:20px;border:0;background:linear-gradient(0deg,rgba(0,0,0,.75),rgba(0,0,0,0) 60%);color:#fff;text-align:left;cursor:pointer}
.film-play>svg{width:52px;height:52px;padding:17px;margin-bottom:6px;border-radius:50%;background:var(--red)}
.film-play:hover>svg{background:var(--red-hover)}
.film-play span{font-size:20px;font-weight:500;line-height:1.1}
.film-play small{font-size:12px;letter-spacing:.06em;color:var(--text-2)}
.film-sound{position:absolute;right:10px;top:10px;z-index:2;display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 12px;border:1px solid var(--line);border-radius:999px;background:rgba(0,0,0,.6);color:#fff;font:500 13px var(--font);cursor:pointer}
.film-story .eyebrow{font-size:12px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--text-3);margin-bottom:10px}
.film-story h3{font-size:24px;font-weight:500;margin-bottom:10px}
.film-story>p:not(.eyebrow){font-size:15px;color:var(--text-2);max-width:360px}
.film-story .film-story-note{font-size:13px;color:var(--text-3);margin:14px 0}
.film-story .text-link{display:inline-flex;align-items:center;min-height:44px;font-size:14px;font-weight:500;color:var(--text)}
.film-story .text-link:hover{color:var(--text-2)}
.film-caption{font-size:12px;color:var(--text-3)}
.film-caption span{margin-left:8px}
.film-error{padding:12px 14px;border-radius:var(--r);background:rgba(240,106,98,.12);font-size:14px}
.film-error a{text-decoration:underline}
@media (min-width:900px){.film-wrap{grid-template-columns:360px 1fr;gap:48px}.film-caption{grid-column:1/-1}.film-story h3{font-size:30px}}

/* the archive: the city map and chips, unchanged but for the skin (PartyArchive) */
.atlas-intro{display:flex;flex-direction:column;gap:4px;margin-bottom:16px;font-size:15px;color:var(--text-2)}
.atlas-intro p+p{color:var(--text-3)}
.atlas-regions,.atlas-cities{border:0;min-width:0;padding:0;margin:0}
.atlas-regions{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px}
.atlas-regions button,.atlas-cities button,.archive-photo-controls button{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 14px;border:1px solid var(--line);border-radius:999px;background:var(--fill);color:var(--text-2);font:500 13px/1 var(--font);cursor:pointer}
.atlas-regions button:hover,.atlas-cities button:hover,.archive-photo-controls button:hover{color:var(--text);background:var(--fill-2)}
.atlas-regions button[aria-pressed=true],.atlas-cities button[aria-pressed=true]{background:#fff;border-color:#fff;color:#131313}
/* audit #18: a chip switches the city on the page - no external-link arrow */
.atlas-cities button svg{display:none}
.atlas-layout{display:grid;gap:28px;align-items:start}
.atlas-geography,.atlas-detail{min-width:0}
.atlas-map{position:relative;aspect-ratio:2;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);overflow:hidden}
.atlas-map>img{width:100%;height:100%;opacity:.55}
.atlas-dot{position:absolute;width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.7);transform:translate(-50%,-50%)}
.atlas-dot.is-muted{opacity:.2}
.atlas-dot.is-selected{z-index:1;width:11px;height:11px;background:#fff;box-shadow:0 0 0 5px rgba(255,255,255,.18)}
.atlas-map-label{position:absolute;left:12px;bottom:10px;max-width:calc(100% - 24px);padding:4px 10px;border-radius:var(--r);background:rgba(19,19,19,.85);font-size:16px;font-weight:500}
.atlas-map-label small{display:block;font-size:12px;font-weight:400;color:var(--text-3)}
.atlas-choose{font-size:13px;color:var(--text-3);margin:16px 0 10px}
.atlas-cities{display:flex;flex-wrap:wrap;gap:8px}
.atlas-map-note{font-size:12px;color:var(--text-3);margin-top:14px}
.atlas-detail{padding-top:16px;border-top:1px solid var(--line)}
.atlas-stop-heading .eyebrow{font-size:12px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.atlas-stop-heading h3{font-family:var(--display);font-weight:400;font-size:36px;text-transform:uppercase;line-height:1;margin:6px 0 14px;overflow-wrap:anywhere}
.archive-collection-photo{position:relative;aspect-ratio:4/3;overflow:hidden;border-radius:var(--r);background:#0a0a0a}
.archive-collection-photo>img{width:100%;height:100%;object-fit:cover}
.archive-artwork>img{object-fit:contain}
.archive-collection-photo .motion-backdrop{position:absolute;inset:0;background-size:cover;background-position:center}
.archive-collection-photo .motion-backdrop video{width:100%;height:100%;object-fit:cover}
.archive-collection-photo .motion-shade{position:absolute;inset:0;background:linear-gradient(0deg,rgba(0,0,0,.35),transparent 50%)}
.archive-collection-photo .motion-control{position:absolute;right:10px;bottom:10px;z-index:3;display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:0 12px;border:1px solid var(--line);border-radius:999px;background:rgba(0,0,0,.55);color:#fff;font:500 12px var(--font);cursor:pointer}
.archive-photo-caption{font-size:12px;color:var(--text-3);min-height:32px;margin:10px 0 0}
.archive-photo-controls{display:flex;align-items:center;gap:8px;margin:6px 0 10px}
.archive-photo-controls button{min-width:36px;justify-content:center;padding:0 10px}
.archive-photo-controls>span{font-size:13px;min-width:44px;text-align:center;color:var(--text-2)}
.archive-venue-poster{aspect-ratio:4/3;display:flex;flex-direction:column;justify-content:space-between;gap:16px;padding:24px;border-radius:var(--r);background:var(--surface);border:1px solid var(--line)}
.archive-venue-poster>span{font-size:12px;letter-spacing:.08em;color:var(--text-3)}
.archive-venue-poster strong{font-family:var(--display);font-weight:400;font-size:34px;text-transform:uppercase;line-height:1.05;overflow-wrap:anywhere}
.archive-venue-poster p{font-size:14px;color:var(--text-2)}
.archive-collection .text-link{display:inline-flex;align-items:center;gap:6px;min-height:44px;font-size:14px;font-weight:500}
.atlas-nights article{padding:14px 0 4px;border-top:1px solid var(--line);margin-top:12px}
.atlas-nights time{font-size:13px;color:var(--text-3)}
.atlas-nights h4{font-size:18px;font-weight:500;margin:4px 0}
.atlas-nights p{font-size:14px;color:var(--text-2)}
.atlas-nights a{display:inline-flex;align-items:center;gap:6px;min-height:44px;font-size:14px;font-weight:500}
.atlas-nights a:hover{text-decoration:underline}
.atlas-collection-note{padding-top:12px;font-size:13px;color:var(--text-3)}
@media (min-width:900px){.atlas-layout{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:40px}.atlas-intro{flex-direction:row;justify-content:space-between}}

/* about: same song, different city (moved down from the top of the home) */
.rjx-about{display:grid;gap:24px;align-items:center}
.rjx-about-copy{display:flex;flex-direction:column;gap:12px}
.rjx-about h2{font-size:24px}
.rjx-about-copy p:not(.rjx-eyebrow){font-size:16px;color:var(--text-2);max-width:520px}
.rjx-about .rjx-head-link{margin-left:0;min-height:44px}
.rjx-about-flyers{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.rjx-about-flyers figure{margin:0}
.rjx-about-flyers img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:var(--r)}
.rjx-about-flyers figcaption{margin-top:6px;font-size:12px;color:var(--text-3)}
@media (min-width:900px){.rjx-about{grid-template-columns:1fr 1fr;gap:48px}.rjx-about h2{font-size:30px}}

/* ask the team: one message to the team inbox, events@ the only address shown */
.rjx-askpanel .rjx-lead{margin-bottom:16px}
.rjx-chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}
.rjx-chip{display:inline-flex;align-items:center;min-height:40px;padding:0 16px;border-radius:999px;background:var(--fill);font-size:14px;font-weight:500;transition:background .15s}
.rjx-chip:hover{background:var(--fill-2)}

/* footer */
.rjx-footer{max-width:calc(var(--max) + var(--gutter) * 2);margin:48px auto 0;padding:32px var(--gutter) 48px;border-top:1px solid var(--line);display:grid;gap:20px}
.rjx-footer-brand{display:flex;align-items:center;gap:10px;width:max-content}
.rjx-footer-brand .rjx-markframe{height:32px}
.rjx-footer-brand .rjx-wordmark{height:26px}
.rjx-footer-links{display:grid;grid-template-columns:1fr 1fr;gap:2px 16px}
.rjx-footer-links a{padding:8px 0;font-size:14px;color:var(--text-2)}
.rjx-footer-links a:hover{color:var(--text)}
.rjx-footer-mail{font-size:14px;width:max-content}
.rjx-footer-mail:hover{text-decoration:underline}
.rjx-footer-legal{font-size:12px;color:var(--text-3)}
/* the room the phone's sticky ticket bar needs at the foot of a night page (the dock no longer takes any: audit #7) */
@media (max-width:899px){.rjx-sticky~.rjx-footer{padding-bottom:120px}}
@media (min-width:900px){.rjx-footer{grid-template-columns:auto 1fr auto;align-items:center;padding-bottom:64px}.rjx-footer-links{display:flex;flex-wrap:wrap;gap:4px 24px}.rjx-footer-legal{grid-column:1/-1}}

/* the music dock (home): from your headphones to the party. audit #7: off on the phone; on a desktop a quiet strip above the footer, in the
   flow, never fixed */
.music-dock{display:none}
@media (min-width:900px){
  .music-dock{display:flex;align-items:center;gap:14px;width:calc(100% - var(--gutter) * 2);max-width:var(--max);margin:48px auto 0;padding:12px 0;border-top:1px solid var(--line)}
  .music-dock+.rjx-footer{margin-top:0}
  .music-dock>img:first-child{width:28px;height:28px;object-fit:contain;opacity:.75}
  .music-dock .dock-portrait{width:32px;height:32px;border-radius:50%;object-fit:cover;object-position:50% 30%}
  .dock-copy{display:flex;align-items:baseline;gap:10px;min-width:0}
  .dock-copy>span{font-size:12px;letter-spacing:.06em;color:var(--text-3);white-space:nowrap}
  .dock-copy strong{font-size:14px;font-weight:500;color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .dock-copy strong span{font-weight:400;color:var(--text-3)}
  .music-dock>a{display:inline-flex;align-items:center;gap:8px;margin-left:auto;min-height:44px;padding:0 14px;border-radius:999px;color:var(--text-2);font-size:13px;font-weight:500;white-space:nowrap;flex:none}
  .music-dock>a:hover{color:var(--text);background:var(--fill)}
  .music-dock>a>svg{width:16px;height:16px}
}

/* the night page */
.rjx-night{max-width:calc(var(--max) + var(--gutter) * 2);margin:0 auto;padding:12px var(--gutter) 0}
.rjx-crumbs{font-size:13px;color:var(--text-3);margin-bottom:12px}
.rjx-crumbs a:hover{color:var(--text)}
.rjx-closed{margin:0 0 12px;padding:12px 14px;border-radius:var(--r);background:var(--surface);border:1px solid var(--line);font-size:15px;font-weight:500}
.rjx-night-grid{display:grid;gap:20px}
.rjx-night-art{position:relative;min-width:0;container-type:inline-size}
.rjx-flyer{position:relative;margin:0}
.rjx-flyer>a{display:block}
.rjx-flyer img{width:100%;height:auto;border-radius:var(--r);background:var(--surface)}
.rjx-night.is-past .rjx-flyer img{filter:saturate(.8) brightness(.88)}
.rjx-happened{position:absolute;left:12px;top:12px;display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;background:rgba(0,0,0,.62);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font-size:12px;font-weight:500}
.rjx-art-actions{display:flex;gap:8px;margin-top:10px}
/* audit #1: the phone's first screen holds the city, one facts line, the price and Get tickets - the flyer box is at most 4:5 (cover, from
   the top; a tap shows it whole) and Share sits on its corner */
@media (max-width:899px){
  .rjx-flyer img{max-height:calc((100vw - 2 * var(--gutter)) * 1.25);max-height:125cqw;object-fit:cover;object-position:top}
  .rjx-flyer.is-full img{max-height:none}
  .rjx-night.is-selling .rjx-art-actions{display:none}
}
.rjx-quick{display:flex;flex-direction:column;gap:8px;margin-top:12px}
.rjx-quick-facts{font-size:14px;color:var(--text-2)}
.rjx-quick-state{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-2)}
.rjx-quick-state .rjx-state+span:before{content:"\B7";margin-right:8px;color:var(--text-3)}
.rjx-quick-buy{display:flex;align-items:center;gap:8px;margin-top:4px}
.rjx-quick-buy .rjx-btn-red{flex:1;min-height:48px}
.rjx-btn-icon{width:48px;min-height:48px;padding:0;flex:none}
@media (min-width:900px){.rjx-quick{display:none}}
/* enhancement idea 1: "Full flyer" on the flyer's corner; on a phone page that sells, Share sits by Get tickets instead of on the flyer */
.rjx-fullflyer{position:absolute;top:8px;right:8px;display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 14px;border-radius:999px;background:rgba(0,0,0,.62);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font-size:13px;font-weight:500}
.rjx-flyer.is-full .rjx-fullflyer{background:rgba(0,0,0,.8)}
.rjx-night-main{min-width:0}
.rjx-night-main h1{display:flex;flex-direction:column;gap:8px}
.rjx-night-main h1 .rjx-city{font-size:40px}
.rjx-night-title{font-size:18px;font-weight:500;color:var(--text-2);line-height:1.3}
.rjx-happened-line{margin-top:8px;font-size:14px;color:var(--text-3)}
.rjx-facts{margin:20px 0 0;border-top:1px solid var(--line)}
.rjx-facts li{display:grid;grid-template-columns:20px minmax(0,1fr) auto;gap:12px;align-items:start;padding:12px 0;border-bottom:1px solid var(--line)}
.rjx-facts li>svg{color:var(--text-3);margin-top:2px}
.rjx-facts b{display:block;font-size:15px;font-weight:500}
.rjx-facts small{display:block;font-size:13px;color:var(--text-2);margin-top:2px}
.rjx-map{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:0 10px;border-radius:999px;background:var(--fill);font-size:13px;font-weight:500;align-self:center}
.rjx-map:hover{background:var(--fill-2)}
.rjx-block{margin-top:24px}
.rjx-block h2{font-size:18px;margin-bottom:10px}
.rjx-tickets{padding:16px;border-radius:var(--r);background:var(--surface);border:1px solid var(--line)}
.rjx-tickets-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:6px}
.rjx-tickets-head h2{margin:0}
.rjx-tickets .rjx-muted{margin-bottom:14px}
.rjx-tiers{margin-bottom:14px}
.rjx-tiers li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}
.rjx-tier-name{font-size:15px}
.rjx-tiers li.is-soldout .rjx-tier-name{color:var(--text-3)}
.rjx-tier-end{display:flex;flex-direction:column;align-items:flex-end;gap:2px}
.rjx-tier-end b{font-size:15px;font-weight:500}
.rjx-also{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px}
.rjx-also>span{font-size:12px;color:var(--text-3);margin-right:2px}
.rjx-also ul{display:flex;flex-wrap:wrap;gap:8px}
.rjx-also a{display:inline-flex;align-items:center;gap:8px;min-height:36px;padding:0 12px;border-radius:999px;background:var(--fill);font-size:13px}
.rjx-also a:hover{background:var(--fill-2)}
.rjx-also b{font-weight:500}
.rjx-also svg{color:var(--text-3)}
.rjx-sold-on{margin-top:10px;font-size:12px;color:var(--text-3)}
.rjx-nextcity{padding:16px;border-radius:var(--r);background:var(--surface);border:1px solid var(--line)}
.rjx-nextcity .rjx-eyebrow{margin-bottom:6px}
.rjx-nextcity-row{display:grid;grid-template-columns:56px minmax(0,1fr) auto;align-items:center;gap:12px;padding:6px 0 14px}
.rjx-nextcity-row:hover .rjx-city{color:var(--text-2)}
.rjx-findnext{margin-top:16px}
.rjx-findnext a{display:inline-flex;align-items:center;gap:2px;min-height:44px;font-size:14px;font-weight:500;color:var(--text-2)}
.rjx-findnext a:hover{color:var(--text)}
.rjx-lineup li>a,.rjx-lineup li>div{display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:12px;padding:8px 0}
.rjx-lineup li>a:hover b{color:var(--text-2)}
.rjx-lineup .rjx-face{width:44px;height:44px}
.rjx-initials{display:grid;place-items:center;background:var(--fill);color:var(--text-2);font-size:13px;font-weight:500}
.rjx-lineup-name b{display:block;font-size:15px;font-weight:500}
.rjx-lineup-name small{display:block;font-size:12px;color:var(--text-3)}
.rjx-lineup li svg{color:var(--text-3)}
.rjx-lineup .rjx-muted{margin-top:6px;font-size:13px}
.rjx-thenight p{font-size:15px;color:var(--text-2);white-space:pre-line;overflow-wrap:anywhere}
/* audit #24: three lines, then More (in place) */
.rjx-thenight p.is-clamped{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden}
.rjx-more-btn{display:inline-flex;align-items:center;min-height:44px;padding:0;border:0;background:none;color:var(--text);font:500 14px/1 var(--font);text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.rjx-official{margin-top:12px}
.rjx-official a{display:inline-flex;align-items:center;gap:6px;min-height:44px;font-size:14px;font-weight:500;color:var(--text-2)}
.rjx-official a:hover{color:var(--text)}
.rjx-askrow{display:flex;align-items:center;gap:12px;margin-top:24px;padding:14px 16px;border-radius:var(--r);background:var(--surface);border:1px solid var(--line)}
.rjx-askrow:hover{background:var(--raised)}
.rjx-askrow>svg:first-child{color:var(--text-2);flex:none}
.rjx-askrow span{flex:1}
.rjx-askrow b{display:block;font-size:15px;font-weight:500}
.rjx-askrow small{display:block;font-size:13px;color:var(--text-3)}
.rjx-more{padding-left:0;padding-right:0}
@media (min-width:900px){
  .rjx-night{padding-top:24px}
  .rjx-night-grid{grid-template-columns:minmax(0,420px) minmax(0,1fr);gap:48px;align-items:start}
  .rjx-night-art{position:sticky;top:88px}
  .rjx-night-main h1 .rjx-city{font-size:60px}
  .rjx-night-title{font-size:20px}
}

/* enhancement E-cal: Add to calendar - a bottom sheet on the phone, a small card on a desktop */
.rjx-calsheet{width:100%;max-width:100%;margin:auto 0 0;padding:20px var(--gutter) calc(20px + env(safe-area-inset-bottom));border:0;border-radius:16px 16px 0 0;background:var(--raised);color:var(--text)}
.rjx-calsheet::backdrop{background:rgba(0,0,0,.6)}
.rjx-calsheet-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.rjx-calsheet-head h2{font-size:20px}
.rjx-calsheet-x{display:grid;place-items:center;width:44px;height:44px;margin-right:-10px;border:0;background:none;color:var(--text-2);font-size:26px;line-height:1;cursor:pointer}
.rjx-calsheet-what{margin-top:2px;font-size:14px;color:var(--text-2)}
.rjx-calsheet ul{margin-top:12px}
.rjx-calsheet li a{display:flex;align-items:center;gap:14px;min-height:60px;border-bottom:1px solid var(--line);font-size:16px}
.rjx-calsheet li a>svg:last-child{margin-left:auto;color:var(--text-3)}
.rjx-calsheet-ico{display:grid;place-items:center;width:40px;height:40px;border-radius:var(--r);background:var(--fill);flex:none}
.rjx-calsheet-note{margin-top:14px;font-size:12px;color:var(--text-3)}
@media (min-width:900px){.rjx-calsheet{max-width:420px;margin:auto;border-radius:12px;padding:20px 24px 24px}}
.rjx-art-actions .rjx-btn-small{text-decoration:none}

/* the phone's sticky ticket bar: whenever no inline Get tickets is in view, above or below (the night page's script) */
.rjx-sticky{position:fixed;z-index:35;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px var(--gutter) calc(10px + env(safe-area-inset-bottom));background:rgba(24,24,24,.97);border-top:1px solid var(--line);transform:translateY(110%);transition:transform .2s ease;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
.rjx-sticky.is-on{transform:none}
.rjx-sticky span{min-width:0;flex:1}
.rjx-sticky .rjx-btn-icon{width:44px;min-height:44px}
.rjx-sticky b{display:block;font-size:16px;font-weight:500}
.rjx-sticky small{display:block;font-size:12px;color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (min-width:900px){.rjx-sticky{display:none}}
@media (min-width:900px){.rjx-notfound-more .rjx-row-link{display:grid;grid-template-columns:56px minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}.rjx-notfound-more .rjx-thumb{width:56px;height:56px;aspect-ratio:auto}.rjx-notfound-more .rjx-row-end{text-align:right}.rjx-notfound-more .rjx-pricestate{flex-direction:column;align-items:flex-end}}

.rjx-notfound{max-width:calc(var(--max) + var(--gutter) * 2);margin:0 auto;padding:96px var(--gutter) 48px;display:flex;flex-direction:column;align-items:flex-start;gap:16px}
.rjx-notfound h1{font-size:30px}
.rjx-notfound .rjx-next{align-self:stretch;max-width:640px}
.rjx-notfound-more{align-self:stretch;max-width:640px}
.rjx-notfound .rjx-notfound-all{margin-left:0;justify-content:flex-start}

@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}
@media (forced-colors:active){.rjx-btn,.rjx-chip,.rjx-map{border:1px solid}}

/* audit #13: every tap target on the phone at 44 px or more - grown by padding, not by look */
.skip-link{padding:13px 14px}
.rjx-header.is-home .rjx-brand{min-width:44px}
.rjx-btn-small{min-height:44px}
.rjx-hero .motion-control,.archive-collection-photo .motion-control{min-height:44px}
.rjx-head-link{min-height:44px;min-width:44px;justify-content:flex-end}
.rjx-dj-show{min-height:44px;margin-top:0}
.atlas-regions button,.atlas-cities button,.archive-photo-controls button{min-height:44px}
.archive-photo-controls button{min-width:44px}
.rjx-chip{min-height:44px}
.rjx-note a{display:inline-flex;align-items:center;min-height:44px}
.rjx-crumbs{display:flex;align-items:center;flex-wrap:wrap;margin-bottom:4px}
.rjx-crumbs a{display:inline-flex;align-items:center;min-height:44px;min-width:44px}
.rjx-crumbs>span{white-space:pre}
.rjx-map{min-height:44px;padding:0 14px}
.rjx-also a{min-height:44px}
.rjx-footer-brand{min-height:44px}
.rjx-footer-links a{display:flex;align-items:center;min-height:44px;padding:0}
.rjx-footer-mail{display:inline-flex;align-items:center;min-height:44px}
