.filter-bar{margin-bottom:var(--sp-4)}.filter-bar__categories{gap:var(--sp-2);scrollbar-width:none;padding-bottom:var(--sp-3);display:flex;overflow-x:auto}.filter-bar__categories::-webkit-scrollbar{display:none}.filter-bar__cat-btn{min-height:var(--touch-min);padding:0 var(--sp-4);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-muted);font-family:var(--font-sans);cursor:pointer;transition:color var(--transition), background-color var(--transition), border-color var(--transition);background:0 0;flex-shrink:0;font-size:.875rem;font-weight:500}.filter-bar__cat-btn:hover{color:var(--text);background-color:var(--surface-hover)}.filter-bar__cat-btn.active{background-color:var(--accent-muted);border-color:var(--accent);color:var(--accent)}.filter-bar__subcats{gap:var(--sp-2);scrollbar-width:none;padding-bottom:var(--sp-3);display:flex;overflow-x:auto}.filter-bar__subcats::-webkit-scrollbar{display:none}.filter-bar__subcat-btn{min-height:32px;padding:0 var(--sp-3);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-muted);font-family:var(--font-sans);cursor:pointer;transition:color var(--transition), background-color var(--transition), border-color var(--transition);background:0 0;flex-shrink:0;font-size:.8125rem;font-weight:500}.filter-bar__subcat-btn:hover{color:var(--text);background-color:var(--surface-hover)}.filter-bar__subcat-btn.active{color:#b87840;background-color:#c8783c1f;border-color:#b87840}.filter-bar__controls{gap:var(--sp-2);align-items:center;display:flex}.filter-bar__search{min-width:0;height:var(--touch-min);padding:0 var(--sp-3);background-color:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-family:var(--font-sans);transition:border-color var(--transition);flex:1;font-size:.875rem}.filter-bar__search::placeholder{color:var(--text-disabled)}.filter-bar__search:focus{border-color:var(--accent);outline:none}.filter-bar__sort-btn{height:var(--touch-min);padding:0 var(--sp-3);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted);font-family:var(--font-sans);cursor:pointer;white-space:nowrap;transition:color var(--transition), background-color var(--transition), border-color var(--transition);background:0 0;flex-shrink:0;font-size:.875rem;font-weight:500}.filter-bar__sort-btn:hover:not(:disabled){color:var(--text);background-color:var(--surface-hover)}.filter-bar__sort-btn.active{background-color:var(--accent-muted);border-color:var(--accent);color:var(--accent)}.filter-bar__sort-btn:disabled{opacity:.5;cursor:not-allowed}.filter-bar__open-now-btn{height:var(--touch-min);padding:0 var(--sp-3);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted);font-family:var(--font-sans);cursor:pointer;white-space:nowrap;transition:color var(--transition), background-color var(--transition), border-color var(--transition);background:0 0;flex-shrink:0;font-size:.875rem;font-weight:500}.filter-bar__open-now-btn:hover{color:var(--accent);border-color:var(--accent)}.filter-bar__open-now-btn.active{background-color:var(--accent-muted);border-color:var(--accent);color:var(--accent);font-weight:700}.filter-bar__count{color:var(--text-muted);white-space:nowrap;flex-shrink:0;font-size:.8125rem}.product-table-wrap{border:1px solid var(--border);border-radius:var(--radius);overflow-x:auto}.product-table{border-collapse:collapse;width:100%;font-size:.875rem}.product-table th{text-align:left;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--border);background-color:var(--surface);white-space:nowrap;font-size:.6875rem;font-weight:600}.price-cell{align-items:center;gap:4px;display:inline-flex}.best-price-badge{color:var(--accent);vertical-align:middle;font-size:.625rem;line-height:1;display:inline-block}.col-sort-btn{color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;cursor:pointer;white-space:nowrap;background:0 0;border:none;padding:0;font-family:inherit;font-size:.6875rem;font-weight:600}.col-sort-btn:hover{color:var(--text)}.col-sort-btn--active{color:var(--accent)}.product-table th.right,.product-table td.right{text-align:right}.product-table td{padding:var(--sp-3) var(--sp-3);border-bottom:1px solid var(--border-subtle);vertical-align:middle}.product-table tr:last-child td{border-bottom:none}.product-table tbody tr:hover td{background-color:var(--surface-hover)}.cell-product__name{color:var(--text);font-weight:500;line-height:1.3}.cell-product__brand{color:var(--text-muted);margin-top:1px;font-size:.75rem}.cell-product__link{color:var(--text);text-decoration:none;display:block}.cell-product__link:hover{color:var(--accent);text-decoration:underline}.cat-badge{border-radius:var(--radius-sm);white-space:nowrap;background-color:var(--surface-active);color:var(--text-muted);cursor:pointer;border:none;padding:2px 6px;font-family:inherit;font-size:.6875rem;font-weight:600;line-height:1.5;transition:filter .1s;display:inline-block}.cat-badge:hover{filter:brightness(1.2)}.cat-badge--flower{color:#5a9f7a;background:#5a9f7a26}.cat-badge--preroll{color:#7ab89a;background:#5a9f7a1a}.cat-badge--concentrate{color:#c0882a;background:#e0a83a26}.cat-badge--vape{color:#6a8acc;background:#5a7ac826}.cat-badge--edible{color:#b87840;background:#c8783c26}.cat-badge--tincture{color:#9060b8;background:#a064c826}.cat-badge--topical{color:#4090b8;background:#50a0c81f}.cat-badge--capsule{color:#7080a8;background:#788cb426}.cat-badge--beverage{color:#3a80b8;background:#3c8cc826}[data-theme=light] .cat-badge--flower{color:#2d6a4a}[data-theme=light] .cat-badge--preroll{color:#3d7a5a}[data-theme=light] .cat-badge--concentrate{color:#8a5a10}[data-theme=light] .cat-badge--vape{color:#3a5aaa}[data-theme=light] .cat-badge--edible{color:#8a4820}.cell-mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--text);white-space:nowrap;font-size:.8125rem}.cell-mono--muted{color:var(--text-muted);font-size:.75rem}.cell-mono--null{color:var(--text-disabled)}.cell-dispensary__name{color:var(--text);white-space:nowrap;font-weight:500;display:block}.cell-dispensary__name-link{text-decoration:none}.cell-dispensary__name-link:hover{color:var(--accent);text-decoration:underline}.cell-dispensary__city{color:var(--text-muted);font-size:.75rem;text-decoration:none}.cell-dispensary__city:hover{color:var(--accent);text-decoration:underline}.cell-dispensary__badges{gap:var(--sp-1);margin-top:var(--sp-1);flex-wrap:wrap;display:flex}.ownership-badge{border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;padding:1px 5px;font-size:.625rem;font-weight:700;line-height:1.6;display:inline-block}.ownership-badge--equity{color:var(--badge-equity);background:#7a5a9f33}.ownership-badge--independent{color:var(--badge-independent);background:#3d7a5a33}.stale-indicator{color:var(--warning);margin-top:1px;font-size:.625rem}.buy-btn{min-width:52px;height:30px;padding:0 var(--sp-2);background-color:var(--accent-muted);border:1px solid var(--accent);border-radius:var(--radius-sm);color:var(--accent);font-family:var(--font-sans);white-space:nowrap;transition:background-color var(--transition), color var(--transition);justify-content:center;align-items:center;font-size:.75rem;font-weight:600;text-decoration:none;display:inline-flex}.buy-btn:hover{background-color:var(--accent);color:var(--accent-text);text-decoration:none}.table-state-row td{padding:var(--sp-16) var(--sp-4);text-align:center;color:var(--text-muted);font-size:.875rem}.table-error{color:var(--error)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.skeleton{border-radius:var(--radius-sm);background-color:var(--surface-hover);animation:1.5s ease-in-out infinite pulse;display:inline-block}@media (width<=800px){.col-brand,.col-unit,.col-value{display:none}}@media (width<=500px){.col-cat{display:none}}.col-dist{white-space:nowrap;width:60px}.col-actions{white-space:nowrap;align-items:center;gap:var(--sp-2);display:flex}.row-fav-btn{color:var(--text-disabled);cursor:pointer;border-radius:var(--radius-sm);transition:color var(--transition);background:0 0;border:none;flex-shrink:0;padding:4px 5px;font-size:1rem;line-height:1}.row-fav-btn:hover,.row-fav-btn--active{color:var(--accent)}.fav-btn{border-radius:var(--radius-sm);color:var(--text-disabled);cursor:pointer;transition:color var(--transition);background:0 0;border:none;outline:none;justify-content:center;align-items:center;padding:4px;line-height:1;display:inline-flex}.fav-btn:hover,.fav-btn--active{color:var(--accent)}.fav-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.star-rating{align-items:center;gap:var(--sp-3);padding:var(--sp-3) 0;display:flex}.star-rating__label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);white-space:nowrap;font-size:.75rem;font-weight:700}.star-rating__stars{gap:1px;display:flex}.star-btn{cursor:pointer;color:var(--border);background:0 0;border:none;outline:none;padding:1px 3px;font-size:1.5rem;line-height:1;transition:color 60ms,transform 60ms}.star-btn--on{color:var(--accent)}.star-btn:hover{color:var(--accent);transform:scale(1.15)}.star-btn:focus-visible{outline:2px solid var(--accent);border-radius:2px}
