/* ==========================================================================
   Lineup filter bar — Claude design spec (dark theme, festival-red accent).
   Scoped to the [lineup] block's filter UI only. Does not alter artist-card
   styles, site fonts, or other pages.
   ========================================================================== */
@import url('https://fonts.googleapis.com/css2?family=Archivo:wght@700;800&family=Barlow:wght@500;600&display=swap');

/* Filter bar */
.filterbar{position:sticky;top:56px;z-index:30;
           background:rgba(22,22,22,.86);backdrop-filter:blur(14px);
           -webkit-backdrop-filter:blur(14px);border-bottom:1px solid #2a2a2a;
           padding:16px 40px}
.controls{display:flex;align-items:center;gap:12px;flex-wrap:wrap;
          max-width:1280px;margin:0 auto;font-family:'Barlow',sans-serif}

/* Generic visibility helper — scoped so it can't affect the rest of the site */
.filterbar .hidden,
#emptyState.hidden{display:none}

/* Dropdowns */
.filterbar .select-wrap{position:relative;flex:0 1 auto}
.filterbar .select{appearance:none;-webkit-appearance:none;-moz-appearance:none;
        background:#1d1d1d;color:#cfcfcf;font-family:'Barlow',sans-serif;font-weight:600;
        font-size:14px;border:1px solid #363636;border-radius:12px;
        padding:11px 38px 11px 18px;cursor:pointer;outline:none}
