/* Compact media chapters, fixed artist and food frames and an overlapping DJ scroll strip. */
html:has(body.lov-editorial) { scroll-behavior:auto; }
:root body.lov-editorial { --mobile-nav-height:var(--measured-dock-height,calc(96px + env(safe-area-inset-bottom))); --stage-dock:var(--mobile-nav-height); --stage-skirt:var(--lov-surface); padding-bottom:var(--mobile-nav-height); }
:root body.lov-editorial .home-actions { height:auto; min-height:calc(96px + env(safe-area-inset-bottom)); align-items:stretch; }
:root body.lov-editorial .home-actions > a { height:auto; min-height:56px; padding:12px 4px; overflow-wrap:anywhere; }
:root body.lov-editorial .journey-step { position:relative; min-width:0; background:var(--lov-surface); }
:root body.lov-editorial .journey-scene { position:relative; display:grid; grid-template-columns:minmax(0,1fr); align-items:start; width:100%; height:auto; min-height:0; padding:32px var(--page-pad); background:var(--lov-surface); color:var(--lov-text); gap:20px; }

:root body.lov-editorial .journey-scene :is(h2) { margin:0; max-width:none; }
:root body.lov-editorial .journey-scene > h2 { grid-column:1; grid-row:1; font:700 clamp(41.6px,5.72vw,83.2px)/1.1 var(--font-display); text-transform:uppercase; }
:root body.lov-editorial .section-anchor { position:absolute; top:0; width:0; height:0; }
:root body.lov-editorial :is(.artists-media,.food-media) { display:grid; gap:12px; }
:root body.lov-editorial .media-frame { margin:0; }

