/* WE DANCE website · upcoming.css (2026-11-06) — "What's on" strip (home) and "Coming up" list (/events).
   Markup: tools/hooks/upcoming.py and assets/js/upcoming.js. site.css tokens only; every class prefixed up-. */
.up-sec{padding:32px 0 36px}
@media (min-width:768px){.up-sec{padding:48px 0 52px}}
.up-sec .sech{margin-bottom:16px}
.up-strip{background:var(--blush)}
.up-grid{display:grid;gap:12px}
@media (min-width:640px){.up-grid{grid-template-columns:repeat(2,1fr);gap:16px}}
@media (min-width:1024px){.up-grid{grid-template-columns:repeat(3,1fr)}}
.up-card{display:flex;flex-direction:column;background:var(--white);clip-path:polygon(0 0,calc(100% - var(--cut)) 0,100% var(--cut),100% 100%,0 100%)}
.up-ph{aspect-ratio:16/9;overflow:hidden;background:var(--ink)}
.up-ph img{width:100%;height:100%;object-fit:cover}
.up-b{display:flex;flex-direction:column;gap:6px;padding:16px 16px 18px;flex:1}
.up-k{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:0}
.up-st{font-size:12px;font-weight:800;color:var(--stage-dk);text-transform:uppercase;letter-spacing:.06em}
.up-t{font-size:clamp(18px,2vw,20px);margin:2px 0 0;line-height:1.3;overflow-wrap:anywhere}
.up-when{margin:0;font-weight:800;font-size:15px}
.up-facts{display:flex;flex-wrap:wrap;gap:2px 14px;margin:0;font-size:14px;color:var(--ink3)}
.up-venue{margin:0;font-size:13.5px;color:var(--mute)}
.up-go{align-self:flex-start;margin:auto 0 0 6px;min-height:44px}
.up-b>:has(+.up-go){margin-bottom:6px}   /* at least 12px above the button */
.up-list{background:var(--white)}
.up-list .up-card{background:var(--paper)}
.up-when time{white-space:normal}
.up-tm{white-space:nowrap}   /* a day or a time range breaks only before or after itself */
