/* Browse filter sidebar — shared by businesses, providers, properties and
   builders. It lived inside businesses/index.blade.php's inline <style>, so
   the other three rendered the same markup with none of these rules: an
   unstyled column of links where a filter panel should be. A shared file also
   means the browser caches it once instead of re-downloading it inside every
   page's HTML.

   Loaded via @vite? No — this project serves plain CSS from public/, see
   layouts/app.blade.php. */

/* ── Browse filters sidebar ─────────────────────────────────────
   Replaces six sign-up cards on a page a customer is browsing. Sticky so
   the filters stay reachable while scrolling a long grid. */
.lb-filter-side { position: sticky; top: 84px; }
.lb-filter-block { background: var(--c-surface); border-radius: var(--radius); box-shadow: var(--shadow-sm); padding: 10px 6px; margin-bottom: 14px; }
.lb-filter-title { font-size:.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--c-text-muted, #64748b); padding: 4px 10px 8px; margin: 0; }
.lb-filter-row {
    display: flex; align-items: center; justify-content: space-between; gap: 8px;
    padding: 7px 10px; border-radius:10px; text-decoration: none;
    color: var(--c-text, #0f172a); font-size:.875rem; min-height: 36px;
}
.lb-filter-row:hover { background: var(--c-primary-muted, #fff1e7); color: var(--c-primary, #ea580c); }
.lb-filter-row.is-on { background: var(--c-primary-muted, #fff1e7); color: var(--c-primary, #ea580c); font-weight: 600; }
/* Named apart from .lb-filter-count in localbiz.css, which is the little
   round orange notification badge pinned to the filter *button*. Sharing
   the name meant these inline counts inherited `position:absolute` and a
   solid brand fill — twelve orange dots down the sidebar, competing with
   the one button on the page that actually wanted attention. */
.lb-fs-count { font-size: .75rem; color: var(--c-text-muted, #94a3b8); flex-shrink: 0; }
.lb-filter-row.is-on .lb-fs-count { color: var(--c-primary, #ea580c); }
.lb-filter-check { color: var(--c-primary, #ea580c); }
.lb-filter-clear { display: inline-block; font-size:.75rem; color: var(--c-primary, #ea580c); text-decoration: none; margin-bottom: 10px; }

/* The category list grows with the directory. Bounded and scrollable so the
   sidebar cannot outgrow the results it sits beside — at 28 categories it
   was 1436px tall next to twelve cards. */
.lb-filter-scroll { max-height: 340px; overflow-y: auto; }
.lb-filter-scroll::-webkit-scrollbar { width: 6px; }
.lb-filter-scroll::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius:6px; }
.lb-filter-own { background: var(--c-surface); border-radius: var(--radius); box-shadow: var(--shadow-sm); padding: 14px; }
.lb-filter-own-btn { display: inline-block; margin-top: 8px; font-size:.75rem; font-weight: 600; color: var(--c-primary, #ea580c); text-decoration: none; }

/* Hero facts — one line replacing four stat cards */
.lb-hero-facts { display: flex; flex-wrap: wrap; gap: 6px 18px; margin-top: 14px; font-size:.75rem; color: rgba(255,255,255,.72); }
.lb-hero-facts i { opacity: .8; }

/* The category rail duplicates the sidebar on desktop; sidebar wins because
   it shows every category with a count instead of four at a time. */
@media (min-width: 992px) {
    .lb-cat-slider { display: none; }
    /* Its only other child, the mobile search row, is already hidden here, so
       the bar itself is an empty 9px strip on desktop. */
    .lb-chips-bar { display: none; }
}

/* On phones the filters would push the listings below the fold, so the
   sidebar moves under the grid and stops being sticky. */
@media (max-width: 767.98px) {
    .lb-filter-side { position: static; }
}
