@import "https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@600;700;900&family=Noto+Sans+SC:wght@300;400;500;600&display=swap";:root{--c-bg:#faf7f2;--c-surface:#fff;--c-ink:#1c1917;--c-ink-soft:#57534e;--c-ink-muted:#a8a29e;--c-border:#e7e5e4;--c-accent:#c2410c;--c-accent-light:#fed7aa;--c-warm:#f97316;--c-hero-bg:#1c1917;--c-hero-ink:#fef3c7;--radius:12px;--radius-sm:8px;--shadow-card:0 1px 3px #1c19170f, 0 1px 2px #1c19170a;--shadow-hover:0 8px 25px #1c19171a, 0 2px 6px #1c19170f;--font-display:"Noto Serif SC", "Songti SC", serif;--font-body:"Noto Sans SC", -apple-system, BlinkMacSystemFont, sans-serif;--max-w:1120px;--toolbar-h:64px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-tap-highlight-color:transparent}body{font-family:var(--font-body);background:var(--c-bg);color:var(--c-ink);-webkit-font-smoothing:antialiased;font-weight:400;line-height:1.6}.app{flex-direction:column;min-height:100vh;display:flex}.hero{background:var(--c-hero-bg);color:var(--c-hero-ink);text-align:center;padding:56px 20px 48px;position:relative;overflow:hidden}.hero:before{content:"";pointer-events:none;background:radial-gradient(at 20%,#f9731626 0%,#0000 60%),radial-gradient(at 80%,#c2410c1a 0%,#0000 60%);position:absolute;inset:0}.hero-inner{max-width:var(--max-w);margin:0 auto;position:relative}.city-switcher{justify-content:center;gap:8px;margin-bottom:16px;display:flex}.city-btn{color:#ffffff80;font-size:13px;font-family:var(--font-body);cursor:pointer;background:0 0;border:1px solid #fff3;border-radius:100px;padding:5px 18px;transition:all .2s}.city-btn:hover{color:#ffffffb3;border-color:#fff6}.city-btn-active{color:var(--c-hero-ink);background:#ffffff26;border-color:#fff6}.hero-deco{font-family:var(--font-display);opacity:.06;pointer-events:none;-webkit-user-select:none;user-select:none;font-size:120px;font-weight:900;line-height:1;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.hero-title{font-family:var(--font-display);letter-spacing:.08em;margin-bottom:8px;font-size:36px;font-weight:700}.hero-sub{opacity:.6;letter-spacing:.04em;font-size:14px;font-weight:300}.toolbar{z-index:100;-webkit-backdrop-filter:blur(12px);background:#faf7f2d9;border-bottom:1px solid #0000;transition:border-color .3s,box-shadow .3s;position:sticky;top:0}.toolbar-scrolled{border-bottom-color:var(--c-border);box-shadow:0 1px 8px #1c19170f}.toolbar-inner{max-width:var(--max-w);align-items:center;gap:10px;margin:0 auto;padding:12px 20px;display:flex}.search-wrap{flex:1;align-items:center;display:flex;position:relative}.search-icon{width:18px;height:18px;color:var(--c-ink-muted);pointer-events:none;position:absolute;left:14px}.search-input{border:1.5px solid var(--c-border);width:100%;font-size:15px;font-family:var(--font-body);background:var(--c-surface);color:var(--c-ink);border-radius:100px;outline:none;padding:10px 36px 10px 42px;transition:border-color .2s,box-shadow .2s}.search-input::placeholder{color:var(--c-ink-muted);font-weight:300}.search-input:focus{border-color:var(--c-accent);box-shadow:0 0 0 3px #c2410c1a}.search-clear{color:var(--c-ink-muted);cursor:pointer;background:0 0;border:none;padding:4px;font-size:18px;line-height:1;position:absolute;right:12px}.filter-toggle{border:1.5px solid var(--c-border);background:var(--c-surface);font-size:14px;font-family:var(--font-body);color:var(--c-ink);cursor:pointer;white-space:nowrap;border-radius:100px;align-items:center;gap:6px;padding:10px 16px;font-weight:500;transition:all .2s;display:flex}.filter-toggle svg{width:16px;height:16px}.filter-toggle:hover{border-color:var(--c-ink-muted)}.filter-toggle-active{border-color:var(--c-accent);color:var(--c-accent);background:#fff7ed}.filter-count{background:var(--c-accent);color:#fff;border-radius:9px;justify-content:center;align-items:center;min-width:18px;height:18px;font-size:11px;font-weight:600;display:inline-flex}.filter-panel{max-width:var(--max-w);-webkit-overflow-scrolling:touch;overscroll-behavior:contain;max-height:60vh;margin:0 auto;padding:4px 20px 16px;animation:.2s ease-out slideDown;overflow-y:auto}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.filter-group{border-bottom:1px solid var(--c-border);padding:10px 0}.filter-group:last-of-type{border-bottom:none}.filter-label{color:var(--c-ink-muted);text-transform:uppercase;letter-spacing:.1em;margin-bottom:8px;font-size:12px;font-weight:600;display:block}.filter-pills{flex-wrap:wrap;gap:6px;display:flex}.pill{border:1px solid var(--c-border);background:var(--c-surface);font-size:13px;font-family:var(--font-body);color:var(--c-ink-soft);cursor:pointer;white-space:nowrap;border-radius:100px;padding:5px 14px;transition:all .15s}.pill:hover{border-color:var(--c-ink-muted);color:var(--c-ink)}.pill-active{background:var(--c-ink);color:#fff;border-color:var(--c-ink)}.pill-active:hover{background:#44403c;border-color:#44403c}.pill-x{opacity:.6;margin-left:4px}.clear-all{border:1px dashed var(--c-ink-muted);color:var(--c-ink-muted);font-size:13px;font-family:var(--font-body);cursor:pointer;background:0 0;border-radius:100px;margin:12px auto 0;padding:8px 20px;transition:all .2s;display:block}.clear-all:hover{border-color:var(--c-accent);color:var(--c-accent)}.main{max-width:var(--max-w);flex:1;width:100%;margin:0 auto;padding:0 20px 60px}.results-bar{flex-wrap:wrap;align-items:center;gap:12px;padding:16px 0 12px;display:flex}.results-count{color:var(--c-ink-muted);font-size:14px}.results-count strong{color:var(--c-ink);font-weight:600}.active-filters{flex-wrap:wrap;gap:6px;display:flex}.active-tag{background:var(--c-accent-light);color:var(--c-accent);cursor:pointer;border-radius:100px;padding:3px 10px;font-size:12px;font-weight:500;transition:opacity .15s}.active-tag:hover{opacity:.7}.grid{grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:16px;display:grid}.card{background:var(--c-surface);border-radius:var(--radius);box-shadow:var(--shadow-card);border:1px solid var(--c-border);flex-direction:column;padding:20px;transition:transform .25s,box-shadow .25s;animation:.4s ease-out both cardIn;display:flex}@keyframes cardIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.card:hover{box-shadow:var(--shadow-hover);transform:translateY(-2px)}.card-top{justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:10px;display:flex}.card-badges{flex-wrap:wrap;gap:4px;display:flex}.badge{letter-spacing:.02em;border-radius:4px;align-items:center;gap:3px;padding:2px 8px;font-size:11px;font-weight:600;line-height:1.6;display:inline-flex}.badge-icon{font-size:11px}.badge-michelin{color:#854d0e;background:#fef9c3}.badge-bib{color:#9d174d;background:#fce7f3}.badge-michelin-sel{color:#1e40af;background:#dbeafe}.badge-pearl{color:#6b21a8;background:#f3e8ff}.badge-heritage{color:#065f46;background:#d1fae5}.badge-must-eat{color:#991b1b;background:#fee2e2}.badge-top-pick{color:#92400e;background:#fef3c7}.badge-pick{color:#0369a1;background:#e0f2fe}.badge-zhihu{color:#1d4ed8;background:#eff6ff}.badge-street{color:#86198f;background:#fae8ff}.badge-chain{color:#475569;background:#f1f5f9}.badge-snack{color:#c2410c;background:#fff7ed}.badge-dianping{color:#166534;background:#f0fdf4}.badge-default{color:#78716c;background:#f5f5f4}.queue{cursor:default;flex-shrink:0;font-size:12px;line-height:1}.card-name{font-family:var(--font-display);color:var(--c-ink);margin-bottom:2px;font-size:18px;font-weight:700;line-height:1.3}.card-cuisine{color:var(--c-ink-muted);margin-bottom:10px;font-size:12px;font-weight:400}.card-desc{color:var(--c-ink-soft);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-bottom:10px;font-size:13px;line-height:1.7;display:-webkit-box;overflow:hidden}.card-dishes{flex-wrap:wrap;gap:5px;margin-bottom:12px;display:flex}.dish-chip{color:#a16207;background:#fefce8;border:1px solid #fef08a;border-radius:100px;padding:3px 10px;font-size:12px;font-weight:500}.card-meta{border-top:1px solid var(--c-border);justify-content:space-between;align-items:center;gap:10px;margin-top:auto;padding-top:12px;display:flex}.card-location{color:var(--c-ink-muted);flex:1;align-items:flex-start;gap:6px;min-width:0;font-size:12px;line-height:1.5;display:flex}.card-location span{text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.card-location strong{color:var(--c-ink-soft);font-weight:600}.icon-pin{flex-shrink:0;width:14px;height:14px;margin-top:2px}.card-actions{flex-shrink:0;gap:6px;display:flex}.action-btn{border-radius:var(--radius-sm);cursor:pointer;align-items:center;gap:4px;padding:6px 10px;font-size:12px;font-weight:500;text-decoration:none;transition:all .15s;display:inline-flex}.action-btn svg{width:14px;height:14px}.action-call{color:var(--c-ink-soft);border:1px solid var(--c-border);background:#f5f5f4}.action-call:hover{background:#e7e5e4}.action-nav{background:var(--c-ink);color:#fff;border:1px solid var(--c-ink)}.action-nav:hover{background:#44403c}.empty{text-align:center;padding:80px 20px}.empty-icon{margin-bottom:16px;font-size:48px}.empty p{color:var(--c-ink-muted);margin-bottom:16px;font-size:16px}.empty-reset{border:1.5px solid var(--c-accent);color:var(--c-accent);font-size:14px;font-family:var(--font-body);cursor:pointer;background:0 0;border-radius:100px;padding:10px 24px;font-weight:500;transition:all .2s}.empty-reset:hover{background:var(--c-accent);color:#fff}.footer{text-align:center;border-top:1px solid var(--c-border);color:var(--c-ink-muted);padding:32px 20px;font-size:12px}.footer p+p{margin-top:4px}@media (width<=640px){.hero{padding:40px 16px 32px}.hero-title{font-size:26px}.hero-deco{font-size:80px}.toolbar-inner{gap:8px;padding:10px 16px}.search-input{padding:9px 32px 9px 38px;font-size:14px}.filter-toggle span:not(.filter-count){display:none}.filter-toggle{padding:9px 12px}.filter-panel{padding:4px 16px 12px}.filter-pills{gap:5px}.pill{padding:4px 11px;font-size:12px}.main{padding:0 12px 40px}.grid{grid-template-columns:1fr;gap:12px}.card{padding:16px}.card-name{font-size:16px}.action-nav span{display:none}.action-btn{padding:6px 8px}}@media (width>=641px) and (width<=900px){.grid{grid-template-columns:repeat(2,1fr)}}