.filterbar .select.active{color:#ff8079;border-color:rgba(238,42,35,.65)}   /* bg stays dark */
.filterbar .chev{position:absolute;right:15px;top:50%;transform:translateY(-50%);
      pointer-events:none;color:#cfcfcf;font-size:10px}
.filterbar .select.active + .chev{color:#ff8079}

/* Search */
.filterbar .search-btn{flex:none;width:44px;height:44px;border-radius:12px;border:1px solid #363636;
            background:#1d1d1d;color:#cfcfcf;font-size:17px;cursor:pointer;
            display:flex;align-items:center;justify-content:center;transition:all .15s}
.filterbar .search-btn:hover{border-color:#555}
.filterbar .search-wrap{position:relative;flex:1 1 200px;min-width:160px;max-width:340px}
.filterbar .search-wrap .icon{position:absolute;left:16px;top:50%;transform:translateY(-50%);color:#8a8a8a;font-size:15px}
/* SVG magnifier — black source, tinted per background */
.filterbar .search-btn .mag-icon{width:18px;height:18px;display:block;filter:invert(83%)}      /* light grey on dark button */
.filterbar .search-wrap .mag-icon-dark{width:16px;height:16px;filter:invert(52%)}             /* mid grey on white input */
.filterbar .search-input{width:100%;background:#fff;color:#1a1a1a;border:none;border-radius:12px;
              padding:11px 16px 11px 42px;font-size:14px;font-weight:500;outline:none;
              font-family:'Barlow',sans-serif}

/* Favorites */
.filterbar .fav-btn{flex:none;cursor:pointer;font-family:'Barlow',sans-serif;font-weight:600;font-size:14px;
         border-radius:12px;padding:11px 18px;display:flex;align-items:center;gap:7px;
         white-space:nowrap;transition:all .15s;border:1px solid #363636;background:#1d1d1d;color:#cfcfcf}
.filterbar .fav-btn .count{opacity:.75}
.filterbar .fav-btn.active{border-color:rgba(238,42,35,.65);color:#ff8079}

/* Result count + clear */
.filterbar .meta{margin-left:auto;display:flex;align-items:center;gap:16px;flex:none}
.filterbar .result-count{font-weight:600;font-size:13px;color:#8a8a8a;white-space:nowrap}
.filterbar .clear-btn{background:none;border:none;color:#ff8079;font-family:'Barlow',sans-serif;font-weight:600;
           font-size:13px;cursor:pointer;text-decoration:underline;text-underline-offset:3px;white-space:nowrap}

/* Per-day live count under each day heading */
.lineup-day-section .group-count{display:block;text-align:center;font-family:'Barlow',sans-serif;
           font-weight:600;font-size:13px;color:#777;margin:-4px 0 18px}

/* Empty state */
.empty{text-align:center;padding:90px 20px;color:#777;font-family:'Barlow',sans-serif}
.empty h3{font-family:'Archivo',sans-serif;font-weight:800;font-size:24px;color:#e7b8de;margin-bottom:10px}
.empty p{font-size:15px;margin-bottom:22px}
.empty button{background:#ee2a23;border:none;color:#fff;font-family:'Archivo',sans-serif;font-weight:700;
              font-size:13px;letter-spacing:.5px;padding:12px 26px;border-radius:999px;cursor:pointer;text-transform:uppercase}

/* Favorite heart on each artist card (additive overlay — leaves card styles intact) */
.lineup-wrapper-2026 a .card-fav{position:absolute;top:10px;right:10px;z-index:6;
           width:34px;height:34px;display:flex;align-items:center;justify-content:center;
           border-radius:50%;background:rgba(0,0,0,.38);color:rgba(255,255,255,.85);
           font-size:16px;line-height:1;cursor:pointer;
           transition:color .15s ease, background-color .15s ease, transform .15s ease}
.lineup-wrapper-2026 a .card-fav:hover{background:rgba(0,0,0,.55);transform:scale(1.08)}
.lineup-wrapper-2026 a .card-fav.active{color:#ee2a23}

/* ==========================================================================
   Mobile "Filters" bar + drop-down panel
   Desktop default: hide all mobile-only chrome; controls render inline as-is.
   ========================================================================== */
.filterbar .mobile-bar{display:none}
.filterbar .panel-head{display:none}
.filterbar .apply-btn{display:none}

@media (max-width:768px){
    .filterbar{padding:12px 20px}

    /* Collapsed: "Filters" label on the left, action icons on the right */
    .filterbar .mobile-bar{display:flex;align-items:center;gap:10px;max-width:1280px;margin:0 auto}
    .filterbar .controls{display:none}

    .filterbar .mb-filters-label{flex:1 1 auto;display:flex;align-items:baseline;gap:8px;
            background:none;border:none;cursor:pointer;outline:none;text-align:left;padding:0;
            font-family:'Archivo',sans-serif;font-weight:800;font-size:18px;letter-spacing:.5px;
            text-transform:uppercase;color:#fff}

    .filterbar .mobile-actions{display:flex;align-items:center;gap:8px;margin-left:auto;flex:none}
    /* Short result count, sits just before the action icons */
    .filterbar .mb-count{font-family:'Barlow',sans-serif;font-weight:600;font-size:14px;color:#8a8a8a;
            white-space:nowrap;margin-right:2px}
    .filterbar .mb-icon{flex:none;width:46px;height:46px;border-radius:12px;border:1px solid #363636;
            background:#1d1d1d;color:#cfcfcf;cursor:pointer;display:flex;align-items:center;justify-content:center;
            gap:4px;font-size:17px;line-height:1;outline:none}
    .filterbar .mb-icon .mag-icon{width:20px;height:20px;display:block;filter:invert(83%)}
    .filterbar .mb-icon .count{font-family:'Barlow',sans-serif;font-weight:600;font-size:13px}
    .filterbar .mb-fav.active{border-color:rgba(238,42,35,.65);color:#ff8079}
    .filterbar .mb-icon.active{border-color:rgba(238,42,35,.65)}
    .filterbar .mb-icon.active .mag-icon{filter:invert(64%) sepia(45%) saturate(900%) hue-rotate(314deg)}
    .filterbar .mb-clear{border-color:rgba(238,42,35,.55);color:#ff8079;font-size:24px}
    .filterbar .mb-clear.hidden{display:none}

    /* Expanded: in-flow drop-down panel (relative — .filterbar's backdrop-filter
       creates a containing block, so position:fixed would not be viewport-anchored) */
    .filterbar.filters-open .controls{display:flex;flex-direction:column;align-items:stretch;
            gap:14px;position:relative;z-index:40;max-width:none;margin:14px 0 0;
            background:#161616;padding:16px 0 4px}

    /* Favourites lives in the top bar on mobile — avoid duplicating it in the panel */
    .filterbar.filters-open .fav-btn{display:none}

    .filterbar.filters-open .panel-head{display:flex;align-items:center;gap:12px;
            padding-bottom:6px;border-bottom:1px solid #2a2a2a}
    .filterbar .panel-clear{background:none;border:none;color:#ff8079;font-family:'Barlow',sans-serif;
            font-weight:600;font-size:15px;cursor:pointer;text-decoration:underline;text-underline-offset:3px;padding:0}
    .filterbar .panel-close{margin-left:auto;background:none;border:none;color:#cfcfcf;font-size:30px;line-height:1;cursor:pointer;padding:0 4px}

    /* Stack every control full width inside the panel */
    .filterbar.filters-open .select-wrap{flex:0 0 auto;width:100%}
    .filterbar.filters-open .select{width:100%;font-size:16px;padding:14px 38px 14px 18px}
    .filterbar.filters-open .chev{top:50%}
    .filterbar.filters-open .search-btn{display:none}
    .filterbar.filters-open .search-wrap{display:flex;flex:0 0 auto;width:100%;max-width:none}
    .filterbar.filters-open .search-input{padding:14px 16px 14px 44px;font-size:16px}
    .filterbar.filters-open .fav-btn{justify-content:center;padding:14px 18px;font-size:15px}
    /* Result count now lives in the top bar; clear moved to the panel head — hide the inline meta
       (clearBtn stays in the DOM, just not shown; the head/cross buttons proxy clicks to it) */
    .filterbar.filters-open .meta{display:none}

    /* Footer action to dismiss the panel */
    .filterbar.filters-open .apply-btn{display:block;margin-top:4px;width:100%;
            background:#ee2a23;border:none;color:#fff;font-family:'Archivo',sans-serif;font-weight:700;
            font-size:14px;letter-spacing:.5px;text-transform:uppercase;
            padding:15px;border-radius:12px;cursor:pointer}
}
