:root{--brand:#32c832;--brand-ink:#1e8f1e;--bar:#000;--bg:#f6f7f5;--surface:#fff;--ink:#17191a;--muted:#5f6668;--line:#e3e6e2;--chip:#eef1ec;--live:#16a34a;--soon:#b45309;--soon-bg:#fef3c7;--live-bg:#dcfce7;--shadow:0 1px 2px rgba(0,0,0,.05),0 4px 16px rgba(0,0,0,.06);--c-happy-hour:#f59e0b;--c-food:#ef4444;--c-drinks:#8b5cf6;--c-brunch:#ec4899;--c-coffee-dessert:#a16207;--c-late-night:#3b82f6}@media (prefers-color-scheme:dark){:root{--brand-ink:#4ade4a;--bg:#0f1111;--surface:#181b1b;--ink:#eef0ee;--muted:#9aa3a3;--line:#2a2f2f;--chip:#222727;--live-bg:#143222;--live:#4ade80;--soon-bg:#3a2a0c;--soon:#fbbf24;--shadow:0 1px 2px rgba(0,0,0,.4)}}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased}button,input,select{font:inherit;color:inherit}a{color:inherit}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:10;background:var(--bar)}.topbar-inner{max-width:1120px;margin:0 auto;padding:8px 16px;display:flex;align-items:center;justify-content:space-between}.logo{font-size:24px;font-weight:600;color:var(--brand);letter-spacing:-.01em}.locate{background:transparent;border:1px solid #3a3a3a;color:#fff;border-radius:999px;padding:6px 12px;font-size:14px;cursor:pointer}.locate:hover:not(:disabled){border-color:var(--brand)}.locate:disabled{opacity:.6;cursor:default}.page{max-width:1120px;margin:0 auto;padding:24px 16px 64px}.hero h1{margin:8px 0 4px;font-size:clamp(24px,4vw,34px);letter-spacing:-.02em}.sub{margin:0 0 16px;color:var(--muted)}.notice{background:var(--soon-bg);color:var(--ink);border-radius:10px;padding:10px 14px;margin-bottom:16px;font-size:14px;line-height:1.45}.notice-error{background:#fee2e2;color:#7f1d1d}.controls{display:flex;flex-direction:column;gap:12px;margin-bottom:16px}.search{position:relative}.search-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);font-size:15px;opacity:.6}.search input{width:100%;padding:12px 14px 12px 40px;border-radius:12px;border:1px solid var(--line);background:var(--surface);font-size:16px;outline:none}.search input:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(50,200,50,.2)}.chips{display:flex;gap:8px;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}.chip{flex:none;border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:7px 12px;font-size:14px;cursor:pointer;white-space:nowrap}.chip:hover{border-color:var(--brand)}.chip-on{background:var(--ink);color:var(--surface);border-color:var(--ink)}.chip-count{display:inline-block;min-width:20px;margin-left:2px;padding:0 6px;border-radius:999px;background:var(--chip);color:var(--muted);font-size:12px;text-align:center}.chip-on .chip-count{background:hsla(0,0%,50%,.3);color:inherit}.row{display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between;align-items:center}.segmented{display:inline-flex;background:var(--chip);border-radius:10px;padding:3px}.segmented button{border:0;background:transparent;padding:6px 12px;border-radius:8px;font-size:14px;cursor:pointer;color:var(--muted)}.segmented .seg-on{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}.selects{display:flex;gap:8px}.selects select{border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:7px 10px;font-size:14px}.result-count{color:var(--muted);font-size:14px;margin:4px 0 12px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));grid-gap:16px;gap:16px}.card{--accent:var(--brand);background:var(--surface);border:1px solid var(--line);border-top:4px solid var(--accent);border-radius:14px;box-shadow:var(--shadow);display:flex;flex-direction:column;overflow:hidden;transition:transform .15s ease,box-shadow .15s ease}.card:hover{transform:translateY(-2px)}.card-dim{opacity:.7}.cat-happy-hour{--accent:var(--c-happy-hour)}.cat-food{--accent:var(--c-food)}.cat-drinks{--accent:var(--c-drinks)}.cat-brunch{--accent:var(--c-brunch)}.cat-coffee-dessert{--accent:var(--c-coffee-dessert)}.cat-late-night{--accent:var(--c-late-night)}.card-head{display:flex;justify-content:space-between;align-items:center;padding:12px 16px 0;font-size:13px}.card-cat{color:var(--accent);font-weight:600}.card-dist{color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.card-body{padding:6px 16px 12px;flex:1 1}.card-title{margin:0 0 4px;font-size:18px;line-height:1.3}.card-venue{margin:0 0 8px;font-weight:500}.card-hood{color:var(--muted);font-weight:400}.card-desc{margin:0 0 12px;color:var(--muted);font-size:14px;line-height:1.45}.card-price{display:flex;align-items:baseline;gap:8px;margin-bottom:10px}.price{font-size:22px;font-weight:700}.price-was{color:var(--muted);text-decoration:line-through}.price-save{font-size:12px;font-weight:600;color:var(--brand-ink)}.card-tags{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}.card-tags li{font-size:12px;color:var(--muted);background:var(--chip);padding:2px 8px;border-radius:999px}.card-foot{display:flex;justify-content:space-between;align-items:flex-end;gap:8px;padding:12px 16px;border-top:1px solid var(--line)}.card-when{display:flex;flex-direction:column;gap:4px;align-items:flex-start}.card-hours{font-size:13px;color:var(--muted)}.card-map{font-size:14px;font-weight:500;text-decoration:none;color:var(--brand-ink);white-space:nowrap}.card-map:hover{text-decoration:underline}.badge{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:3px 8px;border-radius:999px}.badge-live{background:var(--live-bg);color:var(--live)}.badge-soon{background:var(--soon-bg);color:var(--soon)}.badge-muted{background:var(--chip);color:var(--muted)}.pulse{width:7px;height:7px;border-radius:50%;background:currentColor;animation:pulse 1.6s ease-in-out infinite}@keyframes pulse{50%{opacity:.3}}.skeleton{height:260px;background:linear-gradient(90deg,var(--surface),var(--chip),var(--surface));background-size:200% 100%;animation:shimmer 1.2s linear infinite}@keyframes shimmer{to{background-position:-200% 0}}.empty{text-align:center;padding:48px 16px;color:var(--muted)}@media (max-width:560px){.row{flex-direction:column;align-items:stretch}.segmented{display:flex}.segmented button,.selects select{flex:1 1}}@media (prefers-reduced-motion:reduce){.card,.pulse,.skeleton{animation:none;transition:none}}