:root body.lov-editorial .resident-card { position:relative; aspect-ratio:1; overflow:hidden; border-radius:0; margin:0; background:#080808; }
:root body.lov-editorial .resident-card img { display:block; width:100%; height:100%; object-fit:cover; }
:root body.lov-editorial .resident-card figcaption { position:absolute; inset:auto 0 0; margin:0; padding:48px 18px 20px; color:#fff; background:linear-gradient(transparent,rgba(0,0,0,.8)); font:700 clamp(23px,2.3vw,34px)/1.15 var(--font-body); }
:root body.lov-editorial .photo-window { min-width:0; padding:0; }
:root body.lov-editorial .journey-scene .photo-window { grid-column:1; grid-row:2; width:100%; height:auto; min-height:0; margin:0; }
:root body.lov-editorial .photo-track { display:grid; width:100%; height:auto; gap:12px; grid-template-columns:minmax(0,1fr); grid-template-rows:none; grid-auto-rows:auto; }
:root body.lov-editorial .photo-track > * { position:relative; grid-column:auto; grid-row:auto; min-width:0; width:100%; max-width:none; margin:0; padding:0; overflow:hidden; border-radius:0; transform:none; }
:root body.lov-editorial .photo-track :is(picture,img,video) { display:block; position:static; width:100%; height:100%; min-height:0; object-fit:cover; }
:root body.lov-editorial .photo-track picture { aspect-ratio:auto; }

:root body.lov-editorial .artist-card { aspect-ratio:2/3; border:0; box-shadow:none; background:#080808; }
:root body.lov-editorial .artist-card-caption { inset:auto 20px 28px; max-width:calc(100% - 40px); }
:root body.lov-editorial .artist-card-caption h3 { color:#fff; -webkit-text-fill-color:#fff; line-height:1.12; font-size:clamp(28px,3vw,42px); white-space:normal; overflow-wrap:normal; letter-spacing:0; }
:root body.lov-editorial .artist-card-caption > span { color:#fff; font-size:20.8px; }
:root body.lov-editorial .artist-links { display:none; }
:root body.lov-editorial video[role="button"]:focus-visible { outline:3px solid #fff; outline-offset:-6px; }
:root body.lov-editorial :is(.photo-window,[data-rotator],.review-stack):focus-visible { outline:2px solid var(--lov-title); outline-offset:4px; }
/* One frame owns the space; layers fade without adding rows or reserved height. */
:root body.lov-editorial [data-rotator] { position:relative; display:flex; gap:12px; overflow-x:auto; scroll-snap-type:x mandatory; scrollbar-width:thin; }
:root body.lov-editorial [data-rotator] > * { flex:0 0 100%; width:100%; aspect-ratio:1/1; scroll-snap-align:start; }
:root body.lov-editorial [data-rotator].artist-lineup > * { aspect-ratio:2/3; }
/* Ratings and source-linked quotes use a single compact review row. */
:root body.lov-editorial .reviews { padding:0; }
:root body.lov-editorial .rating-strip { grid-column:1; grid-row:auto; width:100%; max-width:660px; gap:20px; }
:root body.lov-editorial .rating-strip a { display:grid; grid-template-columns:auto minmax(0,1fr); gap:12px; min-height:0; padding:8px 0; border:0; }
:root body.lov-editorial .rating-strip a > strong { font-size:48px; align-self:center; }
:root body.lov-editorial .rating-strip a > span { min-width:0; gap:3px; font-size:17px; letter-spacing:0; }
:root body.lov-editorial .rating-strip small { font-size:16px; line-height:1.3; overflow-wrap:normal; }
:root body.lov-editorial .rating-strip .review-stars { width:96px; height:20px; }
/* Rectangular reviews share the DJ archive's overlapping scroll rail. */
:root body.lov-editorial .reviews .rating-strip { grid-row:2; }
:root body.lov-editorial .reviews .photo-window { grid-row:3; }
:root body.lov-editorial .reviews .review-stack { display:flex; width:max-content; gap:0; border:0; overflow:visible; padding:0; }
:root body.lov-editorial .review-stack > .review-link { display:block; width:var(--archive-width); flex:0 0 auto; margin-block:0; padding:0; color:var(--lov-text); }
:root body.lov-editorial .review-stack > .review-link.is-current { z-index:2; }
:root:not(.js) body.lov-editorial .review-stack > .review-link + .review-link { margin-left:12px; }
:root body.lov-editorial .review-stack blockquote { height:100%; display:flex; flex-direction:column; justify-content:space-between; gap:18px; margin:0; padding:clamp(22px,4vw,32px); border:0; border-radius:inherit; background:none; }
:root body.lov-editorial .review-stack .review-stars { flex:none; width:120px; height:24px; color:var(--lov-title); }
:root body.lov-editorial .review-stack blockquote p { margin:0; font-size:clamp(26px,7vw,40px); line-height:1.22; }
:root body.lov-editorial .review-stack footer { margin:0; gap:12px; font-size:16px; line-height:1.4; }
:root body.lov-editorial .review-author { font-size:16px; }
:root body.lov-editorial .review-stack img.review-avatar { width:48px; height:48px; max-width:48px; flex-basis:48px; border-radius:0; object-fit:cover; }
/* Every historical guest owns a separate, overlapping square card. */
:root body.lov-editorial .archive-scene { padding:32px var(--page-pad); gap:20px; }

:root body.lov-editorial .archive-scene h2 { font-size:clamp(32px,3.3vw,48px); line-height:1.15; }

:root body.lov-editorial .archive-scene .photo-window { width:100vw; margin-inline:calc(50% - 50vw); padding:30px var(--page-pad); overflow-x:auto; overscroll-behavior-x:contain; scroll-snap-type:x proximity; scrollbar-width:thin; }
:root body.lov-editorial .archive-scene .photo-window .archive-track { --archive-width:min(36vw,440px); display:flex; width:max-content; gap:0; overflow:visible; }
:root body.lov-editorial .archive-track > .archive-card { flex:0 0 auto; width:var(--archive-width); aspect-ratio:1/1; background:var(--lov-night-soft); scroll-snap-align:start; transform:rotate(-3deg); transform-origin:50% 65%; }
:root body.lov-editorial .archive-track > .archive-card + .archive-card { margin-left:calc(var(--archive-width) * -.18); }
:root body.lov-editorial .archive-track > .archive-card:nth-child(even) { transform:rotate(3deg); }
:root body.lov-editorial .review-stack > .review-link { aspect-ratio:auto; height:min(clamp(280px,70vw,340px),100cqb); }
/* One card width per rail, read by the cards and by the stage to centre them. */
:root body.lov-editorial .archive-track { --stage-card-width:min(var(--archive-width),100cqb); }
:root body.lov-editorial .review-stack { --stage-card-width:var(--archive-width); }
:root body.lov-editorial .archive-track > .archive-card--photo { width:var(--stage-card-width); }
:root body.lov-editorial .archive-card:focus-within { z-index:2; }

:root body.lov-editorial .archive-card--photo img { width:100%; height:100%; object-fit:cover; }
:root body.lov-editorial .archive-caption { position:absolute; inset:auto 0 0; padding:48px 20px 20px; background:linear-gradient(transparent,rgba(0,0,0,.8)); }
:root body.lov-editorial .archive-caption small { display:block; color:#fff; font-size:16px; line-height:1.4; margin-bottom:6px; }
:root body.lov-editorial .archive-caption > strong { display:block; }
:root body.lov-editorial .archive-scene { border:0; }
:root body.lov-editorial .archive-caption strong { color:white; font:700 32px/1.15 var(--font-display); }

:root body.lov-editorial .archive-foot { display:flex; flex-wrap:wrap; gap:4px 18px; align-items:center; }
:root body.lov-editorial .archive-foot :is(a,span) { min-height:44px; display:inline-flex; align-items:center; font-size:16px; line-height:1.4; color:var(--lov-muted); }
:root body.lov-editorial #menu .food-media.photo-window { height:min(54svh,520px)!important; min-height:0!important; overflow-x:auto!important; overflow-y:hidden!important; }
:root body.lov-editorial #menu .food-media .photo-track { display:flex; width:100%; height:100%; gap:14px; }
:root body.lov-editorial #menu .food-media .photo-track > * { flex:0 0 min(44vw,560px); width:min(44vw,560px); height:100%; min-height:0; aspect-ratio:4/5; }
:root body.lov-editorial #menu .food-media .photo-track img { width:100%; height:100%; object-fit:cover; }
/* On wide screens the stage keeps performers portrait and food photographs landscape. */
@media (min-width:1000px) {
 :root body.lov-editorial .artists-media .artist-lineup { --stage-slide-width:min(100%,100cqb * 2 / 3); }
 :root body.lov-editorial .food-media .photo-deck { --stage-slide-width:min(100%,100cqb * 4 / 3); }
}
@media (max-width:760px) {
 :root body.lov-editorial .journey-scene { padding:24px 16px; gap:18px; }
 :root body.lov-editorial .journey-scene .photo-window { width:100vw; margin-inline:-16px; padding-inline:8px; }
 :root body.lov-editorial :is(.artists-media,.food-media).photo-window { padding-inline:0; }
 :root body.lov-editorial .reviews { padding:0; }
 :root body.lov-editorial .rating-strip { gap:12px; }
 :root body.lov-editorial .rating-strip a { gap:8px; }
 :root body.lov-editorial .rating-strip a > strong { font-size:39px; }
 :root body.lov-editorial .rating-strip a > span { font-size:14px; }
 :root body.lov-editorial .rating-strip small { font-size:13px; white-space:nowrap; }
 :root body.lov-editorial .rating-strip .review-stars { width:84px; height:17px; }
 :root body.lov-editorial .archive-scene { padding:24px 16px; }
 :root body.lov-editorial .archive-scene .photo-window { padding:30px 8px; }
 :root body.lov-editorial .archive-scene .photo-window .archive-track { --archive-width:calc(100vw - 16px); }
 :root body.lov-editorial #menu .food-media.photo-window { height:54svh!important; }
 :root body.lov-editorial #menu .food-media .photo-track > * { flex-basis:calc(100vw - 32px); width:calc(100vw - 32px); }

 :root body.lov-editorial .resident-card { scroll-snap-align:start; }
 :root body.lov-editorial .resident-card figcaption { font-size:32px; }

 :root body.lov-editorial .artist-card-caption h3 { font-size:41.6px; }
}
@media (min-width:761px) and (min-height:501px) {
 :root body.lov-editorial .hero--identity { --hero-inset-height:clamp(240px,42svh,420px); --hero-inset-width:calc(var(--hero-inset-height) * .5625); }
}
