/* Refinement pass, September 19: shared motion tokens, scroll reveals, venue marquee, footer, button and card physics, live navigation, chapter rhythm. */
:root{--ease-out:cubic-bezier(.23,1,.32,1);--ease-pop:cubic-bezier(.2,.7,.2,1);--line:#7a55a055;--cyan:#72d1fb;--violet:#c48af3}
/* Reveal: only active once JS confirms; no-JS, reduced motion and the site's own motion pause all show content immediately. */
html.rise-ready [data-rise]{opacity:0;transform:translateY(18px);transition:opacity .6s var(--ease-out),transform .6s var(--ease-out);transition-delay:calc(var(--rise-i,0)*70ms);will-change:opacity,transform}
html.rise-ready [data-rise].rise-in{opacity:1;transform:none}
html.rise-ready.story-motion-off [data-rise],html.rise-ready [data-rise].rise-in{will-change:auto}
html.story-motion-off [data-rise]{opacity:1!important;transform:none!important;transition:none!important}
@media(prefers-reduced-motion:reduce){html.rise-ready [data-rise]{transform:none;transition:opacity .15s linear}}
/* Reading progress under the masthead. */
.read-progress{position:fixed;top:0;left:0;height:3px;width:100%;z-index:60;background:linear-gradient(90deg,#7622aa,var(--cyan) 60%,var(--violet));transform-origin:0 50%;transform:scaleX(var(--read,0));pointer-events:none;transition:transform .1s linear}
html.story-motion-off .read-progress{transition:none}
/* Venue marquee: the names on the bills, straight from the 25 flyers. */
.bill-marquee{position:relative;overflow:hidden;background:#1b1029;border-block:1px solid #7a55a0;padding:14px 0;isolation:isolate}
.bill-marquee::before,.bill-marquee::after{content:"";position:absolute;top:0;bottom:0;width:90px;z-index:2;pointer-events:none}
.bill-marquee::before{left:0;background:linear-gradient(90deg,#1b1029,#1b102900)}
.bill-marquee::after{right:0;background:linear-gradient(270deg,#1b1029,#1b102900)}
.bill-marquee>div{display:flex;width:max-content;gap:0;animation:bill-scroll 70s linear infinite}
.bill-marquee:hover>div,.bill-marquee:focus-within>div{animation-play-state:paused}
.bill-marquee span{display:inline-flex;align-items:center;gap:22px;padding-right:22px;font-family:Display,'Arial Narrow',Impact,sans-serif;font-weight:700;font-size:clamp(20px,2.2vw,28px);letter-spacing:.02em;line-height:1;color:#efe4ff;white-space:nowrap}
.bill-marquee span b{font-weight:700;color:var(--cyan)}
.bill-marquee span i{font-style:normal;color:var(--violet);font-size:.7em;transform:translateY(-1px)}
.bill-marquee .sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
@keyframes bill-scroll{to{transform:translateX(-50%)}}
html.story-motion-off .bill-marquee>div{animation:none}
@media(prefers-reduced-motion:reduce){.bill-marquee>div{animation:none}}
/* Chapter rhythm: one separator mechanism, one heading treatment. */
main#main>section:not(.hiphop-hero):not(#paper-trail){border-top:1px solid var(--line)}
main#main>section.chapter{padding-top:64px;padding-bottom:88px}
main#main .eyebrow{letter-spacing:.14em}
/* Buttons: press and hover physics without animating shadows. */
a.action-button,button.button,button.menu-toggle,.filter-controls button,.dialog-close,.flyer-controls button{transition:transform .14s var(--ease-out),background-color .14s var(--ease-out),border-color .14s var(--ease-out),color .14s var(--ease-out)}
a.action-button:active,button.button:active,.flyer-controls button:active{transform:translate(2px,3px) scale(.985)}
a.action-button.action-primary,.button.action-primary{background:#7622aa;border-color:#b98cf0}
.text-link{transition:color .18s var(--ease-out)}
.text-link span,.action-button>span:last-child{display:inline-block;transition:transform .2s var(--ease-out)}
/* Cards: images breathe, marks respond, panels lift. */
.media-front .video-image img,.review-print-grid article img,.world-links a img{transition:transform .6s var(--ease-out)}
.media-front .play-mark{transition:transform .2s var(--ease-out),background-color .2s var(--ease-out)}
.review-print-grid article,.world-links a,#official-listening .album-player{transition:transform .25s var(--ease-out),border-color .25s var(--ease-out)}
.flyer-controls button{transition:transform .14s var(--ease-out),background-color .14s var(--ease-out)}
/* Live navigation: the current chapter is marked as you read. */
.masthead #navigation>a.action-nav{position:relative}
.masthead #navigation>a.action-nav::after{content:"";position:absolute;left:10px;right:10px;bottom:5px;height:2px;border-radius:2px;background:var(--cyan);transform:scaleX(0);transform-origin:0 50%;transition:transform .25s var(--ease-out)}
.masthead #navigation>a.action-nav[aria-current]::after{transform:scaleX(1)}
.masthead #navigation>a.action-nav[aria-current]{color:#dff4ff;border-color:#72d1fb99}
/* Footer: a real ending, not a spill of links. */
footer{position:relative;background:#0b0810;border-top:1px solid var(--line);padding:56px 6% 28px}
footer .atmosphere-credit{max-width:70ch;color:#bda9d1;font-size:15px;line-height:1.7;margin:0 0 34px}
footer .atmosphere-credit a.action-button{display:inline-flex;margin:8px 0 0}
footer .footer-top{padding-bottom:40px;border-bottom:1px solid var(--line)}
footer .footer-top .eyebrow{color:#96dfff}
footer .footer-top a.action-button{font-family:Display,'Arial Narrow',Impact,sans-serif!important;font-weight:700!important;font-size:clamp(30px,5vw,62px);letter-spacing:-.02em;padding:14px 26px 12px;background:#1b1029;border-color:#7a55a0;box-shadow:4px 6px 0 #368bb8}
footer .footer-bottom{display:grid;grid-template-columns:minmax(200px,1.1fr) repeat(3,minmax(0,1fr));gap:36px 32px;align-items:start;padding-top:40px}
footer .footer-bottom>img{grid-column:1;width:120px;height:auto}
footer .footer-bottom>p{grid-column:1;font-size:14px;letter-spacing:.12em;color:#cdbbe0;max-width:26ch;margin:0}
footer .footer-bottom>nav{display:contents}
footer .footer-col{display:flex;flex-direction:column;gap:2px;min-width:0}
footer .footer-col h3{font:700 12px/1.5 Body,Arial,sans-serif!important;letter-spacing:.16em;text-transform:uppercase;color:#96dfff;margin:0 0 10px}
footer .footer-col a{font:600 16px/1.5 Body,Arial,sans-serif;color:#efe4ff;padding:7px 0;border:0;background:none;box-shadow:none;min-height:0;display:inline-flex;gap:8px;align-items:center;justify-content:flex-start;margin:0;text-decoration:none;position:relative;width:max-content;max-width:100%}
footer .footer-col a::after{content:"";position:absolute;left:0;right:0;bottom:4px;height:1px;background:var(--cyan);transform:scaleX(0);transform-origin:0 50%;transition:transform .25s var(--ease-out)}
footer .footer-col a:hover,footer .footer-col a:focus-visible{color:#fff;background:none;transform:none;box-shadow:none}
footer .footer-col a:hover::after,footer .footer-col a:focus-visible::after{transform:scaleX(1)}
footer .footer-bottom>span{grid-column:1/-1;font-size:13px;letter-spacing:.12em;color:#9d8cb0;padding-top:28px;border-top:1px solid var(--line);margin-top:8px}
footer .motion-preference-slot{display:flex;justify-content:flex-end;margin-top:12px}
footer .page-motion-control{color:#bda9d1;border-color:#7a55a0}
@media(hover:hover) and (pointer:fine){
 a.action-button:hover,button.button:hover{transform:translateY(-1px)}
 .text-link:hover span,.action-button:hover>span:last-child{transform:translate(3px,-2px)}
 .media-front .video-card:hover .video-image img,.review-print-grid article:hover img,.world-links a:hover img{transform:scale(1.045)}
 .media-front .video-card:hover .play-mark{transform:scale(1.12);background:#8a2fd0}
 .review-print-grid article:hover,.world-links a:hover{transform:translateY(-4px);border-color:#72d1fb99}
 .flyer-controls button:hover{transform:translateY(-1px);background:#7622aa}
}
@media(hover:none){#paper-trail .flyer-story:hover>summary .story-thumb,#paper-trail .flyer-story:hover>summary .story-title,#partners .partner-group:hover .partner-group-title,#partners .partner-group:hover .partner-peek img,#partners .partner-card:hover,#paper-trail .flyer-story:hover .story-open,#partners .partner-group:hover>summary .partner-open{transform:none}}
@media(max-width:900px){footer .footer-bottom{grid-template-columns:repeat(2,minmax(0,1fr))}footer .footer-bottom>img,footer .footer-bottom>p{grid-column:1/-1}}
@media(max-width:600px){main#main>section.chapter{padding-top:44px;padding-bottom:60px}.bill-marquee{padding:10px 0}.bill-marquee span{font-size:19px;gap:14px;padding-right:14px}footer{padding:44px 6% 24px}footer .footer-bottom{grid-template-columns:1fr;gap:26px}footer .footer-top a.action-button{font-size:30px}}
@media(prefers-reduced-motion:reduce){a.action-button,button.button,.text-link span,.action-button>span:last-child,.media-front .video-image img,.review-print-grid article img,.world-links a img,.media-front .play-mark,.review-print-grid article,.world-links a,.masthead #navigation>a.action-nav::after,footer .footer-col a::after,.read-progress{transition:none}a.action-button:hover,.review-print-grid article:hover,.world-links a:hover{transform:none}}
/* Tablet-landscape fix (901–1200px): older sheets made the navigation an absolute dropdown while a later rule forced it visible, leaving it permanently open. Keep the inline button row there. */
@media(min-width:901px) and (max-width:1200px){.masthead nav#navigation{display:flex;position:static;top:auto;left:0;right:auto;background:none;padding:0;max-height:none;overflow:visible;border:0;flex-wrap:wrap;justify-content:flex-end;gap:2px 8px;max-width:760px}.masthead .menu-toggle{display:none}.masthead #navigation>a.action-nav{font-size:14px;padding-inline:8px}}
