/* Concert discovery uses the same tokens and shared navigation as the app. */
.concert-page{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-ui);line-height:1.5}.concert-page #main{max-width:1200px;margin:auto;padding:24px var(--pad-page) 40px}.concert-page .skip{position:absolute;top:-100px;z-index:200;background:var(--ink);color:var(--paper);padding:12px}.concert-page .skip:focus{top:5px}.concert-page a:focus-visible,.concert-page button:focus-visible,.concert-page input:focus-visible,.concert-page select:focus-visible{outline:3px solid var(--accent);outline-offset:4px}.concert-page .hero{padding:12px 0 24px}.concert-page h1,.concert-page h2,.concert-page h3{font-family:var(--font-serif);color:var(--ink);letter-spacing:-.04em;line-height:1.15}.concert-page h1{font-size:clamp(29px,4vw,46px);margin:4px 0 10px;font-weight:800}.concert-page h1 em{font-style:normal}.concert-page h2{font-size:27px}.concert-page h3{font-size:24px}.concert-page .eyebrow{font-size:10px;font-weight:700;letter-spacing:.12em;margin:0 0 8px;color:var(--text-muted)}.concert-page .intro{font-size:15px;color:var(--text-muted);margin:8px 0}.concert-page .date-range,.concert-page .fine{font-size:12px;color:var(--text-muted);margin-top:10px}.concert-page .breadcrumb{display:flex;gap:10px;flex-wrap:wrap;font-size:12px;margin:0 0 16px}.concert-page .breadcrumb a{color:var(--ink);text-underline-offset:3px}.concert-page .section-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:24px 0 18px}.concert-page .section-heading>span{font-size:12px;color:var(--text-muted)}.concert-page .city-search{display:flex;gap:12px;align-items:end;flex-wrap:wrap;background:var(--paper);border:var(--border) solid var(--ink);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow)}.concert-page .city-search label{display:grid;gap:6px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.concert-page .city-search-field{flex:1;min-width:200px}.concert-page .city-search input,.concert-page .city-search select{font:400 16px var(--font-ui);background:var(--paper);color:var(--ink);border:1px solid #202c2955;padding:11px 14px;border-radius:var(--radius-pill);min-height:44px;width:100%}.concert-page .city-search button,.concert-page .date-tabs a,.concert-page .ticket-button,.concert-page .save-button,.concert-page .pagination a{display:inline-flex;align-items:center;justify-content:center;min-height:40px;font:700 12px var(--font-ui);text-decoration:none;border:var(--border) solid var(--ink);border-radius:var(--radius-pill);padding:10px 17px;background:var(--paper);color:var(--ink);box-shadow:var(--shadow);cursor:pointer}.concert-page .city-search button,.concert-page .ticket-button{background:var(--accent)}.concert-page .city-search>a{font-size:12px;padding:12px 0}.concert-page .city-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.concert-page .city-tile{display:flex;flex-direction:column;gap:8px;min-height:150px;text-decoration:none;color:var(--ink);padding:20px;background:var(--paper);border:var(--border) solid var(--ink);border-radius:var(--radius);box-shadow:var(--shadow)}.concert-page .city-tile:hover{background:#fff4e8;box-shadow:var(--shadow-hover)}.concert-page .city-location{font-size:10px;font-weight:700;letter-spacing:.06em;color:var(--text-muted)}.concert-page .city-tile h3{overflow-wrap:anywhere;margin:0}.concert-page .city-tile>span:last-child{margin-top:auto;font-size:12px}.concert-page .city-tile b{float:right;font-size:18px}.concert-page .date-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 24px}.concert-page .date-tabs a{text-transform:uppercase;font-size:11px}.concert-page .date-tabs a[aria-current]{background:var(--accent);color:var(--paper)}.concert-page .show-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.concert-page .show-card{border:var(--border) solid var(--ink);border-radius:var(--radius);box-shadow:var(--shadow);background:var(--paper);overflow:hidden;display:flex;flex-direction:column}.concert-page .card-art{position:relative;display:block;aspect-ratio:4/3;background:var(--peach);overflow:hidden}.concert-page .card-art img{width:100%;height:100%;object-fit:cover}.concert-page .card-art>span{display:grid;place-items:center;height:100%;font-size:80px}.concert-page .card-art time{position:absolute;left:12px;bottom:12px;padding:5px 10px;background:var(--paper);border:var(--border) solid var(--ink);border-radius:var(--radius-pill);font-size:11px;font-weight:700}.concert-page .card-copy{padding:18px;display:flex;flex-direction:column;flex:1}.concert-page .genre{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:8px}.concert-page .show-card h3{margin:0 0 8px;overflow-wrap:anywhere}.concert-page .show-card h3 a{color:var(--ink);text-decoration:none}.concert-page .card-venue,.concert-page .lineup{font-size:12px;margin:0 0 12px}.concert-page .lineup{color:var(--text-muted)}.concert-page .preview{margin:8px 0 16px}.concert-page .preview label{display:block;font-size:11px;color:var(--text-muted);margin-bottom:8px}.concert-page audio{width:100%;height:36px;display:block}.concert-page .audio-error{font-size:12px;margin-top:8px}.concert-page .artist-link{color:var(--ink);font-size:13px;margin:14px 0 24px}.concert-page .card-bottom{display:flex;justify-content:space-between;align-items:center;gap:8px;border-top:1px solid #202c2933;padding-top:14px;margin-top:auto;font-size:12px;font-weight:700}.concert-page .card-bottom>a{color:var(--ink);text-decoration:none}.concert-page .save-button{font-size:11px;min-height:36px;padding:8px 12px}.concert-page .save-button[aria-pressed=true]{background:var(--peach)}.concert-page button[hidden]{display:none}.concert-page .pagination{display:flex;gap:20px;justify-content:center;align-items:center;font-size:12px;margin:30px 0}.concert-page .how{border-top:1px solid #202c2933;margin:32px 0 0;padding:24px 0;max-width:800px}.concert-page .how p{color:var(--text-muted);font-size:14px;margin-top:12px}.concert-page .how a{display:inline-block;color:var(--ink);margin-top:12px}.concert-page .show-detail{display:grid;grid-template-columns:1fr 1fr;gap:36px;padding:8px 0 25px}.concert-page .detail-art{aspect-ratio:1;align-self:start;border:var(--border) solid var(--ink);border-radius:var(--radius);overflow:hidden;background:var(--peach);box-shadow:var(--shadow)}.concert-page .detail-art img{width:100%;height:100%;object-fit:cover}.concert-page .detail-art>span{display:grid;place-items:center;height:100%;font-size:140px}.concert-page .venue-name{font-size:20px;margin:14px 0}.concert-page .facts{margin:22px 0}.concert-page .facts>div{display:grid;grid-template-columns:80px 1fr;gap:12px;padding:12px 0;border-top:1px solid #202c2933}.concert-page .facts dt,.concert-page .facts small{font-size:12px;color:var(--text-muted)}.concert-page .facts dd{margin:0;font-size:14px}.concert-page .facts small{display:block}.concert-page .actions{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.concert-page .empty{padding:30px 0}.concert-page .empty p{margin:12px 0}.concert-page #concert-status:not(:empty){position:fixed;bottom:20px;left:50%;transform:translateX(-50%);z-index:200;max-width:90vw;padding:12px 20px;background:var(--ink);color:var(--paper);border-radius:var(--radius);font-size:13px}.concert-page .city-dropdown-btn{text-decoration:none}
@media(max-width:900px){.concert-page .city-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.concert-page .show-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.concert-page #main{padding:20px 14px 35px}.concert-page .city-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.concert-page .city-tile{padding:15px;min-height:145px}.concert-page .city-tile h3{font-size:22px}.concert-page .city-search{padding:14px;gap:10px}.concert-page .city-search-field{flex-basis:100%}.concert-page .city-search label:not(.city-search-field){flex:1}.concert-page .city-search button{min-height:44px}.concert-page .section-heading h2{font-size:23px}.concert-page .section-heading>span{font-size:10px;text-align:right}.concert-page .show-grid,.concert-page .show-detail{grid-template-columns:1fr}.concert-page .show-detail{gap:25px}.concert-page .detail-art{max-height:390px}.concert-page .card-art{aspect-ratio:16/10}.concert-page .site-header-center{width:100%}.concert-page .header-search{flex:1;min-width:0}.concert-page .site-header .city-dropdown-btn .city-name{max-width:100px;overflow:hidden;text-overflow:ellipsis}.concert-page .date-tabs a{padding:9px 12px}.concert-page .hero{padding-top:4px}}
/* Search visitors need an app entry point even without the native tab bar. */
@media(max-width:767px){.concert-page .site-header{display:block;padding:12px 14px}.concert-page .site-header-inner{display:flex;flex-wrap:wrap;gap:12px;padding:0}.concert-page .site-header .header-logo{display:flex;margin:0;font-size:24px}.concert-page .site-header-center{display:none}.concert-page .desktop-nav{display:flex;margin-left:auto;gap:4px}.concert-page .desktop-nav-item{min-width:0;padding:8px;font-size:11px}.concert-page .header-mobile-actions{display:none!important}}
