/* Local events base (kit-spec-1, local_events, live: TAO-1 search + optional Ticketmaster / SeatGeek keys) */
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.top{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2) var(--s-3);padding-block:var(--s-3);border-bottom:1px solid var(--line)}
.brand{display:inline-flex;align-items:center;gap:10px;margin-right:auto;font:800 var(--t-lg)/1 var(--sans);letter-spacing:-.03em}
.mark{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:9px;background:var(--accent);color:var(--on-accent);font:800 15px/1 var(--sans)}
.top .btn{min-height:44px}
.hero{display:grid;gap:var(--s-4);padding-block:var(--s-7) var(--s-5)}
.hero h1{max-width:20ch;font-size:var(--t-hero)}
.kicker{margin:0;font:700 var(--t-xs)/1.2 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--accent)}
.find{display:flex;flex-wrap:wrap;gap:var(--s-2);max-width:680px}
.find input{flex:1 1 220px;min-width:0;min-height:48px;font-size:var(--t-md)}
.find .btn{min-height:48px}
.chips{display:flex;flex-wrap:wrap;gap:var(--s-2)}
.chips button{min-height:40px;padding:0 var(--s-4);border:1px solid var(--line);border-radius:var(--r-pill);background:var(--surface);color:var(--ink-2);font:600 var(--t-sm)/1 var(--sans);cursor:pointer}
.chips button[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.keys{display:grid;gap:var(--s-3);margin-bottom:var(--s-5);padding:var(--s-5);border:1px solid var(--line);border-radius:var(--r-card);background:var(--sunk)}
.keys h2{font-size:var(--t-lg)}
.keys-list{display:grid;gap:var(--s-2);margin:0;padding-left:1.2em;font-size:var(--t-sm);max-width:70ch}
.keys-list b{font-weight:700}
.muted{margin:0;color:var(--ink-2);font-size:var(--t-sm);max-width:70ch}
main{display:grid;gap:var(--s-3);padding-block:var(--s-2) var(--s-8)}
.src{display:flex;align-items:center;gap:8px;margin:0;font-size:var(--t-xs);color:var(--ink-2)}
.src::before{content:"";flex:none;width:8px;height:8px;border-radius:50%;background:var(--ink-2)}
.src[data-live="1"]::before{background:var(--good,var(--accent))}
.src[data-live="0"]::before{background:var(--warn)}
.src[data-busy="1"]::before{animation:pulse 1s ease-in-out infinite}
@keyframes pulse{50%{opacity:.25}}
@media (prefers-reduced-motion:reduce){.src[data-busy="1"]::before{animation:none}}
.error{margin:0;color:var(--bad);font-size:var(--t-sm)}
.list{display:grid;gap:var(--s-3);margin:0;padding:0;list-style:none}
.ev{display:grid;grid-template-columns:72px minmax(0,1fr);gap:var(--s-4);padding:var(--s-4);border:1px solid var(--line);border-radius:var(--r-card);background:var(--surface)}
.ev .date{display:grid;align-content:start;justify-items:center;gap:2px;padding:var(--s-2) 0;border-radius:var(--r);background:var(--wash);color:var(--accent)}
.ev .date b{font:800 var(--t-2xl)/1 var(--sans);color:var(--ink)}
.ev .date span{font:700 11px/1.2 var(--sans);letter-spacing:.08em;text-transform:uppercase}
.ev h3{margin:0;font-size:var(--t-lg);line-height:1.25}
.ev .meta{margin:var(--s-1) 0 0;color:var(--ink-2);font-size:var(--t-sm)}
.ev .sum{margin:var(--s-2) 0 0;font-size:var(--t-sm);max-width:70ch}
.ev .acts{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2);margin-top:var(--s-3)}
.ev .acts a,.ev .acts button{min-height:40px}
.badge{display:inline-block;margin-right:var(--s-2);padding:2px 10px;border-radius:var(--r-pill);background:var(--sunk);color:var(--ink-2);font:700 11px/1.6 var(--sans);letter-spacing:.04em;text-transform:uppercase}
.via{font-size:var(--t-xs);color:var(--ink-2)}
.star[aria-pressed="true"]{color:var(--accent)}
.empty{padding:var(--s-6);border:1px dashed var(--line);border-radius:var(--r-card);text-align:center}
.empty p{color:var(--ink-2)}
.foot{padding-block:var(--s-4) var(--s-6);border-top:1px solid var(--line)}
.foot p{margin:0;font-size:var(--t-sm);color:var(--ink-2)}
main[aria-busy="true"] .list{opacity:.5}
@media (max-width:560px){.ev{grid-template-columns:56px minmax(0,1fr);gap:var(--s-3)}}
.ev.sk .date{min-height:64px;background:var(--sunk)}
.ev.sk .sk-lines{display:grid;gap:10px;align-content:start}
.ev.sk .sk-lines::before,.ev.sk .sk-lines::after{content:"";height:14px;border-radius:7px;background:var(--sunk)}
.ev.sk .sk-lines::before{width:70%;height:20px}
.ev.sk{animation:skp 1.4s ease-in-out infinite}
@keyframes skp{50%{opacity:.55}}
@media (prefers-reduced-motion:reduce){.ev.sk{animation:none}}


/* tap-targets (TAO-1: comfortable phone taps -- the sizes win on phones, the page's own layout stays) */
@media (max-width: 600px) {
  a[href]:not(p a, li p a, blockquote a, figcaption a, td a, dd a, label a), button, [role=button], [onclick], summary, select, input:not([type=hidden], [type=checkbox], [type=radio], [type=range]) { min-height: 44px !important; min-width: 44px !important; }
  :where(a[href]:not(p a, li p a, blockquote a, figcaption a, td a, dd a, label a)) { display: inline-flex; align-items: center; justify-content: center; }
  input, select, textarea { font-size: max(16px, 1em) !important; }
}
