/* OUT2 homepage polish (Oct 21): design switcher popover, Map in the nav for every design, softer "The Edit" band,
   de-duplicated rows. Loaded after the theme CSS on index.html. */

/* ---- 1. design switcher: hidden until the palette button opens it as a small popover ---- */
html.sn .switcher.sw-pop{display:none}
html.sn .switcher.sw-pop.sw-open{display:flex;flex-direction:column;align-items:stretch;gap:2px;position:fixed;left:auto;bottom:auto;transform:none;
  top:var(--sw-top,64px);right:var(--sw-right,12px);z-index:120;min-width:200px;padding:8px;border-radius:16px;
  background:rgba(18,18,20,.94);backdrop-filter:blur(18px) saturate(1.2);-webkit-backdrop-filter:blur(18px) saturate(1.2);
  border:1px solid rgba(255,255,255,.1);box-shadow:0 18px 50px rgba(0,0,0,.5);animation:swin .18s var(--ease,ease) both}
html.sn .switcher.sw-pop.sw-open span{display:block;padding:6px 10px 8px;font:600 10.5px/1 var(--f-body,Inter),sans-serif;letter-spacing:.14em;text-transform:uppercase;opacity:.5}
html.sn .switcher.sw-pop.sw-open a{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-radius:10px;font:600 14px/1 var(--f-body,Inter),sans-serif;opacity:.85;color:#fff;text-decoration:none}
html.sn .switcher.sw-pop.sw-open a:hover,html.sn .switcher.sw-pop.sw-open a:focus-visible{background:rgba(255,255,255,.08);opacity:1;outline:none}
html.sn .switcher.sw-pop.sw-open a.on{background:#f5f3ef;color:#111;opacity:1}
html.sn .switcher.sw-pop.sw-open a.on::after{content:"✓";font-size:13px}
@keyframes swin{from{opacity:0;transform:translateY(-6px) scale(.98)}}
html.sn .nav .sn-look.on{background:#f5f3ef;color:#111;border-color:transparent}
html.sn .nav .sn-look:hover{transform:none}
/* the palette button stays visible on mobile next to search (the dice hides there) */
@media (max-width:768px){html.sn .nav .sn-dice.sn-look{display:grid!important;width:36px;height:36px}}

/* ---- 2. Map: top-bar link on desktop, More ▸ Map on mobile (r44t: the tab is Calendar); the full-screen map works in every design ---- */
.sn-maplink{display:none}
@media (min-width:769px){a.sn-maplink.sn-maplink{display:inline-flex;align-items:center;gap:7px;height:38px;padding:0 14px;border-radius:99px;border:1px solid color-mix(in srgb,currentColor 32%,transparent);color:inherit;font:600 13.5px/1 var(--f-body,Inter),sans-serif;text-decoration:none;flex:none;transition:border-color .2s,background .2s}
  a.sn-maplink.sn-maplink svg{width:16px;height:16px}a.sn-maplink.sn-maplink:hover{border-color:currentColor}}
html.map-first .sn-maplink,html.map-first .sn-menu .sn-mapm{display:none!important}
@media (max-width:768px){html.sn .sn-tabs{grid-template-columns:repeat(5,1fr)}html.sn .sn-tabs a{font-size:10.5px}}
#mapview{position:fixed;inset:0;z-index:70;background:var(--bg,#0b0b0c);display:none;flex-direction:column}
body.has-map #mapview{display:flex;animation:fadeup .35s var(--ease,ease)}body.has-map{overflow:hidden}body.has-map .switcher{display:none!important}
@keyframes fadeup{from{opacity:0;transform:translateY(16px)}}
.mv-bar{display:flex;align-items:center;gap:20px;padding:14px var(--pad,20px);border-bottom:1px solid var(--line,rgba(255,255,255,.12));background:var(--bg,#0b0b0c)}
.mv-title h2{font-size:22px}.mv-title span{font-size:13px;color:var(--muted)}
.mv-bar .chips-bar{position:static;flex:1;min-width:0;padding:0;background:none}.mv-bar .regions{margin-top:6px}
#mvMap{flex:1}
@media (max-width:760px){.mv-bar{flex-wrap:wrap;gap:10px}.mv-title{display:none}}

/* ---- 3. The Edit: deep warm dark band (keeps the editorial serif), fading in and out of the page ---- */
.mx-ed{--ivory:#1d1712;--ink:#f2e9da;--ink-m:#b9ab95;--ed-line:rgba(242,233,218,.14);
  background:linear-gradient(180deg,var(--bg,#0b0b0c) 0,#17120e 120px,#1e1813 46%,#1a1410 calc(100% - 160px),var(--bg,#0b0b0c) 100%);color:var(--ink);margin-top:40px}
.mx-ed:before{content:"";position:absolute;left:50%;top:0;width:min(900px,90vw);height:420px;transform:translateX(-50%);background:radial-gradient(closest-side,rgba(217,178,111,.13),transparent);pointer-events:none;top:auto;right:auto}
.mx-ed-in{position:relative;padding-top:70px;padding-bottom:110px}
.mx-ed-head{border-bottom:1px solid var(--ed-line)}
.mx-ed-head h2{color:#f6eddd}
.mx-ed-head .mast-date{color:#d9b26f}
.mx-ed .cover,.mx-ed .trio{border-bottom-color:var(--ed-line)}
.mx-ed .dek{color:#ddd1bf}.mx-ed .trio p:last-child,.mx-ed .week li p:last-child{color:#c2b5a1}
.mx-ed .btn.dark{background:#f2e9da;color:#1a140f}
.mx-ed .btn.line{border-color:rgba(242,233,218,.5);color:#f2e9da}
.mx-ed .cover-img,.mx-ed .ti-img{border-radius:4px;box-shadow:0 20px 50px rgba(0,0,0,.35)}
.mx-ed .pill.sample{color:var(--ink);border-color:var(--ed-line)}

/* ---- 4. de-duplicated rows (js/homededupe.js) ---- */
.dd-out{display:none!important}

/* ---------- Sources & verification: native <details>, closed by default, small, near the page end ---------- */
.verify.vf-wrap{padding:0;border:0;border-radius:0;background:none;margin-top:28px}
.vf{border:1px solid var(--line);border-radius:10px;font-size:13.5px;color:var(--muted)}
.vf>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:10px;padding:12px 16px;font:600 13px/1.2 Inter,system-ui,sans-serif;letter-spacing:.02em;color:var(--muted);border-radius:10px}
.vf>summary::-webkit-details-marker{display:none}
.vf>summary::before{content:"";width:14px;height:14px;flex:none;background:currentColor;opacity:.7;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Cpath d='M12 3l7 3v6c0 4.5-3 7.5-7 9-4-1.5-7-4.5-7-9V6z'/%3E%3Cpath d='M9 12l2 2 4-4'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Cpath d='M12 3l7 3v6c0 4.5-3 7.5-7 9-4-1.5-7-4.5-7-9V6z'/%3E%3Cpath d='M9 12l2 2 4-4'/%3E%3C/svg%3E") center/contain no-repeat}
.vf>summary::after{content:"";margin-left:auto;width:8px;height:8px;border-right:1.6px solid currentColor;border-bottom:1.6px solid currentColor;transform:rotate(45deg) translateY(-2px);transition:transform .2s}
.vf[open]>summary::after{transform:rotate(225deg) translate(-2px,0)}
.vf>summary:hover{color:var(--fg)}.vf>summary:focus-visible{outline:2px solid var(--accent,#ff5a3c);outline-offset:2px}
.vf-b{padding:2px 16px 14px;border-top:1px solid var(--line)}.vf-b p{margin:10px 0}.vf-h{font-weight:600;color:var(--fg)}
.vf-b ul{margin:8px 0;padding-left:18px}.vf-b a{color:var(--fg);text-decoration:underline;text-underline-offset:2px;word-break:break-all}
.vf-credits{margin:10px 2px 0;font-size:12.5px;color:var(--muted)}.vf-credits a{color:inherit}
html.t-cinema .vf{border-radius:4px;background:rgba(255,255,255,.02)}html.t-cinema .vf>summary{text-transform:uppercase;letter-spacing:.12em;font-size:11.5px}
html.t-editorial .vf{border-width:1px 0;border-radius:0}html.t-editorial .vf>summary{font:italic 500 15px/1.2 var(--f-head,Georgia,serif);letter-spacing:0;padding-inline:0}html.t-editorial .vf-b{padding-inline:0}
html.t-mosaic .vf{border-radius:16px;background:color-mix(in srgb,var(--fg) 4%,transparent)}html.t-mosaic .vf>summary{border-radius:16px}
@media (prefers-reduced-motion:reduce){.vf>summary::after{transition:none}}

/* ---------- On the walls (js/artwall.js) ---------- */
.aw{margin:34px 0;padding:28px 0 8px;background:radial-gradient(120% 80% at 50% 0,#1b1916,#0d0c0b 70%);border-radius:14px;color:#efe9df;overflow:hidden}
.aw-head{padding:0 24px 8px}.aw-k{font:700 11px/1 Inter,system-ui,sans-serif;letter-spacing:.2em;text-transform:uppercase;color:#d8b46a;margin:0 0 8px}.aw-head h2{margin:0;font-size:clamp(20px,2.6vw,28px);color:#f6f0e6}
.aw-note{margin:8px 0 0;font-size:12.5px;color:#a89f90}
.aw-track{list-style:none;margin:0;padding:26px 28px 14px;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:30px 26px}
.aw-p{position:relative;display:flex;flex-direction:column;align-items:center}
.aw-p::before{content:"";position:absolute;left:50%;top:-30px;width:150%;height:calc(100% + 60px);transform:translateX(-50%);background:radial-gradient(50% 45% at 50% 40%,rgba(255,236,200,.16),transparent 70%);opacity:0;transition:opacity .6s;pointer-events:none}
.aw-p.lit::before{opacity:1}
.aw-l{width:30%}.aw-m{width:22%}.aw-s{width:15%}.aw-t{width:17%}.aw-w{width:36%}
.aw-frame{position:relative;display:block;width:100%;padding:7px;border:0;background:#2a2622;box-shadow:0 0 0 1px #4a4238,0 14px 30px rgba(0,0,0,.55);cursor:zoom-in;transition:transform .5s cubic-bezier(.2,.7,.2,1),box-shadow .5s}
.aw-frame img,.aw-ph{display:block;width:100%;aspect-ratio:4/5;object-fit:cover;background:#151311}
.aw-l .aw-frame img,.aw-l .aw-ph{aspect-ratio:1}.aw-w .aw-frame img,.aw-w .aw-ph{aspect-ratio:16/9}.aw-t .aw-frame img,.aw-t .aw-ph{aspect-ratio:2/3}.aw-s .aw-ph,.aw-s .aw-frame img{aspect-ratio:1}
.aw-p.lit .aw-frame{transform:translateY(-4px) scale(1.035);box-shadow:0 0 0 1px #6b5e4c,0 26px 50px rgba(0,0,0,.65)}
.aw-frame:focus-visible{outline:2px solid #d8b46a;outline-offset:4px}
.aw-label{margin:12px 0 0;align-self:flex-start;padding:7px 10px;background:#f3eee6;color:#1a1714;font:11px/1.35 Inter,system-ui,sans-serif;max-width:100%;box-shadow:0 2px 6px rgba(0,0,0,.4)}
.aw-label b{display:block;font-weight:700}.aw-label i{display:block}.aw-label span{display:block;color:#6b6358;font-size:10.5px}
.aw-ph0{background:linear-gradient(160deg,#c2410c,#7c2d12 55%,#1c1917)}.aw-ph1{background:radial-gradient(circle at 30% 30%,#fde68a,#d97706 40%,#292524 75%)}
.aw-ph2{background:linear-gradient(90deg,#0f766e 0 33%,#f5f5f4 33% 40%,#1e3a8a 40%)}.aw-ph3{background:conic-gradient(from 30deg,#be185d,#f59e0b,#0e7490,#be185d)}
.aw-ph4{background:repeating-linear-gradient(45deg,#e7e5e4 0 6px,#44403c 6px 12px)}.aw-ph5{background:linear-gradient(180deg,#1e293b,#475569 60%,#fbbf24 61%,#b45309)}
.aw-ph6{background:radial-gradient(circle at 70% 60%,#f472b6 0 18%,transparent 19%),linear-gradient(#111827,#312e81)}.aw-ph7{background:linear-gradient(135deg,#fafaf9 0 48%,#dc2626 48% 52%,#0c0a09 52%)}
@media (max-width:760px){.aw{border-radius:0;margin-inline:calc(-1*var(--pad,18px))}
 .aw-track{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:22px;padding:30px 18vw 14px;align-items:flex-end;scrollbar-width:none}.aw-track::-webkit-scrollbar{display:none}
 .aw-p{flex:0 0 58vw;width:auto;scroll-snap-align:center}.aw-l{flex-basis:66vw}.aw-s{flex-basis:46vw}.aw-t{flex-basis:50vw}.aw-w{flex-basis:72vw}}
.aw-lb{border:0;padding:0;background:transparent;max-width:min(960px,94vw);width:100%;color:#f4efe6}
.aw-lb::backdrop{background:rgba(8,7,6,.86);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.aw-lb-in{position:relative;display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:24px;background:#141210;border-radius:14px;padding:22px;box-shadow:0 30px 80px rgba(0,0,0,.6)}
.aw-lb-art img,.aw-lb-art .aw-ph{width:100%;max-height:72vh;object-fit:contain;aspect-ratio:auto;min-height:260px;border-radius:4px}
.aw-lb-txt h3{margin:4px 0 6px;font-size:22px}.aw-lb-a{margin:0;font-weight:600}.aw-lb-g{margin:2px 0 18px;color:#a89f90}
.aw-lb-btns{display:flex;flex-wrap:wrap;gap:10px}.aw-x{position:absolute;right:10px;top:8px;width:36px;height:36px;border-radius:50%;border:0;background:rgba(255,255,255,.08);color:inherit;font-size:22px;cursor:pointer;z-index:2}
@media (max-width:760px){.aw-lb-in{grid-template-columns:1fr;padding:16px;gap:14px}}
@media (prefers-reduced-motion:reduce){.aw-frame,.aw-p::before{transition:none}.aw-p.lit .aw-frame{transform:none}.aw-p::before{opacity:.6}}

/* "See all" link at the end of each homepage row */
.row-seeall{flex:none;align-self:center;display:flex;align-items:center;justify-content:center;min-width:120px;padding:0 18px;color:var(--muted);font:600 13px Inter,system-ui,sans-serif;text-decoration:none;white-space:nowrap}
.row-seeall:hover{color:var(--fg)}.row-seeall::after{content:"→";margin-left:6px}
.row-more{margin:4px 0 0;padding:0 var(--pad,24px);text-align:right}.row-more .row-seeall{display:inline-flex;min-width:0;padding:4px 0}
/* Similar artists playing soon (js/similar.js) */
.sim .sim-sub{color:var(--muted);font-size:13px}
.sim .pill.sim-why{background:color-mix(in srgb,var(--accent,#ff5a3c) 16%,transparent);color:var(--fg);border:1px solid color-mix(in srgb,var(--accent,#ff5a3c) 40%,transparent);text-transform:none;letter-spacing:.01em}
/* hood guides: stop photos, hours, eats (staged schema extensions) */
.hd-stop.has-img{grid-template-columns:40px 72px 1fr}.hd-simg{width:72px;aspect-ratio:1;border-radius:10px;overflow:hidden;background:color-mix(in srgb,var(--fg) 6%,transparent);flex:none}.hd-simg img{width:100%;height:100%;object-fit:cover;display:block}
@media (min-width:761px){.hd-stop.has-img{grid-template-columns:40px 140px 1fr}.hd-stop.has-img .hd-simg{width:140px;aspect-ratio:4/3}}
.hd-hours,.hd-park{margin:4px 0 0;font-size:13px;color:var(--muted)}
.hd-eats{margin:40px 0 0}.hd-eats h2{margin:0 0 14px}.hd-eat-l{list-style:none;margin:0;padding:0;display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}
.hd-eat-l li{display:flex;gap:12px;padding:12px;border:1px solid var(--line);border-radius:12px}.hd-eat-l .hd-simg{width:84px}.hd-eat-l h3{margin:2px 0 4px;font-size:16px}
/* poster framing (data/imgframe.json fit:"poster"): contained key art over its own blurred copy */
/* r72.3.3: zero specificity position, so a box that is absolute by its own CSS (.ht-media, .nx-media) keeps filling its card */
:where(:has(>img.pf-bg)){position:relative}:has(>img.pf-bg){overflow:hidden}
img.pf-bg{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;object-fit:cover!important;filter:blur(18px) brightness(.5) saturate(1.15);transform:scale(1.15)!important;z-index:0}
img.pf-fg{position:relative;z-index:1;width:100%;height:100%;object-fit:contain!important}
/* r24 badge layering: image boxes with a poster layer or a living-photo layer are their own stacking context, so the
   z-index:1 image/canvas can't rise above labels that sit outside the box; labels inside the box always sit on top */
:has(>img.pf-bg),:has(>.lv-l){isolation:isolate}
:has(>img.pf-bg)>:not(img):not(.lv-l),:has(>.lv-l)>:not(img):not(.lv-l):not(.pf-bg){z-index:3}
.wkd-why,.card-top,.sm-chip,.listen-chip,.save,.hh-sample{z-index:3}
.aw-lb-c{font-size:12px;color:var(--muted);margin:2px 0 10px}
.aw-frame img{height:auto}.aw-frame img.aw-real{aspect-ratio:var(--ar)!important;object-fit:contain}
@media (max-width:760px){.aw-track{flex-wrap:nowrap;justify-content:flex-start}.aw-p{flex-shrink:0}}
@media (max-width:760px){.aw-track{align-items:center}}
/* art wall, mobile: every piece hangs at one height so tall works don't leave a gap above the wall */
@media (max-width:760px){.aw-track{align-items:flex-start;padding-top:18px}.aw-p,.aw-l,.aw-m,.aw-s,.aw-t,.aw-w{flex:0 0 auto;max-width:80vw}.aw-frame{width:auto}
 .aw-frame img.aw-real{height:min(44vh,360px);width:auto;max-width:76vw}.aw-label{max-width:76vw}}
@media (max-width:760px){.aw-w .aw-frame img.aw-real,.aw-l .aw-frame img.aw-real{width:min(76vw,360px);height:auto;max-height:44vh}.aw-track{align-items:center}}
@media (max-width:760px){#on-the-walls .aw-track{align-items:flex-start}}

/* r25 bigger mobile event hero. Poster mode: the whole poster in a near-full-width box (16px sides, 40-55% of the screen tall,
   contained so no poster text is cut), with the title + buttons in flow below it. Photo mode: taller hero. iPad/desktop untouched. */
@media (max-width:760px){
  .e-hero{height:86vh;height:86svh;min-height:560px}
  .e-hero:has(>.e-bg.poster){--ptop:72px;--pbox:min(calc((100vw - 32px) / var(--par,1.5)),55svh);height:auto;min-height:0}
  .e-hero:has(>.e-bg.poster) .e-hero-in{position:relative;left:auto;right:auto;bottom:auto;padding:calc(var(--ptop) + var(--pbox) + 22px) var(--pad) 34px}
  .e-hero .e-bg.poster .p-art{left:16px!important;right:16px!important;top:var(--ptop)!important;transform:none!important;width:calc(100% - 32px)!important;height:var(--pbox)!important;max-width:none!important;max-height:none!important;object-fit:contain!important;border-radius:10px;box-shadow:none;filter:drop-shadow(0 18px 36px rgba(0,0,0,.55))}
}
/* r25: forecast / real-cost strip moved under "Watch the vibe" (js/evlayout.js) */
.xp-strip.xp-in{max-width:none;margin:0;padding:16px 2px 22px;border-bottom:0}
.xp-strip.xp-in:not(:has(>div:not([hidden]))){display:none}
@media (max-width:767px){.ev2 .ev2-acc .xp-strip.xp-in{padding:14px 16px;border:1px solid rgba(127,127,127,.22);border-radius:16px;background:rgba(127,127,127,.06)}}

/* r25: rows injected late (Similar artists, mood strip) are never left invisible when reveal is off */
.more-noanim .more .mini{opacity:1;transform:none}

/* r25: hero carousel titles are real links to the event */
.hero-in h1 a.hero-t{color:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent}.hero-in h1 a.hero-t:hover{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:.12em}.hero-in h1 a.hero-t:focus-visible{outline:2px solid currentColor;outline-offset:4px;border-radius:4px}

/* r26 swipeable hero carousel (js/home.js bindHero) */
#hero{touch-action:pan-y;-webkit-user-select:none;user-select:none}
#hero.hero-drag{cursor:grabbing}#hero.hero-drag .slide{transition:none!important}
#hero.hero-snap .slide{transition:opacity .45s ease,transform .45s cubic-bezier(.2,.8,.2,1)!important}
#hero .slide img,#hero .slide a{-webkit-user-drag:none}
#hero.hero-still .hero-dots button.on i{animation:none;transform:scaleX(1)}

/* r26 Lineup row (js/billrow.js): small round avatars under the date / tickets block */
.lu-row{max-width:1400px;margin:0 auto;padding:18px var(--pad,20px) 4px}
.lu-h{font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:0 0 10px}
.lu-track{display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding:2px 2px 6px;margin:0 -2px}
.lu-track::-webkit-scrollbar{display:none}
.lu-a{flex:0 0 auto;width:84px;display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;color:inherit;text-decoration:none;background:none;border:0;padding:0;cursor:pointer;scroll-snap-align:start;font:inherit;-webkit-tap-highlight-color:transparent}
.lu-ph{width:68px;height:68px;border-radius:50%;object-fit:cover;display:block;background:#222;box-shadow:0 0 0 1px rgba(255,255,255,.14)}
.lu-a.hl .lu-ph{box-shadow:0 0 0 2px var(--ev-acc,#d9b26f)}
.lu-ini{position:relative!important;inset:auto!important;display:grid;place-items:center;font-weight:800;font-size:20px;letter-spacing:.02em;color:#fff;background:linear-gradient(135deg,color-mix(in srgb,var(--ev-acc,#d9b26f) 70%,#000),#1a1a1d)}
.lu-a b{font-size:13px;font-weight:700;line-height:1.15;max-width:84px;overflow-wrap:anywhere}
.lu-a small{font-size:11px;color:var(--muted);margin-top:-3px}
.lu-a[aria-expanded=true] .lu-ph{box-shadow:0 0 0 2px var(--fg,#fff)}
.lu-a:focus-visible{outline:2px solid var(--ev-acc,#d9b26f);outline-offset:3px;border-radius:12px}
.lu-card{position:relative;display:flex;gap:14px;align-items:flex-start;margin:8px 0 4px;padding:14px 40px 14px 14px;border-radius:16px;border:1px solid rgba(127,127,127,.22);background:rgba(127,127,127,.07);animation:luIn .25s ease both}
.lu-card[hidden]{display:none}
@keyframes luIn{from{opacity:0;transform:translateY(-4px)}}
.lu-cph{flex:0 0 64px;width:64px;height:64px;border-radius:50%;object-fit:cover}
.lu-cph.lu-ini{font-size:18px}
.lu-cb{display:flex;flex-direction:column;gap:3px;min-width:0}.lu-cb b{font-size:15px}.lu-cb small{color:var(--muted);font-size:12px}
.lu-cb p{margin:4px 0 2px;font-size:14px;line-height:1.4}
.lu-site{font-size:13.5px;font-weight:600;color:var(--fg,#fff);text-decoration:underline;text-underline-offset:3px}
.lu-cr{font-size:11px;color:var(--muted)}
.lu-x{position:absolute;top:6px;right:8px;width:30px;height:30px;border-radius:50%;font-size:20px;line-height:1;color:var(--muted);background:none;border:0;cursor:pointer}
@media (prefers-reduced-motion:reduce){.lu-card{animation:none}}
.lu-row .gm,.lu-row .lv-l{display:none!important}

/* r26 Similar artists, round: big portraits with an accent ring, name + date + venue, near the bottom */
.sim-round .sim-track{display:flex;gap:18px;overflow-x:auto;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding:6px var(--pad,20px) 10px}
.sim-round .sim-track::-webkit-scrollbar{display:none}
.sim-a{flex:0 0 auto;width:136px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:3px;color:inherit;text-decoration:none;scroll-snap-align:start;opacity:0;transform:translateY(14px);transition:opacity .5s ease,transform .6s cubic-bezier(.16,1,.3,1);transition-delay:calc(min(var(--i,0),8) * 60ms)}
.sim-round.cards-in .sim-a,.more-noanim .sim-a{opacity:1;transform:none}
.sim-ph{position:relative;width:120px;height:120px;border-radius:50%;overflow:hidden;margin-bottom:8px;background:#1b1b1e;box-shadow:0 0 0 3px color-mix(in srgb,var(--ev-acc,#d9b26f) 75%,transparent),0 0 26px color-mix(in srgb,var(--ev-acc,#d9b26f) 35%,transparent);transition:box-shadow .3s,transform .3s}
.sim-ph img{width:100%!important;height:100%!important;object-fit:cover!important;display:block}
.sim-a:hover .sim-ph,.sim-a:focus-visible .sim-ph{transform:scale(1.04);box-shadow:0 0 0 3px var(--ev-acc,#d9b26f),0 0 34px color-mix(in srgb,var(--ev-acc,#d9b26f) 55%,transparent)}
.sim-a b{font-size:14.5px;font-weight:700;line-height:1.2;max-width:136px}
.sim-a small{font-size:12px;color:var(--muted);line-height:1.3}
.sim-a .sim-v{max-width:136px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sim-round .gm,.sim-round .lv-l,.sim-round .pf-bg{display:none!important}
@media (min-width:768px){.sim-ph{width:130px;height:130px}.sim-a{width:150px}}
@media (prefers-reduced-motion:reduce){.sim-a{opacity:1;transform:none;transition:none}}
/* r38: row "See all" links sat under the .track hover-room padding (padding-bottom:70px; margin-bottom:-60px) so taps hit the cards
   instead; lift them above it. */
.row-more{position:relative;z-index:2}

/* r46: magazine gallery (js/maggallery.js) — only rendered on events with 4+ licensed items */
.mg{max-width:1400px;margin:0 auto;padding:22px var(--pad,20px) 6px}
.mg-k{margin:0 0 10px;font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.mg-grid{display:flex;gap:8px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;margin:0 calc(-1 * var(--pad,20px));padding:0 var(--pad,20px);scroll-padding:0 var(--pad,20px);overscroll-behavior-x:contain}
.mg-grid::-webkit-scrollbar{display:none}
.mg-it{position:relative;flex:0 0 auto;margin:0;height:236px;width:172px;border-radius:14px;overflow:hidden;background:var(--card,#17171a);scroll-snap-align:start;isolation:isolate}
.mg-it.mg-big{width:min(78vw,340px)}
.mg-m{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;transition:transform .9s cubic-bezier(.2,.7,.2,1)}
.mg-tap{position:absolute;inset:0;z-index:2;width:100%;height:100%;border:0;padding:0;margin:0;background:transparent;cursor:zoom-in;border-radius:inherit}
.mg-tap:focus-visible{outline:3px solid var(--hot,#e8553d);outline-offset:-3px}
.mg-it figcaption{position:absolute;left:0;right:0;bottom:0;z-index:3;padding:34px 11px 9px;color:#fff;pointer-events:none;background:linear-gradient(to top,rgba(0,0,0,.72),rgba(0,0,0,.28) 60%,transparent);display:flex;flex-direction:column;gap:2px}
.mg-cap{font-size:12.5px;font-weight:600;line-height:1.25;letter-spacing:-.005em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.mg-cr{font-size:10px;line-height:1.3;opacity:.78;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mg-cr a{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;pointer-events:auto;position:relative;z-index:4}
.mg-play{position:absolute;top:10px;right:10px;z-index:3;width:28px;height:28px;border-radius:50%;background:rgba(0,0,0,.45);display:grid;place-items:center;pointer-events:none;transition:opacity .3s}
.mg-play svg{width:14px;height:14px;fill:#fff}
.mg-live .mg-play{opacity:0}
@media (hover:hover){.mg-it:hover .mg-m{transform:scale(1.035)}}
@media (min-width:761px){
  .mg{padding-top:30px}
  .mg-grid{display:grid;overflow:visible;margin:0;padding:0;gap:10px;aspect-ratio:2.55/1;grid-template-columns:1.7fr 1fr 1fr;grid-template-rows:1fr 1fr}
  .mg-it,.mg-it.mg-big{width:auto;height:auto;border-radius:16px}
  .mg-big{grid-row:1/3}
  .mg-n4 .mg-it:nth-child(4){grid-column:2/4}
  .mg-big .mg-cap{font-size:15px}
  .mg-big figcaption{padding:48px 16px 13px}
  .mg-cr{font-size:10.5px}
}
@media (prefers-reduced-motion:reduce){.mg-m{transition:none}.mg-it:hover .mg-m{transform:none}}
/* viewer */
html.mgv-lock{overflow:hidden}
.mgv{position:fixed;inset:0;width:100vw;height:100vh;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:rgba(6,6,7,.96);color:#fff;overflow:hidden}
.mgv::backdrop{background:rgba(0,0,0,.6)}
.mgv[open]{display:grid;grid-template-rows:auto 1fr auto}
.mgv-top{display:flex;align-items:center;justify-content:space-between;padding:calc(10px + env(safe-area-inset-top)) 14px 8px;font-size:13px;font-variant-numeric:tabular-nums;color:rgba(255,255,255,.72)}
.mgv-x{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 14px;border-radius:999px;border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.06);color:#fff;font:600 13px/1 inherit;cursor:pointer}
.mgv-x svg,.mgv-p svg,.mgv-nx svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.mgv-stage{position:relative;min-height:0;display:grid;place-items:center;padding:0 8px;touch-action:pan-y pinch-zoom;user-select:none}
.mgv-m{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;border-radius:6px;animation:mgvIn .35s ease both}
@keyframes mgvIn{from{opacity:0;transform:scale(.985)}}
.mgv-p,.mgv-nx{position:absolute;top:50%;transform:translateY(-50%);width:46px;height:46px;border-radius:50%;border:1px solid rgba(255,255,255,.2);background:rgba(0,0,0,.4);color:#fff;display:grid;place-items:center;cursor:pointer;z-index:2}
.mgv-p{left:12px}.mgv-nx{right:12px}
.mgv-cap{padding:12px 18px calc(16px + env(safe-area-inset-bottom));max-width:820px;width:100%;margin:0 auto;text-align:center}
.mgv-cap p{margin:0 0 4px;font-size:14.5px;line-height:1.4}
.mgv-cap .mg-cr{font-size:11.5px;white-space:normal;opacity:.7}
.mgv-cap .mg-cr a{color:#fff}
@media (max-width:760px){.mgv-p,.mgv-nx{top:auto;bottom:calc(14px + env(safe-area-inset-bottom));transform:none;width:42px;height:42px}.mgv-cap{padding-left:64px;padding-right:64px}}
@media (prefers-reduced-motion:reduce){.mgv-m{animation:none}}

/* r46g2: gallery motion + overflow tiles + demo-only credit */
@keyframes mgKB{0%{scale:1.05;translate:0 0}100%{scale:1.14;translate:var(--kx,-2.2%) var(--ky,-1.6%)}}
img.mg-m{animation:mgKB 24s ease-in-out infinite alternate;animation-delay:calc(var(--i,0) * -5.3s);will-change:scale,translate}
.mg-it:nth-child(2n) img.mg-m{--kx:2%;--ky:-1.2%;animation-duration:21s}
.mg-it:nth-child(3n) img.mg-m{--kx:-1.4%;--ky:1.8%;animation-duration:27s}
.mg-it:nth-child(4n) img.mg-m{--kx:1.8%;--ky:1.4%;animation-duration:19s}
.mg-demo{opacity:.85;font-style:italic}
.mg-it[data-more]::after{content:none}
@media (min-width:761px){
  .mg-xtra{display:none}
  .mg-it[data-more]::after{content:attr(data-more);position:absolute;top:10px;right:10px;z-index:3;pointer-events:none;font:600 12px/1 inherit;letter-spacing:.02em;color:#fff;background:rgba(0,0,0,.55);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);padding:6px 9px;border-radius:999px}
}
@media (prefers-reduced-motion:reduce){img.mg-m{animation:none;scale:none;translate:none;will-change:auto}}

/* r46b: PREVIEW-ONLY "Boats to gawk at" card under the boat-show gallery (maggallery.js; stripped from prod builds) */
.mg-gawk{margin:14px 0 4px;padding:12px 14px 10px;border:1px solid var(--line,rgba(255,255,255,.12));border-radius:12px;background:linear-gradient(135deg,rgba(63,169,209,.10),rgba(63,169,209,.02) 60%)}
.mg-gawk .gw-k{margin:0 0 8px;font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:#3fa9d1}
.mg-gawk .gw-k .mg-demo{letter-spacing:.04em;text-transform:none;font-weight:600;opacity:.75;margin-left:6px}
.mg-gawk ul{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.gw-b{display:grid;grid-template-columns:1fr auto;gap:1px 12px;padding-top:8px;border-top:1px solid var(--line,rgba(255,255,255,.08))}
.gw-b:first-child{border-top:0;padding-top:0}
.gw-n{font-size:15px;letter-spacing:.04em}.gw-p{grid-row:1;grid-column:2;font-weight:700;font-size:14px;text-align:right;white-space:nowrap}
.gw-p small{font-weight:500;font-size:10.5px;opacity:.65}
.gw-s,.gw-w,.gw-l{grid-column:1 / -1;font-size:12.5px;line-height:1.35;color:var(--muted)}
.gw-w em{font-style:normal;color:#e0a23a;font-weight:600}
.gw-l a{color:inherit;text-decoration:underline;text-underline-offset:2px}
.gw-f{margin:8px 0 0;font-size:10.5px;opacity:.6}
@media (min-width:761px){.mg-gawk ul{grid-template-columns:1fr 1fr;gap:10px 22px}.gw-b:nth-child(2){border-top:0;padding-top:0}.mg-gawk{max-width:760px}}
/* r46v: gallery placed under the "Watch the vibe" group (inside .e-main / mobile .ev2-acc flex column): auto margins
   would shrink-wrap it to max-width there, so pin it to the column width and drop the outer page padding. */
.mg.mg-uv{width:100%;max-width:100%;min-width:0;margin:6px 0 4px;padding:18px 0 4px}
@media (max-width:767px){.ev2 .ev2-acc>.mg.mg-uv{margin:4px 0 6px;padding:12px 0 2px}}

/* popups r2: shared no-photo hero tile. When the hero image is an OUT2 no-photo tile (img/nophoto/), in either hero mode
   (cover or poster), it shows as one 2:1 box the full width of the hero content column (same left edge and width as the
   title column, max 1100px), with the title and buttons in flow below it. Same at every width; no blurred backdrop. */
#ev .e-hero:has(>.e-bg img[src*="/nophoto/"]){--nptop:clamp(72px,8vw,104px);--npw:min(100% - 2 * var(--pad),1100px);height:auto!important;min-height:0!important}
#ev .e-hero:has(>.e-bg img[src*="/nophoto/"])>.e-bg{animation:none!important;transform:none!important}
#ev .e-hero:has(>.e-bg img[src*="/nophoto/"]) .e-hero-in{position:relative!important;left:auto!important;right:auto!important;bottom:auto!important;max-width:none!important;width:auto!important;margin:0!important;padding:calc(var(--nptop) + var(--npw) / 2 + 24px) max(var(--pad),100% - var(--pad) - 1100px) 34px var(--pad)!important}
#ev .e-hero .e-bg img.p-fill[src*="/nophoto/"],#ev .e-hero:has(>.e-bg img[src*="/nophoto/"])>.e-shade{display:none!important}
#ev .e-hero .e-bg img[src*="/nophoto/"]:not(.p-fill){position:absolute!important;inset:auto!important;left:var(--pad)!important;top:var(--nptop)!important;right:auto!important;bottom:auto!important;transform:none!important;width:var(--npw)!important;height:auto!important;aspect-ratio:2/1;max-width:none!important;max-height:none!important;object-fit:cover!important;object-position:50% 50%!important;border-radius:12px;box-shadow:none!important;filter:none!important;animation:none!important;-webkit-mask-image:none!important;mask-image:none!important;opacity:1!important}
/* popups r2: visible photo label (ev.imgLabel) for venue photos, renderings and past editions */
#ev .e-imglabel{display:inline-block;margin:0 0 10px;padding:4px 11px;border-radius:999px;background:rgba(10,8,12,.55);color:#f6eadf;font-size:12px;line-height:1.3;letter-spacing:.02em}